From 2b2062664382cde472aca9a07481a7c59525c98f Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sat, 13 Mar 2004 12:37:09 +0000 Subject: [PATCH] * config.bfd: Add x86_64-*-openbsd*. * configure.in (x86_64-*-openbsd*): Set COREFILE to netbsd-core.lo. * configure: Regenerate. --- bfd/ChangeLog | 7 + bfd/config.bfd | 2 +- bfd/configure | 152 +- bfd/configure.in | 4 +- binutils/ChangeLog | 96 - binutils/ChangeLog-0001 | 2060 - binutils/ChangeLog-0203 | 2181 - binutils/ChangeLog-9197 | 5217 - binutils/ChangeLog-9899 | 1908 - binutils/MAINTAINERS | 168 - binutils/Makefile.am | 564 - binutils/Makefile.in | 1296 - binutils/NEWS | 273 - binutils/README | 273 - binutils/acinclude.m4 | 32 - binutils/aclocal.m4 | 205 - binutils/addr2line.c | 349 - binutils/ar.c | 1410 - binutils/arlex.l | 91 - binutils/arparse.y | 203 - binutils/arsup.c | 478 - binutils/arsup.h | 61 - binutils/binemul.c | 146 - binutils/binemul.h | 64 - binutils/bucomm.c | 477 - binutils/bucomm.h | 197 - binutils/budbg.h | 58 - binutils/budemang.c | 75 - binutils/budemang.h | 25 - binutils/coffdump.c | 552 - binutils/coffgrok.c | 741 - binutils/coffgrok.h | 225 - binutils/config.in | 204 - binutils/configure | 6081 - binutils/configure.com | 76 - binutils/configure.in | 357 - binutils/configure.tgt | 26 - binutils/cxxfilt.c | 291 - binutils/debug.c | 3372 - binutils/debug.h | 792 - binutils/deflex.l | 93 - binutils/defparse.y | 175 - binutils/dep-in.sed | 20 - binutils/dlltool.c | 3629 - binutils/dlltool.h | 41 - binutils/dllwrap.c | 1220 - binutils/doc/Makefile.am | 165 - binutils/doc/Makefile.in | 564 - binutils/doc/binutils.texi | 3655 - binutils/doc/fdl.texi | 368 - binutils/emul_aix.c | 175 - binutils/emul_vanilla.c | 30 - binutils/filemode.c | 260 - binutils/ieee.c | 7396 - binutils/is-ranlib.c | 3 - binutils/is-strip.c | 4 - binutils/mac-binutils.r | 42 - binutils/makefile.vms-in | 98 - binutils/maybe-ranlib.c | 4 - binutils/maybe-strip.c | 4 - binutils/mpw-config.in | 27 - binutils/mpw-make.sed | 115 - binutils/nlmconv.c | 2128 - binutils/nlmconv.h | 84 - binutils/nlmheader.y | 960 - binutils/nm.c | 1605 - binutils/not-ranlib.c | 3 - binutils/not-strip.c | 4 - binutils/objcopy.c | 3065 - binutils/objdump.c | 2924 - binutils/po/.cvsignore | 1 - binutils/po/Make-in | 253 - binutils/po/POTFILES.in | 60 - binutils/po/binutils.pot | 4574 - binutils/po/da.po | 4800 - binutils/po/es.po | 5176 - binutils/po/fr.po | 5124 - binutils/po/ja.po | 4110 - binutils/po/ru.po | 4889 - binutils/po/sv.po | 5571 - binutils/po/tr.po | 5117 - binutils/po/zh_CN.po | 4742 - binutils/prdbg.c | 2794 - binutils/ranlib.sh | 3 - binutils/rclex.l | 496 - binutils/rcparse.y | 1768 - binutils/rdcoff.c | 874 - binutils/rddbg.c | 442 - binutils/readelf.c | 10645 - binutils/rename.c | 217 - binutils/resbin.c | 2318 - binutils/rescoff.c | 766 - binutils/resrc.c | 2562 - binutils/resres.c | 663 - binutils/sanity.sh | 50 - binutils/size.c | 575 - binutils/srconv.c | 2013 - binutils/stabs.c | 5349 - binutils/stamp-h.in | 1 - binutils/strings.c | 651 - binutils/sysdump.c | 811 - binutils/sysinfo.y | 439 - binutils/syslex.l | 70 - binutils/sysroff.info | 504 - binutils/testsuite/ChangeLog | 17 - binutils/testsuite/ChangeLog-9303 | 1044 - binutils/testsuite/binutils-all/ar.exp | 256 - binutils/testsuite/binutils-all/bintest.s | 12 - binutils/testsuite/binutils-all/dlltool.exp | 47 - binutils/testsuite/binutils-all/fastcall.def | 2 - binutils/testsuite/binutils-all/hppa/addendbug.s | 23 - binutils/testsuite/binutils-all/hppa/freg.s | 23 - binutils/testsuite/binutils-all/hppa/objdump.exp | 96 - binutils/testsuite/binutils-all/nm.exp | 123 - binutils/testsuite/binutils-all/objcopy.exp | 650 - binutils/testsuite/binutils-all/objdump.exp | 163 - binutils/testsuite/binutils-all/readelf.exp | 343 - binutils/testsuite/binutils-all/readelf.h | 20 - binutils/testsuite/binutils-all/readelf.r | 4 - binutils/testsuite/binutils-all/readelf.r-64 | 4 - binutils/testsuite/binutils-all/readelf.s | 24 - binutils/testsuite/binutils-all/readelf.s-64 | 25 - binutils/testsuite/binutils-all/readelf.ss | 16 - binutils/testsuite/binutils-all/readelf.ss-64 | 13 - binutils/testsuite/binutils-all/readelf.ss-mips | 15 - binutils/testsuite/binutils-all/readelf.ss-tmips | 15 - binutils/testsuite/binutils-all/size.exp | 78 - binutils/testsuite/binutils-all/testprog.c | 30 - binutils/testsuite/binutils-all/windres/README | 26 - binutils/testsuite/binutils-all/windres/bmp1.bmp | Bin 122 -> 0 bytes .../testsuite/binutils-all/windres/bmpalign.rc | 9 - .../testsuite/binutils-all/windres/bmpalign.rsd | 38 - .../testsuite/binutils-all/windres/capstyle.rc | 5 - .../testsuite/binutils-all/windres/capstyle.rsd | 8 - .../testsuite/binutils-all/windres/checkbox.rc | 5 - .../testsuite/binutils-all/windres/checkbox.rsd | 12 - .../testsuite/binutils-all/windres/combobox.rc | 8 - .../testsuite/binutils-all/windres/combobox.rsd | 8 - binutils/testsuite/binutils-all/windres/deflang.rc | 4 - .../testsuite/binutils-all/windres/deflang.rsd | 8 - binutils/testsuite/binutils-all/windres/dialog0.rc | 4 - .../testsuite/binutils-all/windres/dialog0.rsd | 8 - binutils/testsuite/binutils-all/windres/dialog1.rc | 5 - .../testsuite/binutils-all/windres/dialog1.rsd | 8 - .../testsuite/binutils-all/windres/dialogid.rc | 9 - .../testsuite/binutils-all/windres/dialogid.rsd | 18 - .../binutils-all/windres/dialogsignature.rc | 5 - .../binutils-all/windres/dialogsignature.rsd | 8 - binutils/testsuite/binutils-all/windres/dlgfont.rc | 29 - .../testsuite/binutils-all/windres/dlgfont.rsd | 39 - .../testsuite/binutils-all/windres/edittext.rc | 4 - .../testsuite/binutils-all/windres/edittext.rsd | 8 - binutils/testsuite/binutils-all/windres/escapea.rc | 7 - .../testsuite/binutils-all/windres/escapea.rsd | 7 - binutils/testsuite/binutils-all/windres/escapex.rc | 4 - .../testsuite/binutils-all/windres/escapex.rsd | 8 - binutils/testsuite/binutils-all/windres/lang.rc | 15 - binutils/testsuite/binutils-all/windres/lang.rsd | 10 - binutils/testsuite/binutils-all/windres/listbox.rc | 4 - .../testsuite/binutils-all/windres/listbox.rsd | 8 - binutils/testsuite/binutils-all/windres/msupdate | 40 - .../testsuite/binutils-all/windres/nocaption.rc | 4 - .../testsuite/binutils-all/windres/nocaption.rsd | 8 - .../testsuite/binutils-all/windres/printstyle.rc | 6 - .../testsuite/binutils-all/windres/printstyle.rsd | 8 - .../testsuite/binutils-all/windres/quoteclass.rc | 8 - .../testsuite/binutils-all/windres/scrollbar.rc | 4 - .../testsuite/binutils-all/windres/scrollbar.rsd | 8 - binutils/testsuite/binutils-all/windres/strtab1.rc | 8 - .../testsuite/binutils-all/windres/strtab1.rsd | 8 - binutils/testsuite/binutils-all/windres/sublang.rc | 5 - .../testsuite/binutils-all/windres/sublang.rsd | 8 - .../testsuite/binutils-all/windres/windres.exp | 149 - binutils/testsuite/config/default.exp | 103 - binutils/testsuite/config/hppa.sed | 4 - binutils/testsuite/lib/utils-lib.exp | 151 - binutils/unwind-ia64.c | 1082 - binutils/unwind-ia64.h | 31 - binutils/version.c | 40 - binutils/windres.c | 1003 - binutils/windres.h | 851 - binutils/winduni.c | 140 - binutils/winduni.h | 60 - binutils/wrstabs.c | 2272 - gas/CONTRIBUTORS | 110 - gas/COPYING | 340 - gas/ChangeLog | 377 - gas/ChangeLog-0001 | 7703 - gas/ChangeLog-0203 | 7519 - gas/ChangeLog-9295 | 13117 -- gas/ChangeLog-9697 | 5959 - gas/ChangeLog-9899 | 4860 - gas/MAINTAINERS | 1 - gas/Makefile.am | 2478 - gas/Makefile.in | 3419 - gas/NEWS | 419 - gas/README | 241 - gas/README-vms | 248 - gas/acinclude.m4 | 72 - gas/aclocal.m4 | 1033 - gas/app.c | 1371 - gas/as.c | 1165 - gas/as.h | 701 - gas/asintl.h | 43 - gas/atof-generic.c | 630 - gas/bignum-copy.c | 80 - gas/bignum.h | 52 - gas/bit_fix.h | 48 - gas/cgen.c | 730 - gas/cgen.h | 102 - gas/cond.c | 542 - gas/config-gas.com | 186 - gas/config.in | 282 - gas/config/aout_gnu.h | 450 - gas/config/atof-ieee.c | 734 - gas/config/atof-tahoe.c | 415 - gas/config/atof-vax.c | 517 - gas/config/e-crisaout.c | 19 - gas/config/e-criself.c | 19 - gas/config/e-i386aout.c | 19 - gas/config/e-i386coff.c | 19 - gas/config/e-i386elf.c | 19 - gas/config/e-mipsecoff.c | 37 - gas/config/e-mipself.c | 37 - gas/config/itbl-mips.h | 47 - gas/config/m68k-parse.h | 334 - gas/config/m68k-parse.y | 1062 - gas/config/m88k-opcode.h | 559 - gas/config/obj-aout.c | 707 - gas/config/obj-aout.h | 256 - gas/config/obj-bout.c | 354 - gas/config/obj-bout.h | 319 - gas/config/obj-coff.c | 4690 - gas/config/obj-coff.h | 906 - gas/config/obj-ecoff.c | 328 - gas/config/obj-ecoff.h | 76 - gas/config/obj-elf.c | 2193 - gas/config/obj-elf.h | 250 - gas/config/obj-evax.c | 83 - gas/config/obj-evax.h | 95 - gas/config/obj-hp300.c | 53 - gas/config/obj-hp300.h | 72 - gas/config/obj-ieee.c | 633 - gas/config/obj-ieee.h | 50 - gas/config/obj-multi.c | 4 - gas/config/obj-multi.h | 162 - gas/config/obj-som.c | 347 - gas/config/obj-som.h | 73 - gas/config/obj-vms.c | 4933 - gas/config/obj-vms.h | 554 - gas/config/tc-a29k.c | 1297 - gas/config/tc-a29k.h | 55 - gas/config/tc-alpha.c | 5960 - gas/config/tc-alpha.h | 182 - gas/config/tc-arc.c | 2033 - gas/config/tc-arc.h | 74 - gas/config/tc-arm.c | 14306 -- gas/config/tc-arm.h | 225 - gas/config/tc-avr.c | 1300 - gas/config/tc-avr.h | 126 - gas/config/tc-cris.c | 3306 - gas/config/tc-cris.h | 170 - gas/config/tc-d10v.c | 1905 - gas/config/tc-d10v.h | 71 - gas/config/tc-d30v.c | 2253 - gas/config/tc-d30v.h | 68 - gas/config/tc-dlx.c | 1444 - gas/config/tc-dlx.h | 94 - gas/config/tc-fr30.c | 640 - gas/config/tc-fr30.h | 75 - gas/config/tc-frv.c | 1754 - gas/config/tc-frv.h | 86 - gas/config/tc-generic.c | 0 gas/config/tc-generic.h | 39 - gas/config/tc-h8300.c | 2324 - gas/config/tc-h8300.h | 103 - gas/config/tc-h8500.c | 1617 - gas/config/tc-h8500.h | 57 - gas/config/tc-hppa.c | 8707 - gas/config/tc-hppa.h | 206 - gas/config/tc-i370.c | 2926 - gas/config/tc-i370.h | 69 - gas/config/tc-i386.c | 6252 - gas/config/tc-i386.h | 502 - gas/config/tc-i860.c | 1546 - gas/config/tc-i860.h | 100 - gas/config/tc-i960.c | 3297 - gas/config/tc-i960.h | 205 - gas/config/tc-ia64.c | 11057 - gas/config/tc-ia64.h | 296 - gas/config/tc-ip2k.c | 500 - gas/config/tc-ip2k.h | 70 - gas/config/tc-iq2000.c | 1199 - gas/config/tc-iq2000.h | 70 - gas/config/tc-m32r.c | 2354 - gas/config/tc-m32r.h | 133 - gas/config/tc-m68851.h | 303 - gas/config/tc-m68hc11.c | 3347 - gas/config/tc-m68hc11.h | 123 - gas/config/tc-m68k.c | 7371 - gas/config/tc-m68k.h | 237 - gas/config/tc-m88k.c | 1207 - gas/config/tc-m88k.h | 109 - gas/config/tc-mcore.c | 2393 - gas/config/tc-mcore.h | 112 - gas/config/tc-mips.c | 14434 -- gas/config/tc-mips.h | 188 - gas/config/tc-mmix.c | 4320 - gas/config/tc-mmix.h | 223 - gas/config/tc-mn10200.c | 1406 - gas/config/tc-mn10200.h | 50 - gas/config/tc-mn10300.c | 2809 - gas/config/tc-mn10300.h | 113 - gas/config/tc-msp430.c | 1561 - gas/config/tc-msp430.h | 114 - gas/config/tc-ns32k.c | 2439 - gas/config/tc-ns32k.h | 139 - gas/config/tc-openrisc.c | 483 - gas/config/tc-openrisc.h | 66 - gas/config/tc-or32.c | 1630 - gas/config/tc-or32.h | 71 - gas/config/tc-pdp11.c | 1762 - gas/config/tc-pdp11.h | 33 - gas/config/tc-pj.c | 589 - gas/config/tc-pj.h | 60 - gas/config/tc-ppc.c | 6067 - gas/config/tc-ppc.h | 269 - gas/config/tc-s390.c | 2324 - gas/config/tc-s390.h | 118 - gas/config/tc-sh.c | 4303 - gas/config/tc-sh.h | 264 - gas/config/tc-sh64.c | 3504 - gas/config/tc-sh64.h | 223 - gas/config/tc-sparc.c | 4555 - gas/config/tc-sparc.h | 194 - gas/config/tc-tahoe.c | 2013 - gas/config/tc-tahoe.h | 43 - gas/config/tc-tic30.c | 1841 - gas/config/tc-tic30.h | 57 - gas/config/tc-tic4x.c | 3175 - gas/config/tc-tic4x.h | 103 - gas/config/tc-tic54x.c | 5849 - gas/config/tc-tic54x.h | 130 - gas/config/tc-tic80.c | 1056 - gas/config/tc-tic80.h | 61 - gas/config/tc-v850.c | 2516 - gas/config/tc-v850.h | 80 - gas/config/tc-vax.c | 3494 - gas/config/tc-vax.h | 83 - gas/config/tc-w65.c | 1137 - gas/config/tc-w65.h | 63 - gas/config/tc-xstormy16.c | 654 - gas/config/tc-xstormy16.h | 70 - gas/config/tc-xtensa.c | 8736 - gas/config/tc-xtensa.h | 194 - gas/config/tc-z8k.c | 1617 - gas/config/tc-z8k.h | 52 - gas/config/te-386bsd.h | 33 - gas/config/te-aix5.h | 3 - gas/config/te-aux.h | 17 - gas/config/te-delt88.h | 13 - gas/config/te-delta.h | 14 - gas/config/te-dpx2.h | 12 - gas/config/te-dynix.h | 7 - gas/config/te-epoc-pe.h | 8 - gas/config/te-freebsd.h | 30 - gas/config/te-generic.h | 22 - gas/config/te-go32.h | 16 - gas/config/te-hp300.h | 27 - gas/config/te-hppa.h | 29 - gas/config/te-hppa64.h | 6 - gas/config/te-hppalinux64.h | 5 - gas/config/te-hpux.h | 4 - gas/config/te-i386aix.h | 23 - gas/config/te-ia64aix.h | 4 - gas/config/te-ic960.h | 37 - gas/config/te-interix.h | 16 - gas/config/te-irix.h | 31 - gas/config/te-linux.h | 4 - gas/config/te-lnews.h | 5 - gas/config/te-lynx.h | 7 - gas/config/te-mach.h | 2 - gas/config/te-macos.h | 11 - gas/config/te-nbsd.h | 24 - gas/config/te-nbsd532.h | 13 - gas/config/te-pc532mach.h | 13 - gas/config/te-pe.h | 7 - gas/config/te-ppcnw.h | 32 - gas/config/te-psos.h | 18 - gas/config/te-riscix.h | 6 - gas/config/te-sparcaout.h | 22 - gas/config/te-sun3.h | 48 - gas/config/te-svr4.h | 4 - gas/config/te-sysv32.h | 6 - gas/config/te-tmips.h | 40 - gas/config/te-wince-pe.h | 2 - gas/config/vax-inst.h | 79 - gas/config/vms-a-conf.h | 129 - gas/config/vms-conf.h | 179 - gas/config/xtensa-istack.h | 73 - gas/config/xtensa-relax.c | 1765 - gas/config/xtensa-relax.h | 142 - gas/configure | 11589 - gas/configure.in | 1084 - gas/debug.c | 104 - gas/dep-in.sed | 53 - gas/depend.c | 206 - gas/doc/Makefile.am | 100 - gas/doc/Makefile.in | 545 - gas/doc/all.texi | 87 - gas/doc/as.texinfo | 6449 - gas/doc/c-a29k.texi | 182 - gas/doc/c-alpha.texi | 466 - gas/doc/c-arc.texi | 207 - gas/doc/c-arm.texi | 490 - gas/doc/c-cris.texi | 293 - gas/doc/c-d10v.texi | 257 - gas/doc/c-d30v.texi | 292 - gas/doc/c-h8300.texi | 356 - gas/doc/c-h8500.texi | 272 - gas/doc/c-hppa.texi | 264 - gas/doc/c-i370.texi | 200 - gas/doc/c-i386.texi | 755 - gas/doc/c-i860.texi | 172 - gas/doc/c-i960.texi | 299 - gas/doc/c-ia64.texi | 157 - gas/doc/c-ip2k.texi | 46 - gas/doc/c-m32r.texi | 358 - gas/doc/c-m68hc11.texi | 442 - gas/doc/c-m68k.texi | 554 - gas/doc/c-m88k.texi | 66 - gas/doc/c-mips.texi | 377 - gas/doc/c-mmix.texi | 586 - gas/doc/c-msp430.texi | 164 - gas/doc/c-ns32k.texi | 30 - gas/doc/c-pdp11.texi | 354 - gas/doc/c-pj.texi | 28 - gas/doc/c-ppc.texi | 126 - gas/doc/c-sh.texi | 322 - gas/doc/c-sh64.texi | 215 - gas/doc/c-sparc.texi | 195 - gas/doc/c-tic54x.texi | 767 - gas/doc/c-v850.texi | 396 - gas/doc/c-vax.texi | 358 - gas/doc/c-xtensa.texi | 740 - gas/doc/c-z8k.texi | 399 - gas/doc/fdl.texi | 367 - gas/doc/h8.texi | 26 - gas/doc/internals.texi | 1948 - gas/dw2gencfi.c | 1042 - gas/dw2gencfi.h | 52 - gas/dwarf2dbg.c | 1464 - gas/dwarf2dbg.h | 84 - gas/ecoff.c | 5236 - gas/ecoff.h | 111 - gas/ehopt.c | 540 - gas/emul-target.h | 64 - gas/emul.h | 44 - gas/expr.c | 1899 - gas/expr.h | 171 - gas/flonum-copy.c | 71 - gas/flonum-konst.c | 228 - gas/flonum-mult.c | 188 - gas/flonum.h | 102 - gas/frags.c | 378 - gas/frags.h | 162 - gas/gdbinit.in | 39 - gas/hash.c | 579 - gas/hash.h | 78 - gas/input-file.c | 273 - gas/input-file.h | 66 - gas/input-scrub.c | 514 - gas/itbl-lex.l | 114 - gas/itbl-ops.c | 901 - gas/itbl-ops.h | 108 - gas/itbl-parse.y | 460 - gas/link.cmd | 10 - gas/listing.c | 1344 - gas/listing.h | 67 - gas/literal.c | 95 - gas/mac-as.r | 42 - gas/macro.c | 1177 - gas/macro.h | 83 - gas/makefile.vms | 115 - gas/messages.c | 505 - gas/mpw-config.in | 115 - gas/mpw-make.sed | 96 - gas/obj.h | 94 - gas/output-file.c | 154 - gas/output-file.h | 26 - gas/po/.cvsignore | 1 - gas/po/Make-in | 253 - gas/po/POTFILES.in | 213 - gas/po/es.po | 12265 - gas/po/fr.po | 11752 - gas/po/gas.pot | 11467 - gas/po/tr.po | 12174 - gas/read.c | 5191 - gas/read.h | 188 - gas/sb.c | 264 - gas/sb.h | 99 - gas/stabs.c | 708 - gas/stamp-h.in | 1 - gas/struc-symbol.h | 159 - gas/subsegs.c | 646 - gas/subsegs.h | 155 - gas/symbols.c | 2576 - gas/symbols.h | 213 - gas/tc.h | 112 - gas/testsuite/ChangeLog | 140 - gas/testsuite/ChangeLog-9303 | 6895 - gas/testsuite/config/default.exp | 49 - gas/testsuite/gas/all/align.d | 12 - gas/testsuite/gas/all/align.s | 61 - gas/testsuite/gas/all/align2.d | 9 - gas/testsuite/gas/all/align2.s | 2 - gas/testsuite/gas/all/cofftag.d | 25 - gas/testsuite/gas/all/cofftag.s | 57 - gas/testsuite/gas/all/comment.s | 3 - gas/testsuite/gas/all/cond.d | 30 - gas/testsuite/gas/all/cond.s | 32 - gas/testsuite/gas/all/diff1.s | 5 - gas/testsuite/gas/all/fastcall.s | 1 - gas/testsuite/gas/all/float.s | 4 - gas/testsuite/gas/all/gas.exp | 176 - gas/testsuite/gas/all/incbin.d | 13 - gas/testsuite/gas/all/incbin.dat | 1 - gas/testsuite/gas/all/incbin.s | 5 - gas/testsuite/gas/all/itbl | 20 - gas/testsuite/gas/all/itbl-test.c | 129 - gas/testsuite/gas/all/itbl.s | 13 - gas/testsuite/gas/all/p1480.s | 3 - gas/testsuite/gas/all/p2425.s | 6 - gas/testsuite/gas/all/struct.d | 8 - gas/testsuite/gas/all/struct.s | 10 - gas/testsuite/gas/all/test-example.c | 103 - gas/testsuite/gas/all/test-gen.c | 744 - gas/testsuite/gas/all/x930509.s | 3 - gas/testsuite/gas/alpha/alpha.exp | 44 - gas/testsuite/gas/alpha/elf-reloc-1.d | 21 - gas/testsuite/gas/alpha/elf-reloc-1.s | 16 - gas/testsuite/gas/alpha/elf-reloc-2.l | 4 - gas/testsuite/gas/alpha/elf-reloc-2.s | 8 - gas/testsuite/gas/alpha/elf-reloc-3.l | 3 - gas/testsuite/gas/alpha/elf-reloc-3.s | 2 - gas/testsuite/gas/alpha/elf-reloc-4.d | 25 - gas/testsuite/gas/alpha/elf-reloc-4.s | 4 - gas/testsuite/gas/alpha/elf-reloc-5.d | 28 - gas/testsuite/gas/alpha/elf-reloc-5.s | 31 - gas/testsuite/gas/alpha/elf-reloc-6.l | 3 - gas/testsuite/gas/alpha/elf-reloc-6.s | 31 - gas/testsuite/gas/alpha/elf-reloc-7.d | 22 - gas/testsuite/gas/alpha/elf-reloc-7.s | 26 - gas/testsuite/gas/alpha/elf-reloc-8.d | 330 - gas/testsuite/gas/alpha/elf-reloc-8.s | 1119 - gas/testsuite/gas/alpha/elf-tls-1.d | 29 - gas/testsuite/gas/alpha/elf-tls-1.s | 24 - gas/testsuite/gas/alpha/elf-tls-2.l | 9 - gas/testsuite/gas/alpha/elf-tls-2.s | 32 - gas/testsuite/gas/alpha/elf-tls-3.l | 7 - gas/testsuite/gas/alpha/elf-tls-3.s | 22 - gas/testsuite/gas/alpha/elf-usepv-1.d | 11 - gas/testsuite/gas/alpha/elf-usepv-1.s | 6 - gas/testsuite/gas/alpha/elf-usepv-2.l | 2 - gas/testsuite/gas/alpha/elf-usepv-2.s | 1 - gas/testsuite/gas/alpha/fp.d | 9 - gas/testsuite/gas/alpha/fp.s | 14 - gas/testsuite/gas/alpha/unop.d | 12 - gas/testsuite/gas/alpha/unop.s | 4 - gas/testsuite/gas/arc/adc.d | 85 - gas/testsuite/gas/arc/adc.s | 68 - gas/testsuite/gas/arc/add.d | 85 - gas/testsuite/gas/arc/add.s | 68 - gas/testsuite/gas/arc/alias.d | 68 - gas/testsuite/gas/arc/alias.s | 76 - gas/testsuite/gas/arc/and.d | 85 - gas/testsuite/gas/arc/and.s | 68 - gas/testsuite/gas/arc/arc.exp | 45 - gas/testsuite/gas/arc/asl.d | 68 - gas/testsuite/gas/arc/asl.s | 58 - gas/testsuite/gas/arc/asr.d | 51 - gas/testsuite/gas/arc/asr.s | 38 - gas/testsuite/gas/arc/b.d | 76 - gas/testsuite/gas/arc/b.s | 40 - gas/testsuite/gas/arc/bic.d | 85 - gas/testsuite/gas/arc/bic.s | 68 - gas/testsuite/gas/arc/bl.d | 76 - gas/testsuite/gas/arc/bl.s | 40 - gas/testsuite/gas/arc/branch.d | 45 - gas/testsuite/gas/arc/branch.s | 47 - gas/testsuite/gas/arc/brk.d | 11 - gas/testsuite/gas/arc/brk.s | 7 - gas/testsuite/gas/arc/extb.d | 51 - gas/testsuite/gas/arc/extb.s | 38 - gas/testsuite/gas/arc/extw.d | 51 - gas/testsuite/gas/arc/extw.s | 38 - gas/testsuite/gas/arc/flag.d | 38 - gas/testsuite/gas/arc/flag.s | 27 - gas/testsuite/gas/arc/insn3.d | 44 - gas/testsuite/gas/arc/insn3.s | 52 - gas/testsuite/gas/arc/j.d | 127 - gas/testsuite/gas/arc/j.s | 36 - gas/testsuite/gas/arc/jl.d | 25 - gas/testsuite/gas/arc/jl.s | 9 - gas/testsuite/gas/arc/ld.d | 13 - gas/testsuite/gas/arc/ld.s | 7 - gas/testsuite/gas/arc/ld2.d | 21 - gas/testsuite/gas/arc/ld2.s | 13 - gas/testsuite/gas/arc/lp.d | 76 - gas/testsuite/gas/arc/lp.s | 40 - gas/testsuite/gas/arc/lsr.d | 51 - gas/testsuite/gas/arc/lsr.s | 38 - gas/testsuite/gas/arc/math.d | 78 - gas/testsuite/gas/arc/math.s | 89 - gas/testsuite/gas/arc/mov.d | 68 - gas/testsuite/gas/arc/mov.s | 58 - gas/testsuite/gas/arc/nop.d | 9 - gas/testsuite/gas/arc/nop.s | 3 - gas/testsuite/gas/arc/or.d | 85 - gas/testsuite/gas/arc/or.s | 68 - gas/testsuite/gas/arc/rlc.d | 68 - gas/testsuite/gas/arc/rlc.s | 58 - gas/testsuite/gas/arc/ror.d | 51 - gas/testsuite/gas/arc/ror.s | 38 - gas/testsuite/gas/arc/rrc.d | 51 - gas/testsuite/gas/arc/rrc.s | 38 - gas/testsuite/gas/arc/sbc.d | 85 - gas/testsuite/gas/arc/sbc.s | 68 - gas/testsuite/gas/arc/sexb.d | 51 - gas/testsuite/gas/arc/sexb.s | 38 - gas/testsuite/gas/arc/sexw.d | 51 - gas/testsuite/gas/arc/sexw.s | 38 - gas/testsuite/gas/arc/sleep.d | 11 - gas/testsuite/gas/arc/sleep.s | 6 - gas/testsuite/gas/arc/sshift.d | 44 - gas/testsuite/gas/arc/sshift.s | 52 - gas/testsuite/gas/arc/st.d | 33 - gas/testsuite/gas/arc/st.s | 22 - gas/testsuite/gas/arc/sub.d | 85 - gas/testsuite/gas/arc/sub.s | 68 - gas/testsuite/gas/arc/swi.d | 11 - gas/testsuite/gas/arc/swi.s | 6 - gas/testsuite/gas/arc/warn.exp | 8 - gas/testsuite/gas/arc/warn.s | 11 - gas/testsuite/gas/arc/xor.d | 85 - gas/testsuite/gas/arc/xor.s | 68 - gas/testsuite/gas/arm/adrl.d | 27 - gas/testsuite/gas/arm/adrl.s | 24 - gas/testsuite/gas/arm/arch4t.s | 35 - gas/testsuite/gas/arm/arch5tej.d | 17 - gas/testsuite/gas/arm/arch5tej.s | 12 - gas/testsuite/gas/arm/archv6.d | 219 - gas/testsuite/gas/arm/archv6.s | 216 - gas/testsuite/gas/arm/arm.exp | 106 - gas/testsuite/gas/arm/arm3.s | 6 - gas/testsuite/gas/arm/arm6.s | 19 - gas/testsuite/gas/arm/arm7dm.s | 14 - gas/testsuite/gas/arm/arm7t.d | 70 - gas/testsuite/gas/arm/arm7t.s | 81 - gas/testsuite/gas/arm/armv1-bad.l | 12 - gas/testsuite/gas/arm/armv1-bad.s | 15 - gas/testsuite/gas/arm/armv1.d | 73 - gas/testsuite/gas/arm/armv1.s | 76 - gas/testsuite/gas/arm/copro.d | 41 - gas/testsuite/gas/arm/copro.s | 45 - gas/testsuite/gas/arm/el_segundo.d | 33 - gas/testsuite/gas/arm/el_segundo.s | 54 - gas/testsuite/gas/arm/float.s | 162 - gas/testsuite/gas/arm/fpa-dyadic.d | 166 - gas/testsuite/gas/arm/fpa-dyadic.s | 172 - gas/testsuite/gas/arm/fpa-mem.d | 34 - gas/testsuite/gas/arm/fpa-mem.s | 31 - gas/testsuite/gas/arm/fpa-monadic.d | 202 - gas/testsuite/gas/arm/fpa-monadic.s | 210 - gas/testsuite/gas/arm/immed.s | 11 - gas/testsuite/gas/arm/inst.d | 201 - gas/testsuite/gas/arm/inst.s | 223 - gas/testsuite/gas/arm/iwmmxt-bad.l | 9 - gas/testsuite/gas/arm/iwmmxt-bad.s | 8 - gas/testsuite/gas/arm/iwmmxt.d | 168 - gas/testsuite/gas/arm/iwmmxt.s | 204 - gas/testsuite/gas/arm/ldconst.d | 27 - gas/testsuite/gas/arm/ldconst.s | 28 - gas/testsuite/gas/arm/le-fpconst.d | 8 - gas/testsuite/gas/arm/le-fpconst.s | 8 - gas/testsuite/gas/arm/mapping.d | 18 - gas/testsuite/gas/arm/mapping.s | 19 - gas/testsuite/gas/arm/maverick.c | 529 - gas/testsuite/gas/arm/maverick.d | 477 - gas/testsuite/gas/arm/maverick.s | 470 - gas/testsuite/gas/arm/offset.s | 5 - gas/testsuite/gas/arm/pic.d | 17 - gas/testsuite/gas/arm/pic.s | 11 - gas/testsuite/gas/arm/r15-bad.l | 64 - gas/testsuite/gas/arm/r15-bad.s | 68 - gas/testsuite/gas/arm/req.l | 3 - gas/testsuite/gas/arm/req.s | 25 - gas/testsuite/gas/arm/thumb.s | 194 - gas/testsuite/gas/arm/thumbv6.d | 23 - gas/testsuite/gas/arm/thumbv6.s | 24 - gas/testsuite/gas/arm/undefined.l | 2 - gas/testsuite/gas/arm/undefined.s | 1 - gas/testsuite/gas/arm/vfp-bad.l | 9 - gas/testsuite/gas/arm/vfp-bad.s | 11 - gas/testsuite/gas/arm/vfp1.d | 193 - gas/testsuite/gas/arm/vfp1.s | 284 - gas/testsuite/gas/arm/vfp1xD.d | 241 - gas/testsuite/gas/arm/vfp1xD.s | 339 - gas/testsuite/gas/arm/vfp2.d | 17 - gas/testsuite/gas/arm/vfp2.s | 18 - gas/testsuite/gas/arm/wince_arm7t.d | 75 - gas/testsuite/gas/arm/wince_copro.d | 45 - gas/testsuite/gas/arm/wince_inst.d | 203 - gas/testsuite/gas/arm/wince_ldconst.d | 31 - gas/testsuite/gas/arm/xscale.d | 37 - gas/testsuite/gas/arm/xscale.s | 42 - gas/testsuite/gas/cfi/cfi-alpha-1.d | 22 - gas/testsuite/gas/cfi/cfi-alpha-1.s | 28 - gas/testsuite/gas/cfi/cfi-alpha-2.d | 9 - gas/testsuite/gas/cfi/cfi-alpha-2.s | 14 - gas/testsuite/gas/cfi/cfi-alpha-3.d | 36 - gas/testsuite/gas/cfi/cfi-alpha-3.s | 37 - gas/testsuite/gas/cfi/cfi-common-1.d | 23 - gas/testsuite/gas/cfi/cfi-common-1.s | 8 - gas/testsuite/gas/cfi/cfi-common-2.d | 26 - gas/testsuite/gas/cfi/cfi-common-2.s | 12 - gas/testsuite/gas/cfi/cfi-common-3.d | 20 - gas/testsuite/gas/cfi/cfi-common-3.s | 4 - gas/testsuite/gas/cfi/cfi-diag-1.l | 2 - gas/testsuite/gas/cfi/cfi-diag-1.s | 3 - gas/testsuite/gas/cfi/cfi-i386-2.d | 26 - gas/testsuite/gas/cfi/cfi-i386-2.s | 17 - gas/testsuite/gas/cfi/cfi-i386.d | 40 - gas/testsuite/gas/cfi/cfi-i386.s | 107 - gas/testsuite/gas/cfi/cfi-m68k.d | 33 - gas/testsuite/gas/cfi/cfi-m68k.s | 64 - gas/testsuite/gas/cfi/cfi-ppc-1.d | 30 - gas/testsuite/gas/cfi/cfi-ppc-1.s | 45 - gas/testsuite/gas/cfi/cfi-s390-1.d | 31 - gas/testsuite/gas/cfi/cfi-s390-1.s | 54 - gas/testsuite/gas/cfi/cfi-s390x-1.d | 34 - gas/testsuite/gas/cfi/cfi-s390x-1.s | 45 - gas/testsuite/gas/cfi/cfi-sparc-1.d | 22 - gas/testsuite/gas/cfi/cfi-sparc-1.s | 23 - gas/testsuite/gas/cfi/cfi-sparc64-1.d | 25 - gas/testsuite/gas/cfi/cfi-sparc64-1.s | 26 - gas/testsuite/gas/cfi/cfi-x86_64.d | 44 - gas/testsuite/gas/cfi/cfi-x86_64.s | 107 - gas/testsuite/gas/cfi/cfi.exp | 59 - gas/testsuite/gas/cris/addi.d | 19 - gas/testsuite/gas/cris/addi.s | 17 - gas/testsuite/gas/cris/binop-cmpmove.d | 405 - gas/testsuite/gas/cris/binop-cmpmovx.d | 232 - gas/testsuite/gas/cris/binop-extx.d | 327 - gas/testsuite/gas/cris/binop-segref.s | 95 - gas/testsuite/gas/cris/binop.d | 569 - gas/testsuite/gas/cris/binop.s | 914 - gas/testsuite/gas/cris/bork.d | 10 - gas/testsuite/gas/cris/bork.s | 6 - gas/testsuite/gas/cris/branch-warn-1.s | 9 - gas/testsuite/gas/cris/branch-warn-2.s | 11 - gas/testsuite/gas/cris/branch-warn-3.s | 11 - gas/testsuite/gas/cris/branch.d | 519 - gas/testsuite/gas/cris/branch.s | 270 - gas/testsuite/gas/cris/break.d | 27 - gas/testsuite/gas/cris/break.s | 22 - gas/testsuite/gas/cris/brokw-1.d | 20 - gas/testsuite/gas/cris/brokw-1.s | 19 - gas/testsuite/gas/cris/brokw-2.d | 25 - gas/testsuite/gas/cris/brokw-2.s | 22 - gas/testsuite/gas/cris/brokw-3.d | 228 - gas/testsuite/gas/cris/brokw-3.s | 112 - gas/testsuite/gas/cris/bwtest-err-1.s | 92 - gas/testsuite/gas/cris/ccr.d | 71 - gas/testsuite/gas/cris/ccr.s | 80 - gas/testsuite/gas/cris/clear.d | 323 - gas/testsuite/gas/cris/continue.d | 10 - gas/testsuite/gas/cris/continue.s | 7 - gas/testsuite/gas/cris/cris.exp | 561 - gas/testsuite/gas/cris/diffexp-ovwr.d | 26 - gas/testsuite/gas/cris/diffexp-ovwr.s | 22 - gas/testsuite/gas/cris/fragtest.d | 64 - gas/testsuite/gas/cris/fragtest.s | 66 - gas/testsuite/gas/cris/jump-type.d | 219 - gas/testsuite/gas/cris/labfloat.d | 12 - gas/testsuite/gas/cris/labfloat.s | 9 - gas/testsuite/gas/cris/macroat.d | 14 - gas/testsuite/gas/cris/macroat.s | 13 - gas/testsuite/gas/cris/movem-to-reg.d | 165 - gas/testsuite/gas/cris/nosep.d | 10 - gas/testsuite/gas/cris/nosep.s | 8 - gas/testsuite/gas/cris/oneop-type.d | 15 - gas/testsuite/gas/cris/operand-err-1.s | 46 - gas/testsuite/gas/cris/pic-err-1.s | 20 - gas/testsuite/gas/cris/prefix.d | 94 - gas/testsuite/gas/cris/prefix.s | 247 - gas/testsuite/gas/cris/pushpop-byte-sreg.d | 39 - gas/testsuite/gas/cris/pushpop-dcr1-sreg.d | 15 - gas/testsuite/gas/cris/pushpop-dword-sreg.d | 39 - gas/testsuite/gas/cris/pushpop-word-sreg.d | 39 - gas/testsuite/gas/cris/pushpop.d | 89 - gas/testsuite/gas/cris/pushpop.s | 121 - gas/testsuite/gas/cris/quick-s6.d | 24 - gas/testsuite/gas/cris/quick-u5.d | 17 - gas/testsuite/gas/cris/quick-u6.d | 26 - gas/testsuite/gas/cris/quick.s | 51 - gas/testsuite/gas/cris/range-err-1.s | 69 - gas/testsuite/gas/cris/range-err-2.s | 10 - gas/testsuite/gas/cris/rd-bcnst.d | 22 - gas/testsuite/gas/cris/rd-bcnst.s | 3 - gas/testsuite/gas/cris/rd-dw2-1.d | 52 - gas/testsuite/gas/cris/rd-dw2-10.d | 11 - gas/testsuite/gas/cris/rd-dw2-11.d | 46 - gas/testsuite/gas/cris/rd-dw2-12.d | 93 - gas/testsuite/gas/cris/rd-dw2-13.d | 34 - gas/testsuite/gas/cris/rd-dw2-14.d | 30 - gas/testsuite/gas/cris/rd-dw2-15.d | 162 - gas/testsuite/gas/cris/rd-dw2-2.d | 35 - gas/testsuite/gas/cris/rd-dw2-3.d | 12 - gas/testsuite/gas/cris/rd-dw2-4.d | 13 - gas/testsuite/gas/cris/rd-dw2-5.d | 14 - gas/testsuite/gas/cris/rd-dw2-6.d | 230 - gas/testsuite/gas/cris/rd-dw2-7.d | 15 - gas/testsuite/gas/cris/rd-dw2-8.d | 17 - gas/testsuite/gas/cris/rd-dw2-9.d | 63 - gas/testsuite/gas/cris/rd-pcrel1.d | 45 - gas/testsuite/gas/cris/rd-pcrel1.s | 56 - gas/testsuite/gas/cris/rd-pcrel2.d | 52 - gas/testsuite/gas/cris/rd-pcrel2.s | 60 - gas/testsuite/gas/cris/rd-pic-1.d | 58 - gas/testsuite/gas/cris/rd-pic-1.s | 31 - gas/testsuite/gas/cris/rd-regprefix-1.d | 34 - gas/testsuite/gas/cris/rd-regprefix-1.s | 41 - gas/testsuite/gas/cris/rd-regprefix-1b.d | 43 - gas/testsuite/gas/cris/reg-to-mem.d | 165 - gas/testsuite/gas/cris/regprefix-err-1.s | 34 - gas/testsuite/gas/cris/regreg.d | 15 - gas/testsuite/gas/cris/regreg.s | 18 - gas/testsuite/gas/cris/return.d | 13 - gas/testsuite/gas/cris/return.s | 11 - gas/testsuite/gas/cris/scc.d | 28 - gas/testsuite/gas/cris/scc.s | 26 - gas/testsuite/gas/cris/sep-err-1.s | 6 - gas/testsuite/gas/cris/sep-err-2.s | 6 - gas/testsuite/gas/cris/sep-err-3.s | 6 - gas/testsuite/gas/cris/separator.d | 8 - gas/testsuite/gas/cris/separator.s | 16 - gas/testsuite/gas/cris/shexpr-1.d | 8 - gas/testsuite/gas/cris/shexpr-1.s | 6 - gas/testsuite/gas/cris/sreg-to-x.d | 215 - gas/testsuite/gas/cris/string-1.d | 12 - gas/testsuite/gas/cris/string-1.s | 8 - gas/testsuite/gas/cris/string-2.d | 12 - gas/testsuite/gas/cris/string-2.s | 7 - gas/testsuite/gas/cris/test.d | 323 - gas/testsuite/gas/cris/unimplemented.d | 31 - gas/testsuite/gas/cris/unimplemented.s | 29 - gas/testsuite/gas/cris/unop-mem.d | 218 - gas/testsuite/gas/cris/unop.s | 669 - gas/testsuite/gas/cris/us-err-1.s | 8 - gas/testsuite/gas/cris/us-err-2.s | 10 - gas/testsuite/gas/cris/us-err-3.s | 10 - gas/testsuite/gas/cris/x-to-byte-sreg.d | 93 - gas/testsuite/gas/cris/x-to-dcr1-sreg.d | 58 - gas/testsuite/gas/cris/x-to-dword-sreg.d | 181 - gas/testsuite/gas/cris/x-to-word-sreg.d | 152 - gas/testsuite/gas/d10v/address-001.d | 32 - gas/testsuite/gas/d10v/address-001.s | 78 - gas/testsuite/gas/d10v/address-002.l | 3 - gas/testsuite/gas/d10v/address-002.s | 8 - gas/testsuite/gas/d10v/address-003.l | 3 - gas/testsuite/gas/d10v/address-003.s | 8 - gas/testsuite/gas/d10v/address-004.l | 3 - gas/testsuite/gas/d10v/address-004.s | 8 - gas/testsuite/gas/d10v/address-005.l | 3 - gas/testsuite/gas/d10v/address-005.s | 8 - gas/testsuite/gas/d10v/address-006.l | 3 - gas/testsuite/gas/d10v/address-006.s | 8 - gas/testsuite/gas/d10v/address-007.l | 3 - gas/testsuite/gas/d10v/address-007.s | 8 - gas/testsuite/gas/d10v/address-008.l | 3 - gas/testsuite/gas/d10v/address-008.s | 8 - gas/testsuite/gas/d10v/address-009.l | 3 - gas/testsuite/gas/d10v/address-009.s | 8 - gas/testsuite/gas/d10v/address-010.l | 3 - gas/testsuite/gas/d10v/address-010.s | 8 - gas/testsuite/gas/d10v/address-011.l | 3 - gas/testsuite/gas/d10v/address-011.s | 8 - gas/testsuite/gas/d10v/address-012.l | 3 - gas/testsuite/gas/d10v/address-012.s | 8 - gas/testsuite/gas/d10v/address-013.l | 3 - gas/testsuite/gas/d10v/address-013.s | 8 - gas/testsuite/gas/d10v/address-014.l | 3 - gas/testsuite/gas/d10v/address-014.s | 8 - gas/testsuite/gas/d10v/address-015.l | 3 - gas/testsuite/gas/d10v/address-015.s | 8 - gas/testsuite/gas/d10v/address-016.l | 3 - gas/testsuite/gas/d10v/address-016.s | 8 - gas/testsuite/gas/d10v/address-017.l | 3 - gas/testsuite/gas/d10v/address-017.s | 8 - gas/testsuite/gas/d10v/address-018.l | 3 - gas/testsuite/gas/d10v/address-018.s | 8 - gas/testsuite/gas/d10v/address-019.l | 3 - gas/testsuite/gas/d10v/address-019.s | 8 - gas/testsuite/gas/d10v/address-020.l | 3 - gas/testsuite/gas/d10v/address-020.s | 8 - gas/testsuite/gas/d10v/address-021.l | 3 - gas/testsuite/gas/d10v/address-021.s | 8 - gas/testsuite/gas/d10v/address-022.l | 3 - gas/testsuite/gas/d10v/address-022.s | 8 - gas/testsuite/gas/d10v/address-023.l | 3 - gas/testsuite/gas/d10v/address-023.s | 8 - gas/testsuite/gas/d10v/address-024.l | 3 - gas/testsuite/gas/d10v/address-024.s | 8 - gas/testsuite/gas/d10v/address-025.l | 3 - gas/testsuite/gas/d10v/address-025.s | 8 - gas/testsuite/gas/d10v/address-026.l | 3 - gas/testsuite/gas/d10v/address-026.s | 8 - gas/testsuite/gas/d10v/address-027.l | 3 - gas/testsuite/gas/d10v/address-027.s | 8 - gas/testsuite/gas/d10v/address-028.l | 3 - gas/testsuite/gas/d10v/address-028.s | 8 - gas/testsuite/gas/d10v/address-029.l | 3 - gas/testsuite/gas/d10v/address-029.s | 8 - gas/testsuite/gas/d10v/address-030.l | 3 - gas/testsuite/gas/d10v/address-030.s | 8 - gas/testsuite/gas/d10v/address-031.l | 3 - gas/testsuite/gas/d10v/address-031.s | 8 - gas/testsuite/gas/d10v/address-032.l | 3 - gas/testsuite/gas/d10v/address-032.s | 8 - gas/testsuite/gas/d10v/address-033.l | 3 - gas/testsuite/gas/d10v/address-033.s | 8 - gas/testsuite/gas/d10v/address-034.l | 3 - gas/testsuite/gas/d10v/address-034.s | 8 - gas/testsuite/gas/d10v/address-035.l | 3 - gas/testsuite/gas/d10v/address-035.s | 8 - gas/testsuite/gas/d10v/address-036.l | 3 - gas/testsuite/gas/d10v/address-036.s | 8 - gas/testsuite/gas/d10v/address-037.l | 3 - gas/testsuite/gas/d10v/address-037.s | 8 - gas/testsuite/gas/d10v/address-038.l | 3 - gas/testsuite/gas/d10v/address-038.s | 8 - gas/testsuite/gas/d10v/address-039.l | 3 - gas/testsuite/gas/d10v/address-039.s | 8 - gas/testsuite/gas/d10v/address-040.l | 3 - gas/testsuite/gas/d10v/address-040.s | 8 - gas/testsuite/gas/d10v/address-041.l | 3 - gas/testsuite/gas/d10v/address-041.s | 8 - gas/testsuite/gas/d10v/control-001.d | 18 - gas/testsuite/gas/d10v/control-001.s | 25 - gas/testsuite/gas/d10v/d10v.exp | 102 - gas/testsuite/gas/d10v/error-001.d | 11 - gas/testsuite/gas/d10v/error-001.s | 9 - gas/testsuite/gas/d10v/error-002.d | 4 - gas/testsuite/gas/d10v/error-002.s | 9 - gas/testsuite/gas/d10v/immediate-001.d | 24 - gas/testsuite/gas/d10v/immediate-001.s | 32 - gas/testsuite/gas/d10v/immediate-002.d | 9 - gas/testsuite/gas/d10v/immediate-002.s | 9 - gas/testsuite/gas/d10v/immediate-003.d | 10 - gas/testsuite/gas/d10v/immediate-003.s | 8 - gas/testsuite/gas/d10v/immediate-004.d | 2 - gas/testsuite/gas/d10v/immediate-004.s | 8 - gas/testsuite/gas/d10v/immediate-005.d | 2 - gas/testsuite/gas/d10v/immediate-005.s | 7 - gas/testsuite/gas/d10v/immediate-006.d | 19 - gas/testsuite/gas/d10v/immediate-006.s | 14 - gas/testsuite/gas/d10v/immediate-007.d | 13 - gas/testsuite/gas/d10v/immediate-007.s | 19 - gas/testsuite/gas/d10v/inst.d | 22 - gas/testsuite/gas/d10v/inst.s | 31 - gas/testsuite/gas/d10v/instruction_packing-001.d | 24 - gas/testsuite/gas/d10v/instruction_packing-001.s | 29 - gas/testsuite/gas/d10v/instruction_packing-002.d | 16 - gas/testsuite/gas/d10v/instruction_packing-002.s | 10 - gas/testsuite/gas/d10v/instruction_packing-003.d | 15 - gas/testsuite/gas/d10v/instruction_packing-003.s | 9 - gas/testsuite/gas/d10v/instruction_packing-004.d | 13 - gas/testsuite/gas/d10v/instruction_packing-004.s | 8 - gas/testsuite/gas/d10v/instruction_packing-005.d | 29 - gas/testsuite/gas/d10v/instruction_packing-005.s | 40 - gas/testsuite/gas/d10v/instruction_packing-006.d | 50 - gas/testsuite/gas/d10v/instruction_packing-006.s | 38 - gas/testsuite/gas/d10v/instruction_packing-007.d | 13 - gas/testsuite/gas/d10v/instruction_packing-007.s | 18 - gas/testsuite/gas/d10v/instruction_packing-008.d | 14 - gas/testsuite/gas/d10v/instruction_packing-009.d | 16 - gas/testsuite/gas/d10v/instruction_packing-010.d | 14 - gas/testsuite/gas/d10v/instruction_packing.d | 85 - gas/testsuite/gas/d10v/instruction_packing.s | 83 - gas/testsuite/gas/d10v/label-001.d | 1610 - gas/testsuite/gas/d10v/label-001.s | 3132 - gas/testsuite/gas/d10v/warning-001.d | 2 - gas/testsuite/gas/d10v/warning-001.s | 4 - gas/testsuite/gas/d10v/warning-002.d | 2 - gas/testsuite/gas/d10v/warning-002.s | 4 - gas/testsuite/gas/d10v/warning-003.d | 2 - gas/testsuite/gas/d10v/warning-003.s | 4 - gas/testsuite/gas/d10v/warning-004.d | 2 - gas/testsuite/gas/d10v/warning-004.s | 4 - gas/testsuite/gas/d10v/warning-005.d | 2 - gas/testsuite/gas/d10v/warning-005.s | 4 - gas/testsuite/gas/d10v/warning-006.d | 2 - gas/testsuite/gas/d10v/warning-006.s | 4 - gas/testsuite/gas/d10v/warning-007.d | 2 - gas/testsuite/gas/d10v/warning-007.s | 4 - gas/testsuite/gas/d10v/warning-008.d | 2 - gas/testsuite/gas/d10v/warning-008.s | 5 - gas/testsuite/gas/d10v/warning-009.d | 2 - gas/testsuite/gas/d10v/warning-009.s | 5 - gas/testsuite/gas/d10v/warning-010.d | 2 - gas/testsuite/gas/d10v/warning-010.s | 6 - gas/testsuite/gas/d10v/warning-011.d | 2 - gas/testsuite/gas/d10v/warning-011.s | 7 - gas/testsuite/gas/d10v/warning-012.d | 2 - gas/testsuite/gas/d10v/warning-012.s | 6 - gas/testsuite/gas/d10v/warning-013.d | 2 - gas/testsuite/gas/d10v/warning-013.s | 6 - gas/testsuite/gas/d10v/warning-014.d | 10 - gas/testsuite/gas/d10v/warning-014.s | 8 - gas/testsuite/gas/d10v/warning-015.d | 2 - gas/testsuite/gas/d10v/warning-016.d | 2 - gas/testsuite/gas/d10v/warning-016.s | 6 - gas/testsuite/gas/d10v/warning-017.d | 2 - gas/testsuite/gas/d10v/warning-017.s | 6 - gas/testsuite/gas/d10v/warning-018.d | 2 - gas/testsuite/gas/d10v/warning-018.s | 6 - gas/testsuite/gas/d10v/warning-019.d | 2 - gas/testsuite/gas/d10v/warning-019.s | 6 - gas/testsuite/gas/d30v/align.d | 17 - gas/testsuite/gas/d30v/align.s | 28 - gas/testsuite/gas/d30v/array.d | 31 - gas/testsuite/gas/d30v/array.s | 15 - gas/testsuite/gas/d30v/bittest.d | 20 - gas/testsuite/gas/d30v/bittest.l | 52 - gas/testsuite/gas/d30v/bittest.s | 28 - gas/testsuite/gas/d30v/d30.exp | 35 - gas/testsuite/gas/d30v/guard-debug.d | 25 - gas/testsuite/gas/d30v/guard-debug.s | 17 - gas/testsuite/gas/d30v/guard.d | 17 - gas/testsuite/gas/d30v/guard.s | 24 - gas/testsuite/gas/d30v/inst.d | 265 - gas/testsuite/gas/d30v/inst.s | 504 - gas/testsuite/gas/d30v/label-debug.d | 24 - gas/testsuite/gas/d30v/label-debug.s | 11 - gas/testsuite/gas/d30v/label.d | 16 - gas/testsuite/gas/d30v/label.s | 11 - gas/testsuite/gas/d30v/mul.d | 20 - gas/testsuite/gas/d30v/mul.s | 19 - gas/testsuite/gas/d30v/opt.d | 89 - gas/testsuite/gas/d30v/opt.s | 216 - gas/testsuite/gas/d30v/reloc.d | 93 - gas/testsuite/gas/d30v/reloc.s | 68 - gas/testsuite/gas/d30v/serial.l | 46 - gas/testsuite/gas/d30v/serial.s | 14 - gas/testsuite/gas/d30v/serial2.l | 138 - gas/testsuite/gas/d30v/serial2.s | 29 - gas/testsuite/gas/d30v/serial2O.l | 99 - gas/testsuite/gas/d30v/serial2O.s | 29 - gas/testsuite/gas/d30v/warn_oddreg.l | 40 - gas/testsuite/gas/d30v/warn_oddreg.s | 12 - gas/testsuite/gas/dlx/alltests.exp | 10 - gas/testsuite/gas/dlx/branch.d | 43 - gas/testsuite/gas/dlx/branch.s | 31 - gas/testsuite/gas/dlx/itype.d | 40 - gas/testsuite/gas/dlx/itype.s | 30 - gas/testsuite/gas/dlx/lhi.d | 23 - gas/testsuite/gas/dlx/lhi.s | 10 - gas/testsuite/gas/dlx/load.d | 33 - gas/testsuite/gas/dlx/load.s | 19 - gas/testsuite/gas/dlx/rtype.d | 38 - gas/testsuite/gas/dlx/rtype.s | 33 - gas/testsuite/gas/dlx/store.d | 22 - gas/testsuite/gas/dlx/store.s | 9 - gas/testsuite/gas/elf/ehopt0.d | 9 - gas/testsuite/gas/elf/ehopt0.s | 32 - gas/testsuite/gas/elf/elf.exp | 57 - gas/testsuite/gas/elf/section0.d | 15 - gas/testsuite/gas/elf/section0.s | 16 - gas/testsuite/gas/elf/section1.d | 15 - gas/testsuite/gas/elf/section1.s | 32 - gas/testsuite/gas/elf/section2.e | 8 - gas/testsuite/gas/elf/section2.e-m32r | 9 - gas/testsuite/gas/elf/section2.e-mips | 10 - gas/testsuite/gas/elf/section2.e-miwmmxt | 10 - gas/testsuite/gas/elf/section2.l | 8 - gas/testsuite/gas/elf/section2.s | 3 - gas/testsuite/gas/elf/section3.d | 6 - gas/testsuite/gas/elf/section3.s | 2 - gas/testsuite/gas/elf/symver.d | 17 - gas/testsuite/gas/elf/symver.s | 6 - gas/testsuite/gas/elf/type.e | 4 - gas/testsuite/gas/elf/type.s | 18 - gas/testsuite/gas/fr30/allinsn.d | 440 - gas/testsuite/gas/fr30/allinsn.exp | 5 - gas/testsuite/gas/fr30/allinsn.s | 434 - gas/testsuite/gas/fr30/fr30.exp | 5 - gas/testsuite/gas/frv/allinsn.d | 1660 - gas/testsuite/gas/frv/allinsn.exp | 8 - gas/testsuite/gas/frv/allinsn.s | 2235 - gas/testsuite/gas/frv/fdpic.d | 51 - gas/testsuite/gas/frv/fdpic.s | 39 - gas/testsuite/gas/frv/reloc1.d | 40 - gas/testsuite/gas/frv/reloc1.s | 27 - gas/testsuite/gas/h8300/addsub.s | 16 - gas/testsuite/gas/h8300/addsubh.s | 25 - gas/testsuite/gas/h8300/addsubs.s | 25 - gas/testsuite/gas/h8300/bitops1.s | 18 - gas/testsuite/gas/h8300/bitops1h.s | 19 - gas/testsuite/gas/h8300/bitops1s.s | 29 - gas/testsuite/gas/h8300/bitops2.s | 15 - gas/testsuite/gas/h8300/bitops2h.s | 16 - gas/testsuite/gas/h8300/bitops2s.s | 23 - gas/testsuite/gas/h8300/bitops3.s | 15 - gas/testsuite/gas/h8300/bitops3h.s | 16 - gas/testsuite/gas/h8300/bitops3s.s | 24 - gas/testsuite/gas/h8300/bitops4.s | 18 - gas/testsuite/gas/h8300/bitops4h.s | 19 - gas/testsuite/gas/h8300/bitops4s.s | 29 - gas/testsuite/gas/h8300/branch-coff.s | 10 - gas/testsuite/gas/h8300/branch-elf.s | 13 - gas/testsuite/gas/h8300/branchh-coff.s | 12 - gas/testsuite/gas/h8300/branchh-elf.s | 12 - gas/testsuite/gas/h8300/branchs-coff.s | 12 - gas/testsuite/gas/h8300/branchs-elf.s | 12 - gas/testsuite/gas/h8300/cbranch.s | 23 - gas/testsuite/gas/h8300/cbranchh.s | 44 - gas/testsuite/gas/h8300/cbranchs.s | 44 - gas/testsuite/gas/h8300/cmpsi2.s | 28 - gas/testsuite/gas/h8300/compare.s | 6 - gas/testsuite/gas/h8300/compareh.s | 10 - gas/testsuite/gas/h8300/compares.s | 10 - gas/testsuite/gas/h8300/decimal.s | 5 - gas/testsuite/gas/h8300/decimalh.s | 6 - gas/testsuite/gas/h8300/decimals.s | 6 - gas/testsuite/gas/h8300/divmul.s | 5 - gas/testsuite/gas/h8300/divmulh.s | 12 - gas/testsuite/gas/h8300/divmuls.s | 12 - gas/testsuite/gas/h8300/extendh.s | 8 - gas/testsuite/gas/h8300/extends.s | 8 - gas/testsuite/gas/h8300/ffxx1-coff.d | 23 - gas/testsuite/gas/h8300/ffxx1-coff.s | 20 - gas/testsuite/gas/h8300/ffxx1-elf.d | 23 - gas/testsuite/gas/h8300/ffxx1-elf.s | 20 - gas/testsuite/gas/h8300/h8300-coff.exp | 283 - gas/testsuite/gas/h8300/h8300-elf.exp | 284 - gas/testsuite/gas/h8300/h8300.exp | 2183 - gas/testsuite/gas/h8300/h8sx_disp2.d | 46 - gas/testsuite/gas/h8300/h8sx_disp2.s | 21 - gas/testsuite/gas/h8300/h8sx_mov_imm.d | 307 - gas/testsuite/gas/h8300/h8sx_mov_imm.s | 110 - gas/testsuite/gas/h8300/h8sx_rtsl.d | 14 - gas/testsuite/gas/h8300/h8sx_rtsl.s | 8 - gas/testsuite/gas/h8300/incdec.s | 5 - gas/testsuite/gas/h8300/incdech.s | 14 - gas/testsuite/gas/h8300/incdecs.s | 14 - gas/testsuite/gas/h8300/logical.s | 14 - gas/testsuite/gas/h8300/logicalh.s | 31 - gas/testsuite/gas/h8300/logicals.s | 34 - gas/testsuite/gas/h8300/macs.s | 11 - gas/testsuite/gas/h8300/misc.s | 13 - gas/testsuite/gas/h8300/misch.s | 27 - gas/testsuite/gas/h8300/miscs.s | 41 - gas/testsuite/gas/h8300/mov32bug.s | 4 - gas/testsuite/gas/h8300/movb.s | 15 - gas/testsuite/gas/h8300/movbh.s | 20 - gas/testsuite/gas/h8300/movbs.s | 20 - gas/testsuite/gas/h8300/movlh.s | 18 - gas/testsuite/gas/h8300/movls.s | 18 - gas/testsuite/gas/h8300/movw.s | 13 - gas/testsuite/gas/h8300/movwh.s | 18 - gas/testsuite/gas/h8300/movws.s | 18 - gas/testsuite/gas/h8300/multiples.s | 17 - gas/testsuite/gas/h8300/pushpop.s | 5 - gas/testsuite/gas/h8300/pushpoph.s | 8 - gas/testsuite/gas/h8300/pushpops.s | 8 - gas/testsuite/gas/h8300/rotsh.s | 11 - gas/testsuite/gas/h8300/rotshh.s | 27 - gas/testsuite/gas/h8300/rotshs.s | 51 - gas/testsuite/gas/h8300/t01_mov.exp | 3014 - gas/testsuite/gas/h8300/t01_mov.s | 1106 - gas/testsuite/gas/h8300/t02_mova.exp | 714 - gas/testsuite/gas/h8300/t02_mova.s | 237 - gas/testsuite/gas/h8300/t03_add.exp | 3021 - gas/testsuite/gas/h8300/t03_add.s | 977 - gas/testsuite/gas/h8300/t04_sub.exp | 3020 - gas/testsuite/gas/h8300/t04_sub.s | 976 - gas/testsuite/gas/h8300/t05_cmp.exp | 2880 - gas/testsuite/gas/h8300/t05_cmp.s | 920 - gas/testsuite/gas/h8300/t06_ari2.exp | 976 - gas/testsuite/gas/h8300/t06_ari2.s | 187 - gas/testsuite/gas/h8300/t07_ari3.exp | 480 - gas/testsuite/gas/h8300/t07_ari3.s | 172 - gas/testsuite/gas/h8300/t08_or.exp | 3002 - gas/testsuite/gas/h8300/t08_or.s | 971 - gas/testsuite/gas/h8300/t09_xor.exp | 3002 - gas/testsuite/gas/h8300/t09_xor.s | 971 - gas/testsuite/gas/h8300/t10_and.exp | 3002 - gas/testsuite/gas/h8300/t10_and.s | 971 - gas/testsuite/gas/h8300/t11_logs.exp | 3173 - gas/testsuite/gas/h8300/t11_logs.s | 1176 - gas/testsuite/gas/h8300/t12_bit.exp | 582 - gas/testsuite/gas/h8300/t12_bit.s | 175 - gas/testsuite/gas/h8300/t13_otr.exp | 471 - gas/testsuite/gas/h8300/t13_otr.s | 159 - gas/testsuite/gas/hppa/README | 34 - gas/testsuite/gas/hppa/basic/add.s | 160 - gas/testsuite/gas/hppa/basic/add2.s | 92 - gas/testsuite/gas/hppa/basic/addi.s | 125 - gas/testsuite/gas/hppa/basic/basic.exp | 3864 - gas/testsuite/gas/hppa/basic/branch.s | 219 - gas/testsuite/gas/hppa/basic/branch2.s | 32 - gas/testsuite/gas/hppa/basic/comclr.s | 41 - gas/testsuite/gas/hppa/basic/copr.s | 10 - gas/testsuite/gas/hppa/basic/coprmem.s | 46 - gas/testsuite/gas/hppa/basic/dcor.s | 47 - gas/testsuite/gas/hppa/basic/dcor2.s | 34 - gas/testsuite/gas/hppa/basic/deposit.s | 79 - gas/testsuite/gas/hppa/basic/deposit2.s | 78 - gas/testsuite/gas/hppa/basic/deposit3.s | 79 - gas/testsuite/gas/hppa/basic/ds.s | 23 - gas/testsuite/gas/hppa/basic/extract.s | 42 - gas/testsuite/gas/hppa/basic/extract2.s | 42 - gas/testsuite/gas/hppa/basic/extract3.s | 43 - gas/testsuite/gas/hppa/basic/fmem.s | 43 - gas/testsuite/gas/hppa/basic/fmemLRbug.s | 76 - gas/testsuite/gas/hppa/basic/fp_comp.s | 72 - gas/testsuite/gas/hppa/basic/fp_comp2.s | 30 - gas/testsuite/gas/hppa/basic/fp_conv.s | 83 - gas/testsuite/gas/hppa/basic/fp_fcmp.s | 105 - gas/testsuite/gas/hppa/basic/fp_misc.s | 9 - gas/testsuite/gas/hppa/basic/imem.s | 84 - gas/testsuite/gas/hppa/basic/immed.s | 12 - gas/testsuite/gas/hppa/basic/logical.s | 52 - gas/testsuite/gas/hppa/basic/media.s | 38 - gas/testsuite/gas/hppa/basic/perf.s | 10 - gas/testsuite/gas/hppa/basic/purge.s | 26 - gas/testsuite/gas/hppa/basic/purge2.s | 12 - gas/testsuite/gas/hppa/basic/sh1add.s | 58 - gas/testsuite/gas/hppa/basic/sh2add.s | 58 - gas/testsuite/gas/hppa/basic/sh3add.s | 58 - gas/testsuite/gas/hppa/basic/shift.s | 25 - gas/testsuite/gas/hppa/basic/shift2.s | 24 - gas/testsuite/gas/hppa/basic/shift3.s | 26 - gas/testsuite/gas/hppa/basic/shladd.s | 161 - gas/testsuite/gas/hppa/basic/shladd2.s | 161 - gas/testsuite/gas/hppa/basic/special.s | 6 - gas/testsuite/gas/hppa/basic/spop.s | 25 - gas/testsuite/gas/hppa/basic/sub.s | 194 - gas/testsuite/gas/hppa/basic/sub2.s | 109 - gas/testsuite/gas/hppa/basic/subi.s | 57 - gas/testsuite/gas/hppa/basic/system.s | 37 - gas/testsuite/gas/hppa/basic/system2.s | 19 - gas/testsuite/gas/hppa/basic/unit.s | 60 - gas/testsuite/gas/hppa/basic/unit2.s | 47 - gas/testsuite/gas/hppa/basic/weird.s | 870 - gas/testsuite/gas/hppa/parse/align1.s | 31 - gas/testsuite/gas/hppa/parse/align2.s | 6 - gas/testsuite/gas/hppa/parse/appbug.s | 1 - gas/testsuite/gas/hppa/parse/badfmpyadd.s | 21 - gas/testsuite/gas/hppa/parse/block1.s | 11 - gas/testsuite/gas/hppa/parse/block2.s | 6 - gas/testsuite/gas/hppa/parse/calldatabug.s | 178 - gas/testsuite/gas/hppa/parse/callinfobug.s | 7 - gas/testsuite/gas/hppa/parse/defbug.s | 9 - gas/testsuite/gas/hppa/parse/entrybug.s | 12 - gas/testsuite/gas/hppa/parse/exportbug.s | 5 - gas/testsuite/gas/hppa/parse/exprbug.s | 38 - gas/testsuite/gas/hppa/parse/fixup7bug.s | 6167 - gas/testsuite/gas/hppa/parse/global.s | 7 - gas/testsuite/gas/hppa/parse/labelbug.s | 27 - gas/testsuite/gas/hppa/parse/linesepbug.s | 12 - gas/testsuite/gas/hppa/parse/lselbug.s | 10 - gas/testsuite/gas/hppa/parse/nosubspace.s | 21 - gas/testsuite/gas/hppa/parse/parse.exp | 229 - gas/testsuite/gas/hppa/parse/procbug.s | 15 - gas/testsuite/gas/hppa/parse/regpopbug.s | 9 - gas/testsuite/gas/hppa/parse/space.s | 24 - gas/testsuite/gas/hppa/parse/spacebug.s | 3 - gas/testsuite/gas/hppa/parse/ssbug.s | 10 - gas/testsuite/gas/hppa/parse/stdreg.s | 18 - gas/testsuite/gas/hppa/parse/stringer.s | 11 - gas/testsuite/gas/hppa/parse/undefbug.s | 6 - gas/testsuite/gas/hppa/parse/versionbug.s | 4 - gas/testsuite/gas/hppa/parse/xmpyubug.s | 8 - gas/testsuite/gas/hppa/reloc/applybug.s | 118 - gas/testsuite/gas/hppa/reloc/blebug.s | 7 - gas/testsuite/gas/hppa/reloc/blebug2.s | 5 - gas/testsuite/gas/hppa/reloc/blebug3.s | 5 - gas/testsuite/gas/hppa/reloc/exitbug.s | 8 - gas/testsuite/gas/hppa/reloc/fixupbug.s | 9 - gas/testsuite/gas/hppa/reloc/funcrelocbug.s | 173 - gas/testsuite/gas/hppa/reloc/labelopbug.s | 26 - gas/testsuite/gas/hppa/reloc/longcall.s | 28 - gas/testsuite/gas/hppa/reloc/picreloc.s | 9 - gas/testsuite/gas/hppa/reloc/plabelbug.s | 37 - gas/testsuite/gas/hppa/reloc/r_no_reloc.s | 34 - gas/testsuite/gas/hppa/reloc/reduce.s | 37 - gas/testsuite/gas/hppa/reloc/reduce2.s | 80 - gas/testsuite/gas/hppa/reloc/reduce3.s | 38 - gas/testsuite/gas/hppa/reloc/reloc.exp | 716 - gas/testsuite/gas/hppa/reloc/roundmode.s | 15 - gas/testsuite/gas/hppa/reloc/selectorbug.s | 18 - gas/testsuite/gas/hppa/unsorted/align3.s | 20 - gas/testsuite/gas/hppa/unsorted/align4.s | 4 - gas/testsuite/gas/hppa/unsorted/brlenbug.s | 3488 - gas/testsuite/gas/hppa/unsorted/common.s | 8 - gas/testsuite/gas/hppa/unsorted/fragbug.s | 2 - gas/testsuite/gas/hppa/unsorted/globalbug.s | 16 - gas/testsuite/gas/hppa/unsorted/importbug.s | 34 - gas/testsuite/gas/hppa/unsorted/labeldiffs.s | 39 - gas/testsuite/gas/hppa/unsorted/locallabel.s | 7 - gas/testsuite/gas/hppa/unsorted/ss_align.s | 12 - gas/testsuite/gas/hppa/unsorted/unsorted.exp | 264 - gas/testsuite/gas/i386/absrel.d | 49 - gas/testsuite/gas/i386/absrel.s | 59 - gas/testsuite/gas/i386/amd.d | 40 - gas/testsuite/gas/i386/amd.s | 33 - gas/testsuite/gas/i386/divide.d | 8 - gas/testsuite/gas/i386/divide.s | 4 - gas/testsuite/gas/i386/float.l | 85 - gas/testsuite/gas/i386/float.s | 70 - gas/testsuite/gas/i386/general.l | 290 - gas/testsuite/gas/i386/general.s | 215 - gas/testsuite/gas/i386/gotpc.d | 52 - gas/testsuite/gas/i386/gotpc.s | 40 - gas/testsuite/gas/i386/i386.exp | 104 - gas/testsuite/gas/i386/intel.d | 623 - gas/testsuite/gas/i386/intel.s | 618 - gas/testsuite/gas/i386/intel16.d | 15 - gas/testsuite/gas/i386/intel16.s | 11 - gas/testsuite/gas/i386/intelpic.d | 16 - gas/testsuite/gas/i386/intelpic.s | 11 - gas/testsuite/gas/i386/inval.l | 98 - gas/testsuite/gas/i386/inval.s | 48 - gas/testsuite/gas/i386/jump.d | 26 - gas/testsuite/gas/i386/jump.s | 24 - gas/testsuite/gas/i386/jump16.d | 40 - gas/testsuite/gas/i386/jump16.s | 43 - gas/testsuite/gas/i386/katmai.d | 172 - gas/testsuite/gas/i386/katmai.s | 167 - gas/testsuite/gas/i386/modrm.l | 1984 - gas/testsuite/gas/i386/modrm.s | 1671 - gas/testsuite/gas/i386/naked.d | 32 - gas/testsuite/gas/i386/naked.s | 25 - gas/testsuite/gas/i386/opcode.d | 574 - gas/testsuite/gas/i386/opcode.s | 567 - gas/testsuite/gas/i386/pcrel.d | 49 - gas/testsuite/gas/i386/pcrel.s | 59 - gas/testsuite/gas/i386/prefix.d | 15 - gas/testsuite/gas/i386/prefix.s | 6 - gas/testsuite/gas/i386/prescott.d | 37 - gas/testsuite/gas/i386/prescott.s | 34 - gas/testsuite/gas/i386/relax.d | 12 - gas/testsuite/gas/i386/relax.s | 18 - gas/testsuite/gas/i386/reloc.d | 20 - gas/testsuite/gas/i386/reloc.s | 11 - gas/testsuite/gas/i386/sse2.d | 156 - gas/testsuite/gas/i386/sse2.s | 149 - gas/testsuite/gas/i386/ssemmx2.d | 88 - gas/testsuite/gas/i386/ssemmx2.s | 81 - gas/testsuite/gas/i386/sub.d | 10 - gas/testsuite/gas/i386/sub.s | 11 - gas/testsuite/gas/i386/tlsd.d | 33 - gas/testsuite/gas/i386/tlsd.s | 42 - gas/testsuite/gas/i386/tlsnopic.d | 37 - gas/testsuite/gas/i386/tlsnopic.s | 54 - gas/testsuite/gas/i386/tlspic.d | 30 - gas/testsuite/gas/i386/tlspic.s | 39 - gas/testsuite/gas/i386/white.l | 24 - gas/testsuite/gas/i386/white.s | 21 - gas/testsuite/gas/i386/x86-64-inval.l | 30 - gas/testsuite/gas/i386/x86-64-inval.s | 14 - gas/testsuite/gas/i386/x86-64-opcode.d | 275 - gas/testsuite/gas/i386/x86-64-opcode.s | 396 - gas/testsuite/gas/i386/x86_64.d | 126 - gas/testsuite/gas/i386/x86_64.s | 154 - gas/testsuite/gas/i860/README.i860 | 34 - gas/testsuite/gas/i860/bitwise.d | 141 - gas/testsuite/gas/i860/bitwise.s | 150 - gas/testsuite/gas/i860/branch.d | 81 - gas/testsuite/gas/i860/branch.s | 85 - gas/testsuite/gas/i860/bte.d | 62 - gas/testsuite/gas/i860/bte.s | 55 - gas/testsuite/gas/i860/dir-align01.d | 17 - gas/testsuite/gas/i860/dir-align01.s | 11 - gas/testsuite/gas/i860/dir-intel01.d | 19 - gas/testsuite/gas/i860/dir-intel01.s | 19 - gas/testsuite/gas/i860/dir-intel02.d | 15 - gas/testsuite/gas/i860/dir-intel02.s | 13 - gas/testsuite/gas/i860/dir-intel03-err.l | 5 - gas/testsuite/gas/i860/dir-intel03-err.s | 14 - gas/testsuite/gas/i860/dual01.d | 21 - gas/testsuite/gas/i860/dual01.s | 17 - gas/testsuite/gas/i860/dual02-err.l | 2 - gas/testsuite/gas/i860/dual02-err.s | 9 - gas/testsuite/gas/i860/dual03.d | 53 - gas/testsuite/gas/i860/dual03.s | 46 - gas/testsuite/gas/i860/fldst01.d | 73 - gas/testsuite/gas/i860/fldst01.s | 75 - gas/testsuite/gas/i860/fldst02.d | 73 - gas/testsuite/gas/i860/fldst02.s | 75 - gas/testsuite/gas/i860/fldst03.d | 73 - gas/testsuite/gas/i860/fldst03.s | 75 - gas/testsuite/gas/i860/fldst04.d | 73 - gas/testsuite/gas/i860/fldst04.s | 75 - gas/testsuite/gas/i860/fldst05.d | 73 - gas/testsuite/gas/i860/fldst05.s | 75 - gas/testsuite/gas/i860/fldst06.d | 73 - gas/testsuite/gas/i860/fldst06.s | 75 - gas/testsuite/gas/i860/fldst07.d | 73 - gas/testsuite/gas/i860/fldst07.s | 75 - gas/testsuite/gas/i860/fldst08.d | 73 - gas/testsuite/gas/i860/fldst08.s | 75 - gas/testsuite/gas/i860/float01.d | 69 - gas/testsuite/gas/i860/float01.s | 84 - gas/testsuite/gas/i860/float02.d | 39 - gas/testsuite/gas/i860/float02.s | 42 - gas/testsuite/gas/i860/float03.d | 51 - gas/testsuite/gas/i860/float03.s | 64 - gas/testsuite/gas/i860/float04.d | 39 - gas/testsuite/gas/i860/float04.s | 49 - gas/testsuite/gas/i860/form.d | 63 - gas/testsuite/gas/i860/form.s | 66 - gas/testsuite/gas/i860/i860.exp | 58 - gas/testsuite/gas/i860/iarith.d | 97 - gas/testsuite/gas/i860/iarith.s | 102 - gas/testsuite/gas/i860/ldst01.d | 39 - gas/testsuite/gas/i860/ldst01.s | 35 - gas/testsuite/gas/i860/ldst02.d | 39 - gas/testsuite/gas/i860/ldst02.s | 35 - gas/testsuite/gas/i860/ldst03.d | 43 - gas/testsuite/gas/i860/ldst03.s | 39 - gas/testsuite/gas/i860/ldst04.d | 24 - gas/testsuite/gas/i860/ldst04.s | 19 - gas/testsuite/gas/i860/ldst05.d | 24 - gas/testsuite/gas/i860/ldst05.s | 19 - gas/testsuite/gas/i860/ldst06.d | 28 - gas/testsuite/gas/i860/ldst06.s | 22 - gas/testsuite/gas/i860/pfam.d | 153 - gas/testsuite/gas/i860/pfam.s | 182 - gas/testsuite/gas/i860/pfmam.d | 153 - gas/testsuite/gas/i860/pfmam.s | 182 - gas/testsuite/gas/i860/pfmsm.d | 153 - gas/testsuite/gas/i860/pfmsm.s | 182 - gas/testsuite/gas/i860/pfsm.d | 153 - gas/testsuite/gas/i860/pfsm.s | 182 - gas/testsuite/gas/i860/pseudo-ops01.d | 14 - gas/testsuite/gas/i860/pseudo-ops01.s | 10 - gas/testsuite/gas/i860/regress01.d | 21 - gas/testsuite/gas/i860/regress01.s | 19 - gas/testsuite/gas/i860/shift.d | 86 - gas/testsuite/gas/i860/shift.s | 90 - gas/testsuite/gas/i860/simd.d | 105 - gas/testsuite/gas/i860/simd.s | 119 - gas/testsuite/gas/i860/system.d | 72 - gas/testsuite/gas/i860/system.s | 76 - gas/testsuite/gas/i860/xp.d | 241 - gas/testsuite/gas/i860/xp.s | 266 - gas/testsuite/gas/ia64/alias-ilp32.d | 30 - gas/testsuite/gas/ia64/alias.d | 37 - gas/testsuite/gas/ia64/alias.s | 11 - gas/testsuite/gas/ia64/align.d | 7 - gas/testsuite/gas/ia64/align.s | 3 - gas/testsuite/gas/ia64/dependency-1.d | 17 - gas/testsuite/gas/ia64/dependency-1.s | 7 - gas/testsuite/gas/ia64/dv-branch.d | 15 - gas/testsuite/gas/ia64/dv-branch.s | 16 - gas/testsuite/gas/ia64/dv-entry-err.l | 3 - gas/testsuite/gas/ia64/dv-entry-err.s | 15 - gas/testsuite/gas/ia64/dv-imply.d | 45 - gas/testsuite/gas/ia64/dv-imply.s | 44 - gas/testsuite/gas/ia64/dv-mutex-err.l | 13 - gas/testsuite/gas/ia64/dv-mutex-err.s | 33 - gas/testsuite/gas/ia64/dv-mutex.d | 39 - gas/testsuite/gas/ia64/dv-mutex.s | 36 - gas/testsuite/gas/ia64/dv-raw-err.l | 279 - gas/testsuite/gas/ia64/dv-raw-err.s | 579 - gas/testsuite/gas/ia64/dv-safe.d | 21 - gas/testsuite/gas/ia64/dv-safe.s | 19 - gas/testsuite/gas/ia64/dv-srlz.d | 24 - gas/testsuite/gas/ia64/dv-srlz.s | 13 - gas/testsuite/gas/ia64/dv-war-err.l | 3 - gas/testsuite/gas/ia64/dv-war-err.s | 9 - gas/testsuite/gas/ia64/dv-waw-err.l | 389 - gas/testsuite/gas/ia64/dv-waw-err.s | 567 - gas/testsuite/gas/ia64/fixup-dump.pl | 12 - gas/testsuite/gas/ia64/global.d | 10 - gas/testsuite/gas/ia64/global.s | 3 - gas/testsuite/gas/ia64/ia64.exp | 58 - gas/testsuite/gas/ia64/ldxmov-1.d | 18 - gas/testsuite/gas/ia64/ldxmov-1.s | 8 - gas/testsuite/gas/ia64/ldxmov-2.l | 5 - gas/testsuite/gas/ia64/ldxmov-2.s | 8 - gas/testsuite/gas/ia64/ltoff22x-1.d | 10 - gas/testsuite/gas/ia64/ltoff22x-1.s | 4 - gas/testsuite/gas/ia64/opc-a-err.l | 18 - gas/testsuite/gas/ia64/opc-a-err.s | 24 - gas/testsuite/gas/ia64/opc-a.d | 362 - gas/testsuite/gas/ia64/opc-a.pl | 142 - gas/testsuite/gas/ia64/opc-a.s | 396 - gas/testsuite/gas/ia64/opc-b.d | 1020 - gas/testsuite/gas/ia64/opc-b.pl | 95 - gas/testsuite/gas/ia64/opc-b.s | 833 - gas/testsuite/gas/ia64/opc-f.d | 1571 - gas/testsuite/gas/ia64/opc-f.pl | 174 - gas/testsuite/gas/ia64/opc-f.s | 612 - gas/testsuite/gas/ia64/opc-i.d | 263 - gas/testsuite/gas/ia64/opc-i.pl | 189 - gas/testsuite/gas/ia64/opc-i.s | 222 - gas/testsuite/gas/ia64/opc-m.d | 1358 - gas/testsuite/gas/ia64/opc-m.pl | 218 - gas/testsuite/gas/ia64/opc-m.s | 1037 - gas/testsuite/gas/ia64/opc-x.d | 38 - gas/testsuite/gas/ia64/opc-x.s | 19 - gas/testsuite/gas/ia64/order.d | 36 - gas/testsuite/gas/ia64/order.s | 37 - gas/testsuite/gas/ia64/real.d | 10 - gas/testsuite/gas/ia64/real.s | 8 - gas/testsuite/gas/ia64/regs.d | 2333 - gas/testsuite/gas/ia64/regs.pl | 150 - gas/testsuite/gas/ia64/regs.s | 1017 - gas/testsuite/gas/ia64/secname-ilp32.d | 21 - gas/testsuite/gas/ia64/secname.d | 28 - gas/testsuite/gas/ia64/secname.s | 2 - gas/testsuite/gas/ia64/tls.d | 53 - gas/testsuite/gas/ia64/tls.s | 64 - gas/testsuite/gas/ia64/unwind-ilp32.d | 22 - gas/testsuite/gas/ia64/unwind.d | 30 - gas/testsuite/gas/ia64/unwind.s | 4 - gas/testsuite/gas/ieee-fp/x930509a.exp | 27 - gas/testsuite/gas/ieee-fp/x930509a.s | 5 - gas/testsuite/gas/iq2000/allinsn.d | 442 - gas/testsuite/gas/iq2000/allinsn.exp | 6 - gas/testsuite/gas/iq2000/allinsn.s | 582 - gas/testsuite/gas/iq2000/hazard0.s | 11 - gas/testsuite/gas/iq2000/hazard1.s | 11 - gas/testsuite/gas/iq2000/hazard2.s | 11 - gas/testsuite/gas/iq2000/hazard3.s | 14 - gas/testsuite/gas/iq2000/hazard4.s | 11 - gas/testsuite/gas/iq2000/hazard5.s | 11 - gas/testsuite/gas/iq2000/load-hazards.exp | 63 - gas/testsuite/gas/iq2000/nohazard.s | 20 - gas/testsuite/gas/iq2000/noyield.s | 13 - gas/testsuite/gas/iq2000/odd-ldw.exp | 6 - gas/testsuite/gas/iq2000/odd-sdw.exp | 6 - gas/testsuite/gas/iq2000/oddldw.s | 10 - gas/testsuite/gas/iq2000/oddsdw.s | 10 - gas/testsuite/gas/iq2000/q10allinsn.d | 492 - gas/testsuite/gas/iq2000/q10allinsn.s | 641 - gas/testsuite/gas/iq2000/q10hazard3.s | 14 - gas/testsuite/gas/iq2000/q10hazard4.s | 11 - gas/testsuite/gas/iq2000/q10hazard5.s | 11 - gas/testsuite/gas/iq2000/q10load-hazards.exp | 62 - gas/testsuite/gas/iq2000/q10nohazard.s | 20 - gas/testsuite/gas/iq2000/q10noyield.s | 14 - gas/testsuite/gas/iq2000/q10test0.d | 361 - gas/testsuite/gas/iq2000/q10test0.s | 354 - gas/testsuite/gas/iq2000/q10test1.d | 317 - gas/testsuite/gas/iq2000/q10test1.s | 310 - gas/testsuite/gas/iq2000/q10test10.d | 301 - gas/testsuite/gas/iq2000/q10test10.s | 294 - gas/testsuite/gas/iq2000/q10test11.d | 225 - gas/testsuite/gas/iq2000/q10test11.s | 218 - gas/testsuite/gas/iq2000/q10test12.d | 221 - gas/testsuite/gas/iq2000/q10test12.s | 214 - gas/testsuite/gas/iq2000/q10test2.d | 319 - gas/testsuite/gas/iq2000/q10test2.s | 312 - gas/testsuite/gas/iq2000/q10test3.d | 313 - gas/testsuite/gas/iq2000/q10test3.s | 306 - gas/testsuite/gas/iq2000/q10test4.d | 315 - gas/testsuite/gas/iq2000/q10test4.s | 308 - gas/testsuite/gas/iq2000/q10test5.d | 315 - gas/testsuite/gas/iq2000/q10test5.s | 308 - gas/testsuite/gas/iq2000/q10test6.d | 315 - gas/testsuite/gas/iq2000/q10test6.s | 308 - gas/testsuite/gas/iq2000/q10test7.d | 301 - gas/testsuite/gas/iq2000/q10test7.s | 294 - gas/testsuite/gas/iq2000/q10test8.d | 327 - gas/testsuite/gas/iq2000/q10test8.s | 286 - gas/testsuite/gas/iq2000/q10test9.d | 291 - gas/testsuite/gas/iq2000/q10test9.s | 284 - gas/testsuite/gas/iq2000/q10yield.exp | 39 - gas/testsuite/gas/iq2000/test.exp | 17 - gas/testsuite/gas/iq2000/yield.exp | 39 - gas/testsuite/gas/iq2000/yield0.s | 140 - gas/testsuite/gas/iq2000/yield1.s | 9 - gas/testsuite/gas/iq2000/yield2.s | 10 - gas/testsuite/gas/m32r/allinsn.d | 374 - gas/testsuite/gas/m32r/allinsn.exp | 5 - gas/testsuite/gas/m32r/allinsn.s | 501 - gas/testsuite/gas/m32r/error.exp | 16 - gas/testsuite/gas/m32r/fslot.d | 31 - gas/testsuite/gas/m32r/fslot.s | 27 - gas/testsuite/gas/m32r/fslotx.d | 23 - gas/testsuite/gas/m32r/fslotx.s | 19 - gas/testsuite/gas/m32r/high-1.d | 19 - gas/testsuite/gas/m32r/high-1.s | 14 - gas/testsuite/gas/m32r/interfere.s | 14 - gas/testsuite/gas/m32r/m32r.exp | 9 - gas/testsuite/gas/m32r/m32r2.d | 92 - gas/testsuite/gas/m32r/m32r2.exp | 5 - gas/testsuite/gas/m32r/m32r2.s | 126 - gas/testsuite/gas/m32r/m32rx.d | 349 - gas/testsuite/gas/m32r/m32rx.exp | 7 - gas/testsuite/gas/m32r/m32rx.s | 590 - gas/testsuite/gas/m32r/outofrange.s | 145 - gas/testsuite/gas/m32r/parallel.s | 14 - gas/testsuite/gas/m32r/pic.d | 47 - gas/testsuite/gas/m32r/pic.exp | 5 - gas/testsuite/gas/m32r/pic.s | 43 - gas/testsuite/gas/m32r/relax-1.d | 18 - gas/testsuite/gas/m32r/relax-1.s | 17 - gas/testsuite/gas/m32r/relax-2.d | 18 - gas/testsuite/gas/m32r/relax-2.s | 11 - gas/testsuite/gas/m32r/signed-relocs.d | 77 - gas/testsuite/gas/m32r/signed-relocs.s | 80 - gas/testsuite/gas/m32r/uppercase.d | 26 - gas/testsuite/gas/m32r/uppercase.s | 14 - gas/testsuite/gas/m32r/wrongsize.s | 10 - gas/testsuite/gas/m68hc11/abi-m68hc11-16-32.d | 7 - gas/testsuite/gas/m68hc11/abi-m68hc11-16-64.d | 7 - gas/testsuite/gas/m68hc11/abi-m68hc11-32-32.d | 7 - gas/testsuite/gas/m68hc11/abi-m68hc11-32-64.d | 7 - gas/testsuite/gas/m68hc11/abi.s | 4 - gas/testsuite/gas/m68hc11/all_insns.d | 500 - gas/testsuite/gas/m68hc11/all_insns.s | 335 - gas/testsuite/gas/m68hc11/branchs12.d | 225 - gas/testsuite/gas/m68hc11/branchs12.s | 111 - gas/testsuite/gas/m68hc11/bug-1825.d | 128 - gas/testsuite/gas/m68hc11/bug-1825.s | 49 - gas/testsuite/gas/m68hc11/indexed12.d | 206 - gas/testsuite/gas/m68hc11/indexed12.s | 115 - gas/testsuite/gas/m68hc11/insns-dwarf2.d | 115 - gas/testsuite/gas/m68hc11/insns.d | 69 - gas/testsuite/gas/m68hc11/insns.s | 65 - gas/testsuite/gas/m68hc11/insns12.d | 85 - gas/testsuite/gas/m68hc11/insns12.s | 71 - gas/testsuite/gas/m68hc11/lbranch-dwarf2.d | 90 - gas/testsuite/gas/m68hc11/lbranch.d | 80 - gas/testsuite/gas/m68hc11/lbranch.s | 41 - gas/testsuite/gas/m68hc11/m68hc11.exp | 186 - gas/testsuite/gas/m68hc11/malis-include.s | 19 - gas/testsuite/gas/m68hc11/malis.d | 37 - gas/testsuite/gas/m68hc11/malis.s | 240 - gas/testsuite/gas/m68hc11/movb.d | 451 - gas/testsuite/gas/m68hc11/movb.s | 333 - gas/testsuite/gas/m68hc11/opers12-dwarf2.d | 241 - gas/testsuite/gas/m68hc11/opers12.d | 113 - gas/testsuite/gas/m68hc11/opers12.s | 122 - gas/testsuite/gas/m68k-coff/gas.exp | 15 - gas/testsuite/gas/m68k-coff/p2389.s | 19 - gas/testsuite/gas/m68k-coff/p2389a.s | 3 - gas/testsuite/gas/m68k-coff/p2430.s | 6 - gas/testsuite/gas/m68k-coff/p2430a.s | 4 - gas/testsuite/gas/m68k-coff/t1.s | 36 - gas/testsuite/gas/m68k/all.exp | 55 - gas/testsuite/gas/m68k/bitfield.d | 28 - gas/testsuite/gas/m68k/bitfield.s | 24 - gas/testsuite/gas/m68k/cas.d | 20 - gas/testsuite/gas/m68k/cas.s | 16 - gas/testsuite/gas/m68k/disperr.s | 16 - gas/testsuite/gas/m68k/fmoveml.d | 60 - gas/testsuite/gas/m68k/fmoveml.s | 58 - gas/testsuite/gas/m68k/link.d | 17 - gas/testsuite/gas/m68k/link.s | 13 - gas/testsuite/gas/m68k/mcf-mov3q.d | 18 - gas/testsuite/gas/m68k/mcf-mov3q.s | 16 - gas/testsuite/gas/m68k/op68000.d | 195 - gas/testsuite/gas/m68k/operands.d | 242 - gas/testsuite/gas/m68k/operands.s | 272 - gas/testsuite/gas/m68k/p2410.s | 15 - gas/testsuite/gas/m68k/p2663.s | 16 - gas/testsuite/gas/m68k/pcrel.d | 88 - gas/testsuite/gas/m68k/pcrel.s | 59 - gas/testsuite/gas/m68k/pic1.s | 5 - gas/testsuite/gas/m68k/t2.d | 8 - gas/testsuite/gas/m68k/t2.s | 6 - gas/testsuite/gas/m88k/allinsn.d | 369 - gas/testsuite/gas/m88k/allinsn.s | 460 - gas/testsuite/gas/m88k/init.d | 10 - gas/testsuite/gas/m88k/init.s | 5 - gas/testsuite/gas/m88k/m88k.exp | 26 - gas/testsuite/gas/macros/and.s | 9 - gas/testsuite/gas/macros/app1.d | 7 - gas/testsuite/gas/macros/app1.s | 10 - gas/testsuite/gas/macros/app2.d | 7 - gas/testsuite/gas/macros/app2.s | 11 - gas/testsuite/gas/macros/app3.d | 9 - gas/testsuite/gas/macros/app3.s | 13 - gas/testsuite/gas/macros/app4.d | 10 - gas/testsuite/gas/macros/app4.s | 9 - gas/testsuite/gas/macros/app4b.s | 10 - gas/testsuite/gas/macros/err.s | 5 - gas/testsuite/gas/macros/irp.d | 13 - gas/testsuite/gas/macros/irp.s | 8 - gas/testsuite/gas/macros/macros.exp | 49 - gas/testsuite/gas/macros/rept.d | 10 - gas/testsuite/gas/macros/rept.s | 3 - gas/testsuite/gas/macros/semi.d | 8 - gas/testsuite/gas/macros/semi.s | 14 - gas/testsuite/gas/macros/strings.d | 8 - gas/testsuite/gas/macros/strings.s | 17 - gas/testsuite/gas/macros/test1.d | 5 - gas/testsuite/gas/macros/test1.s | 7 - gas/testsuite/gas/macros/test2.d | 10 - gas/testsuite/gas/macros/test2.s | 9 - gas/testsuite/gas/macros/test3.d | 8 - gas/testsuite/gas/macros/test3.s | 7 - gas/testsuite/gas/mcore/allinsn.d | 401 - gas/testsuite/gas/mcore/allinsn.exp | 5 - gas/testsuite/gas/mcore/allinsn.s | 146 - gas/testsuite/gas/mips/abs.d | 16 - gas/testsuite/gas/mips/abs.s | 5 - gas/testsuite/gas/mips/add.d | 21 - gas/testsuite/gas/mips/add.s | 16 - gas/testsuite/gas/mips/and.d | 35 - gas/testsuite/gas/mips/and.s | 28 - gas/testsuite/gas/mips/baddata1.l | 3 - gas/testsuite/gas/mips/baddata1.s | 9 - gas/testsuite/gas/mips/beq.d | 49 - gas/testsuite/gas/mips/beq.s | 30 - gas/testsuite/gas/mips/bge.d | 71 - gas/testsuite/gas/mips/bge.s | 37 - gas/testsuite/gas/mips/bgeu.d | 65 - gas/testsuite/gas/mips/bgeu.s | 33 - gas/testsuite/gas/mips/blt.d | 71 - gas/testsuite/gas/mips/blt.s | 37 - gas/testsuite/gas/mips/bltu.d | 65 - gas/testsuite/gas/mips/bltu.s | 33 - gas/testsuite/gas/mips/branch-misc-1.d | 28 - gas/testsuite/gas/mips/branch-misc-1.s | 27 - gas/testsuite/gas/mips/branch-misc-2.l | 4 - gas/testsuite/gas/mips/branch-misc-2.s | 43 - gas/testsuite/gas/mips/branch-misc-2pic.l | 10 - gas/testsuite/gas/mips/branch-misc-2pic.s | 43 - gas/testsuite/gas/mips/break20.d | 18 - gas/testsuite/gas/mips/break20.s | 17 - gas/testsuite/gas/mips/cp0-names-mips32.d | 42 - gas/testsuite/gas/mips/cp0-names-mips32r2.d | 42 - gas/testsuite/gas/mips/cp0-names-mips64.d | 42 - gas/testsuite/gas/mips/cp0-names-mips64r2.d | 42 - gas/testsuite/gas/mips/cp0-names-numeric.d | 42 - gas/testsuite/gas/mips/cp0-names-sb1.d | 42 - gas/testsuite/gas/mips/cp0-names.s | 44 - gas/testsuite/gas/mips/cp0sel-names-mips32.d | 235 - gas/testsuite/gas/mips/cp0sel-names-mips32r2.d | 235 - gas/testsuite/gas/mips/cp0sel-names-mips64.d | 235 - gas/testsuite/gas/mips/cp0sel-names-mips64r2.d | 235 - gas/testsuite/gas/mips/cp0sel-names-numeric.d | 235 - gas/testsuite/gas/mips/cp0sel-names-sb1.d | 235 - gas/testsuite/gas/mips/cp0sel-names.s | 236 - gas/testsuite/gas/mips/delay.d | 20 - gas/testsuite/gas/mips/delay.s | 8 - gas/testsuite/gas/mips/div-ilocks.d | 110 - gas/testsuite/gas/mips/div.d | 125 - gas/testsuite/gas/mips/div.s | 41 - gas/testsuite/gas/mips/dli.d | 114 - gas/testsuite/gas/mips/dli.s | 67 - gas/testsuite/gas/mips/e32-rel2.d | 30 - gas/testsuite/gas/mips/e32-rel4.d | 15 - gas/testsuite/gas/mips/e32el-rel2.d | 30 - gas/testsuite/gas/mips/elempic.d | 154 - gas/testsuite/gas/mips/elf-consthilo.d | 10 - gas/testsuite/gas/mips/elf-consthilo.s | 12 - gas/testsuite/gas/mips/elf-jal.d | 26 - gas/testsuite/gas/mips/elf-rel-got-n32.d | 388 - gas/testsuite/gas/mips/elf-rel-got-n32.s | 162 - gas/testsuite/gas/mips/elf-rel-got-n64.d | 636 - gas/testsuite/gas/mips/elf-rel-got-n64.s | 162 - gas/testsuite/gas/mips/elf-rel-xgot-n32.d | 579 - gas/testsuite/gas/mips/elf-rel-xgot-n64.d | 955 - gas/testsuite/gas/mips/elf-rel.d | 59 - gas/testsuite/gas/mips/elf-rel.s | 46 - gas/testsuite/gas/mips/elf-rel10.d | 29 - gas/testsuite/gas/mips/elf-rel10.s | 31 - gas/testsuite/gas/mips/elf-rel11.d | 43 - gas/testsuite/gas/mips/elf-rel11.s | 27 - gas/testsuite/gas/mips/elf-rel12.d | 11 - gas/testsuite/gas/mips/elf-rel12.s | 14 - gas/testsuite/gas/mips/elf-rel13.d | 17 - gas/testsuite/gas/mips/elf-rel13.s | 22 - gas/testsuite/gas/mips/elf-rel14.d | 18 - gas/testsuite/gas/mips/elf-rel14.s | 10 - gas/testsuite/gas/mips/elf-rel15.d | 14 - gas/testsuite/gas/mips/elf-rel15.s | 4 - gas/testsuite/gas/mips/elf-rel16.d | 14 - gas/testsuite/gas/mips/elf-rel16.s | 8 - gas/testsuite/gas/mips/elf-rel17.d | 13 - gas/testsuite/gas/mips/elf-rel17.s | 3 - gas/testsuite/gas/mips/elf-rel18.d | 9 - gas/testsuite/gas/mips/elf-rel18.s | 5 - gas/testsuite/gas/mips/elf-rel19.d | 34 - gas/testsuite/gas/mips/elf-rel19.s | 8 - gas/testsuite/gas/mips/elf-rel2.d | 27 - gas/testsuite/gas/mips/elf-rel2.s | 29 - gas/testsuite/gas/mips/elf-rel3.d | 14 - gas/testsuite/gas/mips/elf-rel3.s | 12 - gas/testsuite/gas/mips/elf-rel4.d | 15 - gas/testsuite/gas/mips/elf-rel4.s | 12 - gas/testsuite/gas/mips/elf-rel5.d | 152 - gas/testsuite/gas/mips/elf-rel5.s | 67 - gas/testsuite/gas/mips/elf-rel6.d | 15 - gas/testsuite/gas/mips/elf-rel6.s | 19 - gas/testsuite/gas/mips/elf-rel7.d | 32 - gas/testsuite/gas/mips/elf-rel7.s | 12 - gas/testsuite/gas/mips/elf-rel8.d | 57 - gas/testsuite/gas/mips/elf-rel8.s | 53 - gas/testsuite/gas/mips/elf-rel9.d | 68 - gas/testsuite/gas/mips/elf-rel9.s | 57 - gas/testsuite/gas/mips/elf_arch_mips1.d | 10 - gas/testsuite/gas/mips/elf_arch_mips2.d | 8 - gas/testsuite/gas/mips/elf_arch_mips3.d | 8 - gas/testsuite/gas/mips/elf_arch_mips32.d | 8 - gas/testsuite/gas/mips/elf_arch_mips32r2.d | 8 - gas/testsuite/gas/mips/elf_arch_mips4.d | 8 - gas/testsuite/gas/mips/elf_arch_mips5.d | 8 - gas/testsuite/gas/mips/elf_arch_mips64.d | 8 - gas/testsuite/gas/mips/elf_arch_mips64r2.d | 8 - gas/testsuite/gas/mips/elf_ase_mips16.d | 8 - gas/testsuite/gas/mips/elf_e_flags.c | 34 - gas/testsuite/gas/mips/elf_e_flags.s | 46 - gas/testsuite/gas/mips/elf_e_flags1.d | 29 - gas/testsuite/gas/mips/elf_e_flags2.d | 28 - gas/testsuite/gas/mips/elf_e_flags3.d | 28 - gas/testsuite/gas/mips/elf_e_flags4.d | 28 - gas/testsuite/gas/mips/elfel-rel.d | 60 - gas/testsuite/gas/mips/elfel-rel2.d | 28 - gas/testsuite/gas/mips/elfel-rel3.d | 15 - gas/testsuite/gas/mips/empic.d | 154 - gas/testsuite/gas/mips/empic.l | 3 - gas/testsuite/gas/mips/empic.s | 119 - gas/testsuite/gas/mips/empic2.d | 279 - gas/testsuite/gas/mips/empic2.s | 100 - gas/testsuite/gas/mips/empic3_e.d | 47 - gas/testsuite/gas/mips/empic3_e.s | 46 - gas/testsuite/gas/mips/empic3_g1.d | 47 - gas/testsuite/gas/mips/empic3_g1.s | 46 - gas/testsuite/gas/mips/empic3_g2.d | 47 - gas/testsuite/gas/mips/empic3_g2.s | 46 - gas/testsuite/gas/mips/empty.s | 3 - gas/testsuite/gas/mips/expr1.d | 19 - gas/testsuite/gas/mips/expr1.s | 10 - gas/testsuite/gas/mips/fpr-names-32.d | 42 - gas/testsuite/gas/mips/fpr-names-64.d | 42 - gas/testsuite/gas/mips/fpr-names-n32.d | 42 - gas/testsuite/gas/mips/fpr-names-numeric.d | 42 - gas/testsuite/gas/mips/fpr-names.s | 44 - gas/testsuite/gas/mips/gpr-names-32.d | 42 - gas/testsuite/gas/mips/gpr-names-64.d | 42 - gas/testsuite/gas/mips/gpr-names-n32.d | 42 - gas/testsuite/gas/mips/gpr-names-numeric.d | 42 - gas/testsuite/gas/mips/gpr-names.s | 44 - gas/testsuite/gas/mips/hwr-names-mips32r2.d | 43 - gas/testsuite/gas/mips/hwr-names-mips64r2.d | 43 - gas/testsuite/gas/mips/hwr-names-numeric.d | 43 - gas/testsuite/gas/mips/hwr-names.s | 44 - gas/testsuite/gas/mips/illegal.l | 3 - gas/testsuite/gas/mips/illegal.s | 5 - gas/testsuite/gas/mips/itbl | 19 - gas/testsuite/gas/mips/itbl.s | 18 - gas/testsuite/gas/mips/jal-empic-elf-2.d | 48 - gas/testsuite/gas/mips/jal-empic-elf-2.s | 28 - gas/testsuite/gas/mips/jal-empic-elf-3.d | 24 - gas/testsuite/gas/mips/jal-empic-elf-3.s | 20 - gas/testsuite/gas/mips/jal-empic-elf.d | 26 - gas/testsuite/gas/mips/jal-empic.d | 26 - gas/testsuite/gas/mips/jal-newabi.d | 17 - gas/testsuite/gas/mips/jal-newabi.s | 7 - gas/testsuite/gas/mips/jal-range.l | 4 - gas/testsuite/gas/mips/jal-range.s | 7 - gas/testsuite/gas/mips/jal-svr4pic.d | 47 - gas/testsuite/gas/mips/jal-svr4pic.s | 25 - gas/testsuite/gas/mips/jal-xgot.d | 52 - gas/testsuite/gas/mips/jal.d | 25 - gas/testsuite/gas/mips/jal.s | 11 - gas/testsuite/gas/mips/la-empic.d | 105 - gas/testsuite/gas/mips/la-empic.s | 57 - gas/testsuite/gas/mips/la-svr4pic.d | 456 - gas/testsuite/gas/mips/la-xgot.d | 600 - gas/testsuite/gas/mips/la.d | 381 - gas/testsuite/gas/mips/la.s | 111 - gas/testsuite/gas/mips/lb-empic.d | 102 - gas/testsuite/gas/mips/lb-pic.s | 55 - gas/testsuite/gas/mips/lb-svr4pic.d | 182 - gas/testsuite/gas/mips/lb-xgot-ilocks.d | 214 - gas/testsuite/gas/mips/lb-xgot.d | 242 - gas/testsuite/gas/mips/lb.d | 395 - gas/testsuite/gas/mips/lb.s | 125 - gas/testsuite/gas/mips/lca-svr4pic.d | 456 - gas/testsuite/gas/mips/lca-xgot.d | 600 - gas/testsuite/gas/mips/lca.s | 111 - gas/testsuite/gas/mips/ld-empic.d | 186 - gas/testsuite/gas/mips/ld-ilocks-addr32.d | 631 - gas/testsuite/gas/mips/ld-ilocks.d | 631 - gas/testsuite/gas/mips/ld-pic.s | 60 - gas/testsuite/gas/mips/ld-svr4pic.d | 225 - gas/testsuite/gas/mips/ld-xgot.d | 273 - gas/testsuite/gas/mips/ld.d | 639 - gas/testsuite/gas/mips/ld.s | 144 - gas/testsuite/gas/mips/ldstla-32-shared.d | 80 - gas/testsuite/gas/mips/ldstla-32.d | 80 - gas/testsuite/gas/mips/ldstla-32.s | 26 - gas/testsuite/gas/mips/ldstla-n32-shared.d | 154 - gas/testsuite/gas/mips/ldstla-n32.d | 154 - gas/testsuite/gas/mips/ldstla-n32.s | 35 - gas/testsuite/gas/mips/ldstla-n64-shared.d | 181 - gas/testsuite/gas/mips/ldstla-n64.d | 181 - gas/testsuite/gas/mips/ldstla-n64.s | 42 - gas/testsuite/gas/mips/li.d | 17 - gas/testsuite/gas/mips/li.s | 12 - gas/testsuite/gas/mips/lif-empic.d | 24 - gas/testsuite/gas/mips/lif-svr4pic.d | 30 - gas/testsuite/gas/mips/lif-xgot.d | 30 - gas/testsuite/gas/mips/lifloat.d | 23 - gas/testsuite/gas/mips/lifloat.s | 24 - gas/testsuite/gas/mips/lineno.d | 100 - gas/testsuite/gas/mips/lineno.s | 60 - gas/testsuite/gas/mips/macro-warn-1-n32.d | 5 - gas/testsuite/gas/mips/macro-warn-1-n32.l | 6 - gas/testsuite/gas/mips/macro-warn-1.d | 5 - gas/testsuite/gas/mips/macro-warn-1.l | 8 - gas/testsuite/gas/mips/macro-warn-1.s | 21 - gas/testsuite/gas/mips/macro-warn-2-n32.d | 4 - gas/testsuite/gas/mips/macro-warn-2.d | 5 - gas/testsuite/gas/mips/macro-warn-2.l | 3 - gas/testsuite/gas/mips/macro-warn-2.s | 10 - gas/testsuite/gas/mips/macro-warn-3.d | 5 - gas/testsuite/gas/mips/macro-warn-3.l | 3 - gas/testsuite/gas/mips/macro-warn-3.s | 10 - gas/testsuite/gas/mips/macro-warn-4.d | 5 - gas/testsuite/gas/mips/macro-warn-4.l | 3 - gas/testsuite/gas/mips/macro-warn-4.s | 7 - gas/testsuite/gas/mips/mips-abi32-pic.d | 117 - gas/testsuite/gas/mips/mips-abi32-pic.s | 144 - gas/testsuite/gas/mips/mips-abi32-pic2.d | 74 - gas/testsuite/gas/mips/mips-abi32-pic2.s | 107 - gas/testsuite/gas/mips/mips-abi32.d | 78 - gas/testsuite/gas/mips/mips-abi32.s | 100 - gas/testsuite/gas/mips/mips-gp32-fp32-pic.d | 117 - gas/testsuite/gas/mips/mips-gp32-fp32-pic.s | 144 - gas/testsuite/gas/mips/mips-gp32-fp32.d | 78 - gas/testsuite/gas/mips/mips-gp32-fp32.s | 100 - gas/testsuite/gas/mips/mips-gp32-fp64-pic.d | 117 - gas/testsuite/gas/mips/mips-gp32-fp64-pic.s | 142 - gas/testsuite/gas/mips/mips-gp32-fp64.d | 77 - gas/testsuite/gas/mips/mips-gp32-fp64.s | 97 - gas/testsuite/gas/mips/mips-gp64-fp32-pic.d | 152 - gas/testsuite/gas/mips/mips-gp64-fp32-pic.s | 168 - gas/testsuite/gas/mips/mips-gp64-fp32.d | 100 - gas/testsuite/gas/mips/mips-gp64-fp32.l | 4 - gas/testsuite/gas/mips/mips-gp64-fp32.s | 111 - gas/testsuite/gas/mips/mips-gp64-fp64-pic.d | 153 - gas/testsuite/gas/mips/mips-gp64-fp64-pic.s | 167 - gas/testsuite/gas/mips/mips-gp64-fp64.d | 101 - gas/testsuite/gas/mips/mips-gp64-fp64.l | 4 - gas/testsuite/gas/mips/mips-gp64-fp64.s | 109 - gas/testsuite/gas/mips/mips-jalx.d | 11 - gas/testsuite/gas/mips/mips-jalx.s | 6 - gas/testsuite/gas/mips/mips-no-jalx.l | 2 - gas/testsuite/gas/mips/mips-no-jalx.s | 3 - gas/testsuite/gas/mips/mips.exp | 747 - gas/testsuite/gas/mips/mips16-64.d | 686 - gas/testsuite/gas/mips/mips16-e.d | 38 - gas/testsuite/gas/mips/mips16-e.s | 20 - gas/testsuite/gas/mips/mips16-f.d | 30 - gas/testsuite/gas/mips/mips16-f.s | 13 - gas/testsuite/gas/mips/mips16-jalx.d | 14 - gas/testsuite/gas/mips/mips16-jalx.s | 5 - gas/testsuite/gas/mips/mips16.d | 683 - gas/testsuite/gas/mips/mips16.s | 258 - gas/testsuite/gas/mips/mips32.d | 55 - gas/testsuite/gas/mips/mips32.s | 71 - gas/testsuite/gas/mips/mips32r2-ill-fp64.l | 13 - gas/testsuite/gas/mips/mips32r2-ill-fp64.s | 60 - gas/testsuite/gas/mips/mips32r2-ill.l | 15 - gas/testsuite/gas/mips/mips32r2-ill.s | 60 - gas/testsuite/gas/mips/mips32r2.d | 47 - gas/testsuite/gas/mips/mips32r2.s | 81 - gas/testsuite/gas/mips/mips4.d | 50 - gas/testsuite/gas/mips/mips4.s | 52 - gas/testsuite/gas/mips/mips4010.d | 23 - gas/testsuite/gas/mips/mips4010.s | 21 - gas/testsuite/gas/mips/mips4100.d | 12 - gas/testsuite/gas/mips/mips4100.s | 9 - gas/testsuite/gas/mips/mips4650.d | 14 - gas/testsuite/gas/mips/mips4650.s | 9 - gas/testsuite/gas/mips/mips5.d | 68 - gas/testsuite/gas/mips/mips5.l | 3 - gas/testsuite/gas/mips/mips5.s | 65 - gas/testsuite/gas/mips/mips64-mdmx.d | 215 - gas/testsuite/gas/mips/mips64-mdmx.s | 299 - gas/testsuite/gas/mips/mips64-mips3d-incl.d | 149 - gas/testsuite/gas/mips/mips64-mips3d.d | 147 - gas/testsuite/gas/mips/mips64-mips3d.l | 5 - gas/testsuite/gas/mips/mips64-mips3d.s | 160 - gas/testsuite/gas/mips/mips64.d | 17 - gas/testsuite/gas/mips/mips64.s | 22 - gas/testsuite/gas/mips/mips64r2-ill.l | 57 - gas/testsuite/gas/mips/mips64r2-ill.s | 186 - gas/testsuite/gas/mips/mips64r2.d | 46 - gas/testsuite/gas/mips/mips64r2.s | 65 - gas/testsuite/gas/mips/mipsel16-e.d | 39 - gas/testsuite/gas/mips/mipsel16-f.d | 31 - gas/testsuite/gas/mips/mul-ilocks.d | 81 - gas/testsuite/gas/mips/mul.d | 92 - gas/testsuite/gas/mips/mul.s | 27 - gas/testsuite/gas/mips/n32-consec.d | 14 - gas/testsuite/gas/mips/n32-consec.s | 4 - gas/testsuite/gas/mips/nodelay.d | 19 - gas/testsuite/gas/mips/perfcount.d | 11 - gas/testsuite/gas/mips/perfcount.s | 7 - gas/testsuite/gas/mips/relax-swap1-mips1.d | 311 - gas/testsuite/gas/mips/relax-swap1-mips2.d | 280 - gas/testsuite/gas/mips/relax-swap1.l | 24 - gas/testsuite/gas/mips/relax-swap1.s | 151 - gas/testsuite/gas/mips/relax-swap2.d | 135 - gas/testsuite/gas/mips/relax-swap2.l | 10 - gas/testsuite/gas/mips/relax-swap2.s | 50 - gas/testsuite/gas/mips/relax.d | 395 - gas/testsuite/gas/mips/relax.l | 45 - gas/testsuite/gas/mips/relax.s | 57 - gas/testsuite/gas/mips/rm7000.d | 15 - gas/testsuite/gas/mips/rm7000.s | 7 - gas/testsuite/gas/mips/rol-hw.d | 30 - gas/testsuite/gas/mips/rol-hw.l | 2 - gas/testsuite/gas/mips/rol.d | 55 - gas/testsuite/gas/mips/rol.l | 13 - gas/testsuite/gas/mips/rol.s | 27 - gas/testsuite/gas/mips/rol64-hw.d | 43 - gas/testsuite/gas/mips/rol64-hw.l | 2 - gas/testsuite/gas/mips/rol64.d | 96 - gas/testsuite/gas/mips/rol64.l | 27 - gas/testsuite/gas/mips/rol64.s | 42 - gas/testsuite/gas/mips/sb.d | 396 - gas/testsuite/gas/mips/sb.s | 124 - gas/testsuite/gas/mips/sb1-ext-mdmx.d | 115 - gas/testsuite/gas/mips/sb1-ext-mdmx.s | 169 - gas/testsuite/gas/mips/sb1-ext-ps.d | 12 - gas/testsuite/gas/mips/sb1-ext-ps.s | 16 - gas/testsuite/gas/mips/set-arch.d | 366 - gas/testsuite/gas/mips/set-arch.l | 3 - gas/testsuite/gas/mips/set-arch.s | 487 - gas/testsuite/gas/mips/sync.d | 11 - gas/testsuite/gas/mips/sync.s | 10 - gas/testsuite/gas/mips/telempic.d | 155 - gas/testsuite/gas/mips/tempic.d | 155 - gas/testsuite/gas/mips/tmips16-e.d | 39 - gas/testsuite/gas/mips/tmips16-f.d | 31 - gas/testsuite/gas/mips/tmipsel16-e.d | 39 - gas/testsuite/gas/mips/tmipsel16-f.d | 31 - gas/testsuite/gas/mips/trap20.d | 20 - gas/testsuite/gas/mips/trap20.s | 18 - gas/testsuite/gas/mips/trunc.d | 29 - gas/testsuite/gas/mips/trunc.s | 6 - gas/testsuite/gas/mips/uld.d | 270 - gas/testsuite/gas/mips/uld.s | 66 - gas/testsuite/gas/mips/uld2-eb.d | 26 - gas/testsuite/gas/mips/uld2-el.d | 26 - gas/testsuite/gas/mips/uld2.l | 3 - gas/testsuite/gas/mips/uld2.s | 15 - gas/testsuite/gas/mips/ulh-empic.d | 91 - gas/testsuite/gas/mips/ulh-pic.s | 36 - gas/testsuite/gas/mips/ulh-svr4pic.d | 124 - gas/testsuite/gas/mips/ulh-xgot.d | 154 - gas/testsuite/gas/mips/ulh.d | 374 - gas/testsuite/gas/mips/ulh.s | 69 - gas/testsuite/gas/mips/ulh2-eb.d | 44 - gas/testsuite/gas/mips/ulh2-el.d | 44 - gas/testsuite/gas/mips/ulh2.l | 9 - gas/testsuite/gas/mips/ulh2.s | 21 - gas/testsuite/gas/mips/ulw.d | 270 - gas/testsuite/gas/mips/ulw.s | 66 - gas/testsuite/gas/mips/ulw2-eb-ilocks.d | 26 - gas/testsuite/gas/mips/ulw2-eb.d | 28 - gas/testsuite/gas/mips/ulw2-el-ilocks.d | 26 - gas/testsuite/gas/mips/ulw2-el.d | 28 - gas/testsuite/gas/mips/ulw2.l | 3 - gas/testsuite/gas/mips/ulw2.s | 15 - gas/testsuite/gas/mips/usd.d | 270 - gas/testsuite/gas/mips/usd.s | 66 - gas/testsuite/gas/mips/ush.d | 455 - gas/testsuite/gas/mips/ush.s | 65 - gas/testsuite/gas/mips/usw.d | 270 - gas/testsuite/gas/mips/usw.s | 66 - gas/testsuite/gas/mips/vr4111.d | 11 - gas/testsuite/gas/mips/vr4111.s | 2 - gas/testsuite/gas/mips/vr4120.d | 29 - gas/testsuite/gas/mips/vr4120.s | 19 - gas/testsuite/gas/mips/vr4122.d | 68 - gas/testsuite/gas/mips/vr4122.s | 65 - gas/testsuite/gas/mips/vr5400.d | 130 - gas/testsuite/gas/mips/vr5400.s | 125 - gas/testsuite/gas/mips/vr5500.d | 51 - gas/testsuite/gas/mips/vr5500.s | 80 - gas/testsuite/gas/mmix/1cjmp1b-n.d | 12 - gas/testsuite/gas/mmix/1cjmp1b-r.d | 15 - gas/testsuite/gas/mmix/1cjmp1b.d | 10 - gas/testsuite/gas/mmix/1cjmp1b.l | 14 - gas/testsuite/gas/mmix/1cjmp1b.s | 4 - gas/testsuite/gas/mmix/1cjmp1brn.d | 15 - gas/testsuite/gas/mmix/1hjmp1b.d | 10 - gas/testsuite/gas/mmix/1hjmp1b.l | 14 - gas/testsuite/gas/mmix/1hjmp1b.s | 4 - gas/testsuite/gas/mmix/align-1.d | 18 - gas/testsuite/gas/mmix/align-1.s | 11 - gas/testsuite/gas/mmix/basep-1.d | 10 - gas/testsuite/gas/mmix/basep-1.s | 4 - gas/testsuite/gas/mmix/basep-10.d | 33 - gas/testsuite/gas/mmix/basep-10.s | 16 - gas/testsuite/gas/mmix/basep-11.d | 25 - gas/testsuite/gas/mmix/basep-11.s | 13 - gas/testsuite/gas/mmix/basep-1b.d | 14 - gas/testsuite/gas/mmix/basep-2.d | 23 - gas/testsuite/gas/mmix/basep-2.s | 12 - gas/testsuite/gas/mmix/basep-2b.d | 26 - gas/testsuite/gas/mmix/basep-3.d | 13 - gas/testsuite/gas/mmix/basep-3.s | 5 - gas/testsuite/gas/mmix/basep-3b.d | 17 - gas/testsuite/gas/mmix/basep-4.d | 14 - gas/testsuite/gas/mmix/basep-5.d | 26 - gas/testsuite/gas/mmix/basep-6.d | 17 - gas/testsuite/gas/mmix/basep-7.d | 34 - gas/testsuite/gas/mmix/basep-8.d | 30 - gas/testsuite/gas/mmix/basep-8.s | 9 - gas/testsuite/gas/mmix/basep-9.d | 28 - gas/testsuite/gas/mmix/basep-9.s | 9 - gas/testsuite/gas/mmix/bspec-1.d | 26 - gas/testsuite/gas/mmix/bspec-1.s | 4 - gas/testsuite/gas/mmix/bspec-2.d | 26 - gas/testsuite/gas/mmix/bspec-2.s | 11 - gas/testsuite/gas/mmix/builtin1.d | 22 - gas/testsuite/gas/mmix/builtin1.s | 8 - gas/testsuite/gas/mmix/builtin2.d | 24 - gas/testsuite/gas/mmix/builtin3.d | 24 - gas/testsuite/gas/mmix/byte-1.d | 41 - gas/testsuite/gas/mmix/byte-1.s | 6 - gas/testsuite/gas/mmix/bz-c.d | 30 - gas/testsuite/gas/mmix/bz-c.s | 5 - gas/testsuite/gas/mmix/comment-1.d | 45 - gas/testsuite/gas/mmix/comment-1.s | 46 - gas/testsuite/gas/mmix/comment-2.d | 15 - gas/testsuite/gas/mmix/comment-2.s | 1 - gas/testsuite/gas/mmix/comment-3.d | 19 - gas/testsuite/gas/mmix/comment-3.s | 2 - gas/testsuite/gas/mmix/cons-1.d | 7 - gas/testsuite/gas/mmix/cons-1.s | 2 - gas/testsuite/gas/mmix/cons-2.d | 14 - gas/testsuite/gas/mmix/cons-2.s | 4 - gas/testsuite/gas/mmix/err-bpo1.s | 12 - gas/testsuite/gas/mmix/err-bpo2.s | 6 - gas/testsuite/gas/mmix/err-bpo3.s | 13 - gas/testsuite/gas/mmix/err-bpo4.s | 7 - gas/testsuite/gas/mmix/err-bpo5.s | 14 - gas/testsuite/gas/mmix/err-bpo6.s | 21 - gas/testsuite/gas/mmix/err-bspec-1.s | 4 - gas/testsuite/gas/mmix/err-bspec-2.s | 7 - gas/testsuite/gas/mmix/err-bspec-3.s | 4 - gas/testsuite/gas/mmix/err-bspec-4.s | 7 - gas/testsuite/gas/mmix/err-bspec-5.s | 21 - gas/testsuite/gas/mmix/err-builtin.s | 14 - gas/testsuite/gas/mmix/err-byte1.s | 11 - gas/testsuite/gas/mmix/err-byte2.s | 17 - gas/testsuite/gas/mmix/err-case.s | 8 - gas/testsuite/gas/mmix/err-fb-1.s | 7 - gas/testsuite/gas/mmix/err-greg1.s | 10 - gas/testsuite/gas/mmix/err-insn.s | 5 - gas/testsuite/gas/mmix/err-is-1.s | 4 - gas/testsuite/gas/mmix/err-loc-1.s | 5 - gas/testsuite/gas/mmix/err-loc-2.s | 5 - gas/testsuite/gas/mmix/err-loc-3.s | 4 - gas/testsuite/gas/mmix/err-loc-4.s | 4 - gas/testsuite/gas/mmix/err-loc-5.s | 4 - gas/testsuite/gas/mmix/err-loc-6.s | 4 - gas/testsuite/gas/mmix/err-loc-7.s | 4 - gas/testsuite/gas/mmix/err-loc-8.s | 4 - gas/testsuite/gas/mmix/err-local1.s | 6 - gas/testsuite/gas/mmix/err-local2.s | 3 - gas/testsuite/gas/mmix/err-ser-1.s | 10 - gas/testsuite/gas/mmix/err-set.s | 7 - gas/testsuite/gas/mmix/expr-1.d | 7 - gas/testsuite/gas/mmix/expr-1.s | 5 - gas/testsuite/gas/mmix/fb-1.d | 20 - gas/testsuite/gas/mmix/fb-1.s | 4 - gas/testsuite/gas/mmix/fb-2.d | 32 - gas/testsuite/gas/mmix/fb-2.s | 19 - gas/testsuite/gas/mmix/get-op-r.d | 11 - gas/testsuite/gas/mmix/get-op.d | 9 - gas/testsuite/gas/mmix/get-op.l | 17 - gas/testsuite/gas/mmix/get-op.s | 6 - gas/testsuite/gas/mmix/geta-c.d | 26 - gas/testsuite/gas/mmix/geta-c.s | 5 - gas/testsuite/gas/mmix/geta-op-r.d | 37 - gas/testsuite/gas/mmix/geta-op.d | 25 - gas/testsuite/gas/mmix/geta-op.l | 31 - gas/testsuite/gas/mmix/geta-op.s | 16 - gas/testsuite/gas/mmix/geta-opn.d | 27 - gas/testsuite/gas/mmix/geta-oprn.d | 37 - gas/testsuite/gas/mmix/greg1.d | 35 - gas/testsuite/gas/mmix/greg1.s | 16 - gas/testsuite/gas/mmix/greg1a.d | 39 - gas/testsuite/gas/mmix/greg2.d | 35 - gas/testsuite/gas/mmix/greg2.s | 21 - gas/testsuite/gas/mmix/greg2a.d | 39 - gas/testsuite/gas/mmix/greg3.d | 30 - gas/testsuite/gas/mmix/greg3.s | 11 - gas/testsuite/gas/mmix/greg4.d | 28 - gas/testsuite/gas/mmix/greg4.s | 4 - gas/testsuite/gas/mmix/greg5.d | 29 - gas/testsuite/gas/mmix/greg5.s | 9 - gas/testsuite/gas/mmix/greg6.d | 36 - gas/testsuite/gas/mmix/greg6.s | 9 - gas/testsuite/gas/mmix/greg7.d | 27 - gas/testsuite/gas/mmix/greg7.s | 8 - gas/testsuite/gas/mmix/greg8.d | 32 - gas/testsuite/gas/mmix/greg8.s | 8 - gas/testsuite/gas/mmix/greg9.d | 14 - gas/testsuite/gas/mmix/greg9.s | 8 - gas/testsuite/gas/mmix/hex-r.d | 11 - gas/testsuite/gas/mmix/hex.d | 9 - gas/testsuite/gas/mmix/hex.l | 13 - gas/testsuite/gas/mmix/hex.s | 3 - gas/testsuite/gas/mmix/is-1.d | 12 - gas/testsuite/gas/mmix/is-1.s | 7 - gas/testsuite/gas/mmix/jmp-op-n.d | 23 - gas/testsuite/gas/mmix/jmp-op-r.d | 29 - gas/testsuite/gas/mmix/jmp-op.d | 21 - gas/testsuite/gas/mmix/jmp-op.l | 23 - gas/testsuite/gas/mmix/jmp-op.s | 10 - gas/testsuite/gas/mmix/jmp-oprn.d | 29 - gas/testsuite/gas/mmix/jump-c.d | 28 - gas/testsuite/gas/mmix/jump-c.s | 5 - gas/testsuite/gas/mmix/list-in-n.d | 281 - gas/testsuite/gas/mmix/list-in-r.d | 315 - gas/testsuite/gas/mmix/list-in-rn.d | 315 - gas/testsuite/gas/mmix/list-insns.d | 279 - gas/testsuite/gas/mmix/list-insns.l | 301 - gas/testsuite/gas/mmix/list-insns.s | 279 - gas/testsuite/gas/mmix/list-pseudoints.l | 19 - gas/testsuite/gas/mmix/list-pseudoints.s | 6 - gas/testsuite/gas/mmix/list-textfirst | 5 - gas/testsuite/gas/mmix/list-textfirst.l | 17 - gas/testsuite/gas/mmix/list-textfirst.s | 6 - gas/testsuite/gas/mmix/loc-1.d | 45 - gas/testsuite/gas/mmix/loc-1.s | 7 - gas/testsuite/gas/mmix/loc-2.d | 39 - gas/testsuite/gas/mmix/loc-2.s | 5 - gas/testsuite/gas/mmix/loc-3.d | 43 - gas/testsuite/gas/mmix/loc-3.s | 14 - gas/testsuite/gas/mmix/loc-4.d | 44 - gas/testsuite/gas/mmix/loc-4.s | 8 - gas/testsuite/gas/mmix/loc-5.d | 45 - gas/testsuite/gas/mmix/loc-5.s | 11 - gas/testsuite/gas/mmix/local-1.d | 37 - gas/testsuite/gas/mmix/local-1.s | 12 - gas/testsuite/gas/mmix/locall1.d | 15 - gas/testsuite/gas/mmix/locall1.s | 14 - gas/testsuite/gas/mmix/mmix-err.exp | 30 - gas/testsuite/gas/mmix/mmix-list.exp | 48 - gas/testsuite/gas/mmix/mmix.exp | 38 - gas/testsuite/gas/mmix/odd-1.d | 27 - gas/testsuite/gas/mmix/odd-1.s | 9 - gas/testsuite/gas/mmix/op-0-1.d | 28 - gas/testsuite/gas/mmix/op-0-1.s | 6 - gas/testsuite/gas/mmix/op-0-1s.d | 22 - gas/testsuite/gas/mmix/op-0-2.d | 26 - gas/testsuite/gas/mmix/pop-op-r.d | 12 - gas/testsuite/gas/mmix/pop-op.d | 10 - gas/testsuite/gas/mmix/pop-op.l | 20 - gas/testsuite/gas/mmix/pop-op.s | 8 - gas/testsuite/gas/mmix/prefix1.d | 38 - gas/testsuite/gas/mmix/prefix1.s | 20 - gas/testsuite/gas/mmix/prefix2.d | 15 - gas/testsuite/gas/mmix/prefix2.s | 3 - gas/testsuite/gas/mmix/prefix3.d | 31 - gas/testsuite/gas/mmix/prefix3.s | 9 - gas/testsuite/gas/mmix/pseudo-1.d | 15 - gas/testsuite/gas/mmix/pseudo-1.s | 1 - gas/testsuite/gas/mmix/pushgo-op-r.d | 64 - gas/testsuite/gas/mmix/pushgo-op.d | 62 - gas/testsuite/gas/mmix/pushgo-op.l | 87 - gas/testsuite/gas/mmix/pushgo-op.s | 69 - gas/testsuite/gas/mmix/pushj-c.d | 28 - gas/testsuite/gas/mmix/pushj-c.s | 5 - gas/testsuite/gas/mmix/pushj-cs.d | 18 - gas/testsuite/gas/mmix/put-op-r.d | 17 - gas/testsuite/gas/mmix/put-op.d | 15 - gas/testsuite/gas/mmix/put-op.l | 27 - gas/testsuite/gas/mmix/put-op.s | 14 - gas/testsuite/gas/mmix/reg-op-r.d | 16 - gas/testsuite/gas/mmix/reg-op.d | 14 - gas/testsuite/gas/mmix/reg-op.l | 26 - gas/testsuite/gas/mmix/reg-op.s | 13 - gas/testsuite/gas/mmix/reg3-op-r.d | 32 - gas/testsuite/gas/mmix/reg3-op.d | 30 - gas/testsuite/gas/mmix/reg3-op.l | 46 - gas/testsuite/gas/mmix/reg3-op.s | 32 - gas/testsuite/gas/mmix/regt-op-r.d | 136 - gas/testsuite/gas/mmix/regt-op.d | 134 - gas/testsuite/gas/mmix/regt-op.l | 160 - gas/testsuite/gas/mmix/regt-op.s | 140 - gas/testsuite/gas/mmix/regx-op-r.d | 36 - gas/testsuite/gas/mmix/regx-op.d | 34 - gas/testsuite/gas/mmix/regx-op.l | 51 - gas/testsuite/gas/mmix/regx-op.s | 37 - gas/testsuite/gas/mmix/regy-op-r.d | 36 - gas/testsuite/gas/mmix/regy-op.d | 34 - gas/testsuite/gas/mmix/regy-op.l | 51 - gas/testsuite/gas/mmix/regy-op.s | 37 - gas/testsuite/gas/mmix/relax1-n.d | 90 - gas/testsuite/gas/mmix/relax1-r.d | 145 - gas/testsuite/gas/mmix/relax1-rn.d | 117 - gas/testsuite/gas/mmix/relax1.d | 118 - gas/testsuite/gas/mmix/relax1.l | 128 - gas/testsuite/gas/mmix/relax1.s | 43 - gas/testsuite/gas/mmix/relax2.d | 251 - gas/testsuite/gas/mmix/relax2.s | 35 - gas/testsuite/gas/mmix/reloc16-n.d | 14 - gas/testsuite/gas/mmix/reloc16-r.d | 14 - gas/testsuite/gas/mmix/reloc16.d | 12 - gas/testsuite/gas/mmix/reloc16.l | 17 - gas/testsuite/gas/mmix/reloc16.s | 4 - gas/testsuite/gas/mmix/reloc8-r.d | 20 - gas/testsuite/gas/mmix/reloc8.d | 18 - gas/testsuite/gas/mmix/reloc8.l | 25 - gas/testsuite/gas/mmix/reloc8.s | 7 - gas/testsuite/gas/mmix/relocl-n.d | 27 - gas/testsuite/gas/mmix/reloclab-r.d | 49 - gas/testsuite/gas/mmix/reloclab-rs.d | 42 - gas/testsuite/gas/mmix/reloclab-s.d | 36 - gas/testsuite/gas/mmix/reloclab.d | 43 - gas/testsuite/gas/mmix/reloclab.l | 42 - gas/testsuite/gas/mmix/reloclab.s | 14 - gas/testsuite/gas/mmix/reloclrn.d | 33 - gas/testsuite/gas/mmix/relocxrn.d | 14 - gas/testsuite/gas/mmix/resume-op-r.d | 12 - gas/testsuite/gas/mmix/resume-op.d | 10 - gas/testsuite/gas/mmix/resume-op.l | 19 - gas/testsuite/gas/mmix/resume-op.s | 7 - gas/testsuite/gas/mmix/round2-op-r.d | 19 - gas/testsuite/gas/mmix/round2-op.d | 17 - gas/testsuite/gas/mmix/round2-op.l | 28 - gas/testsuite/gas/mmix/round2-op.s | 15 - gas/testsuite/gas/mmix/roundi-op-r.d | 22 - gas/testsuite/gas/mmix/roundi-op.d | 20 - gas/testsuite/gas/mmix/roundi-op.l | 31 - gas/testsuite/gas/mmix/roundi-op.s | 18 - gas/testsuite/gas/mmix/roundr-op-r.d | 15 - gas/testsuite/gas/mmix/roundr-op.d | 13 - gas/testsuite/gas/mmix/roundr-op.l | 22 - gas/testsuite/gas/mmix/roundr-op.s | 10 - gas/testsuite/gas/mmix/save-op-r.d | 11 - gas/testsuite/gas/mmix/save-op.d | 9 - gas/testsuite/gas/mmix/save-op.l | 18 - gas/testsuite/gas/mmix/save-op.s | 6 - gas/testsuite/gas/mmix/set-r.d | 14 - gas/testsuite/gas/mmix/set.d | 12 - gas/testsuite/gas/mmix/set.l | 21 - gas/testsuite/gas/mmix/set.s | 9 - gas/testsuite/gas/mmix/swym-op-r.d | 16 - gas/testsuite/gas/mmix/swym-op.d | 14 - gas/testsuite/gas/mmix/swym-op.l | 30 - gas/testsuite/gas/mmix/swym-op.s | 15 - gas/testsuite/gas/mmix/sym-1.d | 51 - gas/testsuite/gas/mmix/sym-1.s | 19 - gas/testsuite/gas/mmix/sync-op-r.d | 14 - gas/testsuite/gas/mmix/sync-op.d | 12 - gas/testsuite/gas/mmix/sync-op.l | 23 - gas/testsuite/gas/mmix/sync-op.s | 10 - gas/testsuite/gas/mmix/two-op-r.d | 24 - gas/testsuite/gas/mmix/two-op.d | 22 - gas/testsuite/gas/mmix/two-op.l | 35 - gas/testsuite/gas/mmix/two-op.s | 23 - gas/testsuite/gas/mmix/unsave-op-r.d | 11 - gas/testsuite/gas/mmix/unsave-op.d | 9 - gas/testsuite/gas/mmix/unsave-op.l | 18 - gas/testsuite/gas/mmix/unsave-op.s | 6 - gas/testsuite/gas/mmix/weak1-s.d | 19 - gas/testsuite/gas/mmix/weak1.d | 23 - gas/testsuite/gas/mmix/weak1.s | 7 - gas/testsuite/gas/mmix/zerop-1.d | 20 - gas/testsuite/gas/mmix/zerop-1.s | 9 - gas/testsuite/gas/mn10200/add.s | 13 - gas/testsuite/gas/mn10200/basic.exp | 836 - gas/testsuite/gas/mn10200/bcc.s | 17 - gas/testsuite/gas/mn10200/bccx.s | 16 - gas/testsuite/gas/mn10200/bit.s | 5 - gas/testsuite/gas/mn10200/cmp.s | 10 - gas/testsuite/gas/mn10200/ext.s | 7 - gas/testsuite/gas/mn10200/logical.s | 12 - gas/testsuite/gas/mn10200/mov1.s | 13 - gas/testsuite/gas/mn10200/mov2.s | 10 - gas/testsuite/gas/mn10200/mov3.s | 11 - gas/testsuite/gas/mn10200/mov4.s | 9 - gas/testsuite/gas/mn10200/movb.s | 13 - gas/testsuite/gas/mn10200/movbu.s | 8 - gas/testsuite/gas/mn10200/movx.s | 7 - gas/testsuite/gas/mn10200/muldiv.s | 4 - gas/testsuite/gas/mn10200/other.s | 10 - gas/testsuite/gas/mn10200/shift.s | 5 - gas/testsuite/gas/mn10200/sub.s | 10 - gas/testsuite/gas/mn10300/add.s | 15 - gas/testsuite/gas/mn10300/am33-2.c | 745 - gas/testsuite/gas/mn10300/am33-2.d | 1324 - gas/testsuite/gas/mn10300/am33-2.s | 1306 - gas/testsuite/gas/mn10300/am33.s | 46 - gas/testsuite/gas/mn10300/am33_2.s | 64 - gas/testsuite/gas/mn10300/am33_3.s | 44 - gas/testsuite/gas/mn10300/am33_4.s | 47 - gas/testsuite/gas/mn10300/am33_5.s | 65 - gas/testsuite/gas/mn10300/am33_6.s | 70 - gas/testsuite/gas/mn10300/am33_7.s | 71 - gas/testsuite/gas/mn10300/am33_8.s | 70 - gas/testsuite/gas/mn10300/basic.exp | 1820 - gas/testsuite/gas/mn10300/bcc.s | 17 - gas/testsuite/gas/mn10300/bit.s | 12 - gas/testsuite/gas/mn10300/cmp.s | 11 - gas/testsuite/gas/mn10300/ext.s | 7 - gas/testsuite/gas/mn10300/extend.s | 15 - gas/testsuite/gas/mn10300/logical.s | 15 - gas/testsuite/gas/mn10300/loop.s | 15 - gas/testsuite/gas/mn10300/mov1.s | 17 - gas/testsuite/gas/mn10300/mov2.s | 16 - gas/testsuite/gas/mn10300/mov3.s | 16 - gas/testsuite/gas/mn10300/mov4.s | 13 - gas/testsuite/gas/mn10300/mov5.s | 7 - gas/testsuite/gas/mn10300/movbu.s | 21 - gas/testsuite/gas/mn10300/movhu.s | 21 - gas/testsuite/gas/mn10300/movm.s | 5 - gas/testsuite/gas/mn10300/movpc.l | 25 - gas/testsuite/gas/mn10300/movpc.s | 17 - gas/testsuite/gas/mn10300/muldiv.s | 5 - gas/testsuite/gas/mn10300/other.s | 20 - gas/testsuite/gas/mn10300/shift.s | 10 - gas/testsuite/gas/mn10300/sub.s | 8 - gas/testsuite/gas/mn10300/udf.s | 129 - gas/testsuite/gas/mri/char.d | 9 - gas/testsuite/gas/mri/char.s | 6 - gas/testsuite/gas/mri/comment.d | 9 - gas/testsuite/gas/mri/comment.s | 13 - gas/testsuite/gas/mri/common.d | 8 - gas/testsuite/gas/mri/common.s | 11 - gas/testsuite/gas/mri/constants.d | 20 - gas/testsuite/gas/mri/constants.s | 31 - gas/testsuite/gas/mri/empty.s | 9 - gas/testsuite/gas/mri/equ.d | 7 - gas/testsuite/gas/mri/equ.s | 3 - gas/testsuite/gas/mri/expr.d | 11 - gas/testsuite/gas/mri/expr.s | 7 - gas/testsuite/gas/mri/float.d | 10 - gas/testsuite/gas/mri/float.s | 7 - gas/testsuite/gas/mri/for.d | 30 - gas/testsuite/gas/mri/for.s | 22 - gas/testsuite/gas/mri/if.d | 25 - gas/testsuite/gas/mri/if.s | 17 - gas/testsuite/gas/mri/immconst.d | 22 - gas/testsuite/gas/mri/label.d | 8 - gas/testsuite/gas/mri/label.s | 5 - gas/testsuite/gas/mri/moveml.d | 27 - gas/testsuite/gas/mri/moveml.s | 17 - gas/testsuite/gas/mri/mri.exp | 35 - gas/testsuite/gas/mri/repeat.d | 16 - gas/testsuite/gas/mri/repeat.s | 14 - gas/testsuite/gas/mri/semi.d | 9 - gas/testsuite/gas/mri/semi.s | 14 - gas/testsuite/gas/mri/while.d | 18 - gas/testsuite/gas/mri/while.s | 14 - gas/testsuite/gas/msp430/msp430.exp | 20 - gas/testsuite/gas/msp430/opcode.d | 45 - gas/testsuite/gas/msp430/opcode.s | 57 - gas/testsuite/gas/openrisc/addi.d | 10 - gas/testsuite/gas/openrisc/addi.s | 4 - gas/testsuite/gas/openrisc/allinsn.d | 201 - gas/testsuite/gas/openrisc/allinsn.exp | 8 - gas/testsuite/gas/openrisc/allinsn.s | 260 - gas/testsuite/gas/openrisc/lohi.d | 13 - gas/testsuite/gas/openrisc/lohi.s | 7 - gas/testsuite/gas/openrisc/store.d | 13 - gas/testsuite/gas/openrisc/store.s | 7 - gas/testsuite/gas/pdp11/opcode.d | 223 - gas/testsuite/gas/pdp11/opcode.s | 229 - gas/testsuite/gas/pdp11/pdp11.exp | 22 - gas/testsuite/gas/pj/ops.d | 407 - gas/testsuite/gas/pj/ops.s | 397 - gas/testsuite/gas/pj/pj.exp | 7 - gas/testsuite/gas/ppc/aix.exp | 66 - gas/testsuite/gas/ppc/align.s | 6 - gas/testsuite/gas/ppc/altivec.d | 15 - gas/testsuite/gas/ppc/altivec.s | 10 - gas/testsuite/gas/ppc/altivec_xcoff.d | 15 - gas/testsuite/gas/ppc/altivec_xcoff.s | 16 - gas/testsuite/gas/ppc/altivec_xcoff64.d | 15 - gas/testsuite/gas/ppc/altivec_xcoff64.s | 14 - gas/testsuite/gas/ppc/astest.d | 74 - gas/testsuite/gas/ppc/astest.s | 52 - gas/testsuite/gas/ppc/astest2.d | 84 - gas/testsuite/gas/ppc/astest2.s | 66 - gas/testsuite/gas/ppc/astest2_64.d | 70 - gas/testsuite/gas/ppc/astest2_64.s | 50 - gas/testsuite/gas/ppc/astest64.d | 69 - gas/testsuite/gas/ppc/astest64.s | 50 - gas/testsuite/gas/ppc/booke.d | 144 - gas/testsuite/gas/ppc/booke.s | 136 - gas/testsuite/gas/ppc/booke_xcoff.d | 28 - gas/testsuite/gas/ppc/booke_xcoff.s | 28 - gas/testsuite/gas/ppc/booke_xcoff64.d | 125 - gas/testsuite/gas/ppc/booke_xcoff64.s | 137 - gas/testsuite/gas/ppc/e500.d | 21 - gas/testsuite/gas/ppc/e500.s | 15 - gas/testsuite/gas/ppc/generate.sh | 6 - gas/testsuite/gas/ppc/machine.d | 9 - gas/testsuite/gas/ppc/machine.s | 15 - gas/testsuite/gas/ppc/power4.d | 101 - gas/testsuite/gas/ppc/power4.s | 74 - gas/testsuite/gas/ppc/ppc.exp | 42 - gas/testsuite/gas/ppc/simpshft.d | 27 - gas/testsuite/gas/ppc/simpshft.s | 110 - gas/testsuite/gas/ppc/test1elf.asm | 95 - gas/testsuite/gas/ppc/test1elf32.d | 90 - gas/testsuite/gas/ppc/test1elf32.s | 58 - gas/testsuite/gas/ppc/test1elf64.d | 145 - gas/testsuite/gas/ppc/test1elf64.s | 95 - gas/testsuite/gas/ppc/test1xcoff.asm | 82 - gas/testsuite/gas/ppc/test1xcoff32.d | 139 - gas/testsuite/gas/ppc/test1xcoff32.s | 82 - gas/testsuite/gas/ppc/textalign-xcoff-001.d | 14 - gas/testsuite/gas/ppc/textalign-xcoff-001.s | 11 - gas/testsuite/gas/ppc/textalign-xcoff-002.d | 14 - gas/testsuite/gas/s390/opcode.d | 425 - gas/testsuite/gas/s390/opcode.s | 419 - gas/testsuite/gas/s390/opcode64.d | 211 - gas/testsuite/gas/s390/opcode64.s | 205 - gas/testsuite/gas/s390/operands.d | 23 - gas/testsuite/gas/s390/operands.s | 16 - gas/testsuite/gas/s390/operands64.d | 14 - gas/testsuite/gas/s390/operands64.s | 6 - gas/testsuite/gas/s390/reloc.d | 51 - gas/testsuite/gas/s390/reloc.s | 26 - gas/testsuite/gas/s390/reloc64.d | 32 - gas/testsuite/gas/s390/reloc64.s | 18 - gas/testsuite/gas/s390/s390.exp | 35 - gas/testsuite/gas/sh/basic.exp | 166 - gas/testsuite/gas/sh/dsp.d | 27 - gas/testsuite/gas/sh/dsp.s | 27 - gas/testsuite/gas/sh/err-1.s | 11 - gas/testsuite/gas/sh/err-at.s | 10 - gas/testsuite/gas/sh/err-be.s | 10 - gas/testsuite/gas/sh/err-le.s | 10 - gas/testsuite/gas/sh/err-sh4a-fp.s | 15 - gas/testsuite/gas/sh/err-sh4a.s | 29 - gas/testsuite/gas/sh/err-sh4al-dsp.s | 20 - gas/testsuite/gas/sh/err.exp | 28 - gas/testsuite/gas/sh/fp.s | 44 - gas/testsuite/gas/sh/pcrel-coff.d | 27 - gas/testsuite/gas/sh/pcrel-coff.s | 14 - gas/testsuite/gas/sh/pcrel.d | 24 - gas/testsuite/gas/sh/pcrel.l | 3 - gas/testsuite/gas/sh/pcrel.s | 16 - gas/testsuite/gas/sh/pcrel2.d | 23 - gas/testsuite/gas/sh/pcrel2.s | 17 - gas/testsuite/gas/sh/pic.d | 43 - gas/testsuite/gas/sh/pic.s | 43 - gas/testsuite/gas/sh/sh4a-dsp.d | 40 - gas/testsuite/gas/sh/sh4a-dsp.s | 42 - gas/testsuite/gas/sh/sh4a-fp.d | 15 - gas/testsuite/gas/sh/sh4a-fp.s | 11 - gas/testsuite/gas/sh/sh4a.d | 27 - gas/testsuite/gas/sh/sh4a.s | 28 - gas/testsuite/gas/sh/sh4al-dsp.d | 104 - gas/testsuite/gas/sh/sh4al-dsp.s | 104 - gas/testsuite/gas/sh/sh64/abi-32.d | 10 - gas/testsuite/gas/sh/sh64/abi-32.s | 7 - gas/testsuite/gas/sh/sh64/abi-64.d | 9 - gas/testsuite/gas/sh/sh64/abi-64.s | 7 - gas/testsuite/gas/sh/sh64/basic-1.d | 234 - gas/testsuite/gas/sh/sh64/basic-1.s | 233 - gas/testsuite/gas/sh/sh64/case-1.d | 23 - gas/testsuite/gas/sh/sh64/case-1.s | 12 - gas/testsuite/gas/sh/sh64/case-noexp-1.d | 18 - gas/testsuite/gas/sh/sh64/crange1-1.d | 104 - gas/testsuite/gas/sh/sh64/crange1-2.d | 108 - gas/testsuite/gas/sh/sh64/crange1.s | 210 - gas/testsuite/gas/sh/sh64/crange2-1.d | 43 - gas/testsuite/gas/sh/sh64/crange2-2.d | 22 - gas/testsuite/gas/sh/sh64/crange2-noexp-1.d | 43 - gas/testsuite/gas/sh/sh64/crange2.s | 34 - gas/testsuite/gas/sh/sh64/crange3-1.d | 24 - gas/testsuite/gas/sh/sh64/crange3.s | 34 - gas/testsuite/gas/sh/sh64/crange4-1.d | 19 - gas/testsuite/gas/sh/sh64/crange4.s | 8 - gas/testsuite/gas/sh/sh64/crange5-1.d | 12 - gas/testsuite/gas/sh/sh64/crange5.s | 26 - gas/testsuite/gas/sh/sh64/creg-1.d | 77 - gas/testsuite/gas/sh/sh64/creg-1.s | 79 - gas/testsuite/gas/sh/sh64/creg-2.d | 17 - gas/testsuite/gas/sh/sh64/creg-2.s | 14 - gas/testsuite/gas/sh/sh64/datal-1.s | 41 - gas/testsuite/gas/sh/sh64/datal-2.d | 44 - gas/testsuite/gas/sh/sh64/datal-2.s | 46 - gas/testsuite/gas/sh/sh64/datal-3.s | 48 - gas/testsuite/gas/sh/sh64/datal32-1.d | 45 - gas/testsuite/gas/sh/sh64/datal32-3.d | 94 - gas/testsuite/gas/sh/sh64/datal64-1.d | 50 - gas/testsuite/gas/sh/sh64/datal64-3.d | 123 - gas/testsuite/gas/sh/sh64/endian-1.d | 9 - gas/testsuite/gas/sh/sh64/endian-1.s | 7 - gas/testsuite/gas/sh/sh64/endian-2.d | 10 - gas/testsuite/gas/sh/sh64/endian-2.s | 7 - gas/testsuite/gas/sh/sh64/err-1.s | 47 - gas/testsuite/gas/sh/sh64/err-2.s | 16 - gas/testsuite/gas/sh/sh64/err-3.s | 36 - gas/testsuite/gas/sh/sh64/err-4.s | 27 - gas/testsuite/gas/sh/sh64/err-abi-32.s | 10 - gas/testsuite/gas/sh/sh64/err-abi-64.s | 10 - gas/testsuite/gas/sh/sh64/err-dsp.s | 15 - gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s | 24 - gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s | 10 - gas/testsuite/gas/sh/sh64/err-pt-1.s | 18 - gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s | 10 - gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s | 10 - gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s | 10 - gas/testsuite/gas/sh/sh64/err-ptb-1.s | 34 - gas/testsuite/gas/sh/sh64/err-ptb-2.s | 34 - gas/testsuite/gas/sh/sh64/err.exp | 9 - gas/testsuite/gas/sh/sh64/immexpr1.s | 85 - gas/testsuite/gas/sh/sh64/immexpr2.s | 16 - gas/testsuite/gas/sh/sh64/immexpr32-1.d | 67 - gas/testsuite/gas/sh/sh64/immexpr32-2.d | 11 - gas/testsuite/gas/sh/sh64/immexpr64-1.d | 68 - gas/testsuite/gas/sh/sh64/immexpr64-2.d | 11 - gas/testsuite/gas/sh/sh64/lineno.d | 19 - gas/testsuite/gas/sh/sh64/lineno.s | 7 - gas/testsuite/gas/sh/sh64/localcom-1.d | 30 - gas/testsuite/gas/sh/sh64/localcom-1.s | 26 - gas/testsuite/gas/sh/sh64/mix-1.d | 42 - gas/testsuite/gas/sh/sh64/mix-1.s | 21 - gas/testsuite/gas/sh/sh64/mix-noexp-1.d | 33 - gas/testsuite/gas/sh/sh64/movi-1.s | 20 - gas/testsuite/gas/sh/sh64/movi-2.s | 28 - gas/testsuite/gas/sh/sh64/movi-3.d | 18 - gas/testsuite/gas/sh/sh64/movi-3.s | 10 - gas/testsuite/gas/sh/sh64/movi32-1.d | 35 - gas/testsuite/gas/sh/sh64/movi32-2.d | 36 - gas/testsuite/gas/sh/sh64/movi32-noexp-2.d | 28 - gas/testsuite/gas/sh/sh64/movi64-1.d | 44 - gas/testsuite/gas/sh/sh64/movi64-2.d | 30 - gas/testsuite/gas/sh/sh64/movi64-2.s | 10 - gas/testsuite/gas/sh/sh64/movi64-3.d | 52 - gas/testsuite/gas/sh/sh64/movi64-noexp-2.d | 28 - gas/testsuite/gas/sh/sh64/pt-1.d | 26 - gas/testsuite/gas/sh/sh64/pt-1.s | 17 - gas/testsuite/gas/sh/sh64/pt-2.s | 22 - gas/testsuite/gas/sh/sh64/pt-noexp-1.d | 27 - gas/testsuite/gas/sh/sh64/pt32-1.d | 39 - gas/testsuite/gas/sh/sh64/pt32-noexp-2.d | 34 - gas/testsuite/gas/sh/sh64/pt64-1.d | 47 - gas/testsuite/gas/sh/sh64/pt64-32-1.d | 27 - gas/testsuite/gas/sh/sh64/pt64-32-2.d | 39 - gas/testsuite/gas/sh/sh64/pt64-noexp-2.d | 34 - gas/testsuite/gas/sh/sh64/ptc-1.s | 5 - gas/testsuite/gas/sh/sh64/ptc32-1.d | 15 - gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d | 12 - gas/testsuite/gas/sh/sh64/ptc64-1.d | 19 - gas/testsuite/gas/sh/sh64/ptc64-32-1.d | 15 - gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d | 13 - gas/testsuite/gas/sh/sh64/ptext-1.s | 8 - gas/testsuite/gas/sh/sh64/ptext32-1.d | 40 - gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d | 22 - gas/testsuite/gas/sh/sh64/ptext64-1.d | 64 - gas/testsuite/gas/sh/sh64/ptext64-32-1.d | 40 - gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d | 22 - gas/testsuite/gas/sh/sh64/rel-1.s | 137 - gas/testsuite/gas/sh/sh64/rel-2.s | 138 - gas/testsuite/gas/sh/sh64/rel-3.s | 137 - gas/testsuite/gas/sh/sh64/rel-4.s | 138 - gas/testsuite/gas/sh/sh64/rel-5.s | 48 - gas/testsuite/gas/sh/sh64/rel32-1.d | 86 - gas/testsuite/gas/sh/sh64/rel32-2.d | 86 - gas/testsuite/gas/sh/sh64/rel32-3.d | 86 - gas/testsuite/gas/sh/sh64/rel32-4.d | 86 - gas/testsuite/gas/sh/sh64/rel32-5.d | 30 - gas/testsuite/gas/sh/sh64/rel64-1.d | 111 - gas/testsuite/gas/sh/sh64/rel64-2.d | 111 - gas/testsuite/gas/sh/sh64/rel64-3.d | 111 - gas/testsuite/gas/sh/sh64/rel64-4.d | 111 - gas/testsuite/gas/sh/sh64/rel64-5.d | 40 - gas/testsuite/gas/sh/sh64/relax-1.d | 30 - gas/testsuite/gas/sh/sh64/relax-1.s | 18 - gas/testsuite/gas/sh/sh64/relax-2.d | 30 - gas/testsuite/gas/sh/sh64/relax-2.s | 23 - gas/testsuite/gas/sh/sh64/relax-3.d | 43 - gas/testsuite/gas/sh/sh64/relax-3.s | 32 - gas/testsuite/gas/sh/sh64/sh64.exp | 27 - gas/testsuite/gas/sh/sh64/shift-1.s | 42 - gas/testsuite/gas/sh/sh64/shift-2.s | 34 - gas/testsuite/gas/sh/sh64/shift-3.s | 7 - gas/testsuite/gas/sh/sh64/shift32-1.d | 58 - gas/testsuite/gas/sh/sh64/shift32-3.d | 14 - gas/testsuite/gas/sh/sh64/shift32-noexp-3.d | 14 - gas/testsuite/gas/sh/sh64/shift64-1.d | 58 - gas/testsuite/gas/sh/sh64/shift64-2.d | 42 - gas/testsuite/gas/sh/sh64/shift64-3.d | 14 - gas/testsuite/gas/sh/sh64/shift64-noexp-3.d | 14 - gas/testsuite/gas/sh/sh64/syntax-1.d | 157 - gas/testsuite/gas/sh/sh64/syntax-1.s | 199 - gas/testsuite/gas/sh/sh64/syntax-2.d | 11 - gas/testsuite/gas/sh/sh64/syntax-2.s | 10 - gas/testsuite/gas/sh/sh64/ua-1.s | 16 - gas/testsuite/gas/sh/sh64/ua32-1.d | 23 - gas/testsuite/gas/sh/sh64/ua64-1.d | 23 - gas/testsuite/gas/sh/tlsd.d | 55 - gas/testsuite/gas/sh/tlsd.s | 71 - gas/testsuite/gas/sh/tlsnopic.d | 20 - gas/testsuite/gas/sh/tlsnopic.s | 23 - gas/testsuite/gas/sh/tlspic.d | 33 - gas/testsuite/gas/sh/tlspic.s | 30 - gas/testsuite/gas/sparc-solaris/addend.exp | 36 - gas/testsuite/gas/sparc-solaris/addend.s | 11 - gas/testsuite/gas/sparc-solaris/gas.exp | 10 - gas/testsuite/gas/sparc-solaris/sol-cc.s | 81 - gas/testsuite/gas/sparc-solaris/sol-gcc.s | 66 - gas/testsuite/gas/sparc/asi.d | 35 - gas/testsuite/gas/sparc/asi.s | 28 - gas/testsuite/gas/sparc/membar.d | 19 - gas/testsuite/gas/sparc/membar.s | 12 - gas/testsuite/gas/sparc/mism-1.s | 22 - gas/testsuite/gas/sparc/mismatch.exp | 20 - gas/testsuite/gas/sparc/pcrel.d | 34 - gas/testsuite/gas/sparc/pcrel.s | 26 - gas/testsuite/gas/sparc/pcrel64.d | 40 - gas/testsuite/gas/sparc/pcrel64.s | 32 - gas/testsuite/gas/sparc/plt.d | 23 - gas/testsuite/gas/sparc/plt.s | 12 - gas/testsuite/gas/sparc/plt64.d | 26 - gas/testsuite/gas/sparc/plt64.s | 13 - gas/testsuite/gas/sparc/prefetch.d | 19 - gas/testsuite/gas/sparc/prefetch.s | 11 - gas/testsuite/gas/sparc/rdpr.d | 26 - gas/testsuite/gas/sparc/rdpr.s | 19 - gas/testsuite/gas/sparc/reloc64.d | 76 - gas/testsuite/gas/sparc/reloc64.s | 48 - gas/testsuite/gas/sparc/set64.d | 109 - gas/testsuite/gas/sparc/set64.s | 56 - gas/testsuite/gas/sparc/sparc.exp | 53 - gas/testsuite/gas/sparc/splet-2.d | 23 - gas/testsuite/gas/sparc/splet-2.s | 21 - gas/testsuite/gas/sparc/splet.d | 195 - gas/testsuite/gas/sparc/splet.s | 211 - gas/testsuite/gas/sparc/synth.d | 11 - gas/testsuite/gas/sparc/synth.s | 7 - gas/testsuite/gas/sparc/synth64.d | 21 - gas/testsuite/gas/sparc/synth64.s | 19 - gas/testsuite/gas/sparc/unalign.d | 18 - gas/testsuite/gas/sparc/unalign.s | 13 - gas/testsuite/gas/sparc/wrpr.d | 24 - gas/testsuite/gas/sparc/wrpr.s | 17 - gas/testsuite/gas/sun4/addend.d | 13 - gas/testsuite/gas/sun4/addend.exp | 7 - gas/testsuite/gas/sun4/addend.s | 11 - gas/testsuite/gas/symver/symver.exp | 52 - gas/testsuite/gas/symver/symver0.d | 6 - gas/testsuite/gas/symver/symver0.s | 10 - gas/testsuite/gas/symver/symver1.d | 9 - gas/testsuite/gas/symver/symver1.s | 18 - gas/testsuite/gas/symver/symver2.l | 2 - gas/testsuite/gas/symver/symver2.s | 8 - gas/testsuite/gas/symver/symver3.l | 2 - gas/testsuite/gas/symver/symver3.s | 8 - gas/testsuite/gas/symver/symver4.l | 2 - gas/testsuite/gas/symver/symver4.s | 8 - gas/testsuite/gas/symver/symver5.l | 2 - gas/testsuite/gas/symver/symver5.s | 8 - gas/testsuite/gas/symver/symver6.l | 2 - gas/testsuite/gas/symver/symver6.s | 9 - gas/testsuite/gas/template | 96 - gas/testsuite/gas/tic4x/addressing.s | 371 - gas/testsuite/gas/tic4x/addressing_c3x.d | 243 - gas/testsuite/gas/tic4x/addressing_c4x.d | 278 - gas/testsuite/gas/tic4x/allopcodes.S | 241 - gas/testsuite/gas/tic4x/data.d | 93 - gas/testsuite/gas/tic4x/data.s | 14 - gas/testsuite/gas/tic4x/float.d | 82 - gas/testsuite/gas/tic4x/float.s | 28 - gas/testsuite/gas/tic4x/opclasses.h | 1094 - gas/testsuite/gas/tic4x/opcodes.s | 626 - gas/testsuite/gas/tic4x/opcodes_c3x.d | 1342 - gas/testsuite/gas/tic4x/opcodes_c4x.d | 2013 - gas/testsuite/gas/tic4x/opcodes_new.d | 767 - gas/testsuite/gas/tic4x/rebuild.sh | 10 - gas/testsuite/gas/tic4x/registers.s | 69 - gas/testsuite/gas/tic4x/registers_c3x.d | 46 - gas/testsuite/gas/tic4x/registers_c4x.d | 56 - gas/testsuite/gas/tic4x/tic4x.exp | 65 - gas/testsuite/gas/tic4x/zeros.d | 24 - gas/testsuite/gas/tic4x/zeros.s | 35 - gas/testsuite/gas/tic54x/address.d | 29 - gas/testsuite/gas/tic54x/address.s | 24 - gas/testsuite/gas/tic54x/addrfar.d | 31 - gas/testsuite/gas/tic54x/align.d | 55 - gas/testsuite/gas/tic54x/align.s | 31 - gas/testsuite/gas/tic54x/all-opcodes.d | 219151 ------------------ gas/testsuite/gas/tic54x/all-opcodes.s | 124668 ---------- gas/testsuite/gas/tic54x/asg.d | 131 - gas/testsuite/gas/tic54x/asg.s | 39 - gas/testsuite/gas/tic54x/cons.d | 103 - gas/testsuite/gas/tic54x/cons.s | 38 - gas/testsuite/gas/tic54x/consfar.d | 106 - gas/testsuite/gas/tic54x/extaddr.d | 55 - gas/testsuite/gas/tic54x/extaddr.s | 45 - gas/testsuite/gas/tic54x/field.d | 30 - gas/testsuite/gas/tic54x/field.s | 14 - gas/testsuite/gas/tic54x/in_mlib.asm | 5 - gas/testsuite/gas/tic54x/labels.d | 74 - gas/testsuite/gas/tic54x/labels.inc | 3 - gas/testsuite/gas/tic54x/labels.s | 55 - gas/testsuite/gas/tic54x/loop.d | 18 - gas/testsuite/gas/tic54x/loop.s | 18 - gas/testsuite/gas/tic54x/lp.d | 10 - gas/testsuite/gas/tic54x/lp.s | 3 - gas/testsuite/gas/tic54x/macro.d | 20 - gas/testsuite/gas/tic54x/macro.s | 40 - gas/testsuite/gas/tic54x/macro1.s | 12 - gas/testsuite/gas/tic54x/macros.lib | 7 - gas/testsuite/gas/tic54x/math.d | 58 - gas/testsuite/gas/tic54x/math.s | 37 - gas/testsuite/gas/tic54x/opcodes.d | 292 - gas/testsuite/gas/tic54x/opcodes.s | 309 - gas/testsuite/gas/tic54x/sections.d | 76 - gas/testsuite/gas/tic54x/sections.s | 73 - gas/testsuite/gas/tic54x/set.d | 16 - gas/testsuite/gas/tic54x/set.s | 13 - gas/testsuite/gas/tic54x/struct.d | 15 - gas/testsuite/gas/tic54x/struct.s | 44 - gas/testsuite/gas/tic54x/subsym.d | 39 - gas/testsuite/gas/tic54x/subsym.s | 55 - gas/testsuite/gas/tic54x/subsym1.s | 10 - gas/testsuite/gas/tic54x/tic54x.exp | 30 - gas/testsuite/gas/tic80/add.d | 22 - gas/testsuite/gas/tic80/add.lst | 34 - gas/testsuite/gas/tic80/add.s | 19 - gas/testsuite/gas/tic80/align.d | 19 - gas/testsuite/gas/tic80/align.lst | 47 - gas/testsuite/gas/tic80/align.s | 37 - gas/testsuite/gas/tic80/bitnum.d | 82 - gas/testsuite/gas/tic80/bitnum.lst | 97 - gas/testsuite/gas/tic80/bitnum.s | 85 - gas/testsuite/gas/tic80/ccode.d | 32 - gas/testsuite/gas/tic80/ccode.lst | 37 - gas/testsuite/gas/tic80/ccode.s | 30 - gas/testsuite/gas/tic80/cregops.d | 68 - gas/testsuite/gas/tic80/cregops.lst | 76 - gas/testsuite/gas/tic80/cregops.s | 64 - gas/testsuite/gas/tic80/endmask.d | 41 - gas/testsuite/gas/tic80/endmask.lst | 45 - gas/testsuite/gas/tic80/endmask.s | 38 - gas/testsuite/gas/tic80/float.d | 40 - gas/testsuite/gas/tic80/float.lst | 76 - gas/testsuite/gas/tic80/float.s | 32 - gas/testsuite/gas/tic80/regops.d | 188 - gas/testsuite/gas/tic80/regops.lst | 264 - gas/testsuite/gas/tic80/regops.s | 237 - gas/testsuite/gas/tic80/regops2.d | 68 - gas/testsuite/gas/tic80/regops2.lst | 96 - gas/testsuite/gas/tic80/regops2.s | 60 - gas/testsuite/gas/tic80/regops3.d | 28 - gas/testsuite/gas/tic80/regops3.lst | 27 - gas/testsuite/gas/tic80/regops3.s | 20 - gas/testsuite/gas/tic80/regops4.d | 28 - gas/testsuite/gas/tic80/regops4.lst | 27 - gas/testsuite/gas/tic80/regops4.s | 20 - gas/testsuite/gas/tic80/relocs1.c | 28 - gas/testsuite/gas/tic80/relocs1.d | 56 - gas/testsuite/gas/tic80/relocs1.lst | 80 - gas/testsuite/gas/tic80/relocs1.s | 66 - gas/testsuite/gas/tic80/relocs1b.d | 12 - gas/testsuite/gas/tic80/relocs2.c | 41 - gas/testsuite/gas/tic80/relocs2.d | 37 - gas/testsuite/gas/tic80/relocs2.lst | 112 - gas/testsuite/gas/tic80/relocs2.s | 72 - gas/testsuite/gas/tic80/relocs2b.d | 38 - gas/testsuite/gas/tic80/tic80.exp | 21 - gas/testsuite/gas/v850/arith.s | 24 - gas/testsuite/gas/v850/basic.exp | 439 - gas/testsuite/gas/v850/bit.s | 8 - gas/testsuite/gas/v850/branch.s | 24 - gas/testsuite/gas/v850/compare.s | 28 - gas/testsuite/gas/v850/fepsw.s | 2 - gas/testsuite/gas/v850/hilo.s | 5 - gas/testsuite/gas/v850/hilo2.s | 4 - gas/testsuite/gas/v850/jumps.s | 8 - gas/testsuite/gas/v850/logical.s | 11 - gas/testsuite/gas/v850/mem.s | 16 - gas/testsuite/gas/v850/misc.s | 13 - gas/testsuite/gas/v850/move.s | 8 - gas/testsuite/gas/v850/range.s | 2 - gas/testsuite/gas/v850/reloc.s | 7 - gas/testsuite/gas/v850/v850e1.d | 44 - gas/testsuite/gas/v850/v850e1.s | 38 - gas/testsuite/gas/vax/elf-rel.d | 41 - gas/testsuite/gas/vax/elf-rel.s | 30 - gas/testsuite/gas/vax/quad.s | 3 - gas/testsuite/gas/vax/quad_elf.s | 3 - gas/testsuite/gas/vax/vax.exp | 35 - gas/testsuite/gas/vtable/entry0.d | 10 - gas/testsuite/gas/vtable/entry0.s | 2 - gas/testsuite/gas/vtable/entry1.d | 10 - gas/testsuite/gas/vtable/entry1.s | 2 - gas/testsuite/gas/vtable/inherit0.d | 10 - gas/testsuite/gas/vtable/inherit0.s | 13 - gas/testsuite/gas/vtable/inherit1.l | 6 - gas/testsuite/gas/vtable/inherit1.s | 1 - gas/testsuite/gas/vtable/vtable.exp | 59 - gas/testsuite/gas/xstormy16/allinsn.d | 1342 - gas/testsuite/gas/xstormy16/allinsn.exp | 8 - gas/testsuite/gas/xstormy16/allinsn.s | 1427 - gas/testsuite/gas/xstormy16/allinsn.sh | 1470 - gas/testsuite/gas/xstormy16/gcc.d | 15 - gas/testsuite/gas/xstormy16/gcc.s | 4 - gas/testsuite/gas/xstormy16/gcc.sh | 45 - gas/testsuite/gas/xstormy16/reloc-1.d | 26 - gas/testsuite/gas/xstormy16/reloc-1.s | 20 - gas/testsuite/gas/xstormy16/reloc-2.d | 56 - gas/testsuite/gas/xstormy16/reloc-2.s | 48 - gas/testsuite/gas/xtensa/all.exp | 98 - gas/testsuite/gas/xtensa/entry_align.s | 4 - gas/testsuite/gas/xtensa/entry_misalign.s | 4 - gas/testsuite/gas/xtensa/entry_misalign2.s | 6 - gas/testsuite/gas/xtensa/j_too_far.s | 8 - gas/testsuite/gas/xtensa/loop_align.s | 5 - gas/testsuite/gas/xtensa/loop_misalign.s | 5 - gas/testsuite/gas/z8k/calr-backf.s | 6 - gas/testsuite/gas/z8k/calr-forwf.s | 5 - gas/testsuite/gas/z8k/calr.d | 21 - gas/testsuite/gas/z8k/calr.s | 12 - gas/testsuite/gas/z8k/ctrl-names.d | 41 - gas/testsuite/gas/z8k/ctrl-names.s | 35 - gas/testsuite/gas/z8k/dec.s | 3 - gas/testsuite/gas/z8k/decbf.s | 2 - gas/testsuite/gas/z8k/decf.s | 2 - gas/testsuite/gas/z8k/djnz-backf.s | 8 - gas/testsuite/gas/z8k/djnz-backf2.s | 8 - gas/testsuite/gas/z8k/djnz.d | 21 - gas/testsuite/gas/z8k/djnz.s | 15 - gas/testsuite/gas/z8k/eidi.s | 30 - gas/testsuite/gas/z8k/eidif.s | 3 - gas/testsuite/gas/z8k/inc.s | 3 - gas/testsuite/gas/z8k/incbf.s | 2 - gas/testsuite/gas/z8k/incf.s | 2 - gas/testsuite/gas/z8k/inout.d | 593 - gas/testsuite/gas/z8k/inout.s | 630 - gas/testsuite/gas/z8k/jmp-cc.d | 44 - gas/testsuite/gas/z8k/jmp-cc.s | 38 - gas/testsuite/gas/z8k/jr-back.d | 15 - gas/testsuite/gas/z8k/jr-back.s | 9 - gas/testsuite/gas/z8k/jr-backf.s | 7 - gas/testsuite/gas/z8k/jr-forw.d | 16 - gas/testsuite/gas/z8k/jr-forw.s | 7 - gas/testsuite/gas/z8k/jr-forwf.s | 5 - gas/testsuite/gas/z8k/ldk.s | 3 - gas/testsuite/gas/z8k/ldkf.s | 2 - gas/testsuite/gas/z8k/ret-cc.d | 44 - gas/testsuite/gas/z8k/ret-cc.s | 39 - gas/testsuite/gas/z8k/z8k.exp | 48 - gas/testsuite/lib/doboth | 19 - gas/testsuite/lib/doobjcmp | 88 - gas/testsuite/lib/dostriptest | 14 - gas/testsuite/lib/dotest | 43 - gas/testsuite/lib/dounsreloc | 8 - gas/testsuite/lib/dounssym | 8 - gas/testsuite/lib/gas-defs.exp | 712 - gas/testsuite/lib/gas-dg.exp | 53 - gas/testsuite/lib/run | 2 - gas/vmsconf.sh | 128 - gas/write.c | 2839 - gas/write.h | 217 - gprof/.gdbinit | 1 - gprof/ChangeLog | 9 - gprof/ChangeLog-9203 | 2138 - gprof/MAINTAINERS | 1 - gprof/Makefile.am | 237 - gprof/Makefile.in | 903 - gprof/README | 442 - gprof/TEST | 7 - gprof/TODO | 69 - gprof/acinclude.m4 | 14 - gprof/aclocal.m4 | 193 - gprof/alpha.c | 186 - gprof/basic_blocks.c | 595 - gprof/basic_blocks.h | 33 - gprof/bb_exit_func.c | 93 - gprof/bbconv.pl | 55 - gprof/bsd_callg_bl.m | 108 - gprof/call_graph.c | 137 - gprof/call_graph.h | 28 - gprof/cg_arcs.c | 717 - gprof/cg_arcs.h | 33 - gprof/cg_dfn.c | 308 - gprof/cg_dfn.h | 17 - gprof/cg_print.c | 1297 - gprof/cg_print.h | 31 - gprof/configure | 4794 - gprof/configure.in | 56 - gprof/corefile.c | 773 - gprof/corefile.h | 47 - gprof/dep-in.sed | 20 - gprof/flat_bl.m | 27 - gprof/fsf_callg_bl.m | 83 - gprof/gconfig.in | 132 - gprof/gen-c-prog.awk | 28 - gprof/gmon.h | 148 - gprof/gmon_io.c | 779 - gprof/gmon_io.h | 60 - gprof/gmon_out.h | 45 - gprof/gprof.c | 696 - gprof/gprof.h | 139 - gprof/gprof.texi | 2556 - gprof/hertz.c | 63 - gprof/hertz.h | 13 - gprof/hist.c | 562 - gprof/hist.h | 40 - gprof/i386.c | 116 - gprof/mips.c | 114 - gprof/po/.cvsignore | 1 - gprof/po/Make-in | 253 - gprof/po/POTFILES.in | 38 - gprof/po/da.po | 552 - gprof/po/de.po | 549 - gprof/po/es.po | 552 - gprof/po/fr.po | 550 - gprof/po/gprof.pot | 506 - gprof/po/id.po | 547 - gprof/po/pt_BR.po | 551 - gprof/po/sv.po | 553 - gprof/po/tr.po | 576 - gprof/search_list.c | 62 - gprof/search_list.h | 48 - gprof/source.c | 267 - gprof/source.h | 62 - gprof/sparc.c | 103 - gprof/stamp-h.in | 1 - gprof/sym_ids.c | 391 - gprof/sym_ids.h | 42 - gprof/symtab.c | 280 - gprof/symtab.h | 122 - gprof/tahoe.c | 354 - gprof/utils.c | 122 - gprof/utils.h | 7 - gprof/vax.c | 364 - ld/ChangeLog | 216 - ld/ChangeLog-0001 | 3376 - ld/ChangeLog-0203 | 1645 - ld/ChangeLog-9197 | 7601 - ld/ChangeLog-9899 | 2108 - ld/MAINTAINERS | 1 - ld/Makefile.am | 1764 - ld/Makefile.in | 2468 - ld/NEWS | 290 - ld/README | 67 - ld/TODO | 9 - ld/acinclude.m4 | 16 - ld/aclocal.m4 | 204 - ld/config.in | 177 - ld/configure | 5635 - ld/configure.host | 251 - ld/configure.in | 265 - ld/configure.tgt | 624 - ld/deffile.h | 103 - ld/deffilep.y | 1067 - ld/dep-in.sed | 20 - ld/emulparams/README | 2 - ld/emulparams/a29k.sh | 5 - ld/emulparams/aix5ppc.sh | 6 - ld/emulparams/aix5rs6.sh | 6 - ld/emulparams/aixppc.sh | 7 - ld/emulparams/aixrs6.sh | 7 - ld/emulparams/alpha.sh | 3 - ld/emulparams/arcelf.sh | 11 - ld/emulparams/arm_epoc_pe.sh | 9 - ld/emulparams/armaoutb.sh | 7 - ld/emulparams/armaoutl.sh | 7 - ld/emulparams/armcoff.sh | 6 - ld/emulparams/armelf.sh | 28 - ld/emulparams/armelf_fbsd.sh | 2 - ld/emulparams/armelf_linux.sh | 21 - ld/emulparams/armelf_nbsd.sh | 6 - ld/emulparams/armelf_oabi.sh | 23 - ld/emulparams/armelfb.sh | 2 - ld/emulparams/armelfb_linux.sh | 2 - ld/emulparams/armelfb_nbsd.sh | 2 - ld/emulparams/armnbsd.sh | 7 - ld/emulparams/armnto.sh | 27 - ld/emulparams/armpe.sh | 13 - ld/emulparams/avr1.sh | 10 - ld/emulparams/avr2.sh | 10 - ld/emulparams/avr3.sh | 10 - ld/emulparams/avr4.sh | 10 - ld/emulparams/avr5.sh | 10 - ld/emulparams/coff_i860.sh | 5 - ld/emulparams/coff_sparc.sh | 7 - ld/emulparams/crisaout.sh | 7 - ld/emulparams/criself.sh | 104 - ld/emulparams/crislinux.sh | 39 - ld/emulparams/d10velf.sh | 9 - ld/emulparams/d30v_e.sh | 20 - ld/emulparams/d30v_o.sh | 20 - ld/emulparams/d30velf.sh | 20 - ld/emulparams/delta68.sh | 5 - ld/emulparams/ebmon29k.sh | 5 - ld/emulparams/elf32_dlx.sh | 9 - ld/emulparams/elf32_i860.sh | 9 - ld/emulparams/elf32_i960.sh | 8 - ld/emulparams/elf32_sparc.sh | 14 - ld/emulparams/elf32am33lin.sh | 11 - ld/emulparams/elf32b4300.sh | 10 - ld/emulparams/elf32bmip.sh | 37 - ld/emulparams/elf32bmipn32-defs.sh | 58 - ld/emulparams/elf32bmipn32.sh | 20 - ld/emulparams/elf32bsmip.sh | 2 - ld/emulparams/elf32btsmip.sh | 9 - ld/emulparams/elf32btsmipn32.sh | 15 - ld/emulparams/elf32ebmip.sh | 2 - ld/emulparams/elf32elmip.sh | 2 - ld/emulparams/elf32fr30.sh | 10 - ld/emulparams/elf32frv.sh | 19 - ld/emulparams/elf32frvfd.sh | 14 - ld/emulparams/elf32i370.sh | 8 - ld/emulparams/elf32ip2k.sh | 20 - ld/emulparams/elf32iq10.sh | 11 - ld/emulparams/elf32iq2000.sh | 14 - ld/emulparams/elf32l4300.sh | 4 - ld/emulparams/elf32lmip.sh | 7 - ld/emulparams/elf32lppc.sh | 5 - ld/emulparams/elf32lppcnto.sh | 5 - ld/emulparams/elf32lppcsim.sh | 2 - ld/emulparams/elf32lsmip.sh | 2 - ld/emulparams/elf32ltsmip.sh | 2 - ld/emulparams/elf32ltsmipn32.sh | 4 - ld/emulparams/elf32mcore.sh | 59 - ld/emulparams/elf32mipswindiss.sh | 27 - ld/emulparams/elf32openrisc.sh | 10 - ld/emulparams/elf32ppc.sh | 41 - ld/emulparams/elf32ppc_fbsd.sh | 2 - ld/emulparams/elf32ppclinux.sh | 8 - ld/emulparams/elf32ppcnto.sh | 4 - ld/emulparams/elf32ppcsim.sh | 2 - ld/emulparams/elf32ppcwindiss.sh | 23 - ld/emulparams/elf32vax.sh | 11 - ld/emulparams/elf32xstormy16.sh | 13 - ld/emulparams/elf32xtensa.sh | 32 - ld/emulparams/elf64_aix.sh | 21 - ld/emulparams/elf64_ia64.sh | 35 - ld/emulparams/elf64_ia64_fbsd.sh | 4 - ld/emulparams/elf64_s390.sh | 34 - ld/emulparams/elf64_sparc.sh | 51 - ld/emulparams/elf64_sparc_fbsd.sh | 2 - ld/emulparams/elf64alpha.sh | 21 - ld/emulparams/elf64alpha_fbsd.sh | 3 - ld/emulparams/elf64alpha_nbsd.sh | 2 - ld/emulparams/elf64bmip.sh | 21 - ld/emulparams/elf64btsmip.sh | 16 - ld/emulparams/elf64hppa.sh | 22 - ld/emulparams/elf64lppc.sh | 3 - ld/emulparams/elf64ltsmip.sh | 4 - ld/emulparams/elf64mmix.sh | 61 - ld/emulparams/elf64ppc.sh | 49 - ld/emulparams/elf_fbsd.sh | 1 - ld/emulparams/elf_i386.sh | 13 - ld/emulparams/elf_i386_be.sh | 12 - ld/emulparams/elf_i386_chaos.sh | 11 - ld/emulparams/elf_i386_fbsd.sh | 3 - ld/emulparams/elf_i386_ldso.sh | 12 - ld/emulparams/elf_s390.sh | 12 - ld/emulparams/elf_x86_64.sh | 31 - ld/emulparams/elf_x86_64_fbsd.sh | 2 - ld/emulparams/gld960.sh | 7 - ld/emulparams/gld960coff.sh | 19 - ld/emulparams/h8300.sh | 5 - ld/emulparams/h8300elf.sh | 12 - ld/emulparams/h8300h.sh | 5 - ld/emulparams/h8300helf.sh | 3 - ld/emulparams/h8300hn.sh | 5 - ld/emulparams/h8300hnelf.sh | 2 - ld/emulparams/h8300s.sh | 5 - ld/emulparams/h8300self.sh | 3 - ld/emulparams/h8300sn.sh | 5 - ld/emulparams/h8300snelf.sh | 2 - ld/emulparams/h8300sx.sh | 5 - ld/emulparams/h8300sxelf.sh | 3 - ld/emulparams/h8300sxn.sh | 5 - ld/emulparams/h8300sxnelf.sh | 2 - ld/emulparams/h8500.sh | 5 - ld/emulparams/h8500b.sh | 5 - ld/emulparams/h8500c.sh | 5 - ld/emulparams/h8500m.sh | 5 - ld/emulparams/h8500s.sh | 5 - ld/emulparams/hp300bsd.sh | 5 - ld/emulparams/hp3hpux.sh | 8 - ld/emulparams/hppa64linux.sh | 58 - ld/emulparams/hppaelf.sh | 9 - ld/emulparams/hppalinux.sh | 20 - ld/emulparams/hppanbsd.sh | 5 - ld/emulparams/hppaobsd.sh | 6 - ld/emulparams/i386aout.sh | 6 - ld/emulparams/i386beos.sh | 5 - ld/emulparams/i386bsd.sh | 6 - ld/emulparams/i386coff.sh | 5 - ld/emulparams/i386go32.sh | 8 - ld/emulparams/i386linux.sh | 7 - ld/emulparams/i386lynx.sh | 9 - ld/emulparams/i386mach.sh | 7 - ld/emulparams/i386moss.sh | 10 - ld/emulparams/i386msdos.sh | 7 - ld/emulparams/i386nbsd.sh | 6 - ld/emulparams/i386nto.sh | 12 - ld/emulparams/i386nw.sh | 9 - ld/emulparams/i386pe.sh | 8 - ld/emulparams/i386pe_posix.sh | 9 - ld/emulparams/lnk960.sh | 6 - ld/emulparams/m32relf.sh | 12 - ld/emulparams/m32relf_linux.sh | 13 - ld/emulparams/m32rlelf.sh | 2 - ld/emulparams/m32rlelf_linux.sh | 2 - ld/emulparams/m68hc11elf.sh | 18 - ld/emulparams/m68hc11elfb.sh | 12 - ld/emulparams/m68hc12elf.sh | 18 - ld/emulparams/m68hc12elfb.sh | 12 - ld/emulparams/m68k4knbsd.sh | 7 - ld/emulparams/m68kaout.sh | 7 - ld/emulparams/m68kaux.sh | 8 - ld/emulparams/m68kcoff.sh | 6 - ld/emulparams/m68kelf.sh | 12 - ld/emulparams/m68kelfnbsd.sh | 4 - ld/emulparams/m68klinux.sh | 7 - ld/emulparams/m68klynx.sh | 8 - ld/emulparams/m68knbsd.sh | 7 - ld/emulparams/m68kpsos.sh | 6 - ld/emulparams/m88kbcs.sh | 5 - ld/emulparams/mcorepe.sh | 9 - ld/emulparams/mipsbig.sh | 6 - ld/emulparams/mipsbsd.sh | 7 - ld/emulparams/mipsidt.sh | 11 - ld/emulparams/mipsidtl.sh | 11 - ld/emulparams/mipslit.sh | 6 - ld/emulparams/mipslnews.sh | 9 - ld/emulparams/mipspe.sh | 9 - ld/emulparams/mmo.sh | 10 - ld/emulparams/mn10200.sh | 21 - ld/emulparams/mn10300.sh | 5 - ld/emulparams/msp430all.sh | 804 - ld/emulparams/news.sh | 5 - ld/emulparams/ns32knbsd.sh | 8 - ld/emulparams/or32.sh | 6 - ld/emulparams/or32elf.sh | 6 - ld/emulparams/pc532macha.sh | 6 - ld/emulparams/pdp11.sh | 5 - ld/emulparams/pjelf.sh | 5 - ld/emulparams/pjlelf.sh | 5 - ld/emulparams/ppcmacos.sh | 6 - ld/emulparams/ppcnw.sh | 7 - ld/emulparams/ppcpe.sh | 7 - ld/emulparams/riscix.sh | 5 - ld/emulparams/sa29200.sh | 5 - ld/emulparams/sh.sh | 8 - ld/emulparams/shelf.sh | 33 - ld/emulparams/shelf32.sh | 58 - ld/emulparams/shelf32_linux.sh | 2 - ld/emulparams/shelf32_nbsd.sh | 17 - ld/emulparams/shelf64.sh | 18 - ld/emulparams/shelf64_nbsd.sh | 8 - ld/emulparams/shelf_linux.sh | 2 - ld/emulparams/shelf_nbsd.sh | 15 - ld/emulparams/shelf_nto.sh | 10 - ld/emulparams/shl.sh | 2 - ld/emulparams/shlelf.sh | 2 - ld/emulparams/shlelf32.sh | 2 - ld/emulparams/shlelf32_linux.sh | 42 - ld/emulparams/shlelf32_nbsd.sh | 3 - ld/emulparams/shlelf64.sh | 2 - ld/emulparams/shlelf64_nbsd.sh | 3 - ld/emulparams/shlelf_linux.sh | 18 - ld/emulparams/shlelf_nbsd.sh | 3 - ld/emulparams/shlelf_nto.sh | 10 - ld/emulparams/shpe.sh | 9 - ld/emulparams/sparcaout.sh | 8 - ld/emulparams/sparclinux.sh | 7 - ld/emulparams/sparclynx.sh | 9 - ld/emulparams/sparcnbsd.sh | 5 - ld/emulparams/st2000.sh | 5 - ld/emulparams/sun3.sh | 8 - ld/emulparams/sun4.sh | 8 - ld/emulparams/tic30aout.sh | 7 - ld/emulparams/tic30coff.sh | 7 - ld/emulparams/tic3xcoff.sh | 6 - ld/emulparams/tic3xcoff_onchip.sh | 8 - ld/emulparams/tic4xcoff.sh | 6 - ld/emulparams/tic54xcoff.sh | 8 - ld/emulparams/tic80coff.sh | 56 - ld/emulparams/v850.sh | 15 - ld/emulparams/vanilla.sh | 5 - ld/emulparams/vax.sh | 5 - ld/emulparams/vaxnbsd.sh | 7 - ld/emulparams/vsta.sh | 8 - ld/emulparams/w65.sh | 5 - ld/emulparams/xtensa-config.sh | 3 - ld/emulparams/z8001.sh | 7 - ld/emulparams/z8002.sh | 6 - ld/emultempl/README | 3 - ld/emultempl/aix.em | 1356 - ld/emultempl/alphaelf.em | 80 - ld/emultempl/armcoff.em | 277 - ld/emultempl/armelf.em | 220 - ld/emultempl/armelf_oabi.em | 176 - ld/emultempl/astring.sed | 13 - ld/emultempl/beos.em | 826 - ld/emultempl/elf32.em | 1759 - ld/emultempl/generic.em | 148 - ld/emultempl/gld960.em | 189 - ld/emultempl/gld960c.em | 204 - ld/emultempl/hppaelf.em | 387 - ld/emultempl/ia64elf.em | 62 - ld/emultempl/linux.em | 207 - ld/emultempl/lnk960.em | 332 - ld/emultempl/m68hc1xelf.em | 373 - ld/emultempl/m68kcoff.em | 240 - ld/emultempl/m68kelf.em | 188 - ld/emultempl/mipsecoff.em | 248 - ld/emultempl/mipself.em | 177 - ld/emultempl/mmix-elfnmmo.em | 121 - ld/emultempl/mmixelf.em | 44 - ld/emultempl/mmo.em | 261 - ld/emultempl/needrelax.em | 38 - ld/emultempl/netbsd.em | 13 - ld/emultempl/ostring.sed | 4 - ld/emultempl/pe.em | 1952 - ld/emultempl/ppc32elf.em | 80 - ld/emultempl/ppc64elf.em | 527 - ld/emultempl/sh64elf.em | 570 - ld/emultempl/sunos.em | 1031 - ld/emultempl/ticoff.em | 182 - ld/emultempl/vanilla.em | 85 - ld/emultempl/xtensaelf.em | 1473 - ld/fdl.texi | 367 - ld/gen-doc.texi | 20 - ld/genscripts.sh | 342 - ld/h8-doc.texi | 14 - ld/ld.h | 249 - ld/ld.texinfo | 5725 - ld/ldcref.c | 550 - ld/ldctor.c | 376 - ld/ldctor.h | 60 - ld/ldemul.c | 313 - ld/ldemul.h | 196 - ld/ldexp.c | 1091 - ld/ldexp.h | 142 - ld/ldfile.c | 596 - ld/ldfile.h | 65 - ld/ldgram.y | 1197 - ld/ldint.texinfo | 1058 - ld/ldlang.c | 5487 - ld/ldlang.h | 565 - ld/ldlex.h | 63 - ld/ldlex.l | 676 - ld/ldmain.c | 1460 - ld/ldmain.h | 45 - ld/ldmisc.c | 552 - ld/ldmisc.h | 46 - ld/ldver.c | 59 - ld/ldver.h | 20 - ld/ldwrite.c | 576 - ld/ldwrite.h | 21 - ld/lexsup.c | 1393 - ld/mac-ld.r | 42 - ld/mpw-config.in | 52 - ld/mpw-make.sed | 95 - ld/mri.c | 332 - ld/mri.h | 39 - ld/pe-dll.c | 2694 - ld/pe-dll.h | 62 - ld/po/.cvsignore | 1 - ld/po/Make-in | 253 - ld/po/POTFILES.in | 29 - ld/po/da.po | 1702 - ld/po/es.po | 1775 - ld/po/fr.po | 1773 - ld/po/ld.pot | 1749 - ld/po/sv.po | 1725 - ld/po/tr.po | 1768 - ld/scripttempl/README | 4 - ld/scripttempl/a29k.sc | 37 - ld/scripttempl/aix.sc | 62 - ld/scripttempl/alpha.sc | 74 - ld/scripttempl/aout.sc | 57 - ld/scripttempl/armaout.sc | 35 - ld/scripttempl/armcoff.sc | 84 - ld/scripttempl/avr.sc | 189 - ld/scripttempl/crisaout.sc | 131 - ld/scripttempl/delta68.sc | 49 - ld/scripttempl/dlx.sc | 30 - ld/scripttempl/ebmon29k.sc | 27 - ld/scripttempl/elf.sc | 404 - ld/scripttempl/elf32msp430.sc | 246 - ld/scripttempl/elf32msp430_3.sc | 192 - ld/scripttempl/elf_chaos.sc | 354 - ld/scripttempl/elfd10v.sc | 196 - ld/scripttempl/elfd30v.sc | 223 - ld/scripttempl/elfi370.sc | 217 - ld/scripttempl/elfm68hc11.sc | 460 - ld/scripttempl/elfm68hc12.sc | 460 - ld/scripttempl/elfxtensa.sc | 397 - ld/scripttempl/epocpe.sc | 151 - ld/scripttempl/h8300.sc | 94 - ld/scripttempl/h8300h.sc | 97 - ld/scripttempl/h8300hn.sc | 87 - ld/scripttempl/h8300s.sc | 97 - ld/scripttempl/h8300sn.sc | 87 - ld/scripttempl/h8300sx.sc | 97 - ld/scripttempl/h8300sxn.sc | 87 - ld/scripttempl/h8500.sc | 61 - ld/scripttempl/h8500b.sc | 61 - ld/scripttempl/h8500c.sc | 61 - ld/scripttempl/h8500m.sc | 61 - ld/scripttempl/h8500s.sc | 61 - ld/scripttempl/hppaelf.sc | 38 - ld/scripttempl/i386beos.sc | 194 - ld/scripttempl/i386coff.sc | 43 - ld/scripttempl/i386go32.sc | 79 - ld/scripttempl/i386lynx.sc | 46 - ld/scripttempl/i386msdos.sc | 38 - ld/scripttempl/i860coff.sc | 42 - ld/scripttempl/i960.sc | 25 - ld/scripttempl/ip2k.sc | 150 - ld/scripttempl/iq2000.sc | 443 - ld/scripttempl/m68kaux.sc | 46 - ld/scripttempl/m68kcoff.sc | 42 - ld/scripttempl/m68klynx.sc | 46 - ld/scripttempl/m88kbcs.sc | 49 - ld/scripttempl/mcorepe.sc | 162 - ld/scripttempl/mips.sc | 72 - ld/scripttempl/mipsbsd.sc | 30 - ld/scripttempl/mmo.sc | 131 - ld/scripttempl/nw.sc | 130 - ld/scripttempl/or32.sc | 37 - ld/scripttempl/pe.sc | 171 - ld/scripttempl/pj.sc | 55 - ld/scripttempl/ppcpe.sc | 198 - ld/scripttempl/psos.sc | 61 - ld/scripttempl/riscix.sc | 35 - ld/scripttempl/sa29200.sc | 44 - ld/scripttempl/sh.sc | 64 - ld/scripttempl/sparccoff.sc | 48 - ld/scripttempl/sparclynx.sc | 47 - ld/scripttempl/st2000.sc | 26 - ld/scripttempl/tic30aout.sc | 34 - ld/scripttempl/tic30coff.sc | 58 - ld/scripttempl/tic4xcoff.sc | 151 - ld/scripttempl/tic54xcoff.sc | 52 - ld/scripttempl/tic80coff.sc | 74 - ld/scripttempl/v850.sc | 231 - ld/scripttempl/vanilla.sc | 1 - ld/scripttempl/w65.sc | 65 - ld/scripttempl/xstormy16.sc | 240 - ld/scripttempl/z8000.sc | 57 - ld/stamp-h.in | 1 - ld/sysdep.h | 96 - ld/testsuite/ChangeLog | 169 - ld/testsuite/ChangeLog-9303 | 3376 - ld/testsuite/config/default.exp | 251 - ld/testsuite/ld-alpha/align.s | 9 - ld/testsuite/ld-alpha/alpha.exp | 61 - ld/testsuite/ld-alpha/tlsbin.dd | 62 - ld/testsuite/ld-alpha/tlsbin.rd | 145 - ld/testsuite/ld-alpha/tlsbin.s | 46 - ld/testsuite/ld-alpha/tlsbin.sd | 17 - ld/testsuite/ld-alpha/tlsbin.td | 17 - ld/testsuite/ld-alpha/tlsbinpic.s | 74 - ld/testsuite/ld-alpha/tlsbinr.dd | 62 - ld/testsuite/ld-alpha/tlsbinr.rd | 140 - ld/testsuite/ld-alpha/tlsbinr.sd | 12 - ld/testsuite/ld-alpha/tlsg.s | 14 - ld/testsuite/ld-alpha/tlsg.sd | 10 - ld/testsuite/ld-alpha/tlslib.s | 19 - ld/testsuite/ld-alpha/tlspic.dd | 56 - ld/testsuite/ld-alpha/tlspic.rd | 155 - ld/testsuite/ld-alpha/tlspic.sd | 17 - ld/testsuite/ld-alpha/tlspic.td | 17 - ld/testsuite/ld-alpha/tlspic1.s | 87 - ld/testsuite/ld-alpha/tlspic2.s | 11 - ld/testsuite/ld-arm/arm-app-abs32.d | 29 - ld/testsuite/ld-arm/arm-app-abs32.r | 8 - ld/testsuite/ld-arm/arm-app-abs32.s | 16 - ld/testsuite/ld-arm/arm-app.d | 35 - ld/testsuite/ld-arm/arm-app.r | 9 - ld/testsuite/ld-arm/arm-app.s | 23 - ld/testsuite/ld-arm/arm-elf.exp | 52 - ld/testsuite/ld-arm/arm-lib-plt32.d | 28 - ld/testsuite/ld-arm/arm-lib-plt32.r | 8 - ld/testsuite/ld-arm/arm-lib-plt32.s | 17 - ld/testsuite/ld-arm/arm-lib.d | 28 - ld/testsuite/ld-arm/arm-lib.r | 8 - ld/testsuite/ld-arm/arm-lib.s | 24 - ld/testsuite/ld-arm/arm-static-app.d | 24 - ld/testsuite/ld-arm/arm-static-app.r | 3 - ld/testsuite/ld-arm/arm-static-app.s | 20 - ld/testsuite/ld-auto-import/auto-import.exp | 160 - ld/testsuite/ld-auto-import/client.c | 55 - ld/testsuite/ld-auto-import/dll.c | 20 - ld/testsuite/ld-bootstrap/bootstrap.exp | 165 - ld/testsuite/ld-cdtest/cdtest-bar.cc | 17 - ld/testsuite/ld-cdtest/cdtest-foo.cc | 89 - ld/testsuite/ld-cdtest/cdtest-foo.h | 24 - ld/testsuite/ld-cdtest/cdtest-main.cc | 40 - ld/testsuite/ld-cdtest/cdtest-nrv.dat | 13 - ld/testsuite/ld-cdtest/cdtest.dat | 15 - ld/testsuite/ld-cdtest/cdtest.exp | 123 - ld/testsuite/ld-checks/asm.s | 11 - ld/testsuite/ld-checks/checks.exp | 79 - ld/testsuite/ld-checks/script | 6 - ld/testsuite/ld-cris/badgotr1.d | 11 - ld/testsuite/ld-cris/comref1.s | 8 - ld/testsuite/ld-cris/cris.exp | 55 - ld/testsuite/ld-cris/dso-1.s | 7 - ld/testsuite/ld-cris/dso-2.s | 6 - ld/testsuite/ld-cris/dso-3.s | 20 - ld/testsuite/ld-cris/euwref1.s | 8 - ld/testsuite/ld-cris/expdref1.s | 6 - ld/testsuite/ld-cris/expdyn1.d | 14 - ld/testsuite/ld-cris/expdyn1.s | 17 - ld/testsuite/ld-cris/expdyn2.d | 16 - ld/testsuite/ld-cris/expdyn3.d | 12 - ld/testsuite/ld-cris/expdyn4.d | 12 - ld/testsuite/ld-cris/expdyn5.d | 13 - ld/testsuite/ld-cris/expdyn6.d | 13 - ld/testsuite/ld-cris/expdyn7.d | 13 - ld/testsuite/ld-cris/gotrel1.s | 4 - ld/testsuite/ld-cris/gotrel2.s | 5 - ld/testsuite/ld-cris/hide1 | 1 - ld/testsuite/ld-cris/ldsym1.d | 20 - ld/testsuite/ld-cris/libdso-1.d | 13 - ld/testsuite/ld-cris/libdso-2.d | 75 - ld/testsuite/ld-cris/libdso-3.d | 14 - ld/testsuite/ld-cris/libdso-4.d | 11 - ld/testsuite/ld-cris/locref1.d | 23 - ld/testsuite/ld-cris/locref1.s | 3 - ld/testsuite/ld-cris/locref2.d | 23 - ld/testsuite/ld-cris/locref2.s | 5 - ld/testsuite/ld-cris/nodyn4.d | 19 - ld/testsuite/ld-cris/nodyn5.d | 13 - ld/testsuite/ld-cris/noglob1.d | 9 - ld/testsuite/ld-cris/noglob1.s | 4 - ld/testsuite/ld-cris/undef1.d | 13 - ld/testsuite/ld-cris/weakref1.d | 17 - ld/testsuite/ld-cris/weakref2.d | 10 - ld/testsuite/ld-cygwin/exe-export.exp | 151 - ld/testsuite/ld-cygwin/testdll.c | 14 - ld/testsuite/ld-cygwin/testdll.def | 4 - ld/testsuite/ld-cygwin/testexe.c | 16 - ld/testsuite/ld-cygwin/testexe.def | 5 - ld/testsuite/ld-d10v/d10v.exp | 250 - ld/testsuite/ld-d10v/default_layout.d | 16 - ld/testsuite/ld-d10v/linktest-001.s | 4 - ld/testsuite/ld-d10v/linktest-002.lt | 2 - ld/testsuite/ld-d10v/linktest-002.s | 4 - ld/testsuite/ld-d10v/regression-001.lt | 3 - ld/testsuite/ld-d10v/regression-001.s | 14 - ld/testsuite/ld-d10v/reloc-001.d | 12 - ld/testsuite/ld-d10v/reloc-001.ld | 10 - ld/testsuite/ld-d10v/reloc-001.s | 11 - ld/testsuite/ld-d10v/reloc-002.d | 12 - ld/testsuite/ld-d10v/reloc-002.ld | 10 - ld/testsuite/ld-d10v/reloc-003.d | 5 - ld/testsuite/ld-d10v/reloc-003.ld | 10 - ld/testsuite/ld-d10v/reloc-004.d | 5 - ld/testsuite/ld-d10v/reloc-004.ld | 10 - ld/testsuite/ld-d10v/reloc-005.d | 13 - ld/testsuite/ld-d10v/reloc-005.ld | 10 - ld/testsuite/ld-d10v/reloc-005.s | 11 - ld/testsuite/ld-d10v/reloc-006.d | 13 - ld/testsuite/ld-d10v/reloc-006.ld | 8 - ld/testsuite/ld-d10v/reloc-007.d | 7 - ld/testsuite/ld-d10v/reloc-007.ld | 8 - ld/testsuite/ld-d10v/reloc-008.d | 7 - ld/testsuite/ld-d10v/reloc-008.ld | 8 - ld/testsuite/ld-d10v/reloc-009.d | 15 - ld/testsuite/ld-d10v/reloc-009.ld | 11 - ld/testsuite/ld-d10v/reloc-009.s | 12 - ld/testsuite/ld-d10v/reloc-010.d | 16 - ld/testsuite/ld-d10v/reloc-010.ld | 11 - ld/testsuite/ld-d10v/reloc-011.d | 6 - ld/testsuite/ld-d10v/reloc-011.ld | 11 - ld/testsuite/ld-d10v/reloc-012.d | 6 - ld/testsuite/ld-d10v/reloc-012.ld | 11 - ld/testsuite/ld-d10v/reloc-013.d | 16 - ld/testsuite/ld-d10v/reloc-013.ld | 12 - ld/testsuite/ld-d10v/reloc-014.d | 16 - ld/testsuite/ld-d10v/reloc-014.ld | 12 - ld/testsuite/ld-d10v/reloc-015.d | 7 - ld/testsuite/ld-d10v/reloc-015.ld | 12 - ld/testsuite/ld-d10v/reloc-016.d | 7 - ld/testsuite/ld-d10v/reloc-016.ld | 12 - ld/testsuite/ld-d10v/simple.s | 5 - ld/testsuite/ld-discard/discard.exp | 47 - ld/testsuite/ld-discard/discard.ld | 9 - ld/testsuite/ld-discard/exit.s | 6 - ld/testsuite/ld-discard/extern.d | 3 - ld/testsuite/ld-discard/extern.s | 13 - ld/testsuite/ld-discard/start.d | 4 - ld/testsuite/ld-discard/start.s | 7 - ld/testsuite/ld-discard/static.d | 3 - ld/testsuite/ld-discard/static.s | 11 - ld/testsuite/ld-elf/elf.exp | 30 - ld/testsuite/ld-elf/merge.d | 15 - ld/testsuite/ld-elf/merge.ld | 7 - ld/testsuite/ld-elf/merge.s | 14 - ld/testsuite/ld-elf/merge2.d | 15 - ld/testsuite/ld-elf/merge2.s | 58 - ld/testsuite/ld-elf/sec64k.exp | 149 - ld/testsuite/ld-elfcomm/common1a.c | 2 - ld/testsuite/ld-elfcomm/common1b.c | 3 - ld/testsuite/ld-elfcomm/elfcomm.exp | 97 - ld/testsuite/ld-elfvers/vers.exp | 940 - ld/testsuite/ld-elfvers/vers1.c | 101 - ld/testsuite/ld-elfvers/vers1.dsym | 9 - ld/testsuite/ld-elfvers/vers1.map | 13 - ld/testsuite/ld-elfvers/vers1.sym | 4 - ld/testsuite/ld-elfvers/vers1.ver | 8 - ld/testsuite/ld-elfvers/vers13.asym | 10 - ld/testsuite/ld-elfvers/vers15.c | 36 - ld/testsuite/ld-elfvers/vers15.dsym | 5 - ld/testsuite/ld-elfvers/vers15.sym | 3 - ld/testsuite/ld-elfvers/vers15.ver | 5 - ld/testsuite/ld-elfvers/vers16.c | 10 - ld/testsuite/ld-elfvers/vers16.dsym | 2 - ld/testsuite/ld-elfvers/vers16.map | 3 - ld/testsuite/ld-elfvers/vers16a.c | 8 - ld/testsuite/ld-elfvers/vers16a.dsym | 3 - ld/testsuite/ld-elfvers/vers16a.ver | 3 - ld/testsuite/ld-elfvers/vers17.c | 5 - ld/testsuite/ld-elfvers/vers17.dsym | 2 - ld/testsuite/ld-elfvers/vers17.map | 4 - ld/testsuite/ld-elfvers/vers17.ver | 3 - ld/testsuite/ld-elfvers/vers18.c | 42 - ld/testsuite/ld-elfvers/vers18.dsym | 7 - ld/testsuite/ld-elfvers/vers18.map | 12 - ld/testsuite/ld-elfvers/vers18.sym | 4 - ld/testsuite/ld-elfvers/vers18.ver | 7 - ld/testsuite/ld-elfvers/vers19.c | 10 - ld/testsuite/ld-elfvers/vers19.dsym | 1 - ld/testsuite/ld-elfvers/vers19.ver | 3 - ld/testsuite/ld-elfvers/vers2.c | 13 - ld/testsuite/ld-elfvers/vers2.dsym | 3 - ld/testsuite/ld-elfvers/vers2.map | 4 - ld/testsuite/ld-elfvers/vers2.ver | 8 - ld/testsuite/ld-elfvers/vers20.c | 1 - ld/testsuite/ld-elfvers/vers20.dsym | 2 - ld/testsuite/ld-elfvers/vers20.map | 7 - ld/testsuite/ld-elfvers/vers20.ver | 4 - ld/testsuite/ld-elfvers/vers20a.ver | 4 - ld/testsuite/ld-elfvers/vers21.c | 32 - ld/testsuite/ld-elfvers/vers21.dsym | 4 - ld/testsuite/ld-elfvers/vers21.map | 8 - ld/testsuite/ld-elfvers/vers21.sym | 3 - ld/testsuite/ld-elfvers/vers21.ver | 4 - ld/testsuite/ld-elfvers/vers22.c | 7 - ld/testsuite/ld-elfvers/vers22.dsym | 1 - ld/testsuite/ld-elfvers/vers22.map | 4 - ld/testsuite/ld-elfvers/vers22.ver | 4 - ld/testsuite/ld-elfvers/vers22a.c | 6 - ld/testsuite/ld-elfvers/vers22a.dsym | 2 - ld/testsuite/ld-elfvers/vers22a.sym | 1 - ld/testsuite/ld-elfvers/vers22a.ver | 4 - ld/testsuite/ld-elfvers/vers22b.c | 4 - ld/testsuite/ld-elfvers/vers22b.dsym | 2 - ld/testsuite/ld-elfvers/vers22b.ver | 4 - ld/testsuite/ld-elfvers/vers23.c | 10 - ld/testsuite/ld-elfvers/vers23.dsym | 1 - ld/testsuite/ld-elfvers/vers23.ver | 4 - ld/testsuite/ld-elfvers/vers23a.c | 11 - ld/testsuite/ld-elfvers/vers23a.dsym | 3 - ld/testsuite/ld-elfvers/vers23a.map | 5 - ld/testsuite/ld-elfvers/vers23a.sym | 1 - ld/testsuite/ld-elfvers/vers23a.ver | 4 - ld/testsuite/ld-elfvers/vers23b.c | 4 - ld/testsuite/ld-elfvers/vers23b.dsym | 2 - ld/testsuite/ld-elfvers/vers23b.map | 4 - ld/testsuite/ld-elfvers/vers23b.ver | 4 - ld/testsuite/ld-elfvers/vers23c.ver | 4 - ld/testsuite/ld-elfvers/vers23d.dsym | 2 - ld/testsuite/ld-elfvers/vers24.map | 4 - ld/testsuite/ld-elfvers/vers24.rd | 15 - ld/testsuite/ld-elfvers/vers24a.c | 5 - ld/testsuite/ld-elfvers/vers24b.c | 5 - ld/testsuite/ld-elfvers/vers24c.c | 9 - ld/testsuite/ld-elfvers/vers25a.c | 1 - ld/testsuite/ld-elfvers/vers25a.dsym | 2 - ld/testsuite/ld-elfvers/vers25a.map | 5 - ld/testsuite/ld-elfvers/vers25a.ver | 4 - ld/testsuite/ld-elfvers/vers25b.c | 1 - ld/testsuite/ld-elfvers/vers25b.dsym | 1 - ld/testsuite/ld-elfvers/vers25b.ver | 1 - ld/testsuite/ld-elfvers/vers26a.c | 4 - ld/testsuite/ld-elfvers/vers26a.dsym | 2 - ld/testsuite/ld-elfvers/vers26a.map | 5 - ld/testsuite/ld-elfvers/vers26a.ver | 4 - ld/testsuite/ld-elfvers/vers26b.c | 10 - ld/testsuite/ld-elfvers/vers26b.dsym | 1 - ld/testsuite/ld-elfvers/vers26b.ver | 1 - ld/testsuite/ld-elfvers/vers27a.c | 1 - ld/testsuite/ld-elfvers/vers27a.dsym | 2 - ld/testsuite/ld-elfvers/vers27a.map | 5 - ld/testsuite/ld-elfvers/vers27a.ver | 4 - ld/testsuite/ld-elfvers/vers27b.c | 2 - ld/testsuite/ld-elfvers/vers27b.dsym | 1 - ld/testsuite/ld-elfvers/vers27b.ver | 1 - ld/testsuite/ld-elfvers/vers27c.c | 1 - ld/testsuite/ld-elfvers/vers27c.dsym | 1 - ld/testsuite/ld-elfvers/vers27c.ver | 1 - ld/testsuite/ld-elfvers/vers27d.dsym | 2 - ld/testsuite/ld-elfvers/vers27d.sym | 1 - ld/testsuite/ld-elfvers/vers27d.ver | 4 - ld/testsuite/ld-elfvers/vers27d1.c | 6 - ld/testsuite/ld-elfvers/vers27d2.c | 7 - ld/testsuite/ld-elfvers/vers27d3.c | 21 - ld/testsuite/ld-elfvers/vers27d4.dsym | 1 - ld/testsuite/ld-elfvers/vers27d4.ver | 3 - ld/testsuite/ld-elfvers/vers3.c | 13 - ld/testsuite/ld-elfvers/vers3.dsym | 1 - ld/testsuite/ld-elfvers/vers3.ver | 4 - ld/testsuite/ld-elfvers/vers4.c | 31 - ld/testsuite/ld-elfvers/vers4.sym | 1 - ld/testsuite/ld-elfvers/vers4a.dsym | 2 - ld/testsuite/ld-elfvers/vers4a.sym | 1 - ld/testsuite/ld-elfvers/vers4a.ver | 4 - ld/testsuite/ld-elfvers/vers5.c | 51 - ld/testsuite/ld-elfvers/vers6.c | 25 - ld/testsuite/ld-elfvers/vers6.dsym | 4 - ld/testsuite/ld-elfvers/vers6.sym | 4 - ld/testsuite/ld-elfvers/vers6.ver | 6 - ld/testsuite/ld-elfvers/vers7.c | 13 - ld/testsuite/ld-elfvers/vers7.map | 6 - ld/testsuite/ld-elfvers/vers7a.c | 18 - ld/testsuite/ld-elfvers/vers7a.dsym | 2 - ld/testsuite/ld-elfvers/vers7a.sym | 2 - ld/testsuite/ld-elfvers/vers7a.ver | 4 - ld/testsuite/ld-elfvers/vers8.c | 5 - ld/testsuite/ld-elfvers/vers8.map | 15 - ld/testsuite/ld-elfvers/vers8.ver | 8 - ld/testsuite/ld-elfvers/vers9.c | 47 - ld/testsuite/ld-elfvers/vers9.dsym | 4 - ld/testsuite/ld-elfvers/vers9.sym | 4 - ld/testsuite/ld-elfvers/vers9.ver | 5 - ld/testsuite/ld-elfvsb/common.c | 14 - ld/testsuite/ld-elfvsb/define.s | 10 - ld/testsuite/ld-elfvsb/elf-offset.ld | 173 - ld/testsuite/ld-elfvsb/elfvsb.dat | 26 - ld/testsuite/ld-elfvsb/elfvsb.exp | 462 - ld/testsuite/ld-elfvsb/hidden0.d | 10 - ld/testsuite/ld-elfvsb/hidden1.d | 9 - ld/testsuite/ld-elfvsb/internal0.d | 10 - ld/testsuite/ld-elfvsb/internal1.d | 9 - ld/testsuite/ld-elfvsb/main.c | 306 - ld/testsuite/ld-elfvsb/protected0.d | 10 - ld/testsuite/ld-elfvsb/protected1.d | 9 - ld/testsuite/ld-elfvsb/sh1.c | 407 - ld/testsuite/ld-elfvsb/sh2.c | 46 - ld/testsuite/ld-elfvsb/sh3.c | 7 - ld/testsuite/ld-elfvsb/test.c | 26 - ld/testsuite/ld-elfvsb/undef.s | 3 - ld/testsuite/ld-elfweak/bar.c | 16 - ld/testsuite/ld-elfweak/bar1a.c | 26 - ld/testsuite/ld-elfweak/bar1b.c | 7 - ld/testsuite/ld-elfweak/bar1c.c | 7 - ld/testsuite/ld-elfweak/dso.dsym | 1 - ld/testsuite/ld-elfweak/dsodata.dsym | 2 - ld/testsuite/ld-elfweak/dsow.dsym | 1 - ld/testsuite/ld-elfweak/dsowdata.dsym | 1 - ld/testsuite/ld-elfweak/elfweak.exp | 467 - ld/testsuite/ld-elfweak/foo.c | 8 - ld/testsuite/ld-elfweak/foo1a.c | 7 - ld/testsuite/ld-elfweak/foo1b.c | 7 - ld/testsuite/ld-elfweak/main.c | 19 - ld/testsuite/ld-elfweak/main1.c | 11 - ld/testsuite/ld-elfweak/strong.dat | 1 - ld/testsuite/ld-elfweak/strong.sym | 1 - ld/testsuite/ld-elfweak/strongcomm.sym | 2 - ld/testsuite/ld-elfweak/strongdata.dat | 1 - ld/testsuite/ld-elfweak/strongdata.sym | 2 - ld/testsuite/ld-elfweak/weak.dat | 1 - ld/testsuite/ld-elfweak/weak.dsym | 1 - ld/testsuite/ld-elfweak/weakdata.dat | 1 - ld/testsuite/ld-elfweak/weakdata.dsym | 1 - ld/testsuite/ld-empic/empic.exp | 263 - ld/testsuite/ld-empic/relax.t | 49 - ld/testsuite/ld-empic/relax1.c | 22 - ld/testsuite/ld-empic/relax2.c | 19 - ld/testsuite/ld-empic/relax3.c | 3 - ld/testsuite/ld-empic/relax4.c | 3 - ld/testsuite/ld-empic/run.c | 160 - ld/testsuite/ld-empic/runtest1.c | 117 - ld/testsuite/ld-empic/runtest2.c | 26 - ld/testsuite/ld-empic/runtesti.s | 94 - ld/testsuite/ld-fastcall/export.s | 3 - ld/testsuite/ld-fastcall/fastcall.exp | 48 - ld/testsuite/ld-fastcall/import.s | 4 - ld/testsuite/ld-frv/fdpic-pie-1.d | 58 - ld/testsuite/ld-frv/fdpic-pie-2.d | 72 - ld/testsuite/ld-frv/fdpic-pie-5.d | 6 - ld/testsuite/ld-frv/fdpic-pie-6-fail.d | 6 - ld/testsuite/ld-frv/fdpic-pie-6.d | 74 - ld/testsuite/ld-frv/fdpic-pie-7.d | 58 - ld/testsuite/ld-frv/fdpic-pie-8.d | 72 - ld/testsuite/ld-frv/fdpic-shared-1.d | 58 - ld/testsuite/ld-frv/fdpic-shared-2-fail.d | 5 - ld/testsuite/ld-frv/fdpic-shared-2.d | 81 - ld/testsuite/ld-frv/fdpic-shared-3.d | 84 - ld/testsuite/ld-frv/fdpic-shared-4.d | 72 - ld/testsuite/ld-frv/fdpic-shared-5.d | 83 - ld/testsuite/ld-frv/fdpic-shared-6-fail.d | 6 - ld/testsuite/ld-frv/fdpic-shared-6.d | 74 - ld/testsuite/ld-frv/fdpic-shared-7.d | 58 - ld/testsuite/ld-frv/fdpic-shared-8-fail.d | 6 - ld/testsuite/ld-frv/fdpic-shared-8.d | 84 - ld/testsuite/ld-frv/fdpic-shared-local-2.d | 84 - ld/testsuite/ld-frv/fdpic-shared-local-8.d | 84 - ld/testsuite/ld-frv/fdpic-static-1.d | 63 - ld/testsuite/ld-frv/fdpic-static-2.d | 95 - ld/testsuite/ld-frv/fdpic-static-5.d | 6 - ld/testsuite/ld-frv/fdpic-static-6.d | 74 - ld/testsuite/ld-frv/fdpic-static-7.d | 63 - ld/testsuite/ld-frv/fdpic-static-8.d | 95 - ld/testsuite/ld-frv/fdpic.exp | 58 - ld/testsuite/ld-frv/fdpic1.s | 64 - ld/testsuite/ld-frv/fdpic2.ldv | 1 - ld/testsuite/ld-frv/fdpic2.s | 81 - ld/testsuite/ld-frv/fdpic2min.ldv | 1 - ld/testsuite/ld-frv/fdpic3.s | 99 - ld/testsuite/ld-frv/fdpic4.s | 99 - ld/testsuite/ld-frv/fdpic5.s | 38 - ld/testsuite/ld-frv/fdpic6.ldv | 1 - ld/testsuite/ld-frv/fdpic6.s | 55 - ld/testsuite/ld-frv/fdpic7.s | 63 - ld/testsuite/ld-frv/fdpic8.ldv | 1 - ld/testsuite/ld-frv/fdpic8.s | 81 - ld/testsuite/ld-frv/fdpic8min.ldv | 1 - ld/testsuite/ld-h8300/h8300.exp | 38 - ld/testsuite/ld-h8300/relax-2.d | 11 - ld/testsuite/ld-h8300/relax-2.s | 8 - ld/testsuite/ld-h8300/relax-3-coff.d | 32 - ld/testsuite/ld-h8300/relax-3.d | 31 - ld/testsuite/ld-h8300/relax-3.s | 32 - ld/testsuite/ld-h8300/relax-4-coff.d | 52 - ld/testsuite/ld-h8300/relax-4.d | 51 - ld/testsuite/ld-h8300/relax-4.s | 72 - ld/testsuite/ld-h8300/relax-5-coff.d | 50 - ld/testsuite/ld-h8300/relax-5.d | 50 - ld/testsuite/ld-h8300/relax-5.s | 66 - ld/testsuite/ld-h8300/relax.d | 21 - ld/testsuite/ld-h8300/relax.s | 10 - ld/testsuite/ld-i386/combreloc.d | 18 - ld/testsuite/ld-i386/combreloc.s | 22 - ld/testsuite/ld-i386/i386.exp | 66 - ld/testsuite/ld-i386/reloc.d | 18 - ld/testsuite/ld-i386/reloc.s | 8 - ld/testsuite/ld-i386/tlsbin.dd | 456 - ld/testsuite/ld-i386/tlsbin.rd | 167 - ld/testsuite/ld-i386/tlsbin.s | 165 - ld/testsuite/ld-i386/tlsbin.sd | 14 - ld/testsuite/ld-i386/tlsbin.td | 16 - ld/testsuite/ld-i386/tlsbinpic.s | 168 - ld/testsuite/ld-i386/tlsg.s | 12 - ld/testsuite/ld-i386/tlsg.sd | 10 - ld/testsuite/ld-i386/tlsindntpoff.dd | 16 - ld/testsuite/ld-i386/tlsindntpoff.s | 19 - ld/testsuite/ld-i386/tlslib.s | 17 - ld/testsuite/ld-i386/tlsnopic.dd | 161 - ld/testsuite/ld-i386/tlsnopic.rd | 133 - ld/testsuite/ld-i386/tlsnopic.sd | 13 - ld/testsuite/ld-i386/tlsnopic1.s | 107 - ld/testsuite/ld-i386/tlsnopic2.s | 7 - ld/testsuite/ld-i386/tlspic.dd | 411 - ld/testsuite/ld-i386/tlspic.rd | 174 - ld/testsuite/ld-i386/tlspic.sd | 19 - ld/testsuite/ld-i386/tlspic.td | 16 - ld/testsuite/ld-i386/tlspic1.s | 282 - ld/testsuite/ld-i386/tlspic2.s | 11 - ld/testsuite/ld-ia64/ia64.exp | 54 - ld/testsuite/ld-ia64/tlsbin.dd | 74 - ld/testsuite/ld-ia64/tlsbin.rd | 147 - ld/testsuite/ld-ia64/tlsbin.s | 53 - ld/testsuite/ld-ia64/tlsbin.sd | 15 - ld/testsuite/ld-ia64/tlsbin.td | 16 - ld/testsuite/ld-ia64/tlsbinpic.s | 96 - ld/testsuite/ld-ia64/tlsg.s | 14 - ld/testsuite/ld-ia64/tlsg.sd | 10 - ld/testsuite/ld-ia64/tlslib.s | 18 - ld/testsuite/ld-ia64/tlspic.dd | 64 - ld/testsuite/ld-ia64/tlspic.rd | 159 - ld/testsuite/ld-ia64/tlspic.sd | 15 - ld/testsuite/ld-ia64/tlspic.td | 16 - ld/testsuite/ld-ia64/tlspic1.s | 113 - ld/testsuite/ld-ia64/tlspic2.s | 11 - ld/testsuite/ld-linkonce/linkonce.exp | 43 - ld/testsuite/ld-linkonce/x.s | 26 - ld/testsuite/ld-linkonce/y.s | 33 - ld/testsuite/ld-linkonce/zeroeh.ld | 4 - ld/testsuite/ld-linkonce/zeroehl32.d | 18 - ld/testsuite/ld-m68hc11/adj-brset.d | 32 - ld/testsuite/ld-m68hc11/adj-brset.s | 51 - ld/testsuite/ld-m68hc11/adj-jump.d | 60 - ld/testsuite/ld-m68hc11/adj-jump.s | 74 - ld/testsuite/ld-m68hc11/bug-1403.d | 12 - ld/testsuite/ld-m68hc11/bug-1403.s | 20 - ld/testsuite/ld-m68hc11/bug-1417.d | 15 - ld/testsuite/ld-m68hc11/bug-1417.s | 21 - ld/testsuite/ld-m68hc11/bug-3331.d | 14 - ld/testsuite/ld-m68hc11/bug-3331.s | 23 - ld/testsuite/ld-m68hc11/far-hc11.d | 73 - ld/testsuite/ld-m68hc11/far-hc11.s | 105 - ld/testsuite/ld-m68hc11/far-hc12.d | 55 - ld/testsuite/ld-m68hc11/far-hc12.ld | 18 - ld/testsuite/ld-m68hc11/far-hc12.s | 83 - ld/testsuite/ld-m68hc11/link-hc12.s | 6 - ld/testsuite/ld-m68hc11/link-hcs12.d | 24 - ld/testsuite/ld-m68hc11/link-hcs12.s | 7 - ld/testsuite/ld-m68hc11/m68hc11.exp | 31 - ld/testsuite/ld-m68hc11/relax-direct.d | 63 - ld/testsuite/ld-m68hc11/relax-direct.s | 84 - ld/testsuite/ld-m68hc11/relax-group.d | 63 - ld/testsuite/ld-m68hc11/relax-group.s | 161 - ld/testsuite/ld-mips-elf/branch-misc-1.d | 30 - ld/testsuite/ld-mips-elf/elf-rel-got-n32.d | 314 - ld/testsuite/ld-mips-elf/elf-rel-got-n64-linux.d | 333 - ld/testsuite/ld-mips-elf/elf-rel-got-n64.d | 331 - ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d | 428 - ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d | 437 - ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d | 435 - ld/testsuite/ld-mips-elf/empic1-ln.d | 27 - ld/testsuite/ld-mips-elf/empic1-lp.d | 26 - ld/testsuite/ld-mips-elf/empic1-mn.d | 25 - ld/testsuite/ld-mips-elf/empic1-mp.d | 25 - ld/testsuite/ld-mips-elf/empic1-ref.s | 9 - ld/testsuite/ld-mips-elf/empic1-sn.d | 23 - ld/testsuite/ld-mips-elf/empic1-sp.d | 23 - ld/testsuite/ld-mips-elf/empic1-space.s | 5 - ld/testsuite/ld-mips-elf/empic1-tgt.s | 8 - ld/testsuite/ld-mips-elf/empic2-fwd-0.d | 20 - ld/testsuite/ld-mips-elf/empic2-fwd-1.d | 21 - ld/testsuite/ld-mips-elf/empic2-fwd-tgt.s | 7 - ld/testsuite/ld-mips-elf/empic2-ref.s | 7 - ld/testsuite/ld-mips-elf/empic2-rev-0.d | 22 - ld/testsuite/ld-mips-elf/empic2-rev-1.d | 24 - ld/testsuite/ld-mips-elf/empic2-rev-tgt.s | 8 - ld/testsuite/ld-mips-elf/empic2-space.s | 5 - ld/testsuite/ld-mips-elf/emrelocs-eb.d | 25 - ld/testsuite/ld-mips-elf/emrelocs-el.d | 25 - ld/testsuite/ld-mips-elf/emrelocs.ld | 16 - ld/testsuite/ld-mips-elf/emrelocs1.s | 23 - ld/testsuite/ld-mips-elf/emrelocs2.s | 30 - ld/testsuite/ld-mips-elf/jr.s | 1 - ld/testsuite/ld-mips-elf/mips-elf-flags.exp | 160 - ld/testsuite/ld-mips-elf/mips-elf.exp | 99 - ld/testsuite/ld-mips-elf/mips16-1.d | 9 - ld/testsuite/ld-mips-elf/mips16-1a.s | 2 - ld/testsuite/ld-mips-elf/mips16-1b.s | 2 - ld/testsuite/ld-mips-elf/multi-got-1-1.s | 16384 -- ld/testsuite/ld-mips-elf/multi-got-1-2.s | 16384 -- ld/testsuite/ld-mips-elf/multi-got-1.d | 8233 - ld/testsuite/ld-mips-elf/region1.d | 11 - ld/testsuite/ld-mips-elf/region1.t | 12 - ld/testsuite/ld-mips-elf/region1a.s | 3 - ld/testsuite/ld-mips-elf/region1b.s | 2 - ld/testsuite/ld-mips-elf/rel32-n32.d | 15 - ld/testsuite/ld-mips-elf/rel32-o32.d | 16 - ld/testsuite/ld-mips-elf/rel32.s | 4 - ld/testsuite/ld-mips-elf/rel64.d | 19 - ld/testsuite/ld-mips-elf/rel64.s | 4 - ld/testsuite/ld-mips-elf/relax-jalr-n32-shared.d | 25 - ld/testsuite/ld-mips-elf/relax-jalr-n32.d | 23 - ld/testsuite/ld-mips-elf/relax-jalr-n64-shared.d | 25 - ld/testsuite/ld-mips-elf/relax-jalr-n64.d | 23 - ld/testsuite/ld-mips-elf/relax-jalr.s | 15 - ld/testsuite/ld-mips-elf/reloc-1-n32.d | 199 - ld/testsuite/ld-mips-elf/reloc-1-n64.d | 459 - ld/testsuite/ld-mips-elf/reloc-1-rel.d | 356 - ld/testsuite/ld-mips-elf/reloc-1a.s | 100 - ld/testsuite/ld-mips-elf/reloc-1b.s | 95 - ld/testsuite/ld-mips-elf/reloc-2.d | 169 - ld/testsuite/ld-mips-elf/reloc-2.ld | 9 - ld/testsuite/ld-mips-elf/reloc-2a.s | 78 - ld/testsuite/ld-mips-elf/reloc-2b.s | 73 - ld/testsuite/ld-mips-elf/reloc-3-r.d | 83 - ld/testsuite/ld-mips-elf/reloc-3-srec.d | 54 - ld/testsuite/ld-mips-elf/reloc-3.ld | 8 - ld/testsuite/ld-mips-elf/reloc-3a.s | 38 - ld/testsuite/ld-mips-elf/reloc-3b.s | 58 - ld/testsuite/ld-mmix/a.s | 5 - ld/testsuite/ld-mmix/areg-256.s | 2 - ld/testsuite/ld-mmix/areg-t.s | 3 - ld/testsuite/ld-mmix/aregm.s | 5 - ld/testsuite/ld-mmix/b-badfil1.d | 7 - ld/testsuite/ld-mmix/b-badfil1.s | 10 - ld/testsuite/ld-mmix/b-badfil2.d | 7 - ld/testsuite/ld-mmix/b-badfil2.s | 6 - ld/testsuite/ld-mmix/b-badfixo.d | 7 - ld/testsuite/ld-mmix/b-badfixo.s | 5 - ld/testsuite/ld-mmix/b-badloc.d | 7 - ld/testsuite/ld-mmix/b-badloc.s | 5 - ld/testsuite/ld-mmix/b-badlop.d | 7 - ld/testsuite/ld-mmix/b-badlop.s | 4 - ld/testsuite/ld-mmix/b-badm.d | 6 - ld/testsuite/ld-mmix/b-badm2.s | 6 - ld/testsuite/ld-mmix/b-badmain.s | 7 - ld/testsuite/ld-mmix/b-badquot.d | 7 - ld/testsuite/ld-mmix/b-badquot.s | 5 - ld/testsuite/ld-mmix/b-badrx1.d | 7 - ld/testsuite/ld-mmix/b-badrx1.s | 6 - ld/testsuite/ld-mmix/b-badrx2.d | 7 - ld/testsuite/ld-mmix/b-badrx2.s | 6 - ld/testsuite/ld-mmix/b-badrx3.d | 7 - ld/testsuite/ld-mmix/b-badrx3.s | 6 - ld/testsuite/ld-mmix/b-bend.s | 6 - ld/testsuite/ld-mmix/b-bend1.d | 11 - ld/testsuite/ld-mmix/b-bend2.d | 10 - ld/testsuite/ld-mmix/b-bend3.d | 6 - ld/testsuite/ld-mmix/b-bstab1.d | 7 - ld/testsuite/ld-mmix/b-bstab1.s | 5 - ld/testsuite/ld-mmix/b-fixo2.d | 27 - ld/testsuite/ld-mmix/b-fixo2.s | 6 - ld/testsuite/ld-mmix/b-goodmain.s | 5 - ld/testsuite/ld-mmix/b-loc64k.d | 24 - ld/testsuite/ld-mmix/b-loc64k.s | 8 - ld/testsuite/ld-mmix/b-nosym.d | 18 - ld/testsuite/ld-mmix/b-nosym.s | 5 - ld/testsuite/ld-mmix/b-post1.s | 5 - ld/testsuite/ld-mmix/b-twoinsn.s | 7 - ld/testsuite/ld-mmix/b-widec.s | 7 - ld/testsuite/ld-mmix/b-widec1.d | 12 - ld/testsuite/ld-mmix/b-widec2.d | 6 - ld/testsuite/ld-mmix/b-widec2.s | 7 - ld/testsuite/ld-mmix/b-widec3.d | 6 - ld/testsuite/ld-mmix/b-widec3.s | 8 - ld/testsuite/ld-mmix/bpo-1.d | 27 - ld/testsuite/ld-mmix/bpo-1.s | 2 - ld/testsuite/ld-mmix/bpo-10.d | 28 - ld/testsuite/ld-mmix/bpo-10.s | 6 - ld/testsuite/ld-mmix/bpo-11.d | 36 - ld/testsuite/ld-mmix/bpo-11.s | 5 - ld/testsuite/ld-mmix/bpo-12.d | 9 - ld/testsuite/ld-mmix/bpo-12m.d | 9 - ld/testsuite/ld-mmix/bpo-13.d | 9 - ld/testsuite/ld-mmix/bpo-13m.d | 9 - ld/testsuite/ld-mmix/bpo-14.d | 28 - ld/testsuite/ld-mmix/bpo-14m.d | 20 - ld/testsuite/ld-mmix/bpo-15.d | 7 - ld/testsuite/ld-mmix/bpo-15m.d | 7 - ld/testsuite/ld-mmix/bpo-16.d | 29 - ld/testsuite/ld-mmix/bpo-16m.d | 21 - ld/testsuite/ld-mmix/bpo-17.d | 29 - ld/testsuite/ld-mmix/bpo-17m.d | 22 - ld/testsuite/ld-mmix/bpo-18.d | 34 - ld/testsuite/ld-mmix/bpo-18m.d | 25 - ld/testsuite/ld-mmix/bpo-19.d | 39 - ld/testsuite/ld-mmix/bpo-19m.d | 30 - ld/testsuite/ld-mmix/bpo-1m.d | 18 - ld/testsuite/ld-mmix/bpo-2.d | 29 - ld/testsuite/ld-mmix/bpo-2.s | 2 - ld/testsuite/ld-mmix/bpo-20.d | 8 - ld/testsuite/ld-mmix/bpo-20m.d | 8 - ld/testsuite/ld-mmix/bpo-21.d | 10 - ld/testsuite/ld-mmix/bpo-21m.d | 9 - ld/testsuite/ld-mmix/bpo-22.d | 27 - ld/testsuite/ld-mmix/bpo-2m.d | 21 - ld/testsuite/ld-mmix/bpo-3.d | 30 - ld/testsuite/ld-mmix/bpo-3.s | 1 - ld/testsuite/ld-mmix/bpo-3m.d | 20 - ld/testsuite/ld-mmix/bpo-4.d | 31 - ld/testsuite/ld-mmix/bpo-4.s | 5 - ld/testsuite/ld-mmix/bpo-4m.d | 22 - ld/testsuite/ld-mmix/bpo-5.d | 31 - ld/testsuite/ld-mmix/bpo-5.s | 4 - ld/testsuite/ld-mmix/bpo-5m.d | 21 - ld/testsuite/ld-mmix/bpo-6.d | 36 - ld/testsuite/ld-mmix/bpo-6.s | 4 - ld/testsuite/ld-mmix/bpo-6m.d | 27 - ld/testsuite/ld-mmix/bpo-7.d | 6 - ld/testsuite/ld-mmix/bpo-7.s | 2 - ld/testsuite/ld-mmix/bpo-7m.d | 6 - ld/testsuite/ld-mmix/bpo-8.d | 7 - ld/testsuite/ld-mmix/bpo-8.s | 3 - ld/testsuite/ld-mmix/bpo-8m.d | 7 - ld/testsuite/ld-mmix/bpo-9.d | 31 - ld/testsuite/ld-mmix/bpo-9.s | 5 - ld/testsuite/ld-mmix/bpo-9m.d | 22 - ld/testsuite/ld-mmix/bpo64addr.ld | 13 - ld/testsuite/ld-mmix/bspec1.d | 55 - ld/testsuite/ld-mmix/bspec1.s | 3 - ld/testsuite/ld-mmix/bspec1m.d | 15 - ld/testsuite/ld-mmix/bspec2.d | 65 - ld/testsuite/ld-mmix/bspec2.s | 3 - ld/testsuite/ld-mmix/bspec2m.d | 21 - ld/testsuite/ld-mmix/bspec801.s | 3 - ld/testsuite/ld-mmix/bspec802.s | 7 - ld/testsuite/ld-mmix/bspec803.s | 9 - ld/testsuite/ld-mmix/bspec804.s | 9 - ld/testsuite/ld-mmix/bspec805.s | 10 - ld/testsuite/ld-mmix/bspec806.s | 10 - ld/testsuite/ld-mmix/bspec807.s | 9 - ld/testsuite/ld-mmix/bspec808.s | 9 - ld/testsuite/ld-mmix/bza-1b.d | 26 - ld/testsuite/ld-mmix/bza-1f.d | 26 - ld/testsuite/ld-mmix/bza-2b.d | 21 - ld/testsuite/ld-mmix/bza-2f.d | 21 - ld/testsuite/ld-mmix/bza-7b.d | 26 - ld/testsuite/ld-mmix/bza-7f.d | 26 - ld/testsuite/ld-mmix/bza-8b.d | 21 - ld/testsuite/ld-mmix/bza-8f.d | 21 - ld/testsuite/ld-mmix/bza.s | 7 - ld/testsuite/ld-mmix/data1.s | 2 - ld/testsuite/ld-mmix/dloc1.s | 3 - ld/testsuite/ld-mmix/dloc2.s | 3 - ld/testsuite/ld-mmix/ext1-254.s | 2 - ld/testsuite/ld-mmix/ext1.s | 2 - ld/testsuite/ld-mmix/ext1g.s | 2 - ld/testsuite/ld-mmix/ext1l.s | 2 - ld/testsuite/ld-mmix/getaa-1b.d | 24 - ld/testsuite/ld-mmix/getaa-1f.d | 24 - ld/testsuite/ld-mmix/getaa-2b.d | 21 - ld/testsuite/ld-mmix/getaa-2f.d | 21 - ld/testsuite/ld-mmix/getaa-4b.d | 26 - ld/testsuite/ld-mmix/getaa-4f.d | 25 - ld/testsuite/ld-mmix/getaa-6b.d | 11 - ld/testsuite/ld-mmix/getaa-6f.d | 10 - ld/testsuite/ld-mmix/getaa-7b.d | 24 - ld/testsuite/ld-mmix/getaa-7f.d | 24 - ld/testsuite/ld-mmix/getaa-8b.d | 21 - ld/testsuite/ld-mmix/getaa-8f.d | 21 - ld/testsuite/ld-mmix/getaa.s | 7 - ld/testsuite/ld-mmix/getaa12b.d | 26 - ld/testsuite/ld-mmix/getaa12f.d | 25 - ld/testsuite/ld-mmix/getaa14b.d | 11 - ld/testsuite/ld-mmix/getaa14f.d | 10 - ld/testsuite/ld-mmix/greg-1.d | 33 - ld/testsuite/ld-mmix/greg-1.s | 3 - ld/testsuite/ld-mmix/greg-10.d | 25 - ld/testsuite/ld-mmix/greg-11.d | 39 - ld/testsuite/ld-mmix/greg-11b.d | 32 - ld/testsuite/ld-mmix/greg-12.d | 34 - ld/testsuite/ld-mmix/greg-13.d | 33 - ld/testsuite/ld-mmix/greg-14.d | 32 - ld/testsuite/ld-mmix/greg-14s.d | 23 - ld/testsuite/ld-mmix/greg-15.d | 59 - ld/testsuite/ld-mmix/greg-16.d | 59 - ld/testsuite/ld-mmix/greg-17.d | 37 - ld/testsuite/ld-mmix/greg-18.d | 39 - ld/testsuite/ld-mmix/greg-19.d | 27 - ld/testsuite/ld-mmix/greg-2.d | 47 - ld/testsuite/ld-mmix/greg-2.s | 3 - ld/testsuite/ld-mmix/greg-20.d | 18 - ld/testsuite/ld-mmix/greg-3.d | 42 - ld/testsuite/ld-mmix/greg-3.s | 3 - ld/testsuite/ld-mmix/greg-4.d | 41 - ld/testsuite/ld-mmix/greg-4.s | 2 - ld/testsuite/ld-mmix/greg-5.d | 40 - ld/testsuite/ld-mmix/greg-5.s | 20 - ld/testsuite/ld-mmix/greg-5s.d | 31 - ld/testsuite/ld-mmix/greg-6.d | 292 - ld/testsuite/ld-mmix/greg-7.d | 292 - ld/testsuite/ld-mmix/greg-8.d | 37 - ld/testsuite/ld-mmix/greg-9.d | 39 - ld/testsuite/ld-mmix/gregbza1.s | 4 - ld/testsuite/ld-mmix/gregget1.s | 4 - ld/testsuite/ld-mmix/gregget2.s | 4 - ld/testsuite/ld-mmix/gregldo1.s | 4 - ld/testsuite/ld-mmix/gregpsj1.s | 4 - ld/testsuite/ld-mmix/hdr-1.d | 19 - ld/testsuite/ld-mmix/jumpa-1b.d | 25 - ld/testsuite/ld-mmix/jumpa-1f.d | 25 - ld/testsuite/ld-mmix/jumpa-2b.d | 21 - ld/testsuite/ld-mmix/jumpa-2f.d | 21 - ld/testsuite/ld-mmix/jumpa-3b.d | 30 - ld/testsuite/ld-mmix/jumpa-3f.d | 28 - ld/testsuite/ld-mmix/jumpa-4b.d | 26 - ld/testsuite/ld-mmix/jumpa-4f.d | 25 - ld/testsuite/ld-mmix/jumpa-5b.d | 31 - ld/testsuite/ld-mmix/jumpa-5f.d | 29 - ld/testsuite/ld-mmix/jumpa-6b.d | 11 - ld/testsuite/ld-mmix/jumpa-6f.d | 10 - ld/testsuite/ld-mmix/jumpa-7b.d | 25 - ld/testsuite/ld-mmix/jumpa-7f.d | 25 - ld/testsuite/ld-mmix/jumpa-8b.d | 21 - ld/testsuite/ld-mmix/jumpa-8f.d | 21 - ld/testsuite/ld-mmix/jumpa-9b.d | 30 - ld/testsuite/ld-mmix/jumpa-9f.d | 28 - ld/testsuite/ld-mmix/jumpa.s | 7 - ld/testsuite/ld-mmix/jumpa12b.d | 26 - ld/testsuite/ld-mmix/jumpa12f.d | 25 - ld/testsuite/ld-mmix/jumpa13b.d | 31 - ld/testsuite/ld-mmix/jumpa13f.d | 29 - ld/testsuite/ld-mmix/jumpa14b.d | 11 - ld/testsuite/ld-mmix/jumpa14f.d | 10 - ld/testsuite/ld-mmix/loc1.d | 25 - ld/testsuite/ld-mmix/loc1.s | 3 - ld/testsuite/ld-mmix/loc1m.d | 14 - ld/testsuite/ld-mmix/loc2.d | 27 - ld/testsuite/ld-mmix/loc2.s | 3 - ld/testsuite/ld-mmix/loc2m.d | 14 - ld/testsuite/ld-mmix/loc3.d | 27 - ld/testsuite/ld-mmix/loc3m.d | 14 - ld/testsuite/ld-mmix/loc4.d | 33 - ld/testsuite/ld-mmix/loc4m.d | 17 - ld/testsuite/ld-mmix/loc5.d | 6 - ld/testsuite/ld-mmix/loc5m.d | 6 - ld/testsuite/ld-mmix/loc6.d | 29 - ld/testsuite/ld-mmix/loc6m.d | 18 - ld/testsuite/ld-mmix/loc7.d | 6 - ld/testsuite/ld-mmix/loc7m.d | 6 - ld/testsuite/ld-mmix/local1.d | 62 - ld/testsuite/ld-mmix/local1.s | 2 - ld/testsuite/ld-mmix/local10.d | 5 - ld/testsuite/ld-mmix/local10m.d | 5 - ld/testsuite/ld-mmix/local11.d | 6 - ld/testsuite/ld-mmix/local11m.d | 6 - ld/testsuite/ld-mmix/local12.d | 22 - ld/testsuite/ld-mmix/local12m.d | 16 - ld/testsuite/ld-mmix/local1m.d | 19 - ld/testsuite/ld-mmix/local2.d | 8 - ld/testsuite/ld-mmix/local2.s | 2 - ld/testsuite/ld-mmix/local2m.d | 8 - ld/testsuite/ld-mmix/local3.d | 60 - ld/testsuite/ld-mmix/local3m.d | 19 - ld/testsuite/ld-mmix/local4.d | 8 - ld/testsuite/ld-mmix/local4m.d | 8 - ld/testsuite/ld-mmix/local5.d | 61 - ld/testsuite/ld-mmix/local5m.d | 21 - ld/testsuite/ld-mmix/local6.d | 9 - ld/testsuite/ld-mmix/local6m.d | 9 - ld/testsuite/ld-mmix/local7.d | 62 - ld/testsuite/ld-mmix/local7m.d | 20 - ld/testsuite/ld-mmix/local8.d | 28 - ld/testsuite/ld-mmix/local8m.d | 28 - ld/testsuite/ld-mmix/local9.d | 5 - ld/testsuite/ld-mmix/local9m.d | 5 - ld/testsuite/ld-mmix/locdo-1.d | 28 - ld/testsuite/ld-mmix/locdo.s | 2 - ld/testsuite/ld-mmix/loct-1.d | 25 - ld/testsuite/ld-mmix/loct.s | 3 - ld/testsuite/ld-mmix/locto-1.d | 25 - ld/testsuite/ld-mmix/locto.s | 2 - ld/testsuite/ld-mmix/main1.s | 5 - ld/testsuite/ld-mmix/mmix.exp | 32 - ld/testsuite/ld-mmix/mmohdr1.ld | 11 - ld/testsuite/ld-mmix/mmosec1.ld | 16 - ld/testsuite/ld-mmix/mmosec2.ld | 13 - ld/testsuite/ld-mmix/nop123.s | 3 - ld/testsuite/ld-mmix/pad16.s | 4 - ld/testsuite/ld-mmix/pad2p18m32.s | 4 - ld/testsuite/ld-mmix/pad2p26m32.s | 4 - ld/testsuite/ld-mmix/pad4.s | 4 - ld/testsuite/ld-mmix/pushja.s | 7 - ld/testsuite/ld-mmix/pushja1b-s.d | 19 - ld/testsuite/ld-mmix/pushja1b.d | 25 - ld/testsuite/ld-mmix/pushja1f-s.d | 19 - ld/testsuite/ld-mmix/pushja1f.d | 25 - ld/testsuite/ld-mmix/pushja2b.d | 21 - ld/testsuite/ld-mmix/pushja2f.d | 21 - ld/testsuite/ld-mmix/pushja7b-s.d | 19 - ld/testsuite/ld-mmix/pushja7b.d | 25 - ld/testsuite/ld-mmix/pushja7f-s.d | 19 - ld/testsuite/ld-mmix/pushja7f.d | 25 - ld/testsuite/ld-mmix/pushja8b.d | 21 - ld/testsuite/ld-mmix/pushja8f.d | 21 - ld/testsuite/ld-mmix/pushjs1.d | 27 - ld/testsuite/ld-mmix/pushjs1b.d | 31 - ld/testsuite/ld-mmix/pushjs1bm.d | 29 - ld/testsuite/ld-mmix/pushjs1m.d | 26 - ld/testsuite/ld-mmix/pushjs1r.d | 22 - ld/testsuite/ld-mmix/pushjs2.d | 29 - ld/testsuite/ld-mmix/pushjs2b.d | 33 - ld/testsuite/ld-mmix/pushjs2bm.d | 31 - ld/testsuite/ld-mmix/pushjs2m.d | 28 - ld/testsuite/ld-mmix/pushjs2r.d | 27 - ld/testsuite/ld-mmix/pushjs3.d | 29 - ld/testsuite/ld-mmix/pushjs3b.d | 30 - ld/testsuite/ld-mmix/pushjs3bm.d | 28 - ld/testsuite/ld-mmix/pushjs3m.d | 28 - ld/testsuite/ld-mmix/pushjs3r.d | 32 - ld/testsuite/ld-mmix/pushjs4.d | 34 - ld/testsuite/ld-mmix/pushjs4b.d | 35 - ld/testsuite/ld-mmix/pushjs4bm.d | 33 - ld/testsuite/ld-mmix/pushjs4m.d | 33 - ld/testsuite/ld-mmix/pushjs4r.d | 29 - ld/testsuite/ld-mmix/reg-1.d | 7 - ld/testsuite/ld-mmix/reg-1m.d | 7 - ld/testsuite/ld-mmix/reg-2.d | 7 - ld/testsuite/ld-mmix/reg-2m.d | 7 - ld/testsuite/ld-mmix/regext1.s | 2 - ld/testsuite/ld-mmix/sec-1.d | 32 - ld/testsuite/ld-mmix/sec-1.s | 14 - ld/testsuite/ld-mmix/sec-2.d | 26 - ld/testsuite/ld-mmix/sec-2.s | 2 - ld/testsuite/ld-mmix/sec-3.d | 36 - ld/testsuite/ld-mmix/sec-4.d | 22 - ld/testsuite/ld-mmix/sec-5.d | 21 - ld/testsuite/ld-mmix/sec-6.d | 37 - ld/testsuite/ld-mmix/sec-6.s | 5 - ld/testsuite/ld-mmix/sec-6m.d | 32 - ld/testsuite/ld-mmix/sec-7a.s | 6 - ld/testsuite/ld-mmix/sec-7b.s | 6 - ld/testsuite/ld-mmix/sec-7c.s | 6 - ld/testsuite/ld-mmix/sec-7d.s | 6 - ld/testsuite/ld-mmix/sec-7e.s | 6 - ld/testsuite/ld-mmix/sec-7m.d | 38 - ld/testsuite/ld-mmix/sec-8a.s | 4 - ld/testsuite/ld-mmix/sec-8b.s | 4 - ld/testsuite/ld-mmix/sec-8d.s | 4 - ld/testsuite/ld-mmix/sec-8m.d | 30 - ld/testsuite/ld-mmix/sec-8m.s | 4 - ld/testsuite/ld-mmix/spec801.d | 21 - ld/testsuite/ld-mmix/spec802.d | 24 - ld/testsuite/ld-mmix/spec803.d | 24 - ld/testsuite/ld-mmix/spec804.d | 24 - ld/testsuite/ld-mmix/spec805.d | 25 - ld/testsuite/ld-mmix/spec806.d | 25 - ld/testsuite/ld-mmix/spec807.d | 25 - ld/testsuite/ld-mmix/spec808.d | 25 - ld/testsuite/ld-mmix/start-1.d | 27 - ld/testsuite/ld-mmix/start-2.d | 4 - ld/testsuite/ld-mmix/start.s | 5 - ld/testsuite/ld-mmix/start2.s | 5 - ld/testsuite/ld-mmix/start3.s | 7 - ld/testsuite/ld-mmix/start4.s | 6 - ld/testsuite/ld-mmix/sym-1.d | 11 - ld/testsuite/ld-mmix/sym-2.d | 142 - ld/testsuite/ld-mmix/sym-2.s | 130 - ld/testsuite/ld-mmix/undef-1.d | 4 - ld/testsuite/ld-mmix/undef-1.s | 1 - ld/testsuite/ld-mmix/undef-1m.d | 4 - ld/testsuite/ld-mmix/undef-2.d | 5 - ld/testsuite/ld-mmix/undef-2.s | 1 - ld/testsuite/ld-mmix/undef-2m.d | 5 - ld/testsuite/ld-mmix/undef-3.d | 46 - ld/testsuite/ld-mmix/undef-3m.d | 18 - ld/testsuite/ld-mmix/x.s | 26 - ld/testsuite/ld-mmix/y.s | 33 - ld/testsuite/ld-mmix/zeroeh.ld | 4 - ld/testsuite/ld-mmix/zeroehelf.d | 17 - ld/testsuite/ld-mmix/zeroehmmo.d | 16 - ld/testsuite/ld-powerpc/apuinfo.rd | 10 - ld/testsuite/ld-powerpc/apuinfo1.s | 9 - ld/testsuite/ld-powerpc/apuinfo2.s | 8 - ld/testsuite/ld-powerpc/powerpc.exp | 108 - ld/testsuite/ld-powerpc/reloc.d | 16 - ld/testsuite/ld-powerpc/reloc.s | 9 - ld/testsuite/ld-powerpc/tls.d | 53 - ld/testsuite/ld-powerpc/tls.g | 12 - ld/testsuite/ld-powerpc/tls.s | 92 - ld/testsuite/ld-powerpc/tls.t | 14 - ld/testsuite/ld-powerpc/tls32.d | 50 - ld/testsuite/ld-powerpc/tls32.g | 11 - ld/testsuite/ld-powerpc/tls32.s | 80 - ld/testsuite/ld-powerpc/tls32.t | 12 - ld/testsuite/ld-powerpc/tlsexe.d | 76 - ld/testsuite/ld-powerpc/tlsexe.g | 12 - ld/testsuite/ld-powerpc/tlsexe.r | 124 - ld/testsuite/ld-powerpc/tlsexe.t | 13 - ld/testsuite/ld-powerpc/tlsexe32.d | 49 - ld/testsuite/ld-powerpc/tlsexe32.g | 11 - ld/testsuite/ld-powerpc/tlsexe32.r | 128 - ld/testsuite/ld-powerpc/tlsexe32.t | 11 - ld/testsuite/ld-powerpc/tlsexetoc.d | 60 - ld/testsuite/ld-powerpc/tlsexetoc.g | 15 - ld/testsuite/ld-powerpc/tlsexetoc.r | 123 - ld/testsuite/ld-powerpc/tlsexetoc.t | 13 - ld/testsuite/ld-powerpc/tlslib.s | 21 - ld/testsuite/ld-powerpc/tlslib32.s | 14 - ld/testsuite/ld-powerpc/tlsso.d | 76 - ld/testsuite/ld-powerpc/tlsso.g | 15 - ld/testsuite/ld-powerpc/tlsso.r | 150 - ld/testsuite/ld-powerpc/tlsso.t | 13 - ld/testsuite/ld-powerpc/tlsso32.d | 49 - ld/testsuite/ld-powerpc/tlsso32.g | 13 - ld/testsuite/ld-powerpc/tlsso32.r | 162 - ld/testsuite/ld-powerpc/tlsso32.t | 11 - ld/testsuite/ld-powerpc/tlstoc.d | 37 - ld/testsuite/ld-powerpc/tlstoc.g | 15 - ld/testsuite/ld-powerpc/tlstoc.s | 88 - ld/testsuite/ld-powerpc/tlstoc.t | 14 - ld/testsuite/ld-powerpc/tlstocso.d | 60 - ld/testsuite/ld-powerpc/tlstocso.g | 15 - ld/testsuite/ld-powerpc/tlstocso.r | 146 - ld/testsuite/ld-powerpc/tlstocso.t | 13 - ld/testsuite/ld-s390/s390.exp | 72 - ld/testsuite/ld-s390/tlsbin.dd | 185 - ld/testsuite/ld-s390/tlsbin.rd | 156 - ld/testsuite/ld-s390/tlsbin.s | 73 - ld/testsuite/ld-s390/tlsbin.sd | 13 - ld/testsuite/ld-s390/tlsbin.td | 16 - ld/testsuite/ld-s390/tlsbin_64.dd | 213 - ld/testsuite/ld-s390/tlsbin_64.rd | 156 - ld/testsuite/ld-s390/tlsbin_64.s | 75 - ld/testsuite/ld-s390/tlsbin_64.sd | 18 - ld/testsuite/ld-s390/tlsbin_64.td | 16 - ld/testsuite/ld-s390/tlsbinpic.s | 168 - ld/testsuite/ld-s390/tlsbinpic_64.s | 184 - ld/testsuite/ld-s390/tlslib.s | 17 - ld/testsuite/ld-s390/tlslib_64.s | 17 - ld/testsuite/ld-s390/tlspic.dd | 161 - ld/testsuite/ld-s390/tlspic.rd | 165 - ld/testsuite/ld-s390/tlspic.sd | 16 - ld/testsuite/ld-s390/tlspic.td | 16 - ld/testsuite/ld-s390/tlspic1.s | 206 - ld/testsuite/ld-s390/tlspic1_64.s | 222 - ld/testsuite/ld-s390/tlspic2.s | 11 - ld/testsuite/ld-s390/tlspic2_64.s | 11 - ld/testsuite/ld-s390/tlspic_64.dd | 194 - ld/testsuite/ld-s390/tlspic_64.rd | 165 - ld/testsuite/ld-s390/tlspic_64.sd | 21 - ld/testsuite/ld-s390/tlspic_64.td | 16 - ld/testsuite/ld-scripts/align.exp | 31 - ld/testsuite/ld-scripts/align.s | 2 - ld/testsuite/ld-scripts/align.t | 8 - ld/testsuite/ld-scripts/assert.exp | 31 - ld/testsuite/ld-scripts/assert.s | 1 - ld/testsuite/ld-scripts/assert.t | 5 - ld/testsuite/ld-scripts/cross1.c | 6 - ld/testsuite/ld-scripts/cross1.t | 11 - ld/testsuite/ld-scripts/cross2.c | 5 - ld/testsuite/ld-scripts/cross2.t | 6 - ld/testsuite/ld-scripts/cross3.c | 7 - ld/testsuite/ld-scripts/crossref.exp | 100 - ld/testsuite/ld-scripts/data.d | 9 - ld/testsuite/ld-scripts/data.exp | 20 - ld/testsuite/ld-scripts/data.s | 1 - ld/testsuite/ld-scripts/data.t | 10 - ld/testsuite/ld-scripts/defined.exp | 59 - ld/testsuite/ld-scripts/defined.s | 2 - ld/testsuite/ld-scripts/defined.t | 7 - ld/testsuite/ld-scripts/defined2.d | 18 - ld/testsuite/ld-scripts/defined2.t | 9 - ld/testsuite/ld-scripts/defined3.d | 25 - ld/testsuite/ld-scripts/defined3.t | 15 - ld/testsuite/ld-scripts/dynamic-sections-1.s | 2 - ld/testsuite/ld-scripts/dynamic-sections-2.s | 3 - ld/testsuite/ld-scripts/dynamic-sections.d | 6 - ld/testsuite/ld-scripts/dynamic-sections.exp | 8 - ld/testsuite/ld-scripts/dynamic-sections.t | 11 - ld/testsuite/ld-scripts/map-address.d | 10 - ld/testsuite/ld-scripts/map-address.exp | 37 - ld/testsuite/ld-scripts/map-address.t | 9 - ld/testsuite/ld-scripts/overlay-size-map.d | 23 - ld/testsuite/ld-scripts/overlay-size.d | 29 - ld/testsuite/ld-scripts/overlay-size.exp | 31 - ld/testsuite/ld-scripts/overlay-size.s | 25 - ld/testsuite/ld-scripts/overlay-size.t | 57 - ld/testsuite/ld-scripts/phdrs.exp | 61 - ld/testsuite/ld-scripts/phdrs.s | 8 - ld/testsuite/ld-scripts/phdrs.t | 16 - ld/testsuite/ld-scripts/phdrs2.exp | 65 - ld/testsuite/ld-scripts/phdrs2.s | 7 - ld/testsuite/ld-scripts/phdrs2.t | 23 - ld/testsuite/ld-scripts/provide-1.d | 8 - ld/testsuite/ld-scripts/provide-1.s | 3 - ld/testsuite/ld-scripts/provide-1.t | 11 - ld/testsuite/ld-scripts/provide-2.d | 6 - ld/testsuite/ld-scripts/provide-2.s | 6 - ld/testsuite/ld-scripts/provide-2.t | 10 - ld/testsuite/ld-scripts/provide-3.d | 3 - ld/testsuite/ld-scripts/provide-3.s | 3 - ld/testsuite/ld-scripts/provide-3.t | 11 - ld/testsuite/ld-scripts/provide.exp | 25 - ld/testsuite/ld-scripts/script.exp | 101 - ld/testsuite/ld-scripts/script.s | 8 - ld/testsuite/ld-scripts/script.t | 16 - ld/testsuite/ld-scripts/scriptm.t | 10 - ld/testsuite/ld-scripts/sizeof.exp | 71 - ld/testsuite/ld-scripts/sizeof.s | 1 - ld/testsuite/ld-scripts/sizeof.t | 17 - ld/testsuite/ld-scripts/weak.exp | 61 - ld/testsuite/ld-scripts/weak.t | 12 - ld/testsuite/ld-scripts/weak1.s | 11 - ld/testsuite/ld-scripts/weak2.s | 11 - ld/testsuite/ld-selective/1.c | 12 - ld/testsuite/ld-selective/2.c | 19 - ld/testsuite/ld-selective/3.cc | 46 - ld/testsuite/ld-selective/4.cc | 34 - ld/testsuite/ld-selective/5.cc | 38 - ld/testsuite/ld-selective/keepdot.d | 9 - ld/testsuite/ld-selective/keepdot.ld | 5 - ld/testsuite/ld-selective/keepdot.s | 17 - ld/testsuite/ld-selective/keepdot0.d | 11 - ld/testsuite/ld-selective/keepdot0.ld | 6 - ld/testsuite/ld-selective/sel-dump.exp | 31 - ld/testsuite/ld-selective/selective.exp | 204 - ld/testsuite/ld-sh/ld-r-1.d | 23 - ld/testsuite/ld-sh/ldr1.s | 5 - ld/testsuite/ld-sh/ldr2.s | 3 - ld/testsuite/ld-sh/rd-sh.exp | 64 - ld/testsuite/ld-sh/refdbg-0-dso.d | 9 - ld/testsuite/ld-sh/refdbg-1.d | 10 - ld/testsuite/ld-sh/refdbg.s | 12 - ld/testsuite/ld-sh/refdbglib.s | 8 - ld/testsuite/ld-sh/sh.exp | 162 - ld/testsuite/ld-sh/sh1.s | 13 - ld/testsuite/ld-sh/sh2.c | 120 - ld/testsuite/ld-sh/sh64/abi32.sd | 16 - ld/testsuite/ld-sh/sh64/abi32.xd | 60 - ld/testsuite/ld-sh/sh64/abi64.sd | 20 - ld/testsuite/ld-sh/sh64/abi64.xd | 59 - ld/testsuite/ld-sh/sh64/abixx-noexp.sd | 12 - ld/testsuite/ld-sh/sh64/cmpct1.sd | 9 - ld/testsuite/ld-sh/sh64/cmpct1.xd | 56 - ld/testsuite/ld-sh/sh64/crange-1.s | 8 - ld/testsuite/ld-sh/sh64/crange-2a.s | 22 - ld/testsuite/ld-sh/sh64/crange-2b.s | 39 - ld/testsuite/ld-sh/sh64/crange-2c.s | 16 - ld/testsuite/ld-sh/sh64/crange-2d.s | 9 - ld/testsuite/ld-sh/sh64/crange-2e.s | 12 - ld/testsuite/ld-sh/sh64/crange-2f.s | 21 - ld/testsuite/ld-sh/sh64/crange-2g.s | 26 - ld/testsuite/ld-sh/sh64/crange-2h.s | 17 - ld/testsuite/ld-sh/sh64/crange-2i.s | 8 - ld/testsuite/ld-sh/sh64/crange1.rd | 61 - ld/testsuite/ld-sh/sh64/crange2.rd | 69 - ld/testsuite/ld-sh/sh64/crange3-cmpct.rd | 92 - ld/testsuite/ld-sh/sh64/crange3-media.rd | 92 - ld/testsuite/ld-sh/sh64/crange3.dd | 80 - ld/testsuite/ld-sh/sh64/crange3.rd | 73 - ld/testsuite/ld-sh/sh64/crangerel1.rd | 49 - ld/testsuite/ld-sh/sh64/crangerel2.rd | 64 - ld/testsuite/ld-sh/sh64/dlsection-1.s | 17 - ld/testsuite/ld-sh/sh64/dlsection.sd | 9 - ld/testsuite/ld-sh/sh64/endian.dbd | 11 - ld/testsuite/ld-sh/sh64/endian.dld | 11 - ld/testsuite/ld-sh/sh64/endian.ld | 6 - ld/testsuite/ld-sh/sh64/endian.s | 7 - ld/testsuite/ld-sh/sh64/endian.sbd | 5 - ld/testsuite/ld-sh/sh64/endian.sld | 6 - ld/testsuite/ld-sh/sh64/gotplt.d | 12 - ld/testsuite/ld-sh/sh64/gotplt.map | 4 - ld/testsuite/ld-sh/sh64/gotplt.s | 8 - ld/testsuite/ld-sh/sh64/init-cmpct.d | 20 - ld/testsuite/ld-sh/sh64/init-media.d | 19 - ld/testsuite/ld-sh/sh64/init.s | 18 - ld/testsuite/ld-sh/sh64/init64.d | 19 - ld/testsuite/ld-sh/sh64/mix1-noexp.sd | 14 - ld/testsuite/ld-sh/sh64/mix1.sd | 16 - ld/testsuite/ld-sh/sh64/mix1.xd | 57 - ld/testsuite/ld-sh/sh64/mix2-noexp.sd | 16 - ld/testsuite/ld-sh/sh64/mix2.sd | 17 - ld/testsuite/ld-sh/sh64/mix2.xd | 67 - ld/testsuite/ld-sh/sh64/rd-sh64.exp | 41 - ld/testsuite/ld-sh/sh64/rel-1.s | 48 - ld/testsuite/ld-sh/sh64/rel-2.s | 46 - ld/testsuite/ld-sh/sh64/rel32.xd | 97 - ld/testsuite/ld-sh/sh64/rel64.xd | 97 - ld/testsuite/ld-sh/sh64/relax.exp | 152 - ld/testsuite/ld-sh/sh64/relax1.s | 12 - ld/testsuite/ld-sh/sh64/relax2.s | 3 - ld/testsuite/ld-sh/sh64/relax3.s | 8 - ld/testsuite/ld-sh/sh64/relax4.s | 2 - ld/testsuite/ld-sh/sh64/reldl-1.s | 171 - ld/testsuite/ld-sh/sh64/reldl-2.s | 156 - ld/testsuite/ld-sh/sh64/reldl32.rd | 361 - ld/testsuite/ld-sh/sh64/reldl64.rd | 363 - ld/testsuite/ld-sh/sh64/relfail.exp | 216 - ld/testsuite/ld-sh/sh64/relfail.s | 36 - ld/testsuite/ld-sh/sh64/sh64-1.s | 20 - ld/testsuite/ld-sh/sh64/sh64-2.s | 27 - ld/testsuite/ld-sh/sh64/sh64.exp | 134 - ld/testsuite/ld-sh/sh64/shcmp-1.s | 15 - ld/testsuite/ld-sh/sh64/shdl-1.s | 359 - ld/testsuite/ld-sh/sh64/shdl-2.s | 286 - ld/testsuite/ld-sh/sh64/shdl32.xd | 138 - ld/testsuite/ld-sh/sh64/shdl64.sd | 87 - ld/testsuite/ld-sh/sh64/shdl64.xd | 138 - ld/testsuite/ld-sh/sh64/shmix-1.s | 33 - ld/testsuite/ld-sh/sh64/shmix-2.s | 28 - ld/testsuite/ld-sh/sh64/shmix-3.s | 32 - ld/testsuite/ld-sh/sh64/stobin-0-dso.d | 9 - ld/testsuite/ld-sh/sh64/stobin-1.d | 15 - ld/testsuite/ld-sh/sh64/stobin.s | 5 - ld/testsuite/ld-sh/sh64/stolib.s | 7 - ld/testsuite/ld-sh/shared-1.d | 22 - ld/testsuite/ld-sh/shared-2.d | 20 - ld/testsuite/ld-sh/start.s | 27 - ld/testsuite/ld-sh/sub2l-1.d | 23 - ld/testsuite/ld-sh/sub2l.s | 26 - ld/testsuite/ld-sh/textrel1.s | 11 - ld/testsuite/ld-sh/textrel2.s | 7 - ld/testsuite/ld-sh/tlsbin-0-dso.d | 9 - ld/testsuite/ld-sh/tlsbin-1.d | 308 - ld/testsuite/ld-sh/tlsbin-2.d | 131 - ld/testsuite/ld-sh/tlsbin-3.d | 12 - ld/testsuite/ld-sh/tlsbin-4.d | 12 - ld/testsuite/ld-sh/tlsbin.s | 90 - ld/testsuite/ld-sh/tlsbinpic.s | 206 - ld/testsuite/ld-sh/tlslib.s | 20 - ld/testsuite/ld-sh/tlspic-1.d | 292 - ld/testsuite/ld-sh/tlspic-2.d | 132 - ld/testsuite/ld-sh/tlspic-3.d | 15 - ld/testsuite/ld-sh/tlspic-4.d | 12 - ld/testsuite/ld-sh/tlspic1.s | 267 - ld/testsuite/ld-sh/tlspic2.s | 5 - ld/testsuite/ld-sh/tlstpoff-1.d | 31 - ld/testsuite/ld-sh/tlstpoff-2.d | 8 - ld/testsuite/ld-sh/tlstpoff1.s | 23 - ld/testsuite/ld-sh/tlstpoff2.s | 26 - ld/testsuite/ld-sh/weak1.d | 21 - ld/testsuite/ld-sh/weak1.s | 19 - ld/testsuite/ld-shared/elf-offset.ld | 170 - ld/testsuite/ld-shared/main.c | 84 - ld/testsuite/ld-shared/sh1.c | 166 - ld/testsuite/ld-shared/sh2.c | 14 - ld/testsuite/ld-shared/shared.dat | 16 - ld/testsuite/ld-shared/shared.exp | 290 - ld/testsuite/ld-shared/sun4.dat | 16 - ld/testsuite/ld-shared/symbolic.dat | 8 - ld/testsuite/ld-shared/xcoff.dat | 10 - ld/testsuite/ld-sparc/sparc.exp | 88 - ld/testsuite/ld-sparc/tlsg32.s | 12 - ld/testsuite/ld-sparc/tlsg32.sd | 10 - ld/testsuite/ld-sparc/tlsg64.s | 12 - ld/testsuite/ld-sparc/tlsg64.sd | 11 - ld/testsuite/ld-sparc/tlslib.s | 20 - ld/testsuite/ld-sparc/tlsnopic.s | 8 - ld/testsuite/ld-sparc/tlspic.s | 12 - ld/testsuite/ld-sparc/tlssunbin32.dd | 273 - ld/testsuite/ld-sparc/tlssunbin32.rd | 137 - ld/testsuite/ld-sparc/tlssunbin32.s | 114 - ld/testsuite/ld-sparc/tlssunbin32.sd | 11 - ld/testsuite/ld-sparc/tlssunbin32.td | 19 - ld/testsuite/ld-sparc/tlssunbin64.dd | 11 - ld/testsuite/ld-sparc/tlssunbin64.rd | 8 - ld/testsuite/ld-sparc/tlssunbin64.s | 118 - ld/testsuite/ld-sparc/tlssunbin64.sd | 11 - ld/testsuite/ld-sparc/tlssunbin64.td | 11 - ld/testsuite/ld-sparc/tlssunbinpic32.s | 183 - ld/testsuite/ld-sparc/tlssunbinpic64.s | 182 - ld/testsuite/ld-sparc/tlssunnopic32.dd | 84 - ld/testsuite/ld-sparc/tlssunnopic32.rd | 112 - ld/testsuite/ld-sparc/tlssunnopic32.s | 77 - ld/testsuite/ld-sparc/tlssunnopic32.sd | 12 - ld/testsuite/ld-sparc/tlssunnopic64.dd | 12 - ld/testsuite/ld-sparc/tlssunnopic64.rd | 9 - ld/testsuite/ld-sparc/tlssunnopic64.s | 81 - ld/testsuite/ld-sparc/tlssunnopic64.sd | 12 - ld/testsuite/ld-sparc/tlssunpic32.dd | 220 - ld/testsuite/ld-sparc/tlssunpic32.rd | 155 - ld/testsuite/ld-sparc/tlssunpic32.s | 228 - ld/testsuite/ld-sparc/tlssunpic32.sd | 15 - ld/testsuite/ld-sparc/tlssunpic32.td | 16 - ld/testsuite/ld-sparc/tlssunpic64.dd | 12 - ld/testsuite/ld-sparc/tlssunpic64.rd | 9 - ld/testsuite/ld-sparc/tlssunpic64.s | 228 - ld/testsuite/ld-sparc/tlssunpic64.sd | 12 - ld/testsuite/ld-sparc/tlssunpic64.td | 12 - ld/testsuite/ld-srec/sr1.c | 25 - ld/testsuite/ld-srec/sr2.c | 18 - ld/testsuite/ld-srec/sr3.cc | 127 - ld/testsuite/ld-srec/srec.exp | 426 - ld/testsuite/ld-undefined/undefined.c | 10 - ld/testsuite/ld-undefined/undefined.exp | 147 - ld/testsuite/ld-undefined/weak-undef.exp | 71 - ld/testsuite/ld-undefined/weak-undef.s | 4 - ld/testsuite/ld-undefined/weak-undef.t | 9 - ld/testsuite/ld-versados/t1-1.ro | Bin 3840 -> 0 bytes ld/testsuite/ld-versados/t1-2.ro | Bin 256 -> 0 bytes ld/testsuite/ld-versados/t1.ld | 281 - ld/testsuite/ld-versados/t1.ook | 133 - ld/testsuite/ld-versados/t2-1.ro | Bin 256 -> 0 bytes ld/testsuite/ld-versados/t2-2.ro | Bin 2304 -> 0 bytes ld/testsuite/ld-versados/t2-3.ro | Bin 1024 -> 0 bytes ld/testsuite/ld-versados/t2.ld | 281 - ld/testsuite/ld-versados/t2.ook | 99 - ld/testsuite/ld-versados/versados.exp | 99 - ld/testsuite/ld-x86-64/tlsbin.dd | 310 - ld/testsuite/ld-x86-64/tlsbin.rd | 154 - ld/testsuite/ld-x86-64/tlsbin.s | 97 - ld/testsuite/ld-x86-64/tlsbin.sd | 14 - ld/testsuite/ld-x86-64/tlsbin.td | 16 - ld/testsuite/ld-x86-64/tlsbinpic.s | 146 - ld/testsuite/ld-x86-64/tlsg.s | 12 - ld/testsuite/ld-x86-64/tlsg.sd | 10 - ld/testsuite/ld-x86-64/tlslib.s | 18 - ld/testsuite/ld-x86-64/tlspic.dd | 234 - ld/testsuite/ld-x86-64/tlspic.rd | 162 - ld/testsuite/ld-x86-64/tlspic.sd | 21 - ld/testsuite/ld-x86-64/tlspic.td | 16 - ld/testsuite/ld-x86-64/tlspic1.s | 187 - ld/testsuite/ld-x86-64/tlspic2.s | 11 - ld/testsuite/ld-x86-64/x86-64.exp | 54 - ld/testsuite/ld-xstormy16/external.s | 5 - ld/testsuite/ld-xstormy16/pcrel.d | 33 - ld/testsuite/ld-xstormy16/pcrel.s | 31 - ld/testsuite/ld-xstormy16/xstormy16.exp | 38 - ld/testsuite/ld-xtensa/coalesce.exp | 97 - ld/testsuite/ld-xtensa/coalesce.t | 6 - ld/testsuite/ld-xtensa/coalesce1.s | 15 - ld/testsuite/ld-xtensa/coalesce2.s | 9 - ld/testsuite/ld-xtensa/lcall.exp | 111 - ld/testsuite/ld-xtensa/lcall.t | 6 - ld/testsuite/ld-xtensa/lcall1.s | 12 - ld/testsuite/ld-xtensa/lcall2.s | 5 - ld/testsuite/lib/ld-lib.exp | 1199 - 4703 files changed, 88 insertions(+), 1320965 deletions(-) delete mode 100644 binutils/ChangeLog delete mode 100644 binutils/ChangeLog-0001 delete mode 100644 binutils/ChangeLog-0203 delete mode 100644 binutils/ChangeLog-9197 delete mode 100644 binutils/ChangeLog-9899 delete mode 100644 binutils/MAINTAINERS delete mode 100644 binutils/Makefile.am delete mode 100644 binutils/Makefile.in delete mode 100644 binutils/NEWS delete mode 100644 binutils/README delete mode 100644 binutils/acinclude.m4 delete mode 100644 binutils/aclocal.m4 delete mode 100644 binutils/addr2line.c delete mode 100644 binutils/ar.c delete mode 100644 binutils/arlex.l delete mode 100644 binutils/arparse.y delete mode 100644 binutils/arsup.c delete mode 100644 binutils/arsup.h delete mode 100644 binutils/binemul.c delete mode 100644 binutils/binemul.h delete mode 100644 binutils/bucomm.c delete mode 100644 binutils/bucomm.h delete mode 100644 binutils/budbg.h delete mode 100644 binutils/budemang.c delete mode 100644 binutils/budemang.h delete mode 100644 binutils/coffdump.c delete mode 100644 binutils/coffgrok.c delete mode 100644 binutils/coffgrok.h delete mode 100644 binutils/config.in delete mode 100755 binutils/configure delete mode 100644 binutils/configure.com delete mode 100644 binutils/configure.in delete mode 100644 binutils/configure.tgt delete mode 100644 binutils/cxxfilt.c delete mode 100644 binutils/debug.c delete mode 100644 binutils/debug.h delete mode 100644 binutils/deflex.l delete mode 100644 binutils/defparse.y delete mode 100644 binutils/dep-in.sed delete mode 100644 binutils/dlltool.c delete mode 100644 binutils/dlltool.h delete mode 100644 binutils/dllwrap.c delete mode 100644 binutils/doc/Makefile.am delete mode 100644 binutils/doc/Makefile.in delete mode 100644 binutils/doc/binutils.texi delete mode 100644 binutils/doc/fdl.texi delete mode 100644 binutils/emul_aix.c delete mode 100644 binutils/emul_vanilla.c delete mode 100644 binutils/filemode.c delete mode 100644 binutils/ieee.c delete mode 100644 binutils/is-ranlib.c delete mode 100644 binutils/is-strip.c delete mode 100644 binutils/mac-binutils.r delete mode 100644 binutils/makefile.vms-in delete mode 100644 binutils/maybe-ranlib.c delete mode 100644 binutils/maybe-strip.c delete mode 100644 binutils/mpw-config.in delete mode 100644 binutils/mpw-make.sed delete mode 100644 binutils/nlmconv.c delete mode 100644 binutils/nlmconv.h delete mode 100644 binutils/nlmheader.y delete mode 100644 binutils/nm.c delete mode 100644 binutils/not-ranlib.c delete mode 100644 binutils/not-strip.c delete mode 100644 binutils/objcopy.c delete mode 100644 binutils/objdump.c delete mode 100644 binutils/po/.cvsignore delete mode 100644 binutils/po/Make-in delete mode 100644 binutils/po/POTFILES.in delete mode 100644 binutils/po/binutils.pot delete mode 100644 binutils/po/da.po delete mode 100644 binutils/po/es.po delete mode 100644 binutils/po/fr.po delete mode 100644 binutils/po/ja.po delete mode 100644 binutils/po/ru.po delete mode 100644 binutils/po/sv.po delete mode 100644 binutils/po/tr.po delete mode 100644 binutils/po/zh_CN.po delete mode 100644 binutils/prdbg.c delete mode 100755 binutils/ranlib.sh delete mode 100644 binutils/rclex.l delete mode 100644 binutils/rcparse.y delete mode 100644 binutils/rdcoff.c delete mode 100644 binutils/rddbg.c delete mode 100644 binutils/readelf.c delete mode 100644 binutils/rename.c delete mode 100644 binutils/resbin.c delete mode 100644 binutils/rescoff.c delete mode 100644 binutils/resrc.c delete mode 100644 binutils/resres.c delete mode 100755 binutils/sanity.sh delete mode 100644 binutils/size.c delete mode 100644 binutils/srconv.c delete mode 100644 binutils/stabs.c delete mode 100644 binutils/stamp-h.in delete mode 100644 binutils/strings.c delete mode 100644 binutils/sysdump.c delete mode 100644 binutils/sysinfo.y delete mode 100644 binutils/syslex.l delete mode 100644 binutils/sysroff.info delete mode 100644 binutils/testsuite/ChangeLog delete mode 100644 binutils/testsuite/ChangeLog-9303 delete mode 100644 binutils/testsuite/binutils-all/ar.exp delete mode 100644 binutils/testsuite/binutils-all/bintest.s delete mode 100644 binutils/testsuite/binutils-all/dlltool.exp delete mode 100644 binutils/testsuite/binutils-all/fastcall.def delete mode 100644 binutils/testsuite/binutils-all/hppa/addendbug.s delete mode 100644 binutils/testsuite/binutils-all/hppa/freg.s delete mode 100644 binutils/testsuite/binutils-all/hppa/objdump.exp delete mode 100644 binutils/testsuite/binutils-all/nm.exp delete mode 100644 binutils/testsuite/binutils-all/objcopy.exp delete mode 100644 binutils/testsuite/binutils-all/objdump.exp delete mode 100644 binutils/testsuite/binutils-all/readelf.exp delete mode 100644 binutils/testsuite/binutils-all/readelf.h delete mode 100644 binutils/testsuite/binutils-all/readelf.r delete mode 100644 binutils/testsuite/binutils-all/readelf.r-64 delete mode 100644 binutils/testsuite/binutils-all/readelf.s delete mode 100644 binutils/testsuite/binutils-all/readelf.s-64 delete mode 100644 binutils/testsuite/binutils-all/readelf.ss delete mode 100644 binutils/testsuite/binutils-all/readelf.ss-64 delete mode 100644 binutils/testsuite/binutils-all/readelf.ss-mips delete mode 100644 binutils/testsuite/binutils-all/readelf.ss-tmips delete mode 100644 binutils/testsuite/binutils-all/size.exp delete mode 100644 binutils/testsuite/binutils-all/testprog.c delete mode 100644 binutils/testsuite/binutils-all/windres/README delete mode 100644 binutils/testsuite/binutils-all/windres/bmp1.bmp delete mode 100644 binutils/testsuite/binutils-all/windres/bmpalign.rc delete mode 100644 binutils/testsuite/binutils-all/windres/bmpalign.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/capstyle.rc delete mode 100644 binutils/testsuite/binutils-all/windres/capstyle.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/checkbox.rc delete mode 100644 binutils/testsuite/binutils-all/windres/checkbox.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/combobox.rc delete mode 100644 binutils/testsuite/binutils-all/windres/combobox.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/deflang.rc delete mode 100644 binutils/testsuite/binutils-all/windres/deflang.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/dialog0.rc delete mode 100644 binutils/testsuite/binutils-all/windres/dialog0.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/dialog1.rc delete mode 100644 binutils/testsuite/binutils-all/windres/dialog1.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/dialogid.rc delete mode 100644 binutils/testsuite/binutils-all/windres/dialogid.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/dialogsignature.rc delete mode 100644 binutils/testsuite/binutils-all/windres/dialogsignature.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/dlgfont.rc delete mode 100644 binutils/testsuite/binutils-all/windres/dlgfont.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/edittext.rc delete mode 100644 binutils/testsuite/binutils-all/windres/edittext.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/escapea.rc delete mode 100644 binutils/testsuite/binutils-all/windres/escapea.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/escapex.rc delete mode 100644 binutils/testsuite/binutils-all/windres/escapex.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/lang.rc delete mode 100644 binutils/testsuite/binutils-all/windres/lang.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/listbox.rc delete mode 100644 binutils/testsuite/binutils-all/windres/listbox.rsd delete mode 100755 binutils/testsuite/binutils-all/windres/msupdate delete mode 100644 binutils/testsuite/binutils-all/windres/nocaption.rc delete mode 100644 binutils/testsuite/binutils-all/windres/nocaption.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/printstyle.rc delete mode 100644 binutils/testsuite/binutils-all/windres/printstyle.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/quoteclass.rc delete mode 100644 binutils/testsuite/binutils-all/windres/scrollbar.rc delete mode 100644 binutils/testsuite/binutils-all/windres/scrollbar.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/strtab1.rc delete mode 100644 binutils/testsuite/binutils-all/windres/strtab1.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/sublang.rc delete mode 100644 binutils/testsuite/binutils-all/windres/sublang.rsd delete mode 100644 binutils/testsuite/binutils-all/windres/windres.exp delete mode 100644 binutils/testsuite/config/default.exp delete mode 100644 binutils/testsuite/config/hppa.sed delete mode 100644 binutils/testsuite/lib/utils-lib.exp delete mode 100644 binutils/unwind-ia64.c delete mode 100644 binutils/unwind-ia64.h delete mode 100644 binutils/version.c delete mode 100644 binutils/windres.c delete mode 100644 binutils/windres.h delete mode 100644 binutils/winduni.c delete mode 100644 binutils/winduni.h delete mode 100644 binutils/wrstabs.c delete mode 100644 gas/CONTRIBUTORS delete mode 100644 gas/COPYING delete mode 100644 gas/ChangeLog delete mode 100644 gas/ChangeLog-0001 delete mode 100644 gas/ChangeLog-0203 delete mode 100644 gas/ChangeLog-9295 delete mode 100644 gas/ChangeLog-9697 delete mode 100644 gas/ChangeLog-9899 delete mode 100644 gas/MAINTAINERS delete mode 100644 gas/Makefile.am delete mode 100644 gas/Makefile.in delete mode 100644 gas/NEWS delete mode 100644 gas/README delete mode 100644 gas/README-vms delete mode 100644 gas/acinclude.m4 delete mode 100644 gas/aclocal.m4 delete mode 100644 gas/app.c delete mode 100644 gas/as.c delete mode 100644 gas/as.h delete mode 100644 gas/asintl.h delete mode 100644 gas/atof-generic.c delete mode 100644 gas/bignum-copy.c delete mode 100644 gas/bignum.h delete mode 100644 gas/bit_fix.h delete mode 100644 gas/cgen.c delete mode 100644 gas/cgen.h delete mode 100644 gas/cond.c delete mode 100644 gas/config-gas.com delete mode 100644 gas/config.in delete mode 100644 gas/config/aout_gnu.h delete mode 100644 gas/config/atof-ieee.c delete mode 100644 gas/config/atof-tahoe.c delete mode 100644 gas/config/atof-vax.c delete mode 100644 gas/config/e-crisaout.c delete mode 100644 gas/config/e-criself.c delete mode 100644 gas/config/e-i386aout.c delete mode 100644 gas/config/e-i386coff.c delete mode 100644 gas/config/e-i386elf.c delete mode 100644 gas/config/e-mipsecoff.c delete mode 100644 gas/config/e-mipself.c delete mode 100644 gas/config/itbl-mips.h delete mode 100644 gas/config/m68k-parse.h delete mode 100644 gas/config/m68k-parse.y delete mode 100644 gas/config/m88k-opcode.h delete mode 100644 gas/config/obj-aout.c delete mode 100644 gas/config/obj-aout.h delete mode 100644 gas/config/obj-bout.c delete mode 100644 gas/config/obj-bout.h delete mode 100644 gas/config/obj-coff.c delete mode 100644 gas/config/obj-coff.h delete mode 100644 gas/config/obj-ecoff.c delete mode 100644 gas/config/obj-ecoff.h delete mode 100644 gas/config/obj-elf.c delete mode 100644 gas/config/obj-elf.h delete mode 100644 gas/config/obj-evax.c delete mode 100644 gas/config/obj-evax.h delete mode 100644 gas/config/obj-hp300.c delete mode 100644 gas/config/obj-hp300.h delete mode 100644 gas/config/obj-ieee.c delete mode 100644 gas/config/obj-ieee.h delete mode 100644 gas/config/obj-multi.c delete mode 100644 gas/config/obj-multi.h delete mode 100644 gas/config/obj-som.c delete mode 100644 gas/config/obj-som.h delete mode 100644 gas/config/obj-vms.c delete mode 100644 gas/config/obj-vms.h delete mode 100644 gas/config/tc-a29k.c delete mode 100644 gas/config/tc-a29k.h delete mode 100644 gas/config/tc-alpha.c delete mode 100644 gas/config/tc-alpha.h delete mode 100644 gas/config/tc-arc.c delete mode 100644 gas/config/tc-arc.h delete mode 100644 gas/config/tc-arm.c delete mode 100644 gas/config/tc-arm.h delete mode 100644 gas/config/tc-avr.c delete mode 100644 gas/config/tc-avr.h delete mode 100644 gas/config/tc-cris.c delete mode 100644 gas/config/tc-cris.h delete mode 100644 gas/config/tc-d10v.c delete mode 100644 gas/config/tc-d10v.h delete mode 100644 gas/config/tc-d30v.c delete mode 100644 gas/config/tc-d30v.h delete mode 100644 gas/config/tc-dlx.c delete mode 100644 gas/config/tc-dlx.h delete mode 100644 gas/config/tc-fr30.c delete mode 100644 gas/config/tc-fr30.h delete mode 100644 gas/config/tc-frv.c delete mode 100644 gas/config/tc-frv.h delete mode 100644 gas/config/tc-generic.c delete mode 100644 gas/config/tc-generic.h delete mode 100644 gas/config/tc-h8300.c delete mode 100644 gas/config/tc-h8300.h delete mode 100644 gas/config/tc-h8500.c delete mode 100644 gas/config/tc-h8500.h delete mode 100644 gas/config/tc-hppa.c delete mode 100644 gas/config/tc-hppa.h delete mode 100644 gas/config/tc-i370.c delete mode 100644 gas/config/tc-i370.h delete mode 100644 gas/config/tc-i386.c delete mode 100644 gas/config/tc-i386.h delete mode 100644 gas/config/tc-i860.c delete mode 100644 gas/config/tc-i860.h delete mode 100644 gas/config/tc-i960.c delete mode 100644 gas/config/tc-i960.h delete mode 100644 gas/config/tc-ia64.c delete mode 100644 gas/config/tc-ia64.h delete mode 100644 gas/config/tc-ip2k.c delete mode 100644 gas/config/tc-ip2k.h delete mode 100644 gas/config/tc-iq2000.c delete mode 100644 gas/config/tc-iq2000.h delete mode 100644 gas/config/tc-m32r.c delete mode 100644 gas/config/tc-m32r.h delete mode 100644 gas/config/tc-m68851.h delete mode 100644 gas/config/tc-m68hc11.c delete mode 100644 gas/config/tc-m68hc11.h delete mode 100644 gas/config/tc-m68k.c delete mode 100644 gas/config/tc-m68k.h delete mode 100644 gas/config/tc-m88k.c delete mode 100644 gas/config/tc-m88k.h delete mode 100644 gas/config/tc-mcore.c delete mode 100644 gas/config/tc-mcore.h delete mode 100644 gas/config/tc-mips.c delete mode 100644 gas/config/tc-mips.h delete mode 100644 gas/config/tc-mmix.c delete mode 100644 gas/config/tc-mmix.h delete mode 100644 gas/config/tc-mn10200.c delete mode 100644 gas/config/tc-mn10200.h delete mode 100644 gas/config/tc-mn10300.c delete mode 100644 gas/config/tc-mn10300.h delete mode 100644 gas/config/tc-msp430.c delete mode 100644 gas/config/tc-msp430.h delete mode 100644 gas/config/tc-ns32k.c delete mode 100644 gas/config/tc-ns32k.h delete mode 100644 gas/config/tc-openrisc.c delete mode 100644 gas/config/tc-openrisc.h delete mode 100644 gas/config/tc-or32.c delete mode 100644 gas/config/tc-or32.h delete mode 100644 gas/config/tc-pdp11.c delete mode 100644 gas/config/tc-pdp11.h delete mode 100644 gas/config/tc-pj.c delete mode 100644 gas/config/tc-pj.h delete mode 100644 gas/config/tc-ppc.c delete mode 100644 gas/config/tc-ppc.h delete mode 100644 gas/config/tc-s390.c delete mode 100644 gas/config/tc-s390.h delete mode 100644 gas/config/tc-sh.c delete mode 100644 gas/config/tc-sh.h delete mode 100644 gas/config/tc-sh64.c delete mode 100644 gas/config/tc-sh64.h delete mode 100644 gas/config/tc-sparc.c delete mode 100644 gas/config/tc-sparc.h delete mode 100644 gas/config/tc-tahoe.c delete mode 100644 gas/config/tc-tahoe.h delete mode 100644 gas/config/tc-tic30.c delete mode 100644 gas/config/tc-tic30.h delete mode 100644 gas/config/tc-tic4x.c delete mode 100644 gas/config/tc-tic4x.h delete mode 100644 gas/config/tc-tic54x.c delete mode 100644 gas/config/tc-tic54x.h delete mode 100644 gas/config/tc-tic80.c delete mode 100644 gas/config/tc-tic80.h delete mode 100644 gas/config/tc-v850.c delete mode 100644 gas/config/tc-v850.h delete mode 100644 gas/config/tc-vax.c delete mode 100644 gas/config/tc-vax.h delete mode 100644 gas/config/tc-w65.c delete mode 100644 gas/config/tc-w65.h delete mode 100644 gas/config/tc-xstormy16.c delete mode 100644 gas/config/tc-xstormy16.h delete mode 100644 gas/config/tc-xtensa.c delete mode 100644 gas/config/tc-xtensa.h delete mode 100644 gas/config/tc-z8k.c delete mode 100644 gas/config/tc-z8k.h delete mode 100644 gas/config/te-386bsd.h delete mode 100644 gas/config/te-aix5.h delete mode 100644 gas/config/te-aux.h delete mode 100644 gas/config/te-delt88.h delete mode 100644 gas/config/te-delta.h delete mode 100644 gas/config/te-dpx2.h delete mode 100644 gas/config/te-dynix.h delete mode 100644 gas/config/te-epoc-pe.h delete mode 100644 gas/config/te-freebsd.h delete mode 100644 gas/config/te-generic.h delete mode 100644 gas/config/te-go32.h delete mode 100644 gas/config/te-hp300.h delete mode 100644 gas/config/te-hppa.h delete mode 100644 gas/config/te-hppa64.h delete mode 100644 gas/config/te-hppalinux64.h delete mode 100644 gas/config/te-hpux.h delete mode 100644 gas/config/te-i386aix.h delete mode 100644 gas/config/te-ia64aix.h delete mode 100644 gas/config/te-ic960.h delete mode 100644 gas/config/te-interix.h delete mode 100644 gas/config/te-irix.h delete mode 100644 gas/config/te-linux.h delete mode 100644 gas/config/te-lnews.h delete mode 100644 gas/config/te-lynx.h delete mode 100644 gas/config/te-mach.h delete mode 100644 gas/config/te-macos.h delete mode 100644 gas/config/te-nbsd.h delete mode 100644 gas/config/te-nbsd532.h delete mode 100644 gas/config/te-pc532mach.h delete mode 100644 gas/config/te-pe.h delete mode 100644 gas/config/te-ppcnw.h delete mode 100644 gas/config/te-psos.h delete mode 100644 gas/config/te-riscix.h delete mode 100644 gas/config/te-sparcaout.h delete mode 100644 gas/config/te-sun3.h delete mode 100644 gas/config/te-svr4.h delete mode 100644 gas/config/te-sysv32.h delete mode 100644 gas/config/te-tmips.h delete mode 100644 gas/config/te-wince-pe.h delete mode 100644 gas/config/vax-inst.h delete mode 100644 gas/config/vms-a-conf.h delete mode 100644 gas/config/vms-conf.h delete mode 100644 gas/config/xtensa-istack.h delete mode 100644 gas/config/xtensa-relax.c delete mode 100644 gas/config/xtensa-relax.h delete mode 100755 gas/configure delete mode 100644 gas/configure.in delete mode 100644 gas/debug.c delete mode 100644 gas/dep-in.sed delete mode 100644 gas/depend.c delete mode 100644 gas/doc/Makefile.am delete mode 100644 gas/doc/Makefile.in delete mode 100644 gas/doc/all.texi delete mode 100644 gas/doc/as.texinfo delete mode 100644 gas/doc/c-a29k.texi delete mode 100644 gas/doc/c-alpha.texi delete mode 100644 gas/doc/c-arc.texi delete mode 100644 gas/doc/c-arm.texi delete mode 100644 gas/doc/c-cris.texi delete mode 100644 gas/doc/c-d10v.texi delete mode 100644 gas/doc/c-d30v.texi delete mode 100644 gas/doc/c-h8300.texi delete mode 100644 gas/doc/c-h8500.texi delete mode 100644 gas/doc/c-hppa.texi delete mode 100644 gas/doc/c-i370.texi delete mode 100644 gas/doc/c-i386.texi delete mode 100644 gas/doc/c-i860.texi delete mode 100644 gas/doc/c-i960.texi delete mode 100644 gas/doc/c-ia64.texi delete mode 100644 gas/doc/c-ip2k.texi delete mode 100644 gas/doc/c-m32r.texi delete mode 100644 gas/doc/c-m68hc11.texi delete mode 100644 gas/doc/c-m68k.texi delete mode 100644 gas/doc/c-m88k.texi delete mode 100644 gas/doc/c-mips.texi delete mode 100644 gas/doc/c-mmix.texi delete mode 100644 gas/doc/c-msp430.texi delete mode 100644 gas/doc/c-ns32k.texi delete mode 100644 gas/doc/c-pdp11.texi delete mode 100644 gas/doc/c-pj.texi delete mode 100644 gas/doc/c-ppc.texi delete mode 100644 gas/doc/c-sh.texi delete mode 100644 gas/doc/c-sh64.texi delete mode 100644 gas/doc/c-sparc.texi delete mode 100644 gas/doc/c-tic54x.texi delete mode 100644 gas/doc/c-v850.texi delete mode 100644 gas/doc/c-vax.texi delete mode 100644 gas/doc/c-xtensa.texi delete mode 100644 gas/doc/c-z8k.texi delete mode 100644 gas/doc/fdl.texi delete mode 100644 gas/doc/h8.texi delete mode 100644 gas/doc/internals.texi delete mode 100644 gas/dw2gencfi.c delete mode 100644 gas/dw2gencfi.h delete mode 100644 gas/dwarf2dbg.c delete mode 100644 gas/dwarf2dbg.h delete mode 100644 gas/ecoff.c delete mode 100644 gas/ecoff.h delete mode 100644 gas/ehopt.c delete mode 100644 gas/emul-target.h delete mode 100644 gas/emul.h delete mode 100644 gas/expr.c delete mode 100644 gas/expr.h delete mode 100644 gas/flonum-copy.c delete mode 100644 gas/flonum-konst.c delete mode 100644 gas/flonum-mult.c delete mode 100644 gas/flonum.h delete mode 100644 gas/frags.c delete mode 100644 gas/frags.h delete mode 100644 gas/gdbinit.in delete mode 100644 gas/hash.c delete mode 100644 gas/hash.h delete mode 100644 gas/input-file.c delete mode 100644 gas/input-file.h delete mode 100644 gas/input-scrub.c delete mode 100644 gas/itbl-lex.l delete mode 100644 gas/itbl-ops.c delete mode 100644 gas/itbl-ops.h delete mode 100644 gas/itbl-parse.y delete mode 100644 gas/link.cmd delete mode 100644 gas/listing.c delete mode 100644 gas/listing.h delete mode 100644 gas/literal.c delete mode 100644 gas/mac-as.r delete mode 100644 gas/macro.c delete mode 100644 gas/macro.h delete mode 100644 gas/makefile.vms delete mode 100644 gas/messages.c delete mode 100644 gas/mpw-config.in delete mode 100644 gas/mpw-make.sed delete mode 100644 gas/obj.h delete mode 100644 gas/output-file.c delete mode 100644 gas/output-file.h delete mode 100644 gas/po/.cvsignore delete mode 100644 gas/po/Make-in delete mode 100644 gas/po/POTFILES.in delete mode 100644 gas/po/es.po delete mode 100644 gas/po/fr.po delete mode 100644 gas/po/gas.pot delete mode 100644 gas/po/tr.po delete mode 100644 gas/read.c delete mode 100644 gas/read.h delete mode 100644 gas/sb.c delete mode 100644 gas/sb.h delete mode 100644 gas/stabs.c delete mode 100644 gas/stamp-h.in delete mode 100644 gas/struc-symbol.h delete mode 100644 gas/subsegs.c delete mode 100644 gas/subsegs.h delete mode 100644 gas/symbols.c delete mode 100644 gas/symbols.h delete mode 100644 gas/tc.h delete mode 100644 gas/testsuite/ChangeLog delete mode 100644 gas/testsuite/ChangeLog-9303 delete mode 100644 gas/testsuite/config/default.exp delete mode 100644 gas/testsuite/gas/all/align.d delete mode 100644 gas/testsuite/gas/all/align.s delete mode 100644 gas/testsuite/gas/all/align2.d delete mode 100644 gas/testsuite/gas/all/align2.s delete mode 100644 gas/testsuite/gas/all/cofftag.d delete mode 100644 gas/testsuite/gas/all/cofftag.s delete mode 100644 gas/testsuite/gas/all/comment.s delete mode 100644 gas/testsuite/gas/all/cond.d delete mode 100644 gas/testsuite/gas/all/cond.s delete mode 100644 gas/testsuite/gas/all/diff1.s delete mode 100644 gas/testsuite/gas/all/fastcall.s delete mode 100644 gas/testsuite/gas/all/float.s delete mode 100644 gas/testsuite/gas/all/gas.exp delete mode 100644 gas/testsuite/gas/all/incbin.d delete mode 100644 gas/testsuite/gas/all/incbin.dat delete mode 100644 gas/testsuite/gas/all/incbin.s delete mode 100644 gas/testsuite/gas/all/itbl delete mode 100644 gas/testsuite/gas/all/itbl-test.c delete mode 100644 gas/testsuite/gas/all/itbl.s delete mode 100644 gas/testsuite/gas/all/p1480.s delete mode 100644 gas/testsuite/gas/all/p2425.s delete mode 100644 gas/testsuite/gas/all/struct.d delete mode 100644 gas/testsuite/gas/all/struct.s delete mode 100644 gas/testsuite/gas/all/test-example.c delete mode 100644 gas/testsuite/gas/all/test-gen.c delete mode 100644 gas/testsuite/gas/all/x930509.s delete mode 100644 gas/testsuite/gas/alpha/alpha.exp delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-1.d delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-1.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-2.l delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-2.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-3.l delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-3.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-4.d delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-4.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-5.d delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-5.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-6.l delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-6.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-7.d delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-7.s delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-8.d delete mode 100644 gas/testsuite/gas/alpha/elf-reloc-8.s delete mode 100644 gas/testsuite/gas/alpha/elf-tls-1.d delete mode 100644 gas/testsuite/gas/alpha/elf-tls-1.s delete mode 100644 gas/testsuite/gas/alpha/elf-tls-2.l delete mode 100644 gas/testsuite/gas/alpha/elf-tls-2.s delete mode 100644 gas/testsuite/gas/alpha/elf-tls-3.l delete mode 100644 gas/testsuite/gas/alpha/elf-tls-3.s delete mode 100644 gas/testsuite/gas/alpha/elf-usepv-1.d delete mode 100644 gas/testsuite/gas/alpha/elf-usepv-1.s delete mode 100644 gas/testsuite/gas/alpha/elf-usepv-2.l delete mode 100644 gas/testsuite/gas/alpha/elf-usepv-2.s delete mode 100644 gas/testsuite/gas/alpha/fp.d delete mode 100644 gas/testsuite/gas/alpha/fp.s delete mode 100644 gas/testsuite/gas/alpha/unop.d delete mode 100644 gas/testsuite/gas/alpha/unop.s delete mode 100644 gas/testsuite/gas/arc/adc.d delete mode 100644 gas/testsuite/gas/arc/adc.s delete mode 100644 gas/testsuite/gas/arc/add.d delete mode 100644 gas/testsuite/gas/arc/add.s delete mode 100644 gas/testsuite/gas/arc/alias.d delete mode 100644 gas/testsuite/gas/arc/alias.s delete mode 100644 gas/testsuite/gas/arc/and.d delete mode 100644 gas/testsuite/gas/arc/and.s delete mode 100644 gas/testsuite/gas/arc/arc.exp delete mode 100644 gas/testsuite/gas/arc/asl.d delete mode 100644 gas/testsuite/gas/arc/asl.s delete mode 100644 gas/testsuite/gas/arc/asr.d delete mode 100644 gas/testsuite/gas/arc/asr.s delete mode 100644 gas/testsuite/gas/arc/b.d delete mode 100644 gas/testsuite/gas/arc/b.s delete mode 100644 gas/testsuite/gas/arc/bic.d delete mode 100644 gas/testsuite/gas/arc/bic.s delete mode 100644 gas/testsuite/gas/arc/bl.d delete mode 100644 gas/testsuite/gas/arc/bl.s delete mode 100644 gas/testsuite/gas/arc/branch.d delete mode 100644 gas/testsuite/gas/arc/branch.s delete mode 100644 gas/testsuite/gas/arc/brk.d delete mode 100644 gas/testsuite/gas/arc/brk.s delete mode 100644 gas/testsuite/gas/arc/extb.d delete mode 100644 gas/testsuite/gas/arc/extb.s delete mode 100644 gas/testsuite/gas/arc/extw.d delete mode 100644 gas/testsuite/gas/arc/extw.s delete mode 100644 gas/testsuite/gas/arc/flag.d delete mode 100644 gas/testsuite/gas/arc/flag.s delete mode 100644 gas/testsuite/gas/arc/insn3.d delete mode 100644 gas/testsuite/gas/arc/insn3.s delete mode 100644 gas/testsuite/gas/arc/j.d delete mode 100644 gas/testsuite/gas/arc/j.s delete mode 100644 gas/testsuite/gas/arc/jl.d delete mode 100644 gas/testsuite/gas/arc/jl.s delete mode 100644 gas/testsuite/gas/arc/ld.d delete mode 100644 gas/testsuite/gas/arc/ld.s delete mode 100644 gas/testsuite/gas/arc/ld2.d delete mode 100644 gas/testsuite/gas/arc/ld2.s delete mode 100644 gas/testsuite/gas/arc/lp.d delete mode 100644 gas/testsuite/gas/arc/lp.s delete mode 100644 gas/testsuite/gas/arc/lsr.d delete mode 100644 gas/testsuite/gas/arc/lsr.s delete mode 100644 gas/testsuite/gas/arc/math.d delete mode 100644 gas/testsuite/gas/arc/math.s delete mode 100644 gas/testsuite/gas/arc/mov.d delete mode 100644 gas/testsuite/gas/arc/mov.s delete mode 100644 gas/testsuite/gas/arc/nop.d delete mode 100644 gas/testsuite/gas/arc/nop.s delete mode 100644 gas/testsuite/gas/arc/or.d delete mode 100644 gas/testsuite/gas/arc/or.s delete mode 100644 gas/testsuite/gas/arc/rlc.d delete mode 100644 gas/testsuite/gas/arc/rlc.s delete mode 100644 gas/testsuite/gas/arc/ror.d delete mode 100644 gas/testsuite/gas/arc/ror.s delete mode 100644 gas/testsuite/gas/arc/rrc.d delete mode 100644 gas/testsuite/gas/arc/rrc.s delete mode 100644 gas/testsuite/gas/arc/sbc.d delete mode 100644 gas/testsuite/gas/arc/sbc.s delete mode 100644 gas/testsuite/gas/arc/sexb.d delete mode 100644 gas/testsuite/gas/arc/sexb.s delete mode 100644 gas/testsuite/gas/arc/sexw.d delete mode 100644 gas/testsuite/gas/arc/sexw.s delete mode 100644 gas/testsuite/gas/arc/sleep.d delete mode 100644 gas/testsuite/gas/arc/sleep.s delete mode 100644 gas/testsuite/gas/arc/sshift.d delete mode 100644 gas/testsuite/gas/arc/sshift.s delete mode 100644 gas/testsuite/gas/arc/st.d delete mode 100644 gas/testsuite/gas/arc/st.s delete mode 100644 gas/testsuite/gas/arc/sub.d delete mode 100644 gas/testsuite/gas/arc/sub.s delete mode 100644 gas/testsuite/gas/arc/swi.d delete mode 100644 gas/testsuite/gas/arc/swi.s delete mode 100644 gas/testsuite/gas/arc/warn.exp delete mode 100644 gas/testsuite/gas/arc/warn.s delete mode 100644 gas/testsuite/gas/arc/xor.d delete mode 100644 gas/testsuite/gas/arc/xor.s delete mode 100644 gas/testsuite/gas/arm/adrl.d delete mode 100644 gas/testsuite/gas/arm/adrl.s delete mode 100644 gas/testsuite/gas/arm/arch4t.s delete mode 100644 gas/testsuite/gas/arm/arch5tej.d delete mode 100644 gas/testsuite/gas/arm/arch5tej.s delete mode 100644 gas/testsuite/gas/arm/archv6.d delete mode 100644 gas/testsuite/gas/arm/archv6.s delete mode 100644 gas/testsuite/gas/arm/arm.exp delete mode 100644 gas/testsuite/gas/arm/arm3.s delete mode 100644 gas/testsuite/gas/arm/arm6.s delete mode 100644 gas/testsuite/gas/arm/arm7dm.s delete mode 100644 gas/testsuite/gas/arm/arm7t.d delete mode 100644 gas/testsuite/gas/arm/arm7t.s delete mode 100644 gas/testsuite/gas/arm/armv1-bad.l delete mode 100644 gas/testsuite/gas/arm/armv1-bad.s delete mode 100644 gas/testsuite/gas/arm/armv1.d delete mode 100644 gas/testsuite/gas/arm/armv1.s delete mode 100644 gas/testsuite/gas/arm/copro.d delete mode 100644 gas/testsuite/gas/arm/copro.s delete mode 100644 gas/testsuite/gas/arm/el_segundo.d delete mode 100644 gas/testsuite/gas/arm/el_segundo.s delete mode 100644 gas/testsuite/gas/arm/float.s delete mode 100644 gas/testsuite/gas/arm/fpa-dyadic.d delete mode 100644 gas/testsuite/gas/arm/fpa-dyadic.s delete mode 100644 gas/testsuite/gas/arm/fpa-mem.d delete mode 100644 gas/testsuite/gas/arm/fpa-mem.s delete mode 100644 gas/testsuite/gas/arm/fpa-monadic.d delete mode 100644 gas/testsuite/gas/arm/fpa-monadic.s delete mode 100644 gas/testsuite/gas/arm/immed.s delete mode 100644 gas/testsuite/gas/arm/inst.d delete mode 100644 gas/testsuite/gas/arm/inst.s delete mode 100644 gas/testsuite/gas/arm/iwmmxt-bad.l delete mode 100644 gas/testsuite/gas/arm/iwmmxt-bad.s delete mode 100644 gas/testsuite/gas/arm/iwmmxt.d delete mode 100644 gas/testsuite/gas/arm/iwmmxt.s delete mode 100644 gas/testsuite/gas/arm/ldconst.d delete mode 100644 gas/testsuite/gas/arm/ldconst.s delete mode 100644 gas/testsuite/gas/arm/le-fpconst.d delete mode 100644 gas/testsuite/gas/arm/le-fpconst.s delete mode 100644 gas/testsuite/gas/arm/mapping.d delete mode 100644 gas/testsuite/gas/arm/mapping.s delete mode 100644 gas/testsuite/gas/arm/maverick.c delete mode 100644 gas/testsuite/gas/arm/maverick.d delete mode 100644 gas/testsuite/gas/arm/maverick.s delete mode 100644 gas/testsuite/gas/arm/offset.s delete mode 100644 gas/testsuite/gas/arm/pic.d delete mode 100644 gas/testsuite/gas/arm/pic.s delete mode 100644 gas/testsuite/gas/arm/r15-bad.l delete mode 100644 gas/testsuite/gas/arm/r15-bad.s delete mode 100644 gas/testsuite/gas/arm/req.l delete mode 100644 gas/testsuite/gas/arm/req.s delete mode 100644 gas/testsuite/gas/arm/thumb.s delete mode 100644 gas/testsuite/gas/arm/thumbv6.d delete mode 100644 gas/testsuite/gas/arm/thumbv6.s delete mode 100644 gas/testsuite/gas/arm/undefined.l delete mode 100644 gas/testsuite/gas/arm/undefined.s delete mode 100644 gas/testsuite/gas/arm/vfp-bad.l delete mode 100644 gas/testsuite/gas/arm/vfp-bad.s delete mode 100644 gas/testsuite/gas/arm/vfp1.d delete mode 100644 gas/testsuite/gas/arm/vfp1.s delete mode 100644 gas/testsuite/gas/arm/vfp1xD.d delete mode 100644 gas/testsuite/gas/arm/vfp1xD.s delete mode 100644 gas/testsuite/gas/arm/vfp2.d delete mode 100644 gas/testsuite/gas/arm/vfp2.s delete mode 100644 gas/testsuite/gas/arm/wince_arm7t.d delete mode 100644 gas/testsuite/gas/arm/wince_copro.d delete mode 100644 gas/testsuite/gas/arm/wince_inst.d delete mode 100644 gas/testsuite/gas/arm/wince_ldconst.d delete mode 100644 gas/testsuite/gas/arm/xscale.d delete mode 100644 gas/testsuite/gas/arm/xscale.s delete mode 100644 gas/testsuite/gas/cfi/cfi-alpha-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-alpha-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-alpha-2.d delete mode 100644 gas/testsuite/gas/cfi/cfi-alpha-2.s delete mode 100644 gas/testsuite/gas/cfi/cfi-alpha-3.d delete mode 100644 gas/testsuite/gas/cfi/cfi-alpha-3.s delete mode 100644 gas/testsuite/gas/cfi/cfi-common-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-common-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-common-2.d delete mode 100644 gas/testsuite/gas/cfi/cfi-common-2.s delete mode 100644 gas/testsuite/gas/cfi/cfi-common-3.d delete mode 100644 gas/testsuite/gas/cfi/cfi-common-3.s delete mode 100644 gas/testsuite/gas/cfi/cfi-diag-1.l delete mode 100644 gas/testsuite/gas/cfi/cfi-diag-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-i386-2.d delete mode 100644 gas/testsuite/gas/cfi/cfi-i386-2.s delete mode 100644 gas/testsuite/gas/cfi/cfi-i386.d delete mode 100644 gas/testsuite/gas/cfi/cfi-i386.s delete mode 100644 gas/testsuite/gas/cfi/cfi-m68k.d delete mode 100644 gas/testsuite/gas/cfi/cfi-m68k.s delete mode 100644 gas/testsuite/gas/cfi/cfi-ppc-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-ppc-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-s390-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-s390-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-s390x-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-s390x-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-sparc-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-sparc-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-sparc64-1.d delete mode 100644 gas/testsuite/gas/cfi/cfi-sparc64-1.s delete mode 100644 gas/testsuite/gas/cfi/cfi-x86_64.d delete mode 100644 gas/testsuite/gas/cfi/cfi-x86_64.s delete mode 100644 gas/testsuite/gas/cfi/cfi.exp delete mode 100644 gas/testsuite/gas/cris/addi.d delete mode 100644 gas/testsuite/gas/cris/addi.s delete mode 100644 gas/testsuite/gas/cris/binop-cmpmove.d delete mode 100644 gas/testsuite/gas/cris/binop-cmpmovx.d delete mode 100644 gas/testsuite/gas/cris/binop-extx.d delete mode 100644 gas/testsuite/gas/cris/binop-segref.s delete mode 100644 gas/testsuite/gas/cris/binop.d delete mode 100644 gas/testsuite/gas/cris/binop.s delete mode 100644 gas/testsuite/gas/cris/bork.d delete mode 100644 gas/testsuite/gas/cris/bork.s delete mode 100644 gas/testsuite/gas/cris/branch-warn-1.s delete mode 100644 gas/testsuite/gas/cris/branch-warn-2.s delete mode 100644 gas/testsuite/gas/cris/branch-warn-3.s delete mode 100644 gas/testsuite/gas/cris/branch.d delete mode 100644 gas/testsuite/gas/cris/branch.s delete mode 100644 gas/testsuite/gas/cris/break.d delete mode 100644 gas/testsuite/gas/cris/break.s delete mode 100644 gas/testsuite/gas/cris/brokw-1.d delete mode 100644 gas/testsuite/gas/cris/brokw-1.s delete mode 100644 gas/testsuite/gas/cris/brokw-2.d delete mode 100644 gas/testsuite/gas/cris/brokw-2.s delete mode 100644 gas/testsuite/gas/cris/brokw-3.d delete mode 100644 gas/testsuite/gas/cris/brokw-3.s delete mode 100644 gas/testsuite/gas/cris/bwtest-err-1.s delete mode 100644 gas/testsuite/gas/cris/ccr.d delete mode 100644 gas/testsuite/gas/cris/ccr.s delete mode 100644 gas/testsuite/gas/cris/clear.d delete mode 100644 gas/testsuite/gas/cris/continue.d delete mode 100644 gas/testsuite/gas/cris/continue.s delete mode 100644 gas/testsuite/gas/cris/cris.exp delete mode 100644 gas/testsuite/gas/cris/diffexp-ovwr.d delete mode 100644 gas/testsuite/gas/cris/diffexp-ovwr.s delete mode 100644 gas/testsuite/gas/cris/fragtest.d delete mode 100644 gas/testsuite/gas/cris/fragtest.s delete mode 100644 gas/testsuite/gas/cris/jump-type.d delete mode 100644 gas/testsuite/gas/cris/labfloat.d delete mode 100644 gas/testsuite/gas/cris/labfloat.s delete mode 100644 gas/testsuite/gas/cris/macroat.d delete mode 100644 gas/testsuite/gas/cris/macroat.s delete mode 100644 gas/testsuite/gas/cris/movem-to-reg.d delete mode 100644 gas/testsuite/gas/cris/nosep.d delete mode 100644 gas/testsuite/gas/cris/nosep.s delete mode 100644 gas/testsuite/gas/cris/oneop-type.d delete mode 100644 gas/testsuite/gas/cris/operand-err-1.s delete mode 100644 gas/testsuite/gas/cris/pic-err-1.s delete mode 100644 gas/testsuite/gas/cris/prefix.d delete mode 100644 gas/testsuite/gas/cris/prefix.s delete mode 100644 gas/testsuite/gas/cris/pushpop-byte-sreg.d delete mode 100644 gas/testsuite/gas/cris/pushpop-dcr1-sreg.d delete mode 100644 gas/testsuite/gas/cris/pushpop-dword-sreg.d delete mode 100644 gas/testsuite/gas/cris/pushpop-word-sreg.d delete mode 100644 gas/testsuite/gas/cris/pushpop.d delete mode 100644 gas/testsuite/gas/cris/pushpop.s delete mode 100644 gas/testsuite/gas/cris/quick-s6.d delete mode 100644 gas/testsuite/gas/cris/quick-u5.d delete mode 100644 gas/testsuite/gas/cris/quick-u6.d delete mode 100644 gas/testsuite/gas/cris/quick.s delete mode 100644 gas/testsuite/gas/cris/range-err-1.s delete mode 100644 gas/testsuite/gas/cris/range-err-2.s delete mode 100644 gas/testsuite/gas/cris/rd-bcnst.d delete mode 100644 gas/testsuite/gas/cris/rd-bcnst.s delete mode 100644 gas/testsuite/gas/cris/rd-dw2-1.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-10.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-11.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-12.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-13.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-14.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-15.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-2.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-3.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-4.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-5.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-6.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-7.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-8.d delete mode 100644 gas/testsuite/gas/cris/rd-dw2-9.d delete mode 100644 gas/testsuite/gas/cris/rd-pcrel1.d delete mode 100644 gas/testsuite/gas/cris/rd-pcrel1.s delete mode 100644 gas/testsuite/gas/cris/rd-pcrel2.d delete mode 100644 gas/testsuite/gas/cris/rd-pcrel2.s delete mode 100644 gas/testsuite/gas/cris/rd-pic-1.d delete mode 100644 gas/testsuite/gas/cris/rd-pic-1.s delete mode 100644 gas/testsuite/gas/cris/rd-regprefix-1.d delete mode 100644 gas/testsuite/gas/cris/rd-regprefix-1.s delete mode 100644 gas/testsuite/gas/cris/rd-regprefix-1b.d delete mode 100644 gas/testsuite/gas/cris/reg-to-mem.d delete mode 100644 gas/testsuite/gas/cris/regprefix-err-1.s delete mode 100644 gas/testsuite/gas/cris/regreg.d delete mode 100644 gas/testsuite/gas/cris/regreg.s delete mode 100644 gas/testsuite/gas/cris/return.d delete mode 100644 gas/testsuite/gas/cris/return.s delete mode 100644 gas/testsuite/gas/cris/scc.d delete mode 100644 gas/testsuite/gas/cris/scc.s delete mode 100644 gas/testsuite/gas/cris/sep-err-1.s delete mode 100644 gas/testsuite/gas/cris/sep-err-2.s delete mode 100644 gas/testsuite/gas/cris/sep-err-3.s delete mode 100644 gas/testsuite/gas/cris/separator.d delete mode 100644 gas/testsuite/gas/cris/separator.s delete mode 100644 gas/testsuite/gas/cris/shexpr-1.d delete mode 100644 gas/testsuite/gas/cris/shexpr-1.s delete mode 100644 gas/testsuite/gas/cris/sreg-to-x.d delete mode 100644 gas/testsuite/gas/cris/string-1.d delete mode 100644 gas/testsuite/gas/cris/string-1.s delete mode 100644 gas/testsuite/gas/cris/string-2.d delete mode 100644 gas/testsuite/gas/cris/string-2.s delete mode 100644 gas/testsuite/gas/cris/test.d delete mode 100644 gas/testsuite/gas/cris/unimplemented.d delete mode 100644 gas/testsuite/gas/cris/unimplemented.s delete mode 100644 gas/testsuite/gas/cris/unop-mem.d delete mode 100644 gas/testsuite/gas/cris/unop.s delete mode 100644 gas/testsuite/gas/cris/us-err-1.s delete mode 100644 gas/testsuite/gas/cris/us-err-2.s delete mode 100644 gas/testsuite/gas/cris/us-err-3.s delete mode 100644 gas/testsuite/gas/cris/x-to-byte-sreg.d delete mode 100644 gas/testsuite/gas/cris/x-to-dcr1-sreg.d delete mode 100644 gas/testsuite/gas/cris/x-to-dword-sreg.d delete mode 100644 gas/testsuite/gas/cris/x-to-word-sreg.d delete mode 100644 gas/testsuite/gas/d10v/address-001.d delete mode 100644 gas/testsuite/gas/d10v/address-001.s delete mode 100644 gas/testsuite/gas/d10v/address-002.l delete mode 100644 gas/testsuite/gas/d10v/address-002.s delete mode 100644 gas/testsuite/gas/d10v/address-003.l delete mode 100644 gas/testsuite/gas/d10v/address-003.s delete mode 100644 gas/testsuite/gas/d10v/address-004.l delete mode 100644 gas/testsuite/gas/d10v/address-004.s delete mode 100644 gas/testsuite/gas/d10v/address-005.l delete mode 100644 gas/testsuite/gas/d10v/address-005.s delete mode 100644 gas/testsuite/gas/d10v/address-006.l delete mode 100644 gas/testsuite/gas/d10v/address-006.s delete mode 100644 gas/testsuite/gas/d10v/address-007.l delete mode 100644 gas/testsuite/gas/d10v/address-007.s delete mode 100644 gas/testsuite/gas/d10v/address-008.l delete mode 100644 gas/testsuite/gas/d10v/address-008.s delete mode 100644 gas/testsuite/gas/d10v/address-009.l delete mode 100644 gas/testsuite/gas/d10v/address-009.s delete mode 100644 gas/testsuite/gas/d10v/address-010.l delete mode 100644 gas/testsuite/gas/d10v/address-010.s delete mode 100644 gas/testsuite/gas/d10v/address-011.l delete mode 100644 gas/testsuite/gas/d10v/address-011.s delete mode 100644 gas/testsuite/gas/d10v/address-012.l delete mode 100644 gas/testsuite/gas/d10v/address-012.s delete mode 100644 gas/testsuite/gas/d10v/address-013.l delete mode 100644 gas/testsuite/gas/d10v/address-013.s delete mode 100644 gas/testsuite/gas/d10v/address-014.l delete mode 100644 gas/testsuite/gas/d10v/address-014.s delete mode 100644 gas/testsuite/gas/d10v/address-015.l delete mode 100644 gas/testsuite/gas/d10v/address-015.s delete mode 100644 gas/testsuite/gas/d10v/address-016.l delete mode 100644 gas/testsuite/gas/d10v/address-016.s delete mode 100644 gas/testsuite/gas/d10v/address-017.l delete mode 100644 gas/testsuite/gas/d10v/address-017.s delete mode 100644 gas/testsuite/gas/d10v/address-018.l delete mode 100644 gas/testsuite/gas/d10v/address-018.s delete mode 100644 gas/testsuite/gas/d10v/address-019.l delete mode 100644 gas/testsuite/gas/d10v/address-019.s delete mode 100644 gas/testsuite/gas/d10v/address-020.l delete mode 100644 gas/testsuite/gas/d10v/address-020.s delete mode 100644 gas/testsuite/gas/d10v/address-021.l delete mode 100644 gas/testsuite/gas/d10v/address-021.s delete mode 100644 gas/testsuite/gas/d10v/address-022.l delete mode 100644 gas/testsuite/gas/d10v/address-022.s delete mode 100644 gas/testsuite/gas/d10v/address-023.l delete mode 100644 gas/testsuite/gas/d10v/address-023.s delete mode 100644 gas/testsuite/gas/d10v/address-024.l delete mode 100644 gas/testsuite/gas/d10v/address-024.s delete mode 100644 gas/testsuite/gas/d10v/address-025.l delete mode 100644 gas/testsuite/gas/d10v/address-025.s delete mode 100644 gas/testsuite/gas/d10v/address-026.l delete mode 100644 gas/testsuite/gas/d10v/address-026.s delete mode 100644 gas/testsuite/gas/d10v/address-027.l delete mode 100644 gas/testsuite/gas/d10v/address-027.s delete mode 100644 gas/testsuite/gas/d10v/address-028.l delete mode 100644 gas/testsuite/gas/d10v/address-028.s delete mode 100644 gas/testsuite/gas/d10v/address-029.l delete mode 100644 gas/testsuite/gas/d10v/address-029.s delete mode 100644 gas/testsuite/gas/d10v/address-030.l delete mode 100644 gas/testsuite/gas/d10v/address-030.s delete mode 100644 gas/testsuite/gas/d10v/address-031.l delete mode 100644 gas/testsuite/gas/d10v/address-031.s delete mode 100644 gas/testsuite/gas/d10v/address-032.l delete mode 100644 gas/testsuite/gas/d10v/address-032.s delete mode 100644 gas/testsuite/gas/d10v/address-033.l delete mode 100644 gas/testsuite/gas/d10v/address-033.s delete mode 100644 gas/testsuite/gas/d10v/address-034.l delete mode 100644 gas/testsuite/gas/d10v/address-034.s delete mode 100644 gas/testsuite/gas/d10v/address-035.l delete mode 100644 gas/testsuite/gas/d10v/address-035.s delete mode 100644 gas/testsuite/gas/d10v/address-036.l delete mode 100644 gas/testsuite/gas/d10v/address-036.s delete mode 100644 gas/testsuite/gas/d10v/address-037.l delete mode 100644 gas/testsuite/gas/d10v/address-037.s delete mode 100644 gas/testsuite/gas/d10v/address-038.l delete mode 100644 gas/testsuite/gas/d10v/address-038.s delete mode 100644 gas/testsuite/gas/d10v/address-039.l delete mode 100644 gas/testsuite/gas/d10v/address-039.s delete mode 100644 gas/testsuite/gas/d10v/address-040.l delete mode 100644 gas/testsuite/gas/d10v/address-040.s delete mode 100644 gas/testsuite/gas/d10v/address-041.l delete mode 100644 gas/testsuite/gas/d10v/address-041.s delete mode 100644 gas/testsuite/gas/d10v/control-001.d delete mode 100644 gas/testsuite/gas/d10v/control-001.s delete mode 100644 gas/testsuite/gas/d10v/d10v.exp delete mode 100644 gas/testsuite/gas/d10v/error-001.d delete mode 100644 gas/testsuite/gas/d10v/error-001.s delete mode 100644 gas/testsuite/gas/d10v/error-002.d delete mode 100644 gas/testsuite/gas/d10v/error-002.s delete mode 100644 gas/testsuite/gas/d10v/immediate-001.d delete mode 100644 gas/testsuite/gas/d10v/immediate-001.s delete mode 100644 gas/testsuite/gas/d10v/immediate-002.d delete mode 100644 gas/testsuite/gas/d10v/immediate-002.s delete mode 100644 gas/testsuite/gas/d10v/immediate-003.d delete mode 100644 gas/testsuite/gas/d10v/immediate-003.s delete mode 100644 gas/testsuite/gas/d10v/immediate-004.d delete mode 100644 gas/testsuite/gas/d10v/immediate-004.s delete mode 100644 gas/testsuite/gas/d10v/immediate-005.d delete mode 100644 gas/testsuite/gas/d10v/immediate-005.s delete mode 100644 gas/testsuite/gas/d10v/immediate-006.d delete mode 100644 gas/testsuite/gas/d10v/immediate-006.s delete mode 100644 gas/testsuite/gas/d10v/immediate-007.d delete mode 100644 gas/testsuite/gas/d10v/immediate-007.s delete mode 100644 gas/testsuite/gas/d10v/inst.d delete mode 100644 gas/testsuite/gas/d10v/inst.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-001.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-001.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-002.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-002.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-003.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-003.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-004.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-004.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-005.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-005.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-006.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-006.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-007.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-007.s delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-008.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-009.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing-010.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing.d delete mode 100644 gas/testsuite/gas/d10v/instruction_packing.s delete mode 100644 gas/testsuite/gas/d10v/label-001.d delete mode 100644 gas/testsuite/gas/d10v/label-001.s delete mode 100644 gas/testsuite/gas/d10v/warning-001.d delete mode 100644 gas/testsuite/gas/d10v/warning-001.s delete mode 100644 gas/testsuite/gas/d10v/warning-002.d delete mode 100644 gas/testsuite/gas/d10v/warning-002.s delete mode 100644 gas/testsuite/gas/d10v/warning-003.d delete mode 100644 gas/testsuite/gas/d10v/warning-003.s delete mode 100644 gas/testsuite/gas/d10v/warning-004.d delete mode 100644 gas/testsuite/gas/d10v/warning-004.s delete mode 100644 gas/testsuite/gas/d10v/warning-005.d delete mode 100644 gas/testsuite/gas/d10v/warning-005.s delete mode 100644 gas/testsuite/gas/d10v/warning-006.d delete mode 100644 gas/testsuite/gas/d10v/warning-006.s delete mode 100644 gas/testsuite/gas/d10v/warning-007.d delete mode 100644 gas/testsuite/gas/d10v/warning-007.s delete mode 100644 gas/testsuite/gas/d10v/warning-008.d delete mode 100644 gas/testsuite/gas/d10v/warning-008.s delete mode 100644 gas/testsuite/gas/d10v/warning-009.d delete mode 100644 gas/testsuite/gas/d10v/warning-009.s delete mode 100644 gas/testsuite/gas/d10v/warning-010.d delete mode 100644 gas/testsuite/gas/d10v/warning-010.s delete mode 100644 gas/testsuite/gas/d10v/warning-011.d delete mode 100644 gas/testsuite/gas/d10v/warning-011.s delete mode 100644 gas/testsuite/gas/d10v/warning-012.d delete mode 100644 gas/testsuite/gas/d10v/warning-012.s delete mode 100644 gas/testsuite/gas/d10v/warning-013.d delete mode 100644 gas/testsuite/gas/d10v/warning-013.s delete mode 100644 gas/testsuite/gas/d10v/warning-014.d delete mode 100644 gas/testsuite/gas/d10v/warning-014.s delete mode 100644 gas/testsuite/gas/d10v/warning-015.d delete mode 100644 gas/testsuite/gas/d10v/warning-016.d delete mode 100644 gas/testsuite/gas/d10v/warning-016.s delete mode 100644 gas/testsuite/gas/d10v/warning-017.d delete mode 100644 gas/testsuite/gas/d10v/warning-017.s delete mode 100644 gas/testsuite/gas/d10v/warning-018.d delete mode 100644 gas/testsuite/gas/d10v/warning-018.s delete mode 100644 gas/testsuite/gas/d10v/warning-019.d delete mode 100644 gas/testsuite/gas/d10v/warning-019.s delete mode 100644 gas/testsuite/gas/d30v/align.d delete mode 100644 gas/testsuite/gas/d30v/align.s delete mode 100644 gas/testsuite/gas/d30v/array.d delete mode 100644 gas/testsuite/gas/d30v/array.s delete mode 100644 gas/testsuite/gas/d30v/bittest.d delete mode 100644 gas/testsuite/gas/d30v/bittest.l delete mode 100644 gas/testsuite/gas/d30v/bittest.s delete mode 100644 gas/testsuite/gas/d30v/d30.exp delete mode 100644 gas/testsuite/gas/d30v/guard-debug.d delete mode 100644 gas/testsuite/gas/d30v/guard-debug.s delete mode 100644 gas/testsuite/gas/d30v/guard.d delete mode 100644 gas/testsuite/gas/d30v/guard.s delete mode 100644 gas/testsuite/gas/d30v/inst.d delete mode 100644 gas/testsuite/gas/d30v/inst.s delete mode 100644 gas/testsuite/gas/d30v/label-debug.d delete mode 100644 gas/testsuite/gas/d30v/label-debug.s delete mode 100644 gas/testsuite/gas/d30v/label.d delete mode 100644 gas/testsuite/gas/d30v/label.s delete mode 100644 gas/testsuite/gas/d30v/mul.d delete mode 100644 gas/testsuite/gas/d30v/mul.s delete mode 100644 gas/testsuite/gas/d30v/opt.d delete mode 100644 gas/testsuite/gas/d30v/opt.s delete mode 100644 gas/testsuite/gas/d30v/reloc.d delete mode 100644 gas/testsuite/gas/d30v/reloc.s delete mode 100644 gas/testsuite/gas/d30v/serial.l delete mode 100644 gas/testsuite/gas/d30v/serial.s delete mode 100644 gas/testsuite/gas/d30v/serial2.l delete mode 100644 gas/testsuite/gas/d30v/serial2.s delete mode 100644 gas/testsuite/gas/d30v/serial2O.l delete mode 100644 gas/testsuite/gas/d30v/serial2O.s delete mode 100644 gas/testsuite/gas/d30v/warn_oddreg.l delete mode 100644 gas/testsuite/gas/d30v/warn_oddreg.s delete mode 100644 gas/testsuite/gas/dlx/alltests.exp delete mode 100644 gas/testsuite/gas/dlx/branch.d delete mode 100644 gas/testsuite/gas/dlx/branch.s delete mode 100644 gas/testsuite/gas/dlx/itype.d delete mode 100644 gas/testsuite/gas/dlx/itype.s delete mode 100644 gas/testsuite/gas/dlx/lhi.d delete mode 100644 gas/testsuite/gas/dlx/lhi.s delete mode 100644 gas/testsuite/gas/dlx/load.d delete mode 100644 gas/testsuite/gas/dlx/load.s delete mode 100644 gas/testsuite/gas/dlx/rtype.d delete mode 100644 gas/testsuite/gas/dlx/rtype.s delete mode 100644 gas/testsuite/gas/dlx/store.d delete mode 100644 gas/testsuite/gas/dlx/store.s delete mode 100644 gas/testsuite/gas/elf/ehopt0.d delete mode 100644 gas/testsuite/gas/elf/ehopt0.s delete mode 100644 gas/testsuite/gas/elf/elf.exp delete mode 100644 gas/testsuite/gas/elf/section0.d delete mode 100644 gas/testsuite/gas/elf/section0.s delete mode 100644 gas/testsuite/gas/elf/section1.d delete mode 100644 gas/testsuite/gas/elf/section1.s delete mode 100644 gas/testsuite/gas/elf/section2.e delete mode 100644 gas/testsuite/gas/elf/section2.e-m32r delete mode 100644 gas/testsuite/gas/elf/section2.e-mips delete mode 100644 gas/testsuite/gas/elf/section2.e-miwmmxt delete mode 100644 gas/testsuite/gas/elf/section2.l delete mode 100644 gas/testsuite/gas/elf/section2.s delete mode 100644 gas/testsuite/gas/elf/section3.d delete mode 100644 gas/testsuite/gas/elf/section3.s delete mode 100644 gas/testsuite/gas/elf/symver.d delete mode 100644 gas/testsuite/gas/elf/symver.s delete mode 100644 gas/testsuite/gas/elf/type.e delete mode 100644 gas/testsuite/gas/elf/type.s delete mode 100644 gas/testsuite/gas/fr30/allinsn.d delete mode 100644 gas/testsuite/gas/fr30/allinsn.exp delete mode 100644 gas/testsuite/gas/fr30/allinsn.s delete mode 100644 gas/testsuite/gas/fr30/fr30.exp delete mode 100644 gas/testsuite/gas/frv/allinsn.d delete mode 100644 gas/testsuite/gas/frv/allinsn.exp delete mode 100644 gas/testsuite/gas/frv/allinsn.s delete mode 100644 gas/testsuite/gas/frv/fdpic.d delete mode 100644 gas/testsuite/gas/frv/fdpic.s delete mode 100644 gas/testsuite/gas/frv/reloc1.d delete mode 100644 gas/testsuite/gas/frv/reloc1.s delete mode 100644 gas/testsuite/gas/h8300/addsub.s delete mode 100644 gas/testsuite/gas/h8300/addsubh.s delete mode 100644 gas/testsuite/gas/h8300/addsubs.s delete mode 100644 gas/testsuite/gas/h8300/bitops1.s delete mode 100644 gas/testsuite/gas/h8300/bitops1h.s delete mode 100644 gas/testsuite/gas/h8300/bitops1s.s delete mode 100644 gas/testsuite/gas/h8300/bitops2.s delete mode 100644 gas/testsuite/gas/h8300/bitops2h.s delete mode 100644 gas/testsuite/gas/h8300/bitops2s.s delete mode 100644 gas/testsuite/gas/h8300/bitops3.s delete mode 100644 gas/testsuite/gas/h8300/bitops3h.s delete mode 100644 gas/testsuite/gas/h8300/bitops3s.s delete mode 100644 gas/testsuite/gas/h8300/bitops4.s delete mode 100644 gas/testsuite/gas/h8300/bitops4h.s delete mode 100644 gas/testsuite/gas/h8300/bitops4s.s delete mode 100644 gas/testsuite/gas/h8300/branch-coff.s delete mode 100644 gas/testsuite/gas/h8300/branch-elf.s delete mode 100644 gas/testsuite/gas/h8300/branchh-coff.s delete mode 100644 gas/testsuite/gas/h8300/branchh-elf.s delete mode 100644 gas/testsuite/gas/h8300/branchs-coff.s delete mode 100644 gas/testsuite/gas/h8300/branchs-elf.s delete mode 100644 gas/testsuite/gas/h8300/cbranch.s delete mode 100644 gas/testsuite/gas/h8300/cbranchh.s delete mode 100644 gas/testsuite/gas/h8300/cbranchs.s delete mode 100644 gas/testsuite/gas/h8300/cmpsi2.s delete mode 100644 gas/testsuite/gas/h8300/compare.s delete mode 100644 gas/testsuite/gas/h8300/compareh.s delete mode 100644 gas/testsuite/gas/h8300/compares.s delete mode 100644 gas/testsuite/gas/h8300/decimal.s delete mode 100644 gas/testsuite/gas/h8300/decimalh.s delete mode 100644 gas/testsuite/gas/h8300/decimals.s delete mode 100644 gas/testsuite/gas/h8300/divmul.s delete mode 100644 gas/testsuite/gas/h8300/divmulh.s delete mode 100644 gas/testsuite/gas/h8300/divmuls.s delete mode 100644 gas/testsuite/gas/h8300/extendh.s delete mode 100644 gas/testsuite/gas/h8300/extends.s delete mode 100644 gas/testsuite/gas/h8300/ffxx1-coff.d delete mode 100644 gas/testsuite/gas/h8300/ffxx1-coff.s delete mode 100644 gas/testsuite/gas/h8300/ffxx1-elf.d delete mode 100644 gas/testsuite/gas/h8300/ffxx1-elf.s delete mode 100644 gas/testsuite/gas/h8300/h8300-coff.exp delete mode 100644 gas/testsuite/gas/h8300/h8300-elf.exp delete mode 100644 gas/testsuite/gas/h8300/h8300.exp delete mode 100644 gas/testsuite/gas/h8300/h8sx_disp2.d delete mode 100644 gas/testsuite/gas/h8300/h8sx_disp2.s delete mode 100644 gas/testsuite/gas/h8300/h8sx_mov_imm.d delete mode 100644 gas/testsuite/gas/h8300/h8sx_mov_imm.s delete mode 100644 gas/testsuite/gas/h8300/h8sx_rtsl.d delete mode 100644 gas/testsuite/gas/h8300/h8sx_rtsl.s delete mode 100644 gas/testsuite/gas/h8300/incdec.s delete mode 100644 gas/testsuite/gas/h8300/incdech.s delete mode 100644 gas/testsuite/gas/h8300/incdecs.s delete mode 100644 gas/testsuite/gas/h8300/logical.s delete mode 100644 gas/testsuite/gas/h8300/logicalh.s delete mode 100644 gas/testsuite/gas/h8300/logicals.s delete mode 100644 gas/testsuite/gas/h8300/macs.s delete mode 100644 gas/testsuite/gas/h8300/misc.s delete mode 100644 gas/testsuite/gas/h8300/misch.s delete mode 100644 gas/testsuite/gas/h8300/miscs.s delete mode 100644 gas/testsuite/gas/h8300/mov32bug.s delete mode 100644 gas/testsuite/gas/h8300/movb.s delete mode 100644 gas/testsuite/gas/h8300/movbh.s delete mode 100644 gas/testsuite/gas/h8300/movbs.s delete mode 100644 gas/testsuite/gas/h8300/movlh.s delete mode 100644 gas/testsuite/gas/h8300/movls.s delete mode 100644 gas/testsuite/gas/h8300/movw.s delete mode 100644 gas/testsuite/gas/h8300/movwh.s delete mode 100644 gas/testsuite/gas/h8300/movws.s delete mode 100644 gas/testsuite/gas/h8300/multiples.s delete mode 100644 gas/testsuite/gas/h8300/pushpop.s delete mode 100644 gas/testsuite/gas/h8300/pushpoph.s delete mode 100644 gas/testsuite/gas/h8300/pushpops.s delete mode 100644 gas/testsuite/gas/h8300/rotsh.s delete mode 100644 gas/testsuite/gas/h8300/rotshh.s delete mode 100644 gas/testsuite/gas/h8300/rotshs.s delete mode 100644 gas/testsuite/gas/h8300/t01_mov.exp delete mode 100644 gas/testsuite/gas/h8300/t01_mov.s delete mode 100644 gas/testsuite/gas/h8300/t02_mova.exp delete mode 100644 gas/testsuite/gas/h8300/t02_mova.s delete mode 100644 gas/testsuite/gas/h8300/t03_add.exp delete mode 100644 gas/testsuite/gas/h8300/t03_add.s delete mode 100644 gas/testsuite/gas/h8300/t04_sub.exp delete mode 100644 gas/testsuite/gas/h8300/t04_sub.s delete mode 100644 gas/testsuite/gas/h8300/t05_cmp.exp delete mode 100644 gas/testsuite/gas/h8300/t05_cmp.s delete mode 100644 gas/testsuite/gas/h8300/t06_ari2.exp delete mode 100644 gas/testsuite/gas/h8300/t06_ari2.s delete mode 100644 gas/testsuite/gas/h8300/t07_ari3.exp delete mode 100644 gas/testsuite/gas/h8300/t07_ari3.s delete mode 100644 gas/testsuite/gas/h8300/t08_or.exp delete mode 100644 gas/testsuite/gas/h8300/t08_or.s delete mode 100644 gas/testsuite/gas/h8300/t09_xor.exp delete mode 100644 gas/testsuite/gas/h8300/t09_xor.s delete mode 100644 gas/testsuite/gas/h8300/t10_and.exp delete mode 100644 gas/testsuite/gas/h8300/t10_and.s delete mode 100644 gas/testsuite/gas/h8300/t11_logs.exp delete mode 100644 gas/testsuite/gas/h8300/t11_logs.s delete mode 100644 gas/testsuite/gas/h8300/t12_bit.exp delete mode 100644 gas/testsuite/gas/h8300/t12_bit.s delete mode 100644 gas/testsuite/gas/h8300/t13_otr.exp delete mode 100644 gas/testsuite/gas/h8300/t13_otr.s delete mode 100644 gas/testsuite/gas/hppa/README delete mode 100644 gas/testsuite/gas/hppa/basic/add.s delete mode 100644 gas/testsuite/gas/hppa/basic/add2.s delete mode 100644 gas/testsuite/gas/hppa/basic/addi.s delete mode 100644 gas/testsuite/gas/hppa/basic/basic.exp delete mode 100644 gas/testsuite/gas/hppa/basic/branch.s delete mode 100644 gas/testsuite/gas/hppa/basic/branch2.s delete mode 100644 gas/testsuite/gas/hppa/basic/comclr.s delete mode 100644 gas/testsuite/gas/hppa/basic/copr.s delete mode 100644 gas/testsuite/gas/hppa/basic/coprmem.s delete mode 100644 gas/testsuite/gas/hppa/basic/dcor.s delete mode 100644 gas/testsuite/gas/hppa/basic/dcor2.s delete mode 100644 gas/testsuite/gas/hppa/basic/deposit.s delete mode 100644 gas/testsuite/gas/hppa/basic/deposit2.s delete mode 100644 gas/testsuite/gas/hppa/basic/deposit3.s delete mode 100644 gas/testsuite/gas/hppa/basic/ds.s delete mode 100644 gas/testsuite/gas/hppa/basic/extract.s delete mode 100644 gas/testsuite/gas/hppa/basic/extract2.s delete mode 100644 gas/testsuite/gas/hppa/basic/extract3.s delete mode 100644 gas/testsuite/gas/hppa/basic/fmem.s delete mode 100644 gas/testsuite/gas/hppa/basic/fmemLRbug.s delete mode 100644 gas/testsuite/gas/hppa/basic/fp_comp.s delete mode 100644 gas/testsuite/gas/hppa/basic/fp_comp2.s delete mode 100644 gas/testsuite/gas/hppa/basic/fp_conv.s delete mode 100644 gas/testsuite/gas/hppa/basic/fp_fcmp.s delete mode 100644 gas/testsuite/gas/hppa/basic/fp_misc.s delete mode 100644 gas/testsuite/gas/hppa/basic/imem.s delete mode 100644 gas/testsuite/gas/hppa/basic/immed.s delete mode 100644 gas/testsuite/gas/hppa/basic/logical.s delete mode 100644 gas/testsuite/gas/hppa/basic/media.s delete mode 100644 gas/testsuite/gas/hppa/basic/perf.s delete mode 100644 gas/testsuite/gas/hppa/basic/purge.s delete mode 100644 gas/testsuite/gas/hppa/basic/purge2.s delete mode 100644 gas/testsuite/gas/hppa/basic/sh1add.s delete mode 100644 gas/testsuite/gas/hppa/basic/sh2add.s delete mode 100644 gas/testsuite/gas/hppa/basic/sh3add.s delete mode 100644 gas/testsuite/gas/hppa/basic/shift.s delete mode 100644 gas/testsuite/gas/hppa/basic/shift2.s delete mode 100644 gas/testsuite/gas/hppa/basic/shift3.s delete mode 100644 gas/testsuite/gas/hppa/basic/shladd.s delete mode 100644 gas/testsuite/gas/hppa/basic/shladd2.s delete mode 100644 gas/testsuite/gas/hppa/basic/special.s delete mode 100644 gas/testsuite/gas/hppa/basic/spop.s delete mode 100644 gas/testsuite/gas/hppa/basic/sub.s delete mode 100644 gas/testsuite/gas/hppa/basic/sub2.s delete mode 100644 gas/testsuite/gas/hppa/basic/subi.s delete mode 100644 gas/testsuite/gas/hppa/basic/system.s delete mode 100644 gas/testsuite/gas/hppa/basic/system2.s delete mode 100644 gas/testsuite/gas/hppa/basic/unit.s delete mode 100644 gas/testsuite/gas/hppa/basic/unit2.s delete mode 100644 gas/testsuite/gas/hppa/basic/weird.s delete mode 100644 gas/testsuite/gas/hppa/parse/align1.s delete mode 100644 gas/testsuite/gas/hppa/parse/align2.s delete mode 100644 gas/testsuite/gas/hppa/parse/appbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/badfmpyadd.s delete mode 100644 gas/testsuite/gas/hppa/parse/block1.s delete mode 100644 gas/testsuite/gas/hppa/parse/block2.s delete mode 100644 gas/testsuite/gas/hppa/parse/calldatabug.s delete mode 100644 gas/testsuite/gas/hppa/parse/callinfobug.s delete mode 100644 gas/testsuite/gas/hppa/parse/defbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/entrybug.s delete mode 100644 gas/testsuite/gas/hppa/parse/exportbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/exprbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/fixup7bug.s delete mode 100644 gas/testsuite/gas/hppa/parse/global.s delete mode 100644 gas/testsuite/gas/hppa/parse/labelbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/linesepbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/lselbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/nosubspace.s delete mode 100644 gas/testsuite/gas/hppa/parse/parse.exp delete mode 100644 gas/testsuite/gas/hppa/parse/procbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/regpopbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/space.s delete mode 100644 gas/testsuite/gas/hppa/parse/spacebug.s delete mode 100644 gas/testsuite/gas/hppa/parse/ssbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/stdreg.s delete mode 100644 gas/testsuite/gas/hppa/parse/stringer.s delete mode 100644 gas/testsuite/gas/hppa/parse/undefbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/versionbug.s delete mode 100644 gas/testsuite/gas/hppa/parse/xmpyubug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/applybug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/blebug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/blebug2.s delete mode 100644 gas/testsuite/gas/hppa/reloc/blebug3.s delete mode 100644 gas/testsuite/gas/hppa/reloc/exitbug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/fixupbug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/funcrelocbug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/labelopbug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/longcall.s delete mode 100644 gas/testsuite/gas/hppa/reloc/picreloc.s delete mode 100644 gas/testsuite/gas/hppa/reloc/plabelbug.s delete mode 100644 gas/testsuite/gas/hppa/reloc/r_no_reloc.s delete mode 100644 gas/testsuite/gas/hppa/reloc/reduce.s delete mode 100644 gas/testsuite/gas/hppa/reloc/reduce2.s delete mode 100644 gas/testsuite/gas/hppa/reloc/reduce3.s delete mode 100644 gas/testsuite/gas/hppa/reloc/reloc.exp delete mode 100644 gas/testsuite/gas/hppa/reloc/roundmode.s delete mode 100644 gas/testsuite/gas/hppa/reloc/selectorbug.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/align3.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/align4.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/brlenbug.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/common.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/fragbug.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/globalbug.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/importbug.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/labeldiffs.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/locallabel.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/ss_align.s delete mode 100644 gas/testsuite/gas/hppa/unsorted/unsorted.exp delete mode 100644 gas/testsuite/gas/i386/absrel.d delete mode 100644 gas/testsuite/gas/i386/absrel.s delete mode 100644 gas/testsuite/gas/i386/amd.d delete mode 100644 gas/testsuite/gas/i386/amd.s delete mode 100644 gas/testsuite/gas/i386/divide.d delete mode 100644 gas/testsuite/gas/i386/divide.s delete mode 100644 gas/testsuite/gas/i386/float.l delete mode 100644 gas/testsuite/gas/i386/float.s delete mode 100644 gas/testsuite/gas/i386/general.l delete mode 100644 gas/testsuite/gas/i386/general.s delete mode 100644 gas/testsuite/gas/i386/gotpc.d delete mode 100644 gas/testsuite/gas/i386/gotpc.s delete mode 100644 gas/testsuite/gas/i386/i386.exp delete mode 100644 gas/testsuite/gas/i386/intel.d delete mode 100644 gas/testsuite/gas/i386/intel.s delete mode 100644 gas/testsuite/gas/i386/intel16.d delete mode 100644 gas/testsuite/gas/i386/intel16.s delete mode 100644 gas/testsuite/gas/i386/intelpic.d delete mode 100644 gas/testsuite/gas/i386/intelpic.s delete mode 100644 gas/testsuite/gas/i386/inval.l delete mode 100644 gas/testsuite/gas/i386/inval.s delete mode 100644 gas/testsuite/gas/i386/jump.d delete mode 100644 gas/testsuite/gas/i386/jump.s delete mode 100644 gas/testsuite/gas/i386/jump16.d delete mode 100644 gas/testsuite/gas/i386/jump16.s delete mode 100644 gas/testsuite/gas/i386/katmai.d delete mode 100644 gas/testsuite/gas/i386/katmai.s delete mode 100644 gas/testsuite/gas/i386/modrm.l delete mode 100644 gas/testsuite/gas/i386/modrm.s delete mode 100644 gas/testsuite/gas/i386/naked.d delete mode 100644 gas/testsuite/gas/i386/naked.s delete mode 100644 gas/testsuite/gas/i386/opcode.d delete mode 100644 gas/testsuite/gas/i386/opcode.s delete mode 100644 gas/testsuite/gas/i386/pcrel.d delete mode 100644 gas/testsuite/gas/i386/pcrel.s delete mode 100644 gas/testsuite/gas/i386/prefix.d delete mode 100644 gas/testsuite/gas/i386/prefix.s delete mode 100644 gas/testsuite/gas/i386/prescott.d delete mode 100644 gas/testsuite/gas/i386/prescott.s delete mode 100644 gas/testsuite/gas/i386/relax.d delete mode 100644 gas/testsuite/gas/i386/relax.s delete mode 100644 gas/testsuite/gas/i386/reloc.d delete mode 100644 gas/testsuite/gas/i386/reloc.s delete mode 100644 gas/testsuite/gas/i386/sse2.d delete mode 100644 gas/testsuite/gas/i386/sse2.s delete mode 100644 gas/testsuite/gas/i386/ssemmx2.d delete mode 100644 gas/testsuite/gas/i386/ssemmx2.s delete mode 100644 gas/testsuite/gas/i386/sub.d delete mode 100644 gas/testsuite/gas/i386/sub.s delete mode 100644 gas/testsuite/gas/i386/tlsd.d delete mode 100644 gas/testsuite/gas/i386/tlsd.s delete mode 100644 gas/testsuite/gas/i386/tlsnopic.d delete mode 100644 gas/testsuite/gas/i386/tlsnopic.s delete mode 100644 gas/testsuite/gas/i386/tlspic.d delete mode 100644 gas/testsuite/gas/i386/tlspic.s delete mode 100644 gas/testsuite/gas/i386/white.l delete mode 100644 gas/testsuite/gas/i386/white.s delete mode 100644 gas/testsuite/gas/i386/x86-64-inval.l delete mode 100644 gas/testsuite/gas/i386/x86-64-inval.s delete mode 100644 gas/testsuite/gas/i386/x86-64-opcode.d delete mode 100644 gas/testsuite/gas/i386/x86-64-opcode.s delete mode 100644 gas/testsuite/gas/i386/x86_64.d delete mode 100644 gas/testsuite/gas/i386/x86_64.s delete mode 100644 gas/testsuite/gas/i860/README.i860 delete mode 100644 gas/testsuite/gas/i860/bitwise.d delete mode 100644 gas/testsuite/gas/i860/bitwise.s delete mode 100644 gas/testsuite/gas/i860/branch.d delete mode 100644 gas/testsuite/gas/i860/branch.s delete mode 100644 gas/testsuite/gas/i860/bte.d delete mode 100644 gas/testsuite/gas/i860/bte.s delete mode 100644 gas/testsuite/gas/i860/dir-align01.d delete mode 100644 gas/testsuite/gas/i860/dir-align01.s delete mode 100644 gas/testsuite/gas/i860/dir-intel01.d delete mode 100644 gas/testsuite/gas/i860/dir-intel01.s delete mode 100644 gas/testsuite/gas/i860/dir-intel02.d delete mode 100644 gas/testsuite/gas/i860/dir-intel02.s delete mode 100644 gas/testsuite/gas/i860/dir-intel03-err.l delete mode 100644 gas/testsuite/gas/i860/dir-intel03-err.s delete mode 100644 gas/testsuite/gas/i860/dual01.d delete mode 100644 gas/testsuite/gas/i860/dual01.s delete mode 100644 gas/testsuite/gas/i860/dual02-err.l delete mode 100644 gas/testsuite/gas/i860/dual02-err.s delete mode 100644 gas/testsuite/gas/i860/dual03.d delete mode 100644 gas/testsuite/gas/i860/dual03.s delete mode 100644 gas/testsuite/gas/i860/fldst01.d delete mode 100644 gas/testsuite/gas/i860/fldst01.s delete mode 100644 gas/testsuite/gas/i860/fldst02.d delete mode 100644 gas/testsuite/gas/i860/fldst02.s delete mode 100644 gas/testsuite/gas/i860/fldst03.d delete mode 100644 gas/testsuite/gas/i860/fldst03.s delete mode 100644 gas/testsuite/gas/i860/fldst04.d delete mode 100644 gas/testsuite/gas/i860/fldst04.s delete mode 100644 gas/testsuite/gas/i860/fldst05.d delete mode 100644 gas/testsuite/gas/i860/fldst05.s delete mode 100644 gas/testsuite/gas/i860/fldst06.d delete mode 100644 gas/testsuite/gas/i860/fldst06.s delete mode 100644 gas/testsuite/gas/i860/fldst07.d delete mode 100644 gas/testsuite/gas/i860/fldst07.s delete mode 100644 gas/testsuite/gas/i860/fldst08.d delete mode 100644 gas/testsuite/gas/i860/fldst08.s delete mode 100644 gas/testsuite/gas/i860/float01.d delete mode 100644 gas/testsuite/gas/i860/float01.s delete mode 100644 gas/testsuite/gas/i860/float02.d delete mode 100644 gas/testsuite/gas/i860/float02.s delete mode 100644 gas/testsuite/gas/i860/float03.d delete mode 100644 gas/testsuite/gas/i860/float03.s delete mode 100644 gas/testsuite/gas/i860/float04.d delete mode 100644 gas/testsuite/gas/i860/float04.s delete mode 100644 gas/testsuite/gas/i860/form.d delete mode 100644 gas/testsuite/gas/i860/form.s delete mode 100644 gas/testsuite/gas/i860/i860.exp delete mode 100644 gas/testsuite/gas/i860/iarith.d delete mode 100644 gas/testsuite/gas/i860/iarith.s delete mode 100644 gas/testsuite/gas/i860/ldst01.d delete mode 100644 gas/testsuite/gas/i860/ldst01.s delete mode 100644 gas/testsuite/gas/i860/ldst02.d delete mode 100644 gas/testsuite/gas/i860/ldst02.s delete mode 100644 gas/testsuite/gas/i860/ldst03.d delete mode 100644 gas/testsuite/gas/i860/ldst03.s delete mode 100644 gas/testsuite/gas/i860/ldst04.d delete mode 100644 gas/testsuite/gas/i860/ldst04.s delete mode 100644 gas/testsuite/gas/i860/ldst05.d delete mode 100644 gas/testsuite/gas/i860/ldst05.s delete mode 100644 gas/testsuite/gas/i860/ldst06.d delete mode 100644 gas/testsuite/gas/i860/ldst06.s delete mode 100644 gas/testsuite/gas/i860/pfam.d delete mode 100644 gas/testsuite/gas/i860/pfam.s delete mode 100644 gas/testsuite/gas/i860/pfmam.d delete mode 100644 gas/testsuite/gas/i860/pfmam.s delete mode 100644 gas/testsuite/gas/i860/pfmsm.d delete mode 100644 gas/testsuite/gas/i860/pfmsm.s delete mode 100644 gas/testsuite/gas/i860/pfsm.d delete mode 100644 gas/testsuite/gas/i860/pfsm.s delete mode 100644 gas/testsuite/gas/i860/pseudo-ops01.d delete mode 100644 gas/testsuite/gas/i860/pseudo-ops01.s delete mode 100644 gas/testsuite/gas/i860/regress01.d delete mode 100644 gas/testsuite/gas/i860/regress01.s delete mode 100644 gas/testsuite/gas/i860/shift.d delete mode 100644 gas/testsuite/gas/i860/shift.s delete mode 100644 gas/testsuite/gas/i860/simd.d delete mode 100644 gas/testsuite/gas/i860/simd.s delete mode 100644 gas/testsuite/gas/i860/system.d delete mode 100644 gas/testsuite/gas/i860/system.s delete mode 100644 gas/testsuite/gas/i860/xp.d delete mode 100644 gas/testsuite/gas/i860/xp.s delete mode 100644 gas/testsuite/gas/ia64/alias-ilp32.d delete mode 100644 gas/testsuite/gas/ia64/alias.d delete mode 100644 gas/testsuite/gas/ia64/alias.s delete mode 100644 gas/testsuite/gas/ia64/align.d delete mode 100644 gas/testsuite/gas/ia64/align.s delete mode 100644 gas/testsuite/gas/ia64/dependency-1.d delete mode 100644 gas/testsuite/gas/ia64/dependency-1.s delete mode 100644 gas/testsuite/gas/ia64/dv-branch.d delete mode 100644 gas/testsuite/gas/ia64/dv-branch.s delete mode 100644 gas/testsuite/gas/ia64/dv-entry-err.l delete mode 100644 gas/testsuite/gas/ia64/dv-entry-err.s delete mode 100644 gas/testsuite/gas/ia64/dv-imply.d delete mode 100644 gas/testsuite/gas/ia64/dv-imply.s delete mode 100644 gas/testsuite/gas/ia64/dv-mutex-err.l delete mode 100644 gas/testsuite/gas/ia64/dv-mutex-err.s delete mode 100644 gas/testsuite/gas/ia64/dv-mutex.d delete mode 100644 gas/testsuite/gas/ia64/dv-mutex.s delete mode 100644 gas/testsuite/gas/ia64/dv-raw-err.l delete mode 100644 gas/testsuite/gas/ia64/dv-raw-err.s delete mode 100644 gas/testsuite/gas/ia64/dv-safe.d delete mode 100644 gas/testsuite/gas/ia64/dv-safe.s delete mode 100644 gas/testsuite/gas/ia64/dv-srlz.d delete mode 100644 gas/testsuite/gas/ia64/dv-srlz.s delete mode 100644 gas/testsuite/gas/ia64/dv-war-err.l delete mode 100644 gas/testsuite/gas/ia64/dv-war-err.s delete mode 100644 gas/testsuite/gas/ia64/dv-waw-err.l delete mode 100644 gas/testsuite/gas/ia64/dv-waw-err.s delete mode 100644 gas/testsuite/gas/ia64/fixup-dump.pl delete mode 100644 gas/testsuite/gas/ia64/global.d delete mode 100644 gas/testsuite/gas/ia64/global.s delete mode 100644 gas/testsuite/gas/ia64/ia64.exp delete mode 100644 gas/testsuite/gas/ia64/ldxmov-1.d delete mode 100644 gas/testsuite/gas/ia64/ldxmov-1.s delete mode 100644 gas/testsuite/gas/ia64/ldxmov-2.l delete mode 100644 gas/testsuite/gas/ia64/ldxmov-2.s delete mode 100644 gas/testsuite/gas/ia64/ltoff22x-1.d delete mode 100644 gas/testsuite/gas/ia64/ltoff22x-1.s delete mode 100644 gas/testsuite/gas/ia64/opc-a-err.l delete mode 100644 gas/testsuite/gas/ia64/opc-a-err.s delete mode 100644 gas/testsuite/gas/ia64/opc-a.d delete mode 100644 gas/testsuite/gas/ia64/opc-a.pl delete mode 100644 gas/testsuite/gas/ia64/opc-a.s delete mode 100644 gas/testsuite/gas/ia64/opc-b.d delete mode 100644 gas/testsuite/gas/ia64/opc-b.pl delete mode 100644 gas/testsuite/gas/ia64/opc-b.s delete mode 100644 gas/testsuite/gas/ia64/opc-f.d delete mode 100644 gas/testsuite/gas/ia64/opc-f.pl delete mode 100644 gas/testsuite/gas/ia64/opc-f.s delete mode 100644 gas/testsuite/gas/ia64/opc-i.d delete mode 100644 gas/testsuite/gas/ia64/opc-i.pl delete mode 100644 gas/testsuite/gas/ia64/opc-i.s delete mode 100644 gas/testsuite/gas/ia64/opc-m.d delete mode 100644 gas/testsuite/gas/ia64/opc-m.pl delete mode 100644 gas/testsuite/gas/ia64/opc-m.s delete mode 100644 gas/testsuite/gas/ia64/opc-x.d delete mode 100644 gas/testsuite/gas/ia64/opc-x.s delete mode 100644 gas/testsuite/gas/ia64/order.d delete mode 100644 gas/testsuite/gas/ia64/order.s delete mode 100644 gas/testsuite/gas/ia64/real.d delete mode 100644 gas/testsuite/gas/ia64/real.s delete mode 100644 gas/testsuite/gas/ia64/regs.d delete mode 100644 gas/testsuite/gas/ia64/regs.pl delete mode 100644 gas/testsuite/gas/ia64/regs.s delete mode 100644 gas/testsuite/gas/ia64/secname-ilp32.d delete mode 100644 gas/testsuite/gas/ia64/secname.d delete mode 100644 gas/testsuite/gas/ia64/secname.s delete mode 100644 gas/testsuite/gas/ia64/tls.d delete mode 100644 gas/testsuite/gas/ia64/tls.s delete mode 100644 gas/testsuite/gas/ia64/unwind-ilp32.d delete mode 100644 gas/testsuite/gas/ia64/unwind.d delete mode 100644 gas/testsuite/gas/ia64/unwind.s delete mode 100644 gas/testsuite/gas/ieee-fp/x930509a.exp delete mode 100644 gas/testsuite/gas/ieee-fp/x930509a.s delete mode 100644 gas/testsuite/gas/iq2000/allinsn.d delete mode 100644 gas/testsuite/gas/iq2000/allinsn.exp delete mode 100644 gas/testsuite/gas/iq2000/allinsn.s delete mode 100644 gas/testsuite/gas/iq2000/hazard0.s delete mode 100644 gas/testsuite/gas/iq2000/hazard1.s delete mode 100644 gas/testsuite/gas/iq2000/hazard2.s delete mode 100644 gas/testsuite/gas/iq2000/hazard3.s delete mode 100644 gas/testsuite/gas/iq2000/hazard4.s delete mode 100644 gas/testsuite/gas/iq2000/hazard5.s delete mode 100644 gas/testsuite/gas/iq2000/load-hazards.exp delete mode 100644 gas/testsuite/gas/iq2000/nohazard.s delete mode 100644 gas/testsuite/gas/iq2000/noyield.s delete mode 100644 gas/testsuite/gas/iq2000/odd-ldw.exp delete mode 100644 gas/testsuite/gas/iq2000/odd-sdw.exp delete mode 100644 gas/testsuite/gas/iq2000/oddldw.s delete mode 100644 gas/testsuite/gas/iq2000/oddsdw.s delete mode 100644 gas/testsuite/gas/iq2000/q10allinsn.d delete mode 100644 gas/testsuite/gas/iq2000/q10allinsn.s delete mode 100644 gas/testsuite/gas/iq2000/q10hazard3.s delete mode 100644 gas/testsuite/gas/iq2000/q10hazard4.s delete mode 100644 gas/testsuite/gas/iq2000/q10hazard5.s delete mode 100644 gas/testsuite/gas/iq2000/q10load-hazards.exp delete mode 100644 gas/testsuite/gas/iq2000/q10nohazard.s delete mode 100644 gas/testsuite/gas/iq2000/q10noyield.s delete mode 100644 gas/testsuite/gas/iq2000/q10test0.d delete mode 100644 gas/testsuite/gas/iq2000/q10test0.s delete mode 100644 gas/testsuite/gas/iq2000/q10test1.d delete mode 100644 gas/testsuite/gas/iq2000/q10test1.s delete mode 100644 gas/testsuite/gas/iq2000/q10test10.d delete mode 100644 gas/testsuite/gas/iq2000/q10test10.s delete mode 100644 gas/testsuite/gas/iq2000/q10test11.d delete mode 100644 gas/testsuite/gas/iq2000/q10test11.s delete mode 100644 gas/testsuite/gas/iq2000/q10test12.d delete mode 100644 gas/testsuite/gas/iq2000/q10test12.s delete mode 100644 gas/testsuite/gas/iq2000/q10test2.d delete mode 100644 gas/testsuite/gas/iq2000/q10test2.s delete mode 100644 gas/testsuite/gas/iq2000/q10test3.d delete mode 100644 gas/testsuite/gas/iq2000/q10test3.s delete mode 100644 gas/testsuite/gas/iq2000/q10test4.d delete mode 100644 gas/testsuite/gas/iq2000/q10test4.s delete mode 100644 gas/testsuite/gas/iq2000/q10test5.d delete mode 100644 gas/testsuite/gas/iq2000/q10test5.s delete mode 100644 gas/testsuite/gas/iq2000/q10test6.d delete mode 100644 gas/testsuite/gas/iq2000/q10test6.s delete mode 100644 gas/testsuite/gas/iq2000/q10test7.d delete mode 100644 gas/testsuite/gas/iq2000/q10test7.s delete mode 100644 gas/testsuite/gas/iq2000/q10test8.d delete mode 100644 gas/testsuite/gas/iq2000/q10test8.s delete mode 100644 gas/testsuite/gas/iq2000/q10test9.d delete mode 100644 gas/testsuite/gas/iq2000/q10test9.s delete mode 100644 gas/testsuite/gas/iq2000/q10yield.exp delete mode 100644 gas/testsuite/gas/iq2000/test.exp delete mode 100644 gas/testsuite/gas/iq2000/yield.exp delete mode 100644 gas/testsuite/gas/iq2000/yield0.s delete mode 100644 gas/testsuite/gas/iq2000/yield1.s delete mode 100644 gas/testsuite/gas/iq2000/yield2.s delete mode 100644 gas/testsuite/gas/m32r/allinsn.d delete mode 100644 gas/testsuite/gas/m32r/allinsn.exp delete mode 100644 gas/testsuite/gas/m32r/allinsn.s delete mode 100644 gas/testsuite/gas/m32r/error.exp delete mode 100644 gas/testsuite/gas/m32r/fslot.d delete mode 100644 gas/testsuite/gas/m32r/fslot.s delete mode 100644 gas/testsuite/gas/m32r/fslotx.d delete mode 100644 gas/testsuite/gas/m32r/fslotx.s delete mode 100644 gas/testsuite/gas/m32r/high-1.d delete mode 100644 gas/testsuite/gas/m32r/high-1.s delete mode 100644 gas/testsuite/gas/m32r/interfere.s delete mode 100644 gas/testsuite/gas/m32r/m32r.exp delete mode 100644 gas/testsuite/gas/m32r/m32r2.d delete mode 100644 gas/testsuite/gas/m32r/m32r2.exp delete mode 100644 gas/testsuite/gas/m32r/m32r2.s delete mode 100644 gas/testsuite/gas/m32r/m32rx.d delete mode 100644 gas/testsuite/gas/m32r/m32rx.exp delete mode 100644 gas/testsuite/gas/m32r/m32rx.s delete mode 100644 gas/testsuite/gas/m32r/outofrange.s delete mode 100644 gas/testsuite/gas/m32r/parallel.s delete mode 100644 gas/testsuite/gas/m32r/pic.d delete mode 100644 gas/testsuite/gas/m32r/pic.exp delete mode 100644 gas/testsuite/gas/m32r/pic.s delete mode 100644 gas/testsuite/gas/m32r/relax-1.d delete mode 100644 gas/testsuite/gas/m32r/relax-1.s delete mode 100644 gas/testsuite/gas/m32r/relax-2.d delete mode 100644 gas/testsuite/gas/m32r/relax-2.s delete mode 100644 gas/testsuite/gas/m32r/signed-relocs.d delete mode 100644 gas/testsuite/gas/m32r/signed-relocs.s delete mode 100644 gas/testsuite/gas/m32r/uppercase.d delete mode 100644 gas/testsuite/gas/m32r/uppercase.s delete mode 100644 gas/testsuite/gas/m32r/wrongsize.s delete mode 100644 gas/testsuite/gas/m68hc11/abi-m68hc11-16-32.d delete mode 100644 gas/testsuite/gas/m68hc11/abi-m68hc11-16-64.d delete mode 100644 gas/testsuite/gas/m68hc11/abi-m68hc11-32-32.d delete mode 100644 gas/testsuite/gas/m68hc11/abi-m68hc11-32-64.d delete mode 100644 gas/testsuite/gas/m68hc11/abi.s delete mode 100644 gas/testsuite/gas/m68hc11/all_insns.d delete mode 100644 gas/testsuite/gas/m68hc11/all_insns.s delete mode 100644 gas/testsuite/gas/m68hc11/branchs12.d delete mode 100644 gas/testsuite/gas/m68hc11/branchs12.s delete mode 100644 gas/testsuite/gas/m68hc11/bug-1825.d delete mode 100644 gas/testsuite/gas/m68hc11/bug-1825.s delete mode 100644 gas/testsuite/gas/m68hc11/indexed12.d delete mode 100644 gas/testsuite/gas/m68hc11/indexed12.s delete mode 100644 gas/testsuite/gas/m68hc11/insns-dwarf2.d delete mode 100644 gas/testsuite/gas/m68hc11/insns.d delete mode 100644 gas/testsuite/gas/m68hc11/insns.s delete mode 100644 gas/testsuite/gas/m68hc11/insns12.d delete mode 100644 gas/testsuite/gas/m68hc11/insns12.s delete mode 100644 gas/testsuite/gas/m68hc11/lbranch-dwarf2.d delete mode 100644 gas/testsuite/gas/m68hc11/lbranch.d delete mode 100644 gas/testsuite/gas/m68hc11/lbranch.s delete mode 100644 gas/testsuite/gas/m68hc11/m68hc11.exp delete mode 100644 gas/testsuite/gas/m68hc11/malis-include.s delete mode 100644 gas/testsuite/gas/m68hc11/malis.d delete mode 100644 gas/testsuite/gas/m68hc11/malis.s delete mode 100644 gas/testsuite/gas/m68hc11/movb.d delete mode 100644 gas/testsuite/gas/m68hc11/movb.s delete mode 100644 gas/testsuite/gas/m68hc11/opers12-dwarf2.d delete mode 100644 gas/testsuite/gas/m68hc11/opers12.d delete mode 100644 gas/testsuite/gas/m68hc11/opers12.s delete mode 100644 gas/testsuite/gas/m68k-coff/gas.exp delete mode 100644 gas/testsuite/gas/m68k-coff/p2389.s delete mode 100644 gas/testsuite/gas/m68k-coff/p2389a.s delete mode 100644 gas/testsuite/gas/m68k-coff/p2430.s delete mode 100644 gas/testsuite/gas/m68k-coff/p2430a.s delete mode 100644 gas/testsuite/gas/m68k-coff/t1.s delete mode 100644 gas/testsuite/gas/m68k/all.exp delete mode 100644 gas/testsuite/gas/m68k/bitfield.d delete mode 100644 gas/testsuite/gas/m68k/bitfield.s delete mode 100644 gas/testsuite/gas/m68k/cas.d delete mode 100644 gas/testsuite/gas/m68k/cas.s delete mode 100644 gas/testsuite/gas/m68k/disperr.s delete mode 100644 gas/testsuite/gas/m68k/fmoveml.d delete mode 100644 gas/testsuite/gas/m68k/fmoveml.s delete mode 100644 gas/testsuite/gas/m68k/link.d delete mode 100644 gas/testsuite/gas/m68k/link.s delete mode 100644 gas/testsuite/gas/m68k/mcf-mov3q.d delete mode 100644 gas/testsuite/gas/m68k/mcf-mov3q.s delete mode 100644 gas/testsuite/gas/m68k/op68000.d delete mode 100644 gas/testsuite/gas/m68k/operands.d delete mode 100644 gas/testsuite/gas/m68k/operands.s delete mode 100644 gas/testsuite/gas/m68k/p2410.s delete mode 100644 gas/testsuite/gas/m68k/p2663.s delete mode 100644 gas/testsuite/gas/m68k/pcrel.d delete mode 100644 gas/testsuite/gas/m68k/pcrel.s delete mode 100644 gas/testsuite/gas/m68k/pic1.s delete mode 100644 gas/testsuite/gas/m68k/t2.d delete mode 100644 gas/testsuite/gas/m68k/t2.s delete mode 100644 gas/testsuite/gas/m88k/allinsn.d delete mode 100644 gas/testsuite/gas/m88k/allinsn.s delete mode 100644 gas/testsuite/gas/m88k/init.d delete mode 100644 gas/testsuite/gas/m88k/init.s delete mode 100644 gas/testsuite/gas/m88k/m88k.exp delete mode 100644 gas/testsuite/gas/macros/and.s delete mode 100644 gas/testsuite/gas/macros/app1.d delete mode 100644 gas/testsuite/gas/macros/app1.s delete mode 100644 gas/testsuite/gas/macros/app2.d delete mode 100644 gas/testsuite/gas/macros/app2.s delete mode 100644 gas/testsuite/gas/macros/app3.d delete mode 100644 gas/testsuite/gas/macros/app3.s delete mode 100644 gas/testsuite/gas/macros/app4.d delete mode 100644 gas/testsuite/gas/macros/app4.s delete mode 100644 gas/testsuite/gas/macros/app4b.s delete mode 100644 gas/testsuite/gas/macros/err.s delete mode 100644 gas/testsuite/gas/macros/irp.d delete mode 100644 gas/testsuite/gas/macros/irp.s delete mode 100644 gas/testsuite/gas/macros/macros.exp delete mode 100644 gas/testsuite/gas/macros/rept.d delete mode 100644 gas/testsuite/gas/macros/rept.s delete mode 100644 gas/testsuite/gas/macros/semi.d delete mode 100644 gas/testsuite/gas/macros/semi.s delete mode 100644 gas/testsuite/gas/macros/strings.d delete mode 100644 gas/testsuite/gas/macros/strings.s delete mode 100644 gas/testsuite/gas/macros/test1.d delete mode 100644 gas/testsuite/gas/macros/test1.s delete mode 100644 gas/testsuite/gas/macros/test2.d delete mode 100644 gas/testsuite/gas/macros/test2.s delete mode 100644 gas/testsuite/gas/macros/test3.d delete mode 100644 gas/testsuite/gas/macros/test3.s delete mode 100644 gas/testsuite/gas/mcore/allinsn.d delete mode 100644 gas/testsuite/gas/mcore/allinsn.exp delete mode 100644 gas/testsuite/gas/mcore/allinsn.s delete mode 100644 gas/testsuite/gas/mips/abs.d delete mode 100644 gas/testsuite/gas/mips/abs.s delete mode 100644 gas/testsuite/gas/mips/add.d delete mode 100644 gas/testsuite/gas/mips/add.s delete mode 100644 gas/testsuite/gas/mips/and.d delete mode 100644 gas/testsuite/gas/mips/and.s delete mode 100644 gas/testsuite/gas/mips/baddata1.l delete mode 100644 gas/testsuite/gas/mips/baddata1.s delete mode 100644 gas/testsuite/gas/mips/beq.d delete mode 100644 gas/testsuite/gas/mips/beq.s delete mode 100644 gas/testsuite/gas/mips/bge.d delete mode 100644 gas/testsuite/gas/mips/bge.s delete mode 100644 gas/testsuite/gas/mips/bgeu.d delete mode 100644 gas/testsuite/gas/mips/bgeu.s delete mode 100644 gas/testsuite/gas/mips/blt.d delete mode 100644 gas/testsuite/gas/mips/blt.s delete mode 100644 gas/testsuite/gas/mips/bltu.d delete mode 100644 gas/testsuite/gas/mips/bltu.s delete mode 100644 gas/testsuite/gas/mips/branch-misc-1.d delete mode 100644 gas/testsuite/gas/mips/branch-misc-1.s delete mode 100644 gas/testsuite/gas/mips/branch-misc-2.l delete mode 100644 gas/testsuite/gas/mips/branch-misc-2.s delete mode 100644 gas/testsuite/gas/mips/branch-misc-2pic.l delete mode 100644 gas/testsuite/gas/mips/branch-misc-2pic.s delete mode 100644 gas/testsuite/gas/mips/break20.d delete mode 100644 gas/testsuite/gas/mips/break20.s delete mode 100644 gas/testsuite/gas/mips/cp0-names-mips32.d delete mode 100644 gas/testsuite/gas/mips/cp0-names-mips32r2.d delete mode 100644 gas/testsuite/gas/mips/cp0-names-mips64.d delete mode 100644 gas/testsuite/gas/mips/cp0-names-mips64r2.d delete mode 100644 gas/testsuite/gas/mips/cp0-names-numeric.d delete mode 100644 gas/testsuite/gas/mips/cp0-names-sb1.d delete mode 100644 gas/testsuite/gas/mips/cp0-names.s delete mode 100644 gas/testsuite/gas/mips/cp0sel-names-mips32.d delete mode 100644 gas/testsuite/gas/mips/cp0sel-names-mips32r2.d delete mode 100644 gas/testsuite/gas/mips/cp0sel-names-mips64.d delete mode 100644 gas/testsuite/gas/mips/cp0sel-names-mips64r2.d delete mode 100644 gas/testsuite/gas/mips/cp0sel-names-numeric.d delete mode 100644 gas/testsuite/gas/mips/cp0sel-names-sb1.d delete mode 100644 gas/testsuite/gas/mips/cp0sel-names.s delete mode 100644 gas/testsuite/gas/mips/delay.d delete mode 100644 gas/testsuite/gas/mips/delay.s delete mode 100644 gas/testsuite/gas/mips/div-ilocks.d delete mode 100644 gas/testsuite/gas/mips/div.d delete mode 100644 gas/testsuite/gas/mips/div.s delete mode 100644 gas/testsuite/gas/mips/dli.d delete mode 100644 gas/testsuite/gas/mips/dli.s delete mode 100644 gas/testsuite/gas/mips/e32-rel2.d delete mode 100644 gas/testsuite/gas/mips/e32-rel4.d delete mode 100644 gas/testsuite/gas/mips/e32el-rel2.d delete mode 100644 gas/testsuite/gas/mips/elempic.d delete mode 100644 gas/testsuite/gas/mips/elf-consthilo.d delete mode 100644 gas/testsuite/gas/mips/elf-consthilo.s delete mode 100644 gas/testsuite/gas/mips/elf-jal.d delete mode 100644 gas/testsuite/gas/mips/elf-rel-got-n32.d delete mode 100644 gas/testsuite/gas/mips/elf-rel-got-n32.s delete mode 100644 gas/testsuite/gas/mips/elf-rel-got-n64.d delete mode 100644 gas/testsuite/gas/mips/elf-rel-got-n64.s delete mode 100644 gas/testsuite/gas/mips/elf-rel-xgot-n32.d delete mode 100644 gas/testsuite/gas/mips/elf-rel-xgot-n64.d delete mode 100644 gas/testsuite/gas/mips/elf-rel.d delete mode 100644 gas/testsuite/gas/mips/elf-rel.s delete mode 100644 gas/testsuite/gas/mips/elf-rel10.d delete mode 100644 gas/testsuite/gas/mips/elf-rel10.s delete mode 100644 gas/testsuite/gas/mips/elf-rel11.d delete mode 100644 gas/testsuite/gas/mips/elf-rel11.s delete mode 100644 gas/testsuite/gas/mips/elf-rel12.d delete mode 100644 gas/testsuite/gas/mips/elf-rel12.s delete mode 100644 gas/testsuite/gas/mips/elf-rel13.d delete mode 100644 gas/testsuite/gas/mips/elf-rel13.s delete mode 100644 gas/testsuite/gas/mips/elf-rel14.d delete mode 100644 gas/testsuite/gas/mips/elf-rel14.s delete mode 100644 gas/testsuite/gas/mips/elf-rel15.d delete mode 100644 gas/testsuite/gas/mips/elf-rel15.s delete mode 100644 gas/testsuite/gas/mips/elf-rel16.d delete mode 100644 gas/testsuite/gas/mips/elf-rel16.s delete mode 100644 gas/testsuite/gas/mips/elf-rel17.d delete mode 100644 gas/testsuite/gas/mips/elf-rel17.s delete mode 100644 gas/testsuite/gas/mips/elf-rel18.d delete mode 100644 gas/testsuite/gas/mips/elf-rel18.s delete mode 100644 gas/testsuite/gas/mips/elf-rel19.d delete mode 100644 gas/testsuite/gas/mips/elf-rel19.s delete mode 100644 gas/testsuite/gas/mips/elf-rel2.d delete mode 100644 gas/testsuite/gas/mips/elf-rel2.s delete mode 100644 gas/testsuite/gas/mips/elf-rel3.d delete mode 100644 gas/testsuite/gas/mips/elf-rel3.s delete mode 100644 gas/testsuite/gas/mips/elf-rel4.d delete mode 100644 gas/testsuite/gas/mips/elf-rel4.s delete mode 100644 gas/testsuite/gas/mips/elf-rel5.d delete mode 100644 gas/testsuite/gas/mips/elf-rel5.s delete mode 100644 gas/testsuite/gas/mips/elf-rel6.d delete mode 100644 gas/testsuite/gas/mips/elf-rel6.s delete mode 100644 gas/testsuite/gas/mips/elf-rel7.d delete mode 100644 gas/testsuite/gas/mips/elf-rel7.s delete mode 100644 gas/testsuite/gas/mips/elf-rel8.d delete mode 100644 gas/testsuite/gas/mips/elf-rel8.s delete mode 100644 gas/testsuite/gas/mips/elf-rel9.d delete mode 100644 gas/testsuite/gas/mips/elf-rel9.s delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips1.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips2.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips3.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips32.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips32r2.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips4.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips5.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips64.d delete mode 100644 gas/testsuite/gas/mips/elf_arch_mips64r2.d delete mode 100644 gas/testsuite/gas/mips/elf_ase_mips16.d delete mode 100644 gas/testsuite/gas/mips/elf_e_flags.c delete mode 100644 gas/testsuite/gas/mips/elf_e_flags.s delete mode 100644 gas/testsuite/gas/mips/elf_e_flags1.d delete mode 100644 gas/testsuite/gas/mips/elf_e_flags2.d delete mode 100644 gas/testsuite/gas/mips/elf_e_flags3.d delete mode 100644 gas/testsuite/gas/mips/elf_e_flags4.d delete mode 100644 gas/testsuite/gas/mips/elfel-rel.d delete mode 100644 gas/testsuite/gas/mips/elfel-rel2.d delete mode 100644 gas/testsuite/gas/mips/elfel-rel3.d delete mode 100644 gas/testsuite/gas/mips/empic.d delete mode 100644 gas/testsuite/gas/mips/empic.l delete mode 100644 gas/testsuite/gas/mips/empic.s delete mode 100644 gas/testsuite/gas/mips/empic2.d delete mode 100644 gas/testsuite/gas/mips/empic2.s delete mode 100644 gas/testsuite/gas/mips/empic3_e.d delete mode 100644 gas/testsuite/gas/mips/empic3_e.s delete mode 100644 gas/testsuite/gas/mips/empic3_g1.d delete mode 100644 gas/testsuite/gas/mips/empic3_g1.s delete mode 100644 gas/testsuite/gas/mips/empic3_g2.d delete mode 100644 gas/testsuite/gas/mips/empic3_g2.s delete mode 100644 gas/testsuite/gas/mips/empty.s delete mode 100644 gas/testsuite/gas/mips/expr1.d delete mode 100644 gas/testsuite/gas/mips/expr1.s delete mode 100644 gas/testsuite/gas/mips/fpr-names-32.d delete mode 100644 gas/testsuite/gas/mips/fpr-names-64.d delete mode 100644 gas/testsuite/gas/mips/fpr-names-n32.d delete mode 100644 gas/testsuite/gas/mips/fpr-names-numeric.d delete mode 100644 gas/testsuite/gas/mips/fpr-names.s delete mode 100644 gas/testsuite/gas/mips/gpr-names-32.d delete mode 100644 gas/testsuite/gas/mips/gpr-names-64.d delete mode 100644 gas/testsuite/gas/mips/gpr-names-n32.d delete mode 100644 gas/testsuite/gas/mips/gpr-names-numeric.d delete mode 100644 gas/testsuite/gas/mips/gpr-names.s delete mode 100644 gas/testsuite/gas/mips/hwr-names-mips32r2.d delete mode 100644 gas/testsuite/gas/mips/hwr-names-mips64r2.d delete mode 100644 gas/testsuite/gas/mips/hwr-names-numeric.d delete mode 100644 gas/testsuite/gas/mips/hwr-names.s delete mode 100644 gas/testsuite/gas/mips/illegal.l delete mode 100644 gas/testsuite/gas/mips/illegal.s delete mode 100644 gas/testsuite/gas/mips/itbl delete mode 100644 gas/testsuite/gas/mips/itbl.s delete mode 100644 gas/testsuite/gas/mips/jal-empic-elf-2.d delete mode 100644 gas/testsuite/gas/mips/jal-empic-elf-2.s delete mode 100644 gas/testsuite/gas/mips/jal-empic-elf-3.d delete mode 100644 gas/testsuite/gas/mips/jal-empic-elf-3.s delete mode 100644 gas/testsuite/gas/mips/jal-empic-elf.d delete mode 100644 gas/testsuite/gas/mips/jal-empic.d delete mode 100644 gas/testsuite/gas/mips/jal-newabi.d delete mode 100644 gas/testsuite/gas/mips/jal-newabi.s delete mode 100644 gas/testsuite/gas/mips/jal-range.l delete mode 100644 gas/testsuite/gas/mips/jal-range.s delete mode 100644 gas/testsuite/gas/mips/jal-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/jal-svr4pic.s delete mode 100644 gas/testsuite/gas/mips/jal-xgot.d delete mode 100644 gas/testsuite/gas/mips/jal.d delete mode 100644 gas/testsuite/gas/mips/jal.s delete mode 100644 gas/testsuite/gas/mips/la-empic.d delete mode 100644 gas/testsuite/gas/mips/la-empic.s delete mode 100644 gas/testsuite/gas/mips/la-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/la-xgot.d delete mode 100644 gas/testsuite/gas/mips/la.d delete mode 100644 gas/testsuite/gas/mips/la.s delete mode 100644 gas/testsuite/gas/mips/lb-empic.d delete mode 100644 gas/testsuite/gas/mips/lb-pic.s delete mode 100644 gas/testsuite/gas/mips/lb-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/lb-xgot-ilocks.d delete mode 100644 gas/testsuite/gas/mips/lb-xgot.d delete mode 100644 gas/testsuite/gas/mips/lb.d delete mode 100644 gas/testsuite/gas/mips/lb.s delete mode 100644 gas/testsuite/gas/mips/lca-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/lca-xgot.d delete mode 100644 gas/testsuite/gas/mips/lca.s delete mode 100644 gas/testsuite/gas/mips/ld-empic.d delete mode 100644 gas/testsuite/gas/mips/ld-ilocks-addr32.d delete mode 100644 gas/testsuite/gas/mips/ld-ilocks.d delete mode 100644 gas/testsuite/gas/mips/ld-pic.s delete mode 100644 gas/testsuite/gas/mips/ld-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/ld-xgot.d delete mode 100644 gas/testsuite/gas/mips/ld.d delete mode 100644 gas/testsuite/gas/mips/ld.s delete mode 100644 gas/testsuite/gas/mips/ldstla-32-shared.d delete mode 100644 gas/testsuite/gas/mips/ldstla-32.d delete mode 100644 gas/testsuite/gas/mips/ldstla-32.s delete mode 100644 gas/testsuite/gas/mips/ldstla-n32-shared.d delete mode 100644 gas/testsuite/gas/mips/ldstla-n32.d delete mode 100644 gas/testsuite/gas/mips/ldstla-n32.s delete mode 100644 gas/testsuite/gas/mips/ldstla-n64-shared.d delete mode 100644 gas/testsuite/gas/mips/ldstla-n64.d delete mode 100644 gas/testsuite/gas/mips/ldstla-n64.s delete mode 100644 gas/testsuite/gas/mips/li.d delete mode 100644 gas/testsuite/gas/mips/li.s delete mode 100644 gas/testsuite/gas/mips/lif-empic.d delete mode 100644 gas/testsuite/gas/mips/lif-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/lif-xgot.d delete mode 100644 gas/testsuite/gas/mips/lifloat.d delete mode 100644 gas/testsuite/gas/mips/lifloat.s delete mode 100644 gas/testsuite/gas/mips/lineno.d delete mode 100644 gas/testsuite/gas/mips/lineno.s delete mode 100644 gas/testsuite/gas/mips/macro-warn-1-n32.d delete mode 100644 gas/testsuite/gas/mips/macro-warn-1-n32.l delete mode 100644 gas/testsuite/gas/mips/macro-warn-1.d delete mode 100644 gas/testsuite/gas/mips/macro-warn-1.l delete mode 100644 gas/testsuite/gas/mips/macro-warn-1.s delete mode 100644 gas/testsuite/gas/mips/macro-warn-2-n32.d delete mode 100644 gas/testsuite/gas/mips/macro-warn-2.d delete mode 100644 gas/testsuite/gas/mips/macro-warn-2.l delete mode 100644 gas/testsuite/gas/mips/macro-warn-2.s delete mode 100644 gas/testsuite/gas/mips/macro-warn-3.d delete mode 100644 gas/testsuite/gas/mips/macro-warn-3.l delete mode 100644 gas/testsuite/gas/mips/macro-warn-3.s delete mode 100644 gas/testsuite/gas/mips/macro-warn-4.d delete mode 100644 gas/testsuite/gas/mips/macro-warn-4.l delete mode 100644 gas/testsuite/gas/mips/macro-warn-4.s delete mode 100644 gas/testsuite/gas/mips/mips-abi32-pic.d delete mode 100644 gas/testsuite/gas/mips/mips-abi32-pic.s delete mode 100644 gas/testsuite/gas/mips/mips-abi32-pic2.d delete mode 100644 gas/testsuite/gas/mips/mips-abi32-pic2.s delete mode 100644 gas/testsuite/gas/mips/mips-abi32.d delete mode 100644 gas/testsuite/gas/mips/mips-abi32.s delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp32-pic.d delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp32-pic.s delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp32.d delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp32.s delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp64-pic.d delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp64-pic.s delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp64.d delete mode 100644 gas/testsuite/gas/mips/mips-gp32-fp64.s delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp32-pic.d delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp32-pic.s delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp32.d delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp32.l delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp32.s delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp64-pic.d delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp64-pic.s delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp64.d delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp64.l delete mode 100644 gas/testsuite/gas/mips/mips-gp64-fp64.s delete mode 100644 gas/testsuite/gas/mips/mips-jalx.d delete mode 100644 gas/testsuite/gas/mips/mips-jalx.s delete mode 100644 gas/testsuite/gas/mips/mips-no-jalx.l delete mode 100644 gas/testsuite/gas/mips/mips-no-jalx.s delete mode 100644 gas/testsuite/gas/mips/mips.exp delete mode 100644 gas/testsuite/gas/mips/mips16-64.d delete mode 100644 gas/testsuite/gas/mips/mips16-e.d delete mode 100644 gas/testsuite/gas/mips/mips16-e.s delete mode 100644 gas/testsuite/gas/mips/mips16-f.d delete mode 100644 gas/testsuite/gas/mips/mips16-f.s delete mode 100644 gas/testsuite/gas/mips/mips16-jalx.d delete mode 100644 gas/testsuite/gas/mips/mips16-jalx.s delete mode 100644 gas/testsuite/gas/mips/mips16.d delete mode 100644 gas/testsuite/gas/mips/mips16.s delete mode 100644 gas/testsuite/gas/mips/mips32.d delete mode 100644 gas/testsuite/gas/mips/mips32.s delete mode 100644 gas/testsuite/gas/mips/mips32r2-ill-fp64.l delete mode 100644 gas/testsuite/gas/mips/mips32r2-ill-fp64.s delete mode 100644 gas/testsuite/gas/mips/mips32r2-ill.l delete mode 100644 gas/testsuite/gas/mips/mips32r2-ill.s delete mode 100644 gas/testsuite/gas/mips/mips32r2.d delete mode 100644 gas/testsuite/gas/mips/mips32r2.s delete mode 100644 gas/testsuite/gas/mips/mips4.d delete mode 100644 gas/testsuite/gas/mips/mips4.s delete mode 100644 gas/testsuite/gas/mips/mips4010.d delete mode 100644 gas/testsuite/gas/mips/mips4010.s delete mode 100644 gas/testsuite/gas/mips/mips4100.d delete mode 100644 gas/testsuite/gas/mips/mips4100.s delete mode 100644 gas/testsuite/gas/mips/mips4650.d delete mode 100644 gas/testsuite/gas/mips/mips4650.s delete mode 100644 gas/testsuite/gas/mips/mips5.d delete mode 100644 gas/testsuite/gas/mips/mips5.l delete mode 100644 gas/testsuite/gas/mips/mips5.s delete mode 100644 gas/testsuite/gas/mips/mips64-mdmx.d delete mode 100644 gas/testsuite/gas/mips/mips64-mdmx.s delete mode 100644 gas/testsuite/gas/mips/mips64-mips3d-incl.d delete mode 100644 gas/testsuite/gas/mips/mips64-mips3d.d delete mode 100644 gas/testsuite/gas/mips/mips64-mips3d.l delete mode 100644 gas/testsuite/gas/mips/mips64-mips3d.s delete mode 100644 gas/testsuite/gas/mips/mips64.d delete mode 100644 gas/testsuite/gas/mips/mips64.s delete mode 100644 gas/testsuite/gas/mips/mips64r2-ill.l delete mode 100644 gas/testsuite/gas/mips/mips64r2-ill.s delete mode 100644 gas/testsuite/gas/mips/mips64r2.d delete mode 100644 gas/testsuite/gas/mips/mips64r2.s delete mode 100644 gas/testsuite/gas/mips/mipsel16-e.d delete mode 100644 gas/testsuite/gas/mips/mipsel16-f.d delete mode 100644 gas/testsuite/gas/mips/mul-ilocks.d delete mode 100644 gas/testsuite/gas/mips/mul.d delete mode 100644 gas/testsuite/gas/mips/mul.s delete mode 100644 gas/testsuite/gas/mips/n32-consec.d delete mode 100644 gas/testsuite/gas/mips/n32-consec.s delete mode 100644 gas/testsuite/gas/mips/nodelay.d delete mode 100644 gas/testsuite/gas/mips/perfcount.d delete mode 100644 gas/testsuite/gas/mips/perfcount.s delete mode 100644 gas/testsuite/gas/mips/relax-swap1-mips1.d delete mode 100644 gas/testsuite/gas/mips/relax-swap1-mips2.d delete mode 100644 gas/testsuite/gas/mips/relax-swap1.l delete mode 100644 gas/testsuite/gas/mips/relax-swap1.s delete mode 100644 gas/testsuite/gas/mips/relax-swap2.d delete mode 100644 gas/testsuite/gas/mips/relax-swap2.l delete mode 100644 gas/testsuite/gas/mips/relax-swap2.s delete mode 100644 gas/testsuite/gas/mips/relax.d delete mode 100644 gas/testsuite/gas/mips/relax.l delete mode 100644 gas/testsuite/gas/mips/relax.s delete mode 100644 gas/testsuite/gas/mips/rm7000.d delete mode 100644 gas/testsuite/gas/mips/rm7000.s delete mode 100644 gas/testsuite/gas/mips/rol-hw.d delete mode 100644 gas/testsuite/gas/mips/rol-hw.l delete mode 100644 gas/testsuite/gas/mips/rol.d delete mode 100644 gas/testsuite/gas/mips/rol.l delete mode 100644 gas/testsuite/gas/mips/rol.s delete mode 100644 gas/testsuite/gas/mips/rol64-hw.d delete mode 100644 gas/testsuite/gas/mips/rol64-hw.l delete mode 100644 gas/testsuite/gas/mips/rol64.d delete mode 100644 gas/testsuite/gas/mips/rol64.l delete mode 100644 gas/testsuite/gas/mips/rol64.s delete mode 100644 gas/testsuite/gas/mips/sb.d delete mode 100644 gas/testsuite/gas/mips/sb.s delete mode 100644 gas/testsuite/gas/mips/sb1-ext-mdmx.d delete mode 100644 gas/testsuite/gas/mips/sb1-ext-mdmx.s delete mode 100644 gas/testsuite/gas/mips/sb1-ext-ps.d delete mode 100644 gas/testsuite/gas/mips/sb1-ext-ps.s delete mode 100644 gas/testsuite/gas/mips/set-arch.d delete mode 100644 gas/testsuite/gas/mips/set-arch.l delete mode 100644 gas/testsuite/gas/mips/set-arch.s delete mode 100644 gas/testsuite/gas/mips/sync.d delete mode 100644 gas/testsuite/gas/mips/sync.s delete mode 100644 gas/testsuite/gas/mips/telempic.d delete mode 100644 gas/testsuite/gas/mips/tempic.d delete mode 100644 gas/testsuite/gas/mips/tmips16-e.d delete mode 100644 gas/testsuite/gas/mips/tmips16-f.d delete mode 100644 gas/testsuite/gas/mips/tmipsel16-e.d delete mode 100644 gas/testsuite/gas/mips/tmipsel16-f.d delete mode 100644 gas/testsuite/gas/mips/trap20.d delete mode 100644 gas/testsuite/gas/mips/trap20.s delete mode 100644 gas/testsuite/gas/mips/trunc.d delete mode 100644 gas/testsuite/gas/mips/trunc.s delete mode 100644 gas/testsuite/gas/mips/uld.d delete mode 100644 gas/testsuite/gas/mips/uld.s delete mode 100644 gas/testsuite/gas/mips/uld2-eb.d delete mode 100644 gas/testsuite/gas/mips/uld2-el.d delete mode 100644 gas/testsuite/gas/mips/uld2.l delete mode 100644 gas/testsuite/gas/mips/uld2.s delete mode 100644 gas/testsuite/gas/mips/ulh-empic.d delete mode 100644 gas/testsuite/gas/mips/ulh-pic.s delete mode 100644 gas/testsuite/gas/mips/ulh-svr4pic.d delete mode 100644 gas/testsuite/gas/mips/ulh-xgot.d delete mode 100644 gas/testsuite/gas/mips/ulh.d delete mode 100644 gas/testsuite/gas/mips/ulh.s delete mode 100644 gas/testsuite/gas/mips/ulh2-eb.d delete mode 100644 gas/testsuite/gas/mips/ulh2-el.d delete mode 100644 gas/testsuite/gas/mips/ulh2.l delete mode 100644 gas/testsuite/gas/mips/ulh2.s delete mode 100644 gas/testsuite/gas/mips/ulw.d delete mode 100644 gas/testsuite/gas/mips/ulw.s delete mode 100644 gas/testsuite/gas/mips/ulw2-eb-ilocks.d delete mode 100644 gas/testsuite/gas/mips/ulw2-eb.d delete mode 100644 gas/testsuite/gas/mips/ulw2-el-ilocks.d delete mode 100644 gas/testsuite/gas/mips/ulw2-el.d delete mode 100644 gas/testsuite/gas/mips/ulw2.l delete mode 100644 gas/testsuite/gas/mips/ulw2.s delete mode 100644 gas/testsuite/gas/mips/usd.d delete mode 100644 gas/testsuite/gas/mips/usd.s delete mode 100644 gas/testsuite/gas/mips/ush.d delete mode 100644 gas/testsuite/gas/mips/ush.s delete mode 100644 gas/testsuite/gas/mips/usw.d delete mode 100644 gas/testsuite/gas/mips/usw.s delete mode 100644 gas/testsuite/gas/mips/vr4111.d delete mode 100644 gas/testsuite/gas/mips/vr4111.s delete mode 100644 gas/testsuite/gas/mips/vr4120.d delete mode 100644 gas/testsuite/gas/mips/vr4120.s delete mode 100644 gas/testsuite/gas/mips/vr4122.d delete mode 100644 gas/testsuite/gas/mips/vr4122.s delete mode 100644 gas/testsuite/gas/mips/vr5400.d delete mode 100644 gas/testsuite/gas/mips/vr5400.s delete mode 100644 gas/testsuite/gas/mips/vr5500.d delete mode 100644 gas/testsuite/gas/mips/vr5500.s delete mode 100644 gas/testsuite/gas/mmix/1cjmp1b-n.d delete mode 100644 gas/testsuite/gas/mmix/1cjmp1b-r.d delete mode 100644 gas/testsuite/gas/mmix/1cjmp1b.d delete mode 100644 gas/testsuite/gas/mmix/1cjmp1b.l delete mode 100644 gas/testsuite/gas/mmix/1cjmp1b.s delete mode 100644 gas/testsuite/gas/mmix/1cjmp1brn.d delete mode 100644 gas/testsuite/gas/mmix/1hjmp1b.d delete mode 100644 gas/testsuite/gas/mmix/1hjmp1b.l delete mode 100644 gas/testsuite/gas/mmix/1hjmp1b.s delete mode 100644 gas/testsuite/gas/mmix/align-1.d delete mode 100644 gas/testsuite/gas/mmix/align-1.s delete mode 100644 gas/testsuite/gas/mmix/basep-1.d delete mode 100644 gas/testsuite/gas/mmix/basep-1.s delete mode 100644 gas/testsuite/gas/mmix/basep-10.d delete mode 100644 gas/testsuite/gas/mmix/basep-10.s delete mode 100644 gas/testsuite/gas/mmix/basep-11.d delete mode 100644 gas/testsuite/gas/mmix/basep-11.s delete mode 100644 gas/testsuite/gas/mmix/basep-1b.d delete mode 100644 gas/testsuite/gas/mmix/basep-2.d delete mode 100644 gas/testsuite/gas/mmix/basep-2.s delete mode 100644 gas/testsuite/gas/mmix/basep-2b.d delete mode 100644 gas/testsuite/gas/mmix/basep-3.d delete mode 100644 gas/testsuite/gas/mmix/basep-3.s delete mode 100644 gas/testsuite/gas/mmix/basep-3b.d delete mode 100644 gas/testsuite/gas/mmix/basep-4.d delete mode 100644 gas/testsuite/gas/mmix/basep-5.d delete mode 100644 gas/testsuite/gas/mmix/basep-6.d delete mode 100644 gas/testsuite/gas/mmix/basep-7.d delete mode 100644 gas/testsuite/gas/mmix/basep-8.d delete mode 100644 gas/testsuite/gas/mmix/basep-8.s delete mode 100644 gas/testsuite/gas/mmix/basep-9.d delete mode 100644 gas/testsuite/gas/mmix/basep-9.s delete mode 100644 gas/testsuite/gas/mmix/bspec-1.d delete mode 100644 gas/testsuite/gas/mmix/bspec-1.s delete mode 100644 gas/testsuite/gas/mmix/bspec-2.d delete mode 100644 gas/testsuite/gas/mmix/bspec-2.s delete mode 100644 gas/testsuite/gas/mmix/builtin1.d delete mode 100644 gas/testsuite/gas/mmix/builtin1.s delete mode 100644 gas/testsuite/gas/mmix/builtin2.d delete mode 100644 gas/testsuite/gas/mmix/builtin3.d delete mode 100644 gas/testsuite/gas/mmix/byte-1.d delete mode 100644 gas/testsuite/gas/mmix/byte-1.s delete mode 100644 gas/testsuite/gas/mmix/bz-c.d delete mode 100644 gas/testsuite/gas/mmix/bz-c.s delete mode 100644 gas/testsuite/gas/mmix/comment-1.d delete mode 100644 gas/testsuite/gas/mmix/comment-1.s delete mode 100644 gas/testsuite/gas/mmix/comment-2.d delete mode 100644 gas/testsuite/gas/mmix/comment-2.s delete mode 100644 gas/testsuite/gas/mmix/comment-3.d delete mode 100644 gas/testsuite/gas/mmix/comment-3.s delete mode 100644 gas/testsuite/gas/mmix/cons-1.d delete mode 100644 gas/testsuite/gas/mmix/cons-1.s delete mode 100644 gas/testsuite/gas/mmix/cons-2.d delete mode 100644 gas/testsuite/gas/mmix/cons-2.s delete mode 100644 gas/testsuite/gas/mmix/err-bpo1.s delete mode 100644 gas/testsuite/gas/mmix/err-bpo2.s delete mode 100644 gas/testsuite/gas/mmix/err-bpo3.s delete mode 100644 gas/testsuite/gas/mmix/err-bpo4.s delete mode 100644 gas/testsuite/gas/mmix/err-bpo5.s delete mode 100644 gas/testsuite/gas/mmix/err-bpo6.s delete mode 100644 gas/testsuite/gas/mmix/err-bspec-1.s delete mode 100644 gas/testsuite/gas/mmix/err-bspec-2.s delete mode 100644 gas/testsuite/gas/mmix/err-bspec-3.s delete mode 100644 gas/testsuite/gas/mmix/err-bspec-4.s delete mode 100644 gas/testsuite/gas/mmix/err-bspec-5.s delete mode 100644 gas/testsuite/gas/mmix/err-builtin.s delete mode 100644 gas/testsuite/gas/mmix/err-byte1.s delete mode 100644 gas/testsuite/gas/mmix/err-byte2.s delete mode 100644 gas/testsuite/gas/mmix/err-case.s delete mode 100644 gas/testsuite/gas/mmix/err-fb-1.s delete mode 100644 gas/testsuite/gas/mmix/err-greg1.s delete mode 100644 gas/testsuite/gas/mmix/err-insn.s delete mode 100644 gas/testsuite/gas/mmix/err-is-1.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-1.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-2.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-3.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-4.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-5.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-6.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-7.s delete mode 100644 gas/testsuite/gas/mmix/err-loc-8.s delete mode 100644 gas/testsuite/gas/mmix/err-local1.s delete mode 100644 gas/testsuite/gas/mmix/err-local2.s delete mode 100644 gas/testsuite/gas/mmix/err-ser-1.s delete mode 100644 gas/testsuite/gas/mmix/err-set.s delete mode 100644 gas/testsuite/gas/mmix/expr-1.d delete mode 100644 gas/testsuite/gas/mmix/expr-1.s delete mode 100644 gas/testsuite/gas/mmix/fb-1.d delete mode 100644 gas/testsuite/gas/mmix/fb-1.s delete mode 100644 gas/testsuite/gas/mmix/fb-2.d delete mode 100644 gas/testsuite/gas/mmix/fb-2.s delete mode 100644 gas/testsuite/gas/mmix/get-op-r.d delete mode 100644 gas/testsuite/gas/mmix/get-op.d delete mode 100644 gas/testsuite/gas/mmix/get-op.l delete mode 100644 gas/testsuite/gas/mmix/get-op.s delete mode 100644 gas/testsuite/gas/mmix/geta-c.d delete mode 100644 gas/testsuite/gas/mmix/geta-c.s delete mode 100644 gas/testsuite/gas/mmix/geta-op-r.d delete mode 100644 gas/testsuite/gas/mmix/geta-op.d delete mode 100644 gas/testsuite/gas/mmix/geta-op.l delete mode 100644 gas/testsuite/gas/mmix/geta-op.s delete mode 100644 gas/testsuite/gas/mmix/geta-opn.d delete mode 100644 gas/testsuite/gas/mmix/geta-oprn.d delete mode 100644 gas/testsuite/gas/mmix/greg1.d delete mode 100644 gas/testsuite/gas/mmix/greg1.s delete mode 100644 gas/testsuite/gas/mmix/greg1a.d delete mode 100644 gas/testsuite/gas/mmix/greg2.d delete mode 100644 gas/testsuite/gas/mmix/greg2.s delete mode 100644 gas/testsuite/gas/mmix/greg2a.d delete mode 100644 gas/testsuite/gas/mmix/greg3.d delete mode 100644 gas/testsuite/gas/mmix/greg3.s delete mode 100644 gas/testsuite/gas/mmix/greg4.d delete mode 100644 gas/testsuite/gas/mmix/greg4.s delete mode 100644 gas/testsuite/gas/mmix/greg5.d delete mode 100644 gas/testsuite/gas/mmix/greg5.s delete mode 100644 gas/testsuite/gas/mmix/greg6.d delete mode 100644 gas/testsuite/gas/mmix/greg6.s delete mode 100644 gas/testsuite/gas/mmix/greg7.d delete mode 100644 gas/testsuite/gas/mmix/greg7.s delete mode 100644 gas/testsuite/gas/mmix/greg8.d delete mode 100644 gas/testsuite/gas/mmix/greg8.s delete mode 100644 gas/testsuite/gas/mmix/greg9.d delete mode 100644 gas/testsuite/gas/mmix/greg9.s delete mode 100644 gas/testsuite/gas/mmix/hex-r.d delete mode 100644 gas/testsuite/gas/mmix/hex.d delete mode 100644 gas/testsuite/gas/mmix/hex.l delete mode 100644 gas/testsuite/gas/mmix/hex.s delete mode 100644 gas/testsuite/gas/mmix/is-1.d delete mode 100644 gas/testsuite/gas/mmix/is-1.s delete mode 100644 gas/testsuite/gas/mmix/jmp-op-n.d delete mode 100644 gas/testsuite/gas/mmix/jmp-op-r.d delete mode 100644 gas/testsuite/gas/mmix/jmp-op.d delete mode 100644 gas/testsuite/gas/mmix/jmp-op.l delete mode 100644 gas/testsuite/gas/mmix/jmp-op.s delete mode 100644 gas/testsuite/gas/mmix/jmp-oprn.d delete mode 100644 gas/testsuite/gas/mmix/jump-c.d delete mode 100644 gas/testsuite/gas/mmix/jump-c.s delete mode 100644 gas/testsuite/gas/mmix/list-in-n.d delete mode 100644 gas/testsuite/gas/mmix/list-in-r.d delete mode 100644 gas/testsuite/gas/mmix/list-in-rn.d delete mode 100644 gas/testsuite/gas/mmix/list-insns.d delete mode 100644 gas/testsuite/gas/mmix/list-insns.l delete mode 100644 gas/testsuite/gas/mmix/list-insns.s delete mode 100644 gas/testsuite/gas/mmix/list-pseudoints.l delete mode 100644 gas/testsuite/gas/mmix/list-pseudoints.s delete mode 100644 gas/testsuite/gas/mmix/list-textfirst delete mode 100644 gas/testsuite/gas/mmix/list-textfirst.l delete mode 100644 gas/testsuite/gas/mmix/list-textfirst.s delete mode 100644 gas/testsuite/gas/mmix/loc-1.d delete mode 100644 gas/testsuite/gas/mmix/loc-1.s delete mode 100644 gas/testsuite/gas/mmix/loc-2.d delete mode 100644 gas/testsuite/gas/mmix/loc-2.s delete mode 100644 gas/testsuite/gas/mmix/loc-3.d delete mode 100644 gas/testsuite/gas/mmix/loc-3.s delete mode 100644 gas/testsuite/gas/mmix/loc-4.d delete mode 100644 gas/testsuite/gas/mmix/loc-4.s delete mode 100644 gas/testsuite/gas/mmix/loc-5.d delete mode 100644 gas/testsuite/gas/mmix/loc-5.s delete mode 100644 gas/testsuite/gas/mmix/local-1.d delete mode 100644 gas/testsuite/gas/mmix/local-1.s delete mode 100644 gas/testsuite/gas/mmix/locall1.d delete mode 100644 gas/testsuite/gas/mmix/locall1.s delete mode 100644 gas/testsuite/gas/mmix/mmix-err.exp delete mode 100644 gas/testsuite/gas/mmix/mmix-list.exp delete mode 100644 gas/testsuite/gas/mmix/mmix.exp delete mode 100644 gas/testsuite/gas/mmix/odd-1.d delete mode 100644 gas/testsuite/gas/mmix/odd-1.s delete mode 100644 gas/testsuite/gas/mmix/op-0-1.d delete mode 100644 gas/testsuite/gas/mmix/op-0-1.s delete mode 100644 gas/testsuite/gas/mmix/op-0-1s.d delete mode 100644 gas/testsuite/gas/mmix/op-0-2.d delete mode 100644 gas/testsuite/gas/mmix/pop-op-r.d delete mode 100644 gas/testsuite/gas/mmix/pop-op.d delete mode 100644 gas/testsuite/gas/mmix/pop-op.l delete mode 100644 gas/testsuite/gas/mmix/pop-op.s delete mode 100644 gas/testsuite/gas/mmix/prefix1.d delete mode 100644 gas/testsuite/gas/mmix/prefix1.s delete mode 100644 gas/testsuite/gas/mmix/prefix2.d delete mode 100644 gas/testsuite/gas/mmix/prefix2.s delete mode 100644 gas/testsuite/gas/mmix/prefix3.d delete mode 100644 gas/testsuite/gas/mmix/prefix3.s delete mode 100644 gas/testsuite/gas/mmix/pseudo-1.d delete mode 100644 gas/testsuite/gas/mmix/pseudo-1.s delete mode 100644 gas/testsuite/gas/mmix/pushgo-op-r.d delete mode 100644 gas/testsuite/gas/mmix/pushgo-op.d delete mode 100644 gas/testsuite/gas/mmix/pushgo-op.l delete mode 100644 gas/testsuite/gas/mmix/pushgo-op.s delete mode 100644 gas/testsuite/gas/mmix/pushj-c.d delete mode 100644 gas/testsuite/gas/mmix/pushj-c.s delete mode 100644 gas/testsuite/gas/mmix/pushj-cs.d delete mode 100644 gas/testsuite/gas/mmix/put-op-r.d delete mode 100644 gas/testsuite/gas/mmix/put-op.d delete mode 100644 gas/testsuite/gas/mmix/put-op.l delete mode 100644 gas/testsuite/gas/mmix/put-op.s delete mode 100644 gas/testsuite/gas/mmix/reg-op-r.d delete mode 100644 gas/testsuite/gas/mmix/reg-op.d delete mode 100644 gas/testsuite/gas/mmix/reg-op.l delete mode 100644 gas/testsuite/gas/mmix/reg-op.s delete mode 100644 gas/testsuite/gas/mmix/reg3-op-r.d delete mode 100644 gas/testsuite/gas/mmix/reg3-op.d delete mode 100644 gas/testsuite/gas/mmix/reg3-op.l delete mode 100644 gas/testsuite/gas/mmix/reg3-op.s delete mode 100644 gas/testsuite/gas/mmix/regt-op-r.d delete mode 100644 gas/testsuite/gas/mmix/regt-op.d delete mode 100644 gas/testsuite/gas/mmix/regt-op.l delete mode 100644 gas/testsuite/gas/mmix/regt-op.s delete mode 100644 gas/testsuite/gas/mmix/regx-op-r.d delete mode 100644 gas/testsuite/gas/mmix/regx-op.d delete mode 100644 gas/testsuite/gas/mmix/regx-op.l delete mode 100644 gas/testsuite/gas/mmix/regx-op.s delete mode 100644 gas/testsuite/gas/mmix/regy-op-r.d delete mode 100644 gas/testsuite/gas/mmix/regy-op.d delete mode 100644 gas/testsuite/gas/mmix/regy-op.l delete mode 100644 gas/testsuite/gas/mmix/regy-op.s delete mode 100644 gas/testsuite/gas/mmix/relax1-n.d delete mode 100644 gas/testsuite/gas/mmix/relax1-r.d delete mode 100644 gas/testsuite/gas/mmix/relax1-rn.d delete mode 100644 gas/testsuite/gas/mmix/relax1.d delete mode 100644 gas/testsuite/gas/mmix/relax1.l delete mode 100644 gas/testsuite/gas/mmix/relax1.s delete mode 100644 gas/testsuite/gas/mmix/relax2.d delete mode 100644 gas/testsuite/gas/mmix/relax2.s delete mode 100644 gas/testsuite/gas/mmix/reloc16-n.d delete mode 100644 gas/testsuite/gas/mmix/reloc16-r.d delete mode 100644 gas/testsuite/gas/mmix/reloc16.d delete mode 100644 gas/testsuite/gas/mmix/reloc16.l delete mode 100644 gas/testsuite/gas/mmix/reloc16.s delete mode 100644 gas/testsuite/gas/mmix/reloc8-r.d delete mode 100644 gas/testsuite/gas/mmix/reloc8.d delete mode 100644 gas/testsuite/gas/mmix/reloc8.l delete mode 100644 gas/testsuite/gas/mmix/reloc8.s delete mode 100644 gas/testsuite/gas/mmix/relocl-n.d delete mode 100644 gas/testsuite/gas/mmix/reloclab-r.d delete mode 100644 gas/testsuite/gas/mmix/reloclab-rs.d delete mode 100644 gas/testsuite/gas/mmix/reloclab-s.d delete mode 100644 gas/testsuite/gas/mmix/reloclab.d delete mode 100644 gas/testsuite/gas/mmix/reloclab.l delete mode 100644 gas/testsuite/gas/mmix/reloclab.s delete mode 100644 gas/testsuite/gas/mmix/reloclrn.d delete mode 100644 gas/testsuite/gas/mmix/relocxrn.d delete mode 100644 gas/testsuite/gas/mmix/resume-op-r.d delete mode 100644 gas/testsuite/gas/mmix/resume-op.d delete mode 100644 gas/testsuite/gas/mmix/resume-op.l delete mode 100644 gas/testsuite/gas/mmix/resume-op.s delete mode 100644 gas/testsuite/gas/mmix/round2-op-r.d delete mode 100644 gas/testsuite/gas/mmix/round2-op.d delete mode 100644 gas/testsuite/gas/mmix/round2-op.l delete mode 100644 gas/testsuite/gas/mmix/round2-op.s delete mode 100644 gas/testsuite/gas/mmix/roundi-op-r.d delete mode 100644 gas/testsuite/gas/mmix/roundi-op.d delete mode 100644 gas/testsuite/gas/mmix/roundi-op.l delete mode 100644 gas/testsuite/gas/mmix/roundi-op.s delete mode 100644 gas/testsuite/gas/mmix/roundr-op-r.d delete mode 100644 gas/testsuite/gas/mmix/roundr-op.d delete mode 100644 gas/testsuite/gas/mmix/roundr-op.l delete mode 100644 gas/testsuite/gas/mmix/roundr-op.s delete mode 100644 gas/testsuite/gas/mmix/save-op-r.d delete mode 100644 gas/testsuite/gas/mmix/save-op.d delete mode 100644 gas/testsuite/gas/mmix/save-op.l delete mode 100644 gas/testsuite/gas/mmix/save-op.s delete mode 100644 gas/testsuite/gas/mmix/set-r.d delete mode 100644 gas/testsuite/gas/mmix/set.d delete mode 100644 gas/testsuite/gas/mmix/set.l delete mode 100644 gas/testsuite/gas/mmix/set.s delete mode 100644 gas/testsuite/gas/mmix/swym-op-r.d delete mode 100644 gas/testsuite/gas/mmix/swym-op.d delete mode 100644 gas/testsuite/gas/mmix/swym-op.l delete mode 100644 gas/testsuite/gas/mmix/swym-op.s delete mode 100644 gas/testsuite/gas/mmix/sym-1.d delete mode 100644 gas/testsuite/gas/mmix/sym-1.s delete mode 100644 gas/testsuite/gas/mmix/sync-op-r.d delete mode 100644 gas/testsuite/gas/mmix/sync-op.d delete mode 100644 gas/testsuite/gas/mmix/sync-op.l delete mode 100644 gas/testsuite/gas/mmix/sync-op.s delete mode 100644 gas/testsuite/gas/mmix/two-op-r.d delete mode 100644 gas/testsuite/gas/mmix/two-op.d delete mode 100644 gas/testsuite/gas/mmix/two-op.l delete mode 100644 gas/testsuite/gas/mmix/two-op.s delete mode 100644 gas/testsuite/gas/mmix/unsave-op-r.d delete mode 100644 gas/testsuite/gas/mmix/unsave-op.d delete mode 100644 gas/testsuite/gas/mmix/unsave-op.l delete mode 100644 gas/testsuite/gas/mmix/unsave-op.s delete mode 100644 gas/testsuite/gas/mmix/weak1-s.d delete mode 100644 gas/testsuite/gas/mmix/weak1.d delete mode 100644 gas/testsuite/gas/mmix/weak1.s delete mode 100644 gas/testsuite/gas/mmix/zerop-1.d delete mode 100644 gas/testsuite/gas/mmix/zerop-1.s delete mode 100644 gas/testsuite/gas/mn10200/add.s delete mode 100644 gas/testsuite/gas/mn10200/basic.exp delete mode 100644 gas/testsuite/gas/mn10200/bcc.s delete mode 100644 gas/testsuite/gas/mn10200/bccx.s delete mode 100644 gas/testsuite/gas/mn10200/bit.s delete mode 100644 gas/testsuite/gas/mn10200/cmp.s delete mode 100644 gas/testsuite/gas/mn10200/ext.s delete mode 100644 gas/testsuite/gas/mn10200/logical.s delete mode 100644 gas/testsuite/gas/mn10200/mov1.s delete mode 100644 gas/testsuite/gas/mn10200/mov2.s delete mode 100644 gas/testsuite/gas/mn10200/mov3.s delete mode 100644 gas/testsuite/gas/mn10200/mov4.s delete mode 100644 gas/testsuite/gas/mn10200/movb.s delete mode 100644 gas/testsuite/gas/mn10200/movbu.s delete mode 100644 gas/testsuite/gas/mn10200/movx.s delete mode 100644 gas/testsuite/gas/mn10200/muldiv.s delete mode 100644 gas/testsuite/gas/mn10200/other.s delete mode 100644 gas/testsuite/gas/mn10200/shift.s delete mode 100644 gas/testsuite/gas/mn10200/sub.s delete mode 100644 gas/testsuite/gas/mn10300/add.s delete mode 100644 gas/testsuite/gas/mn10300/am33-2.c delete mode 100644 gas/testsuite/gas/mn10300/am33-2.d delete mode 100644 gas/testsuite/gas/mn10300/am33-2.s delete mode 100644 gas/testsuite/gas/mn10300/am33.s delete mode 100644 gas/testsuite/gas/mn10300/am33_2.s delete mode 100644 gas/testsuite/gas/mn10300/am33_3.s delete mode 100644 gas/testsuite/gas/mn10300/am33_4.s delete mode 100644 gas/testsuite/gas/mn10300/am33_5.s delete mode 100644 gas/testsuite/gas/mn10300/am33_6.s delete mode 100644 gas/testsuite/gas/mn10300/am33_7.s delete mode 100644 gas/testsuite/gas/mn10300/am33_8.s delete mode 100644 gas/testsuite/gas/mn10300/basic.exp delete mode 100644 gas/testsuite/gas/mn10300/bcc.s delete mode 100644 gas/testsuite/gas/mn10300/bit.s delete mode 100644 gas/testsuite/gas/mn10300/cmp.s delete mode 100644 gas/testsuite/gas/mn10300/ext.s delete mode 100644 gas/testsuite/gas/mn10300/extend.s delete mode 100644 gas/testsuite/gas/mn10300/logical.s delete mode 100644 gas/testsuite/gas/mn10300/loop.s delete mode 100644 gas/testsuite/gas/mn10300/mov1.s delete mode 100644 gas/testsuite/gas/mn10300/mov2.s delete mode 100644 gas/testsuite/gas/mn10300/mov3.s delete mode 100644 gas/testsuite/gas/mn10300/mov4.s delete mode 100644 gas/testsuite/gas/mn10300/mov5.s delete mode 100644 gas/testsuite/gas/mn10300/movbu.s delete mode 100644 gas/testsuite/gas/mn10300/movhu.s delete mode 100644 gas/testsuite/gas/mn10300/movm.s delete mode 100644 gas/testsuite/gas/mn10300/movpc.l delete mode 100644 gas/testsuite/gas/mn10300/movpc.s delete mode 100644 gas/testsuite/gas/mn10300/muldiv.s delete mode 100644 gas/testsuite/gas/mn10300/other.s delete mode 100644 gas/testsuite/gas/mn10300/shift.s delete mode 100644 gas/testsuite/gas/mn10300/sub.s delete mode 100644 gas/testsuite/gas/mn10300/udf.s delete mode 100644 gas/testsuite/gas/mri/char.d delete mode 100644 gas/testsuite/gas/mri/char.s delete mode 100644 gas/testsuite/gas/mri/comment.d delete mode 100644 gas/testsuite/gas/mri/comment.s delete mode 100644 gas/testsuite/gas/mri/common.d delete mode 100644 gas/testsuite/gas/mri/common.s delete mode 100644 gas/testsuite/gas/mri/constants.d delete mode 100644 gas/testsuite/gas/mri/constants.s delete mode 100644 gas/testsuite/gas/mri/empty.s delete mode 100644 gas/testsuite/gas/mri/equ.d delete mode 100644 gas/testsuite/gas/mri/equ.s delete mode 100644 gas/testsuite/gas/mri/expr.d delete mode 100644 gas/testsuite/gas/mri/expr.s delete mode 100644 gas/testsuite/gas/mri/float.d delete mode 100644 gas/testsuite/gas/mri/float.s delete mode 100644 gas/testsuite/gas/mri/for.d delete mode 100644 gas/testsuite/gas/mri/for.s delete mode 100644 gas/testsuite/gas/mri/if.d delete mode 100644 gas/testsuite/gas/mri/if.s delete mode 100644 gas/testsuite/gas/mri/immconst.d delete mode 100644 gas/testsuite/gas/mri/label.d delete mode 100644 gas/testsuite/gas/mri/label.s delete mode 100644 gas/testsuite/gas/mri/moveml.d delete mode 100644 gas/testsuite/gas/mri/moveml.s delete mode 100644 gas/testsuite/gas/mri/mri.exp delete mode 100644 gas/testsuite/gas/mri/repeat.d delete mode 100644 gas/testsuite/gas/mri/repeat.s delete mode 100644 gas/testsuite/gas/mri/semi.d delete mode 100644 gas/testsuite/gas/mri/semi.s delete mode 100644 gas/testsuite/gas/mri/while.d delete mode 100644 gas/testsuite/gas/mri/while.s delete mode 100644 gas/testsuite/gas/msp430/msp430.exp delete mode 100644 gas/testsuite/gas/msp430/opcode.d delete mode 100644 gas/testsuite/gas/msp430/opcode.s delete mode 100644 gas/testsuite/gas/openrisc/addi.d delete mode 100644 gas/testsuite/gas/openrisc/addi.s delete mode 100644 gas/testsuite/gas/openrisc/allinsn.d delete mode 100644 gas/testsuite/gas/openrisc/allinsn.exp delete mode 100644 gas/testsuite/gas/openrisc/allinsn.s delete mode 100644 gas/testsuite/gas/openrisc/lohi.d delete mode 100644 gas/testsuite/gas/openrisc/lohi.s delete mode 100644 gas/testsuite/gas/openrisc/store.d delete mode 100644 gas/testsuite/gas/openrisc/store.s delete mode 100644 gas/testsuite/gas/pdp11/opcode.d delete mode 100644 gas/testsuite/gas/pdp11/opcode.s delete mode 100644 gas/testsuite/gas/pdp11/pdp11.exp delete mode 100644 gas/testsuite/gas/pj/ops.d delete mode 100644 gas/testsuite/gas/pj/ops.s delete mode 100644 gas/testsuite/gas/pj/pj.exp delete mode 100644 gas/testsuite/gas/ppc/aix.exp delete mode 100644 gas/testsuite/gas/ppc/align.s delete mode 100644 gas/testsuite/gas/ppc/altivec.d delete mode 100644 gas/testsuite/gas/ppc/altivec.s delete mode 100644 gas/testsuite/gas/ppc/altivec_xcoff.d delete mode 100644 gas/testsuite/gas/ppc/altivec_xcoff.s delete mode 100644 gas/testsuite/gas/ppc/altivec_xcoff64.d delete mode 100644 gas/testsuite/gas/ppc/altivec_xcoff64.s delete mode 100644 gas/testsuite/gas/ppc/astest.d delete mode 100644 gas/testsuite/gas/ppc/astest.s delete mode 100644 gas/testsuite/gas/ppc/astest2.d delete mode 100644 gas/testsuite/gas/ppc/astest2.s delete mode 100644 gas/testsuite/gas/ppc/astest2_64.d delete mode 100644 gas/testsuite/gas/ppc/astest2_64.s delete mode 100644 gas/testsuite/gas/ppc/astest64.d delete mode 100644 gas/testsuite/gas/ppc/astest64.s delete mode 100644 gas/testsuite/gas/ppc/booke.d delete mode 100644 gas/testsuite/gas/ppc/booke.s delete mode 100644 gas/testsuite/gas/ppc/booke_xcoff.d delete mode 100644 gas/testsuite/gas/ppc/booke_xcoff.s delete mode 100644 gas/testsuite/gas/ppc/booke_xcoff64.d delete mode 100644 gas/testsuite/gas/ppc/booke_xcoff64.s delete mode 100644 gas/testsuite/gas/ppc/e500.d delete mode 100644 gas/testsuite/gas/ppc/e500.s delete mode 100755 gas/testsuite/gas/ppc/generate.sh delete mode 100644 gas/testsuite/gas/ppc/machine.d delete mode 100644 gas/testsuite/gas/ppc/machine.s delete mode 100644 gas/testsuite/gas/ppc/power4.d delete mode 100644 gas/testsuite/gas/ppc/power4.s delete mode 100644 gas/testsuite/gas/ppc/ppc.exp delete mode 100644 gas/testsuite/gas/ppc/simpshft.d delete mode 100644 gas/testsuite/gas/ppc/simpshft.s delete mode 100644 gas/testsuite/gas/ppc/test1elf.asm delete mode 100644 gas/testsuite/gas/ppc/test1elf32.d delete mode 100644 gas/testsuite/gas/ppc/test1elf32.s delete mode 100644 gas/testsuite/gas/ppc/test1elf64.d delete mode 100644 gas/testsuite/gas/ppc/test1elf64.s delete mode 100644 gas/testsuite/gas/ppc/test1xcoff.asm delete mode 100644 gas/testsuite/gas/ppc/test1xcoff32.d delete mode 100644 gas/testsuite/gas/ppc/test1xcoff32.s delete mode 100644 gas/testsuite/gas/ppc/textalign-xcoff-001.d delete mode 100644 gas/testsuite/gas/ppc/textalign-xcoff-001.s delete mode 100644 gas/testsuite/gas/ppc/textalign-xcoff-002.d delete mode 100644 gas/testsuite/gas/s390/opcode.d delete mode 100644 gas/testsuite/gas/s390/opcode.s delete mode 100644 gas/testsuite/gas/s390/opcode64.d delete mode 100644 gas/testsuite/gas/s390/opcode64.s delete mode 100644 gas/testsuite/gas/s390/operands.d delete mode 100644 gas/testsuite/gas/s390/operands.s delete mode 100644 gas/testsuite/gas/s390/operands64.d delete mode 100644 gas/testsuite/gas/s390/operands64.s delete mode 100644 gas/testsuite/gas/s390/reloc.d delete mode 100644 gas/testsuite/gas/s390/reloc.s delete mode 100644 gas/testsuite/gas/s390/reloc64.d delete mode 100644 gas/testsuite/gas/s390/reloc64.s delete mode 100644 gas/testsuite/gas/s390/s390.exp delete mode 100644 gas/testsuite/gas/sh/basic.exp delete mode 100644 gas/testsuite/gas/sh/dsp.d delete mode 100644 gas/testsuite/gas/sh/dsp.s delete mode 100644 gas/testsuite/gas/sh/err-1.s delete mode 100644 gas/testsuite/gas/sh/err-at.s delete mode 100644 gas/testsuite/gas/sh/err-be.s delete mode 100644 gas/testsuite/gas/sh/err-le.s delete mode 100644 gas/testsuite/gas/sh/err-sh4a-fp.s delete mode 100644 gas/testsuite/gas/sh/err-sh4a.s delete mode 100644 gas/testsuite/gas/sh/err-sh4al-dsp.s delete mode 100644 gas/testsuite/gas/sh/err.exp delete mode 100644 gas/testsuite/gas/sh/fp.s delete mode 100644 gas/testsuite/gas/sh/pcrel-coff.d delete mode 100644 gas/testsuite/gas/sh/pcrel-coff.s delete mode 100644 gas/testsuite/gas/sh/pcrel.d delete mode 100644 gas/testsuite/gas/sh/pcrel.l delete mode 100644 gas/testsuite/gas/sh/pcrel.s delete mode 100644 gas/testsuite/gas/sh/pcrel2.d delete mode 100644 gas/testsuite/gas/sh/pcrel2.s delete mode 100644 gas/testsuite/gas/sh/pic.d delete mode 100644 gas/testsuite/gas/sh/pic.s delete mode 100644 gas/testsuite/gas/sh/sh4a-dsp.d delete mode 100644 gas/testsuite/gas/sh/sh4a-dsp.s delete mode 100644 gas/testsuite/gas/sh/sh4a-fp.d delete mode 100644 gas/testsuite/gas/sh/sh4a-fp.s delete mode 100644 gas/testsuite/gas/sh/sh4a.d delete mode 100644 gas/testsuite/gas/sh/sh4a.s delete mode 100644 gas/testsuite/gas/sh/sh4al-dsp.d delete mode 100644 gas/testsuite/gas/sh/sh4al-dsp.s delete mode 100644 gas/testsuite/gas/sh/sh64/abi-32.d delete mode 100644 gas/testsuite/gas/sh/sh64/abi-32.s delete mode 100644 gas/testsuite/gas/sh/sh64/abi-64.d delete mode 100644 gas/testsuite/gas/sh/sh64/abi-64.s delete mode 100644 gas/testsuite/gas/sh/sh64/basic-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/basic-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/case-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/case-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/case-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange1-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange1-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange1.s delete mode 100644 gas/testsuite/gas/sh/sh64/crange2-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange2-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange2-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange2.s delete mode 100644 gas/testsuite/gas/sh/sh64/crange3-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange3.s delete mode 100644 gas/testsuite/gas/sh/sh64/crange4-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange4.s delete mode 100644 gas/testsuite/gas/sh/sh64/crange5-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/crange5.s delete mode 100644 gas/testsuite/gas/sh/sh64/creg-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/creg-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/creg-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/creg-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/datal-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/datal-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/datal-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/datal-3.s delete mode 100644 gas/testsuite/gas/sh/sh64/datal32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/datal32-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/datal64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/datal64-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/endian-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/endian-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/endian-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/endian-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-3.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-4.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-abi-32.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-abi-64.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-dsp.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-pt-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-ptb-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/err-ptb-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/err.exp delete mode 100644 gas/testsuite/gas/sh/sh64/immexpr1.s delete mode 100644 gas/testsuite/gas/sh/sh64/immexpr2.s delete mode 100644 gas/testsuite/gas/sh/sh64/immexpr32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/immexpr32-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/immexpr64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/immexpr64-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/lineno.d delete mode 100644 gas/testsuite/gas/sh/sh64/lineno.s delete mode 100644 gas/testsuite/gas/sh/sh64/localcom-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/localcom-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/mix-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/mix-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/mix-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/movi-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/movi-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi-3.s delete mode 100644 gas/testsuite/gas/sh/sh64/movi32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi32-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi32-noexp-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi64-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi64-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/movi64-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/movi64-noexp-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/pt-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/pt-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt32-noexp-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt64-32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt64-32-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/pt64-noexp-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptc-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/ptc32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptc64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptc64-32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptext-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/ptext32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptext64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptext64-32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/rel-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/rel-3.s delete mode 100644 gas/testsuite/gas/sh/sh64/rel-4.s delete mode 100644 gas/testsuite/gas/sh/sh64/rel-5.s delete mode 100644 gas/testsuite/gas/sh/sh64/rel32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel32-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel32-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel32-4.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel32-5.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel64-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel64-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel64-4.d delete mode 100644 gas/testsuite/gas/sh/sh64/rel64-5.d delete mode 100644 gas/testsuite/gas/sh/sh64/relax-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/relax-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/relax-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/relax-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/relax-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/relax-3.s delete mode 100644 gas/testsuite/gas/sh/sh64/sh64.exp delete mode 100644 gas/testsuite/gas/sh/sh64/shift-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/shift-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/shift-3.s delete mode 100644 gas/testsuite/gas/sh/sh64/shift32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/shift32-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/shift32-noexp-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/shift64-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/shift64-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/shift64-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/shift64-noexp-3.d delete mode 100644 gas/testsuite/gas/sh/sh64/syntax-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/syntax-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/syntax-2.d delete mode 100644 gas/testsuite/gas/sh/sh64/syntax-2.s delete mode 100644 gas/testsuite/gas/sh/sh64/ua-1.s delete mode 100644 gas/testsuite/gas/sh/sh64/ua32-1.d delete mode 100644 gas/testsuite/gas/sh/sh64/ua64-1.d delete mode 100644 gas/testsuite/gas/sh/tlsd.d delete mode 100644 gas/testsuite/gas/sh/tlsd.s delete mode 100644 gas/testsuite/gas/sh/tlsnopic.d delete mode 100644 gas/testsuite/gas/sh/tlsnopic.s delete mode 100644 gas/testsuite/gas/sh/tlspic.d delete mode 100644 gas/testsuite/gas/sh/tlspic.s delete mode 100644 gas/testsuite/gas/sparc-solaris/addend.exp delete mode 100644 gas/testsuite/gas/sparc-solaris/addend.s delete mode 100644 gas/testsuite/gas/sparc-solaris/gas.exp delete mode 100644 gas/testsuite/gas/sparc-solaris/sol-cc.s delete mode 100644 gas/testsuite/gas/sparc-solaris/sol-gcc.s delete mode 100644 gas/testsuite/gas/sparc/asi.d delete mode 100644 gas/testsuite/gas/sparc/asi.s delete mode 100644 gas/testsuite/gas/sparc/membar.d delete mode 100644 gas/testsuite/gas/sparc/membar.s delete mode 100644 gas/testsuite/gas/sparc/mism-1.s delete mode 100644 gas/testsuite/gas/sparc/mismatch.exp delete mode 100644 gas/testsuite/gas/sparc/pcrel.d delete mode 100644 gas/testsuite/gas/sparc/pcrel.s delete mode 100644 gas/testsuite/gas/sparc/pcrel64.d delete mode 100644 gas/testsuite/gas/sparc/pcrel64.s delete mode 100644 gas/testsuite/gas/sparc/plt.d delete mode 100644 gas/testsuite/gas/sparc/plt.s delete mode 100644 gas/testsuite/gas/sparc/plt64.d delete mode 100644 gas/testsuite/gas/sparc/plt64.s delete mode 100644 gas/testsuite/gas/sparc/prefetch.d delete mode 100644 gas/testsuite/gas/sparc/prefetch.s delete mode 100644 gas/testsuite/gas/sparc/rdpr.d delete mode 100644 gas/testsuite/gas/sparc/rdpr.s delete mode 100644 gas/testsuite/gas/sparc/reloc64.d delete mode 100644 gas/testsuite/gas/sparc/reloc64.s delete mode 100644 gas/testsuite/gas/sparc/set64.d delete mode 100644 gas/testsuite/gas/sparc/set64.s delete mode 100644 gas/testsuite/gas/sparc/sparc.exp delete mode 100644 gas/testsuite/gas/sparc/splet-2.d delete mode 100644 gas/testsuite/gas/sparc/splet-2.s delete mode 100644 gas/testsuite/gas/sparc/splet.d delete mode 100644 gas/testsuite/gas/sparc/splet.s delete mode 100644 gas/testsuite/gas/sparc/synth.d delete mode 100644 gas/testsuite/gas/sparc/synth.s delete mode 100644 gas/testsuite/gas/sparc/synth64.d delete mode 100644 gas/testsuite/gas/sparc/synth64.s delete mode 100644 gas/testsuite/gas/sparc/unalign.d delete mode 100644 gas/testsuite/gas/sparc/unalign.s delete mode 100644 gas/testsuite/gas/sparc/wrpr.d delete mode 100644 gas/testsuite/gas/sparc/wrpr.s delete mode 100644 gas/testsuite/gas/sun4/addend.d delete mode 100644 gas/testsuite/gas/sun4/addend.exp delete mode 100644 gas/testsuite/gas/sun4/addend.s delete mode 100644 gas/testsuite/gas/symver/symver.exp delete mode 100644 gas/testsuite/gas/symver/symver0.d delete mode 100644 gas/testsuite/gas/symver/symver0.s delete mode 100644 gas/testsuite/gas/symver/symver1.d delete mode 100644 gas/testsuite/gas/symver/symver1.s delete mode 100644 gas/testsuite/gas/symver/symver2.l delete mode 100644 gas/testsuite/gas/symver/symver2.s delete mode 100644 gas/testsuite/gas/symver/symver3.l delete mode 100644 gas/testsuite/gas/symver/symver3.s delete mode 100644 gas/testsuite/gas/symver/symver4.l delete mode 100644 gas/testsuite/gas/symver/symver4.s delete mode 100644 gas/testsuite/gas/symver/symver5.l delete mode 100644 gas/testsuite/gas/symver/symver5.s delete mode 100644 gas/testsuite/gas/symver/symver6.l delete mode 100644 gas/testsuite/gas/symver/symver6.s delete mode 100644 gas/testsuite/gas/template delete mode 100644 gas/testsuite/gas/tic4x/addressing.s delete mode 100644 gas/testsuite/gas/tic4x/addressing_c3x.d delete mode 100644 gas/testsuite/gas/tic4x/addressing_c4x.d delete mode 100644 gas/testsuite/gas/tic4x/allopcodes.S delete mode 100644 gas/testsuite/gas/tic4x/data.d delete mode 100644 gas/testsuite/gas/tic4x/data.s delete mode 100644 gas/testsuite/gas/tic4x/float.d delete mode 100644 gas/testsuite/gas/tic4x/float.s delete mode 100644 gas/testsuite/gas/tic4x/opclasses.h delete mode 100644 gas/testsuite/gas/tic4x/opcodes.s delete mode 100644 gas/testsuite/gas/tic4x/opcodes_c3x.d delete mode 100644 gas/testsuite/gas/tic4x/opcodes_c4x.d delete mode 100644 gas/testsuite/gas/tic4x/opcodes_new.d delete mode 100755 gas/testsuite/gas/tic4x/rebuild.sh delete mode 100644 gas/testsuite/gas/tic4x/registers.s delete mode 100644 gas/testsuite/gas/tic4x/registers_c3x.d delete mode 100644 gas/testsuite/gas/tic4x/registers_c4x.d delete mode 100644 gas/testsuite/gas/tic4x/tic4x.exp delete mode 100644 gas/testsuite/gas/tic4x/zeros.d delete mode 100644 gas/testsuite/gas/tic4x/zeros.s delete mode 100644 gas/testsuite/gas/tic54x/address.d delete mode 100644 gas/testsuite/gas/tic54x/address.s delete mode 100644 gas/testsuite/gas/tic54x/addrfar.d delete mode 100644 gas/testsuite/gas/tic54x/align.d delete mode 100644 gas/testsuite/gas/tic54x/align.s delete mode 100644 gas/testsuite/gas/tic54x/all-opcodes.d delete mode 100644 gas/testsuite/gas/tic54x/all-opcodes.s delete mode 100644 gas/testsuite/gas/tic54x/asg.d delete mode 100644 gas/testsuite/gas/tic54x/asg.s delete mode 100644 gas/testsuite/gas/tic54x/cons.d delete mode 100644 gas/testsuite/gas/tic54x/cons.s delete mode 100644 gas/testsuite/gas/tic54x/consfar.d delete mode 100644 gas/testsuite/gas/tic54x/extaddr.d delete mode 100644 gas/testsuite/gas/tic54x/extaddr.s delete mode 100644 gas/testsuite/gas/tic54x/field.d delete mode 100644 gas/testsuite/gas/tic54x/field.s delete mode 100644 gas/testsuite/gas/tic54x/in_mlib.asm delete mode 100644 gas/testsuite/gas/tic54x/labels.d delete mode 100644 gas/testsuite/gas/tic54x/labels.inc delete mode 100644 gas/testsuite/gas/tic54x/labels.s delete mode 100644 gas/testsuite/gas/tic54x/loop.d delete mode 100644 gas/testsuite/gas/tic54x/loop.s delete mode 100644 gas/testsuite/gas/tic54x/lp.d delete mode 100644 gas/testsuite/gas/tic54x/lp.s delete mode 100644 gas/testsuite/gas/tic54x/macro.d delete mode 100644 gas/testsuite/gas/tic54x/macro.s delete mode 100644 gas/testsuite/gas/tic54x/macro1.s delete mode 100644 gas/testsuite/gas/tic54x/macros.lib delete mode 100644 gas/testsuite/gas/tic54x/math.d delete mode 100644 gas/testsuite/gas/tic54x/math.s delete mode 100644 gas/testsuite/gas/tic54x/opcodes.d delete mode 100644 gas/testsuite/gas/tic54x/opcodes.s delete mode 100644 gas/testsuite/gas/tic54x/sections.d delete mode 100644 gas/testsuite/gas/tic54x/sections.s delete mode 100644 gas/testsuite/gas/tic54x/set.d delete mode 100644 gas/testsuite/gas/tic54x/set.s delete mode 100644 gas/testsuite/gas/tic54x/struct.d delete mode 100644 gas/testsuite/gas/tic54x/struct.s delete mode 100644 gas/testsuite/gas/tic54x/subsym.d delete mode 100644 gas/testsuite/gas/tic54x/subsym.s delete mode 100644 gas/testsuite/gas/tic54x/subsym1.s delete mode 100644 gas/testsuite/gas/tic54x/tic54x.exp delete mode 100644 gas/testsuite/gas/tic80/add.d delete mode 100644 gas/testsuite/gas/tic80/add.lst delete mode 100644 gas/testsuite/gas/tic80/add.s delete mode 100644 gas/testsuite/gas/tic80/align.d delete mode 100644 gas/testsuite/gas/tic80/align.lst delete mode 100644 gas/testsuite/gas/tic80/align.s delete mode 100644 gas/testsuite/gas/tic80/bitnum.d delete mode 100644 gas/testsuite/gas/tic80/bitnum.lst delete mode 100644 gas/testsuite/gas/tic80/bitnum.s delete mode 100644 gas/testsuite/gas/tic80/ccode.d delete mode 100644 gas/testsuite/gas/tic80/ccode.lst delete mode 100644 gas/testsuite/gas/tic80/ccode.s delete mode 100644 gas/testsuite/gas/tic80/cregops.d delete mode 100644 gas/testsuite/gas/tic80/cregops.lst delete mode 100644 gas/testsuite/gas/tic80/cregops.s delete mode 100644 gas/testsuite/gas/tic80/endmask.d delete mode 100644 gas/testsuite/gas/tic80/endmask.lst delete mode 100644 gas/testsuite/gas/tic80/endmask.s delete mode 100644 gas/testsuite/gas/tic80/float.d delete mode 100644 gas/testsuite/gas/tic80/float.lst delete mode 100644 gas/testsuite/gas/tic80/float.s delete mode 100644 gas/testsuite/gas/tic80/regops.d delete mode 100644 gas/testsuite/gas/tic80/regops.lst delete mode 100644 gas/testsuite/gas/tic80/regops.s delete mode 100644 gas/testsuite/gas/tic80/regops2.d delete mode 100644 gas/testsuite/gas/tic80/regops2.lst delete mode 100644 gas/testsuite/gas/tic80/regops2.s delete mode 100644 gas/testsuite/gas/tic80/regops3.d delete mode 100644 gas/testsuite/gas/tic80/regops3.lst delete mode 100644 gas/testsuite/gas/tic80/regops3.s delete mode 100644 gas/testsuite/gas/tic80/regops4.d delete mode 100644 gas/testsuite/gas/tic80/regops4.lst delete mode 100644 gas/testsuite/gas/tic80/regops4.s delete mode 100644 gas/testsuite/gas/tic80/relocs1.c delete mode 100644 gas/testsuite/gas/tic80/relocs1.d delete mode 100644 gas/testsuite/gas/tic80/relocs1.lst delete mode 100644 gas/testsuite/gas/tic80/relocs1.s delete mode 100644 gas/testsuite/gas/tic80/relocs1b.d delete mode 100644 gas/testsuite/gas/tic80/relocs2.c delete mode 100644 gas/testsuite/gas/tic80/relocs2.d delete mode 100644 gas/testsuite/gas/tic80/relocs2.lst delete mode 100644 gas/testsuite/gas/tic80/relocs2.s delete mode 100644 gas/testsuite/gas/tic80/relocs2b.d delete mode 100644 gas/testsuite/gas/tic80/tic80.exp delete mode 100644 gas/testsuite/gas/v850/arith.s delete mode 100644 gas/testsuite/gas/v850/basic.exp delete mode 100644 gas/testsuite/gas/v850/bit.s delete mode 100644 gas/testsuite/gas/v850/branch.s delete mode 100644 gas/testsuite/gas/v850/compare.s delete mode 100644 gas/testsuite/gas/v850/fepsw.s delete mode 100644 gas/testsuite/gas/v850/hilo.s delete mode 100644 gas/testsuite/gas/v850/hilo2.s delete mode 100644 gas/testsuite/gas/v850/jumps.s delete mode 100644 gas/testsuite/gas/v850/logical.s delete mode 100644 gas/testsuite/gas/v850/mem.s delete mode 100644 gas/testsuite/gas/v850/misc.s delete mode 100644 gas/testsuite/gas/v850/move.s delete mode 100644 gas/testsuite/gas/v850/range.s delete mode 100644 gas/testsuite/gas/v850/reloc.s delete mode 100644 gas/testsuite/gas/v850/v850e1.d delete mode 100644 gas/testsuite/gas/v850/v850e1.s delete mode 100644 gas/testsuite/gas/vax/elf-rel.d delete mode 100644 gas/testsuite/gas/vax/elf-rel.s delete mode 100644 gas/testsuite/gas/vax/quad.s delete mode 100644 gas/testsuite/gas/vax/quad_elf.s delete mode 100644 gas/testsuite/gas/vax/vax.exp delete mode 100644 gas/testsuite/gas/vtable/entry0.d delete mode 100644 gas/testsuite/gas/vtable/entry0.s delete mode 100644 gas/testsuite/gas/vtable/entry1.d delete mode 100644 gas/testsuite/gas/vtable/entry1.s delete mode 100644 gas/testsuite/gas/vtable/inherit0.d delete mode 100644 gas/testsuite/gas/vtable/inherit0.s delete mode 100644 gas/testsuite/gas/vtable/inherit1.l delete mode 100644 gas/testsuite/gas/vtable/inherit1.s delete mode 100644 gas/testsuite/gas/vtable/vtable.exp delete mode 100644 gas/testsuite/gas/xstormy16/allinsn.d delete mode 100644 gas/testsuite/gas/xstormy16/allinsn.exp delete mode 100644 gas/testsuite/gas/xstormy16/allinsn.s delete mode 100644 gas/testsuite/gas/xstormy16/allinsn.sh delete mode 100644 gas/testsuite/gas/xstormy16/gcc.d delete mode 100644 gas/testsuite/gas/xstormy16/gcc.s delete mode 100644 gas/testsuite/gas/xstormy16/gcc.sh delete mode 100644 gas/testsuite/gas/xstormy16/reloc-1.d delete mode 100644 gas/testsuite/gas/xstormy16/reloc-1.s delete mode 100644 gas/testsuite/gas/xstormy16/reloc-2.d delete mode 100644 gas/testsuite/gas/xstormy16/reloc-2.s delete mode 100644 gas/testsuite/gas/xtensa/all.exp delete mode 100644 gas/testsuite/gas/xtensa/entry_align.s delete mode 100644 gas/testsuite/gas/xtensa/entry_misalign.s delete mode 100644 gas/testsuite/gas/xtensa/entry_misalign2.s delete mode 100644 gas/testsuite/gas/xtensa/j_too_far.s delete mode 100644 gas/testsuite/gas/xtensa/loop_align.s delete mode 100644 gas/testsuite/gas/xtensa/loop_misalign.s delete mode 100644 gas/testsuite/gas/z8k/calr-backf.s delete mode 100644 gas/testsuite/gas/z8k/calr-forwf.s delete mode 100644 gas/testsuite/gas/z8k/calr.d delete mode 100644 gas/testsuite/gas/z8k/calr.s delete mode 100644 gas/testsuite/gas/z8k/ctrl-names.d delete mode 100644 gas/testsuite/gas/z8k/ctrl-names.s delete mode 100644 gas/testsuite/gas/z8k/dec.s delete mode 100644 gas/testsuite/gas/z8k/decbf.s delete mode 100644 gas/testsuite/gas/z8k/decf.s delete mode 100644 gas/testsuite/gas/z8k/djnz-backf.s delete mode 100644 gas/testsuite/gas/z8k/djnz-backf2.s delete mode 100644 gas/testsuite/gas/z8k/djnz.d delete mode 100644 gas/testsuite/gas/z8k/djnz.s delete mode 100644 gas/testsuite/gas/z8k/eidi.s delete mode 100644 gas/testsuite/gas/z8k/eidif.s delete mode 100644 gas/testsuite/gas/z8k/inc.s delete mode 100644 gas/testsuite/gas/z8k/incbf.s delete mode 100644 gas/testsuite/gas/z8k/incf.s delete mode 100644 gas/testsuite/gas/z8k/inout.d delete mode 100644 gas/testsuite/gas/z8k/inout.s delete mode 100644 gas/testsuite/gas/z8k/jmp-cc.d delete mode 100644 gas/testsuite/gas/z8k/jmp-cc.s delete mode 100644 gas/testsuite/gas/z8k/jr-back.d delete mode 100644 gas/testsuite/gas/z8k/jr-back.s delete mode 100644 gas/testsuite/gas/z8k/jr-backf.s delete mode 100644 gas/testsuite/gas/z8k/jr-forw.d delete mode 100644 gas/testsuite/gas/z8k/jr-forw.s delete mode 100644 gas/testsuite/gas/z8k/jr-forwf.s delete mode 100644 gas/testsuite/gas/z8k/ldk.s delete mode 100644 gas/testsuite/gas/z8k/ldkf.s delete mode 100644 gas/testsuite/gas/z8k/ret-cc.d delete mode 100644 gas/testsuite/gas/z8k/ret-cc.s delete mode 100644 gas/testsuite/gas/z8k/z8k.exp delete mode 100755 gas/testsuite/lib/doboth delete mode 100755 gas/testsuite/lib/doobjcmp delete mode 100755 gas/testsuite/lib/dostriptest delete mode 100755 gas/testsuite/lib/dotest delete mode 100755 gas/testsuite/lib/dounsreloc delete mode 100755 gas/testsuite/lib/dounssym delete mode 100644 gas/testsuite/lib/gas-defs.exp delete mode 100644 gas/testsuite/lib/gas-dg.exp delete mode 100755 gas/testsuite/lib/run delete mode 100644 gas/vmsconf.sh delete mode 100644 gas/write.c delete mode 100644 gas/write.h delete mode 100644 gprof/.gdbinit delete mode 100644 gprof/ChangeLog delete mode 100644 gprof/ChangeLog-9203 delete mode 100644 gprof/MAINTAINERS delete mode 100644 gprof/Makefile.am delete mode 100644 gprof/Makefile.in delete mode 100644 gprof/README delete mode 100644 gprof/TEST delete mode 100644 gprof/TODO delete mode 100644 gprof/acinclude.m4 delete mode 100644 gprof/aclocal.m4 delete mode 100644 gprof/alpha.c delete mode 100644 gprof/basic_blocks.c delete mode 100644 gprof/basic_blocks.h delete mode 100644 gprof/bb_exit_func.c delete mode 100755 gprof/bbconv.pl delete mode 100644 gprof/bsd_callg_bl.m delete mode 100644 gprof/call_graph.c delete mode 100644 gprof/call_graph.h delete mode 100644 gprof/cg_arcs.c delete mode 100644 gprof/cg_arcs.h delete mode 100644 gprof/cg_dfn.c delete mode 100644 gprof/cg_dfn.h delete mode 100644 gprof/cg_print.c delete mode 100644 gprof/cg_print.h delete mode 100755 gprof/configure delete mode 100644 gprof/configure.in delete mode 100644 gprof/corefile.c delete mode 100644 gprof/corefile.h delete mode 100644 gprof/dep-in.sed delete mode 100644 gprof/flat_bl.m delete mode 100644 gprof/fsf_callg_bl.m delete mode 100644 gprof/gconfig.in delete mode 100644 gprof/gen-c-prog.awk delete mode 100644 gprof/gmon.h delete mode 100644 gprof/gmon_io.c delete mode 100644 gprof/gmon_io.h delete mode 100644 gprof/gmon_out.h delete mode 100644 gprof/gprof.c delete mode 100644 gprof/gprof.h delete mode 100644 gprof/gprof.texi delete mode 100644 gprof/hertz.c delete mode 100644 gprof/hertz.h delete mode 100644 gprof/hist.c delete mode 100644 gprof/hist.h delete mode 100644 gprof/i386.c delete mode 100644 gprof/mips.c delete mode 100644 gprof/po/.cvsignore delete mode 100644 gprof/po/Make-in delete mode 100644 gprof/po/POTFILES.in delete mode 100644 gprof/po/da.po delete mode 100644 gprof/po/de.po delete mode 100644 gprof/po/es.po delete mode 100644 gprof/po/fr.po delete mode 100644 gprof/po/gprof.pot delete mode 100644 gprof/po/id.po delete mode 100644 gprof/po/pt_BR.po delete mode 100644 gprof/po/sv.po delete mode 100644 gprof/po/tr.po delete mode 100644 gprof/search_list.c delete mode 100644 gprof/search_list.h delete mode 100644 gprof/source.c delete mode 100644 gprof/source.h delete mode 100644 gprof/sparc.c delete mode 100644 gprof/stamp-h.in delete mode 100644 gprof/sym_ids.c delete mode 100644 gprof/sym_ids.h delete mode 100644 gprof/symtab.c delete mode 100644 gprof/symtab.h delete mode 100644 gprof/tahoe.c delete mode 100644 gprof/utils.c delete mode 100644 gprof/utils.h delete mode 100644 gprof/vax.c delete mode 100644 ld/ChangeLog delete mode 100644 ld/ChangeLog-0001 delete mode 100644 ld/ChangeLog-0203 delete mode 100644 ld/ChangeLog-9197 delete mode 100644 ld/ChangeLog-9899 delete mode 100644 ld/MAINTAINERS delete mode 100644 ld/Makefile.am delete mode 100644 ld/Makefile.in delete mode 100644 ld/NEWS delete mode 100644 ld/README delete mode 100644 ld/TODO delete mode 100644 ld/acinclude.m4 delete mode 100644 ld/aclocal.m4 delete mode 100644 ld/config.in delete mode 100755 ld/configure delete mode 100644 ld/configure.host delete mode 100644 ld/configure.in delete mode 100644 ld/configure.tgt delete mode 100644 ld/deffile.h delete mode 100644 ld/deffilep.y delete mode 100644 ld/dep-in.sed delete mode 100644 ld/emulparams/README delete mode 100644 ld/emulparams/a29k.sh delete mode 100644 ld/emulparams/aix5ppc.sh delete mode 100644 ld/emulparams/aix5rs6.sh delete mode 100644 ld/emulparams/aixppc.sh delete mode 100644 ld/emulparams/aixrs6.sh delete mode 100644 ld/emulparams/alpha.sh delete mode 100644 ld/emulparams/arcelf.sh delete mode 100644 ld/emulparams/arm_epoc_pe.sh delete mode 100644 ld/emulparams/armaoutb.sh delete mode 100644 ld/emulparams/armaoutl.sh delete mode 100644 ld/emulparams/armcoff.sh delete mode 100644 ld/emulparams/armelf.sh delete mode 100644 ld/emulparams/armelf_fbsd.sh delete mode 100644 ld/emulparams/armelf_linux.sh delete mode 100644 ld/emulparams/armelf_nbsd.sh delete mode 100644 ld/emulparams/armelf_oabi.sh delete mode 100644 ld/emulparams/armelfb.sh delete mode 100644 ld/emulparams/armelfb_linux.sh delete mode 100644 ld/emulparams/armelfb_nbsd.sh delete mode 100644 ld/emulparams/armnbsd.sh delete mode 100644 ld/emulparams/armnto.sh delete mode 100644 ld/emulparams/armpe.sh delete mode 100644 ld/emulparams/avr1.sh delete mode 100644 ld/emulparams/avr2.sh delete mode 100644 ld/emulparams/avr3.sh delete mode 100644 ld/emulparams/avr4.sh delete mode 100644 ld/emulparams/avr5.sh delete mode 100644 ld/emulparams/coff_i860.sh delete mode 100644 ld/emulparams/coff_sparc.sh delete mode 100644 ld/emulparams/crisaout.sh delete mode 100644 ld/emulparams/criself.sh delete mode 100644 ld/emulparams/crislinux.sh delete mode 100644 ld/emulparams/d10velf.sh delete mode 100644 ld/emulparams/d30v_e.sh delete mode 100644 ld/emulparams/d30v_o.sh delete mode 100644 ld/emulparams/d30velf.sh delete mode 100644 ld/emulparams/delta68.sh delete mode 100644 ld/emulparams/ebmon29k.sh delete mode 100644 ld/emulparams/elf32_dlx.sh delete mode 100644 ld/emulparams/elf32_i860.sh delete mode 100644 ld/emulparams/elf32_i960.sh delete mode 100644 ld/emulparams/elf32_sparc.sh delete mode 100644 ld/emulparams/elf32am33lin.sh delete mode 100644 ld/emulparams/elf32b4300.sh delete mode 100644 ld/emulparams/elf32bmip.sh delete mode 100644 ld/emulparams/elf32bmipn32-defs.sh delete mode 100755 ld/emulparams/elf32bmipn32.sh delete mode 100644 ld/emulparams/elf32bsmip.sh delete mode 100644 ld/emulparams/elf32btsmip.sh delete mode 100644 ld/emulparams/elf32btsmipn32.sh delete mode 100644 ld/emulparams/elf32ebmip.sh delete mode 100644 ld/emulparams/elf32elmip.sh delete mode 100755 ld/emulparams/elf32fr30.sh delete mode 100755 ld/emulparams/elf32frv.sh delete mode 100644 ld/emulparams/elf32frvfd.sh delete mode 100644 ld/emulparams/elf32i370.sh delete mode 100644 ld/emulparams/elf32ip2k.sh delete mode 100755 ld/emulparams/elf32iq10.sh delete mode 100755 ld/emulparams/elf32iq2000.sh delete mode 100644 ld/emulparams/elf32l4300.sh delete mode 100644 ld/emulparams/elf32lmip.sh delete mode 100644 ld/emulparams/elf32lppc.sh delete mode 100644 ld/emulparams/elf32lppcnto.sh delete mode 100644 ld/emulparams/elf32lppcsim.sh delete mode 100644 ld/emulparams/elf32lsmip.sh delete mode 100644 ld/emulparams/elf32ltsmip.sh delete mode 100644 ld/emulparams/elf32ltsmipn32.sh delete mode 100644 ld/emulparams/elf32mcore.sh delete mode 100644 ld/emulparams/elf32mipswindiss.sh delete mode 100755 ld/emulparams/elf32openrisc.sh delete mode 100644 ld/emulparams/elf32ppc.sh delete mode 100644 ld/emulparams/elf32ppc_fbsd.sh delete mode 100644 ld/emulparams/elf32ppclinux.sh delete mode 100644 ld/emulparams/elf32ppcnto.sh delete mode 100644 ld/emulparams/elf32ppcsim.sh delete mode 100644 ld/emulparams/elf32ppcwindiss.sh delete mode 100644 ld/emulparams/elf32vax.sh delete mode 100644 ld/emulparams/elf32xstormy16.sh delete mode 100644 ld/emulparams/elf32xtensa.sh delete mode 100644 ld/emulparams/elf64_aix.sh delete mode 100644 ld/emulparams/elf64_ia64.sh delete mode 100644 ld/emulparams/elf64_ia64_fbsd.sh delete mode 100644 ld/emulparams/elf64_s390.sh delete mode 100644 ld/emulparams/elf64_sparc.sh delete mode 100644 ld/emulparams/elf64_sparc_fbsd.sh delete mode 100644 ld/emulparams/elf64alpha.sh delete mode 100644 ld/emulparams/elf64alpha_fbsd.sh delete mode 100644 ld/emulparams/elf64alpha_nbsd.sh delete mode 100755 ld/emulparams/elf64bmip.sh delete mode 100644 ld/emulparams/elf64btsmip.sh delete mode 100755 ld/emulparams/elf64hppa.sh delete mode 100644 ld/emulparams/elf64lppc.sh delete mode 100644 ld/emulparams/elf64ltsmip.sh delete mode 100644 ld/emulparams/elf64mmix.sh delete mode 100644 ld/emulparams/elf64ppc.sh delete mode 100644 ld/emulparams/elf_fbsd.sh delete mode 100644 ld/emulparams/elf_i386.sh delete mode 100644 ld/emulparams/elf_i386_be.sh delete mode 100644 ld/emulparams/elf_i386_chaos.sh delete mode 100644 ld/emulparams/elf_i386_fbsd.sh delete mode 100644 ld/emulparams/elf_i386_ldso.sh delete mode 100644 ld/emulparams/elf_s390.sh delete mode 100644 ld/emulparams/elf_x86_64.sh delete mode 100644 ld/emulparams/elf_x86_64_fbsd.sh delete mode 100644 ld/emulparams/gld960.sh delete mode 100644 ld/emulparams/gld960coff.sh delete mode 100644 ld/emulparams/h8300.sh delete mode 100644 ld/emulparams/h8300elf.sh delete mode 100644 ld/emulparams/h8300h.sh delete mode 100644 ld/emulparams/h8300helf.sh delete mode 100644 ld/emulparams/h8300hn.sh delete mode 100644 ld/emulparams/h8300hnelf.sh delete mode 100644 ld/emulparams/h8300s.sh delete mode 100644 ld/emulparams/h8300self.sh delete mode 100644 ld/emulparams/h8300sn.sh delete mode 100644 ld/emulparams/h8300snelf.sh delete mode 100644 ld/emulparams/h8300sx.sh delete mode 100644 ld/emulparams/h8300sxelf.sh delete mode 100644 ld/emulparams/h8300sxn.sh delete mode 100644 ld/emulparams/h8300sxnelf.sh delete mode 100644 ld/emulparams/h8500.sh delete mode 100644 ld/emulparams/h8500b.sh delete mode 100644 ld/emulparams/h8500c.sh delete mode 100644 ld/emulparams/h8500m.sh delete mode 100644 ld/emulparams/h8500s.sh delete mode 100644 ld/emulparams/hp300bsd.sh delete mode 100644 ld/emulparams/hp3hpux.sh delete mode 100644 ld/emulparams/hppa64linux.sh delete mode 100644 ld/emulparams/hppaelf.sh delete mode 100644 ld/emulparams/hppalinux.sh delete mode 100644 ld/emulparams/hppanbsd.sh delete mode 100644 ld/emulparams/hppaobsd.sh delete mode 100644 ld/emulparams/i386aout.sh delete mode 100755 ld/emulparams/i386beos.sh delete mode 100644 ld/emulparams/i386bsd.sh delete mode 100644 ld/emulparams/i386coff.sh delete mode 100644 ld/emulparams/i386go32.sh delete mode 100644 ld/emulparams/i386linux.sh delete mode 100644 ld/emulparams/i386lynx.sh delete mode 100644 ld/emulparams/i386mach.sh delete mode 100644 ld/emulparams/i386moss.sh delete mode 100644 ld/emulparams/i386msdos.sh delete mode 100644 ld/emulparams/i386nbsd.sh delete mode 100644 ld/emulparams/i386nto.sh delete mode 100644 ld/emulparams/i386nw.sh delete mode 100644 ld/emulparams/i386pe.sh delete mode 100644 ld/emulparams/i386pe_posix.sh delete mode 100644 ld/emulparams/lnk960.sh delete mode 100644 ld/emulparams/m32relf.sh delete mode 100644 ld/emulparams/m32relf_linux.sh delete mode 100644 ld/emulparams/m32rlelf.sh delete mode 100644 ld/emulparams/m32rlelf_linux.sh delete mode 100644 ld/emulparams/m68hc11elf.sh delete mode 100644 ld/emulparams/m68hc11elfb.sh delete mode 100644 ld/emulparams/m68hc12elf.sh delete mode 100644 ld/emulparams/m68hc12elfb.sh delete mode 100644 ld/emulparams/m68k4knbsd.sh delete mode 100644 ld/emulparams/m68kaout.sh delete mode 100644 ld/emulparams/m68kaux.sh delete mode 100644 ld/emulparams/m68kcoff.sh delete mode 100644 ld/emulparams/m68kelf.sh delete mode 100644 ld/emulparams/m68kelfnbsd.sh delete mode 100644 ld/emulparams/m68klinux.sh delete mode 100644 ld/emulparams/m68klynx.sh delete mode 100644 ld/emulparams/m68knbsd.sh delete mode 100644 ld/emulparams/m68kpsos.sh delete mode 100644 ld/emulparams/m88kbcs.sh delete mode 100644 ld/emulparams/mcorepe.sh delete mode 100644 ld/emulparams/mipsbig.sh delete mode 100644 ld/emulparams/mipsbsd.sh delete mode 100644 ld/emulparams/mipsidt.sh delete mode 100644 ld/emulparams/mipsidtl.sh delete mode 100644 ld/emulparams/mipslit.sh delete mode 100644 ld/emulparams/mipslnews.sh delete mode 100644 ld/emulparams/mipspe.sh delete mode 100644 ld/emulparams/mmo.sh delete mode 100644 ld/emulparams/mn10200.sh delete mode 100644 ld/emulparams/mn10300.sh delete mode 100644 ld/emulparams/msp430all.sh delete mode 100644 ld/emulparams/news.sh delete mode 100644 ld/emulparams/ns32knbsd.sh delete mode 100644 ld/emulparams/or32.sh delete mode 100644 ld/emulparams/or32elf.sh delete mode 100644 ld/emulparams/pc532macha.sh delete mode 100644 ld/emulparams/pdp11.sh delete mode 100644 ld/emulparams/pjelf.sh delete mode 100644 ld/emulparams/pjlelf.sh delete mode 100644 ld/emulparams/ppcmacos.sh delete mode 100644 ld/emulparams/ppcnw.sh delete mode 100644 ld/emulparams/ppcpe.sh delete mode 100644 ld/emulparams/riscix.sh delete mode 100644 ld/emulparams/sa29200.sh delete mode 100644 ld/emulparams/sh.sh delete mode 100644 ld/emulparams/shelf.sh delete mode 100644 ld/emulparams/shelf32.sh delete mode 100644 ld/emulparams/shelf32_linux.sh delete mode 100644 ld/emulparams/shelf32_nbsd.sh delete mode 100644 ld/emulparams/shelf64.sh delete mode 100644 ld/emulparams/shelf64_nbsd.sh delete mode 100644 ld/emulparams/shelf_linux.sh delete mode 100644 ld/emulparams/shelf_nbsd.sh delete mode 100644 ld/emulparams/shelf_nto.sh delete mode 100644 ld/emulparams/shl.sh delete mode 100644 ld/emulparams/shlelf.sh delete mode 100644 ld/emulparams/shlelf32.sh delete mode 100644 ld/emulparams/shlelf32_linux.sh delete mode 100644 ld/emulparams/shlelf32_nbsd.sh delete mode 100644 ld/emulparams/shlelf64.sh delete mode 100644 ld/emulparams/shlelf64_nbsd.sh delete mode 100644 ld/emulparams/shlelf_linux.sh delete mode 100644 ld/emulparams/shlelf_nbsd.sh delete mode 100644 ld/emulparams/shlelf_nto.sh delete mode 100644 ld/emulparams/shpe.sh delete mode 100644 ld/emulparams/sparcaout.sh delete mode 100644 ld/emulparams/sparclinux.sh delete mode 100644 ld/emulparams/sparclynx.sh delete mode 100644 ld/emulparams/sparcnbsd.sh delete mode 100644 ld/emulparams/st2000.sh delete mode 100644 ld/emulparams/sun3.sh delete mode 100644 ld/emulparams/sun4.sh delete mode 100644 ld/emulparams/tic30aout.sh delete mode 100644 ld/emulparams/tic30coff.sh delete mode 100644 ld/emulparams/tic3xcoff.sh delete mode 100644 ld/emulparams/tic3xcoff_onchip.sh delete mode 100644 ld/emulparams/tic4xcoff.sh delete mode 100644 ld/emulparams/tic54xcoff.sh delete mode 100644 ld/emulparams/tic80coff.sh delete mode 100644 ld/emulparams/v850.sh delete mode 100644 ld/emulparams/vanilla.sh delete mode 100644 ld/emulparams/vax.sh delete mode 100644 ld/emulparams/vaxnbsd.sh delete mode 100644 ld/emulparams/vsta.sh delete mode 100644 ld/emulparams/w65.sh delete mode 100644 ld/emulparams/xtensa-config.sh delete mode 100644 ld/emulparams/z8001.sh delete mode 100644 ld/emulparams/z8002.sh delete mode 100644 ld/emultempl/README delete mode 100644 ld/emultempl/aix.em delete mode 100644 ld/emultempl/alphaelf.em delete mode 100644 ld/emultempl/armcoff.em delete mode 100644 ld/emultempl/armelf.em delete mode 100644 ld/emultempl/armelf_oabi.em delete mode 100644 ld/emultempl/astring.sed delete mode 100644 ld/emultempl/beos.em delete mode 100644 ld/emultempl/elf32.em delete mode 100644 ld/emultempl/generic.em delete mode 100644 ld/emultempl/gld960.em delete mode 100644 ld/emultempl/gld960c.em delete mode 100644 ld/emultempl/hppaelf.em delete mode 100644 ld/emultempl/ia64elf.em delete mode 100644 ld/emultempl/linux.em delete mode 100644 ld/emultempl/lnk960.em delete mode 100644 ld/emultempl/m68hc1xelf.em delete mode 100644 ld/emultempl/m68kcoff.em delete mode 100644 ld/emultempl/m68kelf.em delete mode 100644 ld/emultempl/mipsecoff.em delete mode 100644 ld/emultempl/mipself.em delete mode 100644 ld/emultempl/mmix-elfnmmo.em delete mode 100644 ld/emultempl/mmixelf.em delete mode 100644 ld/emultempl/mmo.em delete mode 100644 ld/emultempl/needrelax.em delete mode 100644 ld/emultempl/netbsd.em delete mode 100644 ld/emultempl/ostring.sed delete mode 100644 ld/emultempl/pe.em delete mode 100644 ld/emultempl/ppc32elf.em delete mode 100644 ld/emultempl/ppc64elf.em delete mode 100644 ld/emultempl/sh64elf.em delete mode 100644 ld/emultempl/sunos.em delete mode 100644 ld/emultempl/ticoff.em delete mode 100644 ld/emultempl/vanilla.em delete mode 100644 ld/emultempl/xtensaelf.em delete mode 100644 ld/fdl.texi delete mode 100644 ld/gen-doc.texi delete mode 100755 ld/genscripts.sh delete mode 100644 ld/h8-doc.texi delete mode 100644 ld/ld.h delete mode 100644 ld/ld.texinfo delete mode 100644 ld/ldcref.c delete mode 100644 ld/ldctor.c delete mode 100644 ld/ldctor.h delete mode 100644 ld/ldemul.c delete mode 100644 ld/ldemul.h delete mode 100644 ld/ldexp.c delete mode 100644 ld/ldexp.h delete mode 100644 ld/ldfile.c delete mode 100644 ld/ldfile.h delete mode 100644 ld/ldgram.y delete mode 100644 ld/ldint.texinfo delete mode 100644 ld/ldlang.c delete mode 100644 ld/ldlang.h delete mode 100644 ld/ldlex.h delete mode 100644 ld/ldlex.l delete mode 100644 ld/ldmain.c delete mode 100644 ld/ldmain.h delete mode 100644 ld/ldmisc.c delete mode 100644 ld/ldmisc.h delete mode 100644 ld/ldver.c delete mode 100644 ld/ldver.h delete mode 100644 ld/ldwrite.c delete mode 100644 ld/ldwrite.h delete mode 100644 ld/lexsup.c delete mode 100644 ld/mac-ld.r delete mode 100644 ld/mpw-config.in delete mode 100644 ld/mpw-make.sed delete mode 100644 ld/mri.c delete mode 100644 ld/mri.h delete mode 100644 ld/pe-dll.c delete mode 100644 ld/pe-dll.h delete mode 100644 ld/po/.cvsignore delete mode 100644 ld/po/Make-in delete mode 100644 ld/po/POTFILES.in delete mode 100644 ld/po/da.po delete mode 100644 ld/po/es.po delete mode 100644 ld/po/fr.po delete mode 100644 ld/po/ld.pot delete mode 100644 ld/po/sv.po delete mode 100644 ld/po/tr.po delete mode 100644 ld/scripttempl/README delete mode 100644 ld/scripttempl/a29k.sc delete mode 100644 ld/scripttempl/aix.sc delete mode 100644 ld/scripttempl/alpha.sc delete mode 100644 ld/scripttempl/aout.sc delete mode 100644 ld/scripttempl/armaout.sc delete mode 100644 ld/scripttempl/armcoff.sc delete mode 100644 ld/scripttempl/avr.sc delete mode 100644 ld/scripttempl/crisaout.sc delete mode 100644 ld/scripttempl/delta68.sc delete mode 100644 ld/scripttempl/dlx.sc delete mode 100644 ld/scripttempl/ebmon29k.sc delete mode 100644 ld/scripttempl/elf.sc delete mode 100644 ld/scripttempl/elf32msp430.sc delete mode 100644 ld/scripttempl/elf32msp430_3.sc delete mode 100644 ld/scripttempl/elf_chaos.sc delete mode 100644 ld/scripttempl/elfd10v.sc delete mode 100644 ld/scripttempl/elfd30v.sc delete mode 100644 ld/scripttempl/elfi370.sc delete mode 100644 ld/scripttempl/elfm68hc11.sc delete mode 100644 ld/scripttempl/elfm68hc12.sc delete mode 100644 ld/scripttempl/elfxtensa.sc delete mode 100644 ld/scripttempl/epocpe.sc delete mode 100644 ld/scripttempl/h8300.sc delete mode 100644 ld/scripttempl/h8300h.sc delete mode 100644 ld/scripttempl/h8300hn.sc delete mode 100644 ld/scripttempl/h8300s.sc delete mode 100644 ld/scripttempl/h8300sn.sc delete mode 100644 ld/scripttempl/h8300sx.sc delete mode 100644 ld/scripttempl/h8300sxn.sc delete mode 100644 ld/scripttempl/h8500.sc delete mode 100644 ld/scripttempl/h8500b.sc delete mode 100644 ld/scripttempl/h8500c.sc delete mode 100644 ld/scripttempl/h8500m.sc delete mode 100644 ld/scripttempl/h8500s.sc delete mode 100644 ld/scripttempl/hppaelf.sc delete mode 100644 ld/scripttempl/i386beos.sc delete mode 100644 ld/scripttempl/i386coff.sc delete mode 100644 ld/scripttempl/i386go32.sc delete mode 100644 ld/scripttempl/i386lynx.sc delete mode 100644 ld/scripttempl/i386msdos.sc delete mode 100644 ld/scripttempl/i860coff.sc delete mode 100644 ld/scripttempl/i960.sc delete mode 100644 ld/scripttempl/ip2k.sc delete mode 100644 ld/scripttempl/iq2000.sc delete mode 100644 ld/scripttempl/m68kaux.sc delete mode 100644 ld/scripttempl/m68kcoff.sc delete mode 100644 ld/scripttempl/m68klynx.sc delete mode 100644 ld/scripttempl/m88kbcs.sc delete mode 100644 ld/scripttempl/mcorepe.sc delete mode 100644 ld/scripttempl/mips.sc delete mode 100644 ld/scripttempl/mipsbsd.sc delete mode 100644 ld/scripttempl/mmo.sc delete mode 100644 ld/scripttempl/nw.sc delete mode 100644 ld/scripttempl/or32.sc delete mode 100644 ld/scripttempl/pe.sc delete mode 100644 ld/scripttempl/pj.sc delete mode 100644 ld/scripttempl/ppcpe.sc delete mode 100644 ld/scripttempl/psos.sc delete mode 100644 ld/scripttempl/riscix.sc delete mode 100644 ld/scripttempl/sa29200.sc delete mode 100644 ld/scripttempl/sh.sc delete mode 100644 ld/scripttempl/sparccoff.sc delete mode 100644 ld/scripttempl/sparclynx.sc delete mode 100644 ld/scripttempl/st2000.sc delete mode 100644 ld/scripttempl/tic30aout.sc delete mode 100644 ld/scripttempl/tic30coff.sc delete mode 100644 ld/scripttempl/tic4xcoff.sc delete mode 100644 ld/scripttempl/tic54xcoff.sc delete mode 100644 ld/scripttempl/tic80coff.sc delete mode 100644 ld/scripttempl/v850.sc delete mode 100644 ld/scripttempl/vanilla.sc delete mode 100644 ld/scripttempl/w65.sc delete mode 100644 ld/scripttempl/xstormy16.sc delete mode 100644 ld/scripttempl/z8000.sc delete mode 100644 ld/stamp-h.in delete mode 100644 ld/sysdep.h delete mode 100644 ld/testsuite/ChangeLog delete mode 100644 ld/testsuite/ChangeLog-9303 delete mode 100644 ld/testsuite/config/default.exp delete mode 100644 ld/testsuite/ld-alpha/align.s delete mode 100644 ld/testsuite/ld-alpha/alpha.exp delete mode 100644 ld/testsuite/ld-alpha/tlsbin.dd delete mode 100644 ld/testsuite/ld-alpha/tlsbin.rd delete mode 100644 ld/testsuite/ld-alpha/tlsbin.s delete mode 100644 ld/testsuite/ld-alpha/tlsbin.sd delete mode 100644 ld/testsuite/ld-alpha/tlsbin.td delete mode 100644 ld/testsuite/ld-alpha/tlsbinpic.s delete mode 100644 ld/testsuite/ld-alpha/tlsbinr.dd delete mode 100644 ld/testsuite/ld-alpha/tlsbinr.rd delete mode 100644 ld/testsuite/ld-alpha/tlsbinr.sd delete mode 100644 ld/testsuite/ld-alpha/tlsg.s delete mode 100644 ld/testsuite/ld-alpha/tlsg.sd delete mode 100644 ld/testsuite/ld-alpha/tlslib.s delete mode 100644 ld/testsuite/ld-alpha/tlspic.dd delete mode 100644 ld/testsuite/ld-alpha/tlspic.rd delete mode 100644 ld/testsuite/ld-alpha/tlspic.sd delete mode 100644 ld/testsuite/ld-alpha/tlspic.td delete mode 100644 ld/testsuite/ld-alpha/tlspic1.s delete mode 100644 ld/testsuite/ld-alpha/tlspic2.s delete mode 100644 ld/testsuite/ld-arm/arm-app-abs32.d delete mode 100644 ld/testsuite/ld-arm/arm-app-abs32.r delete mode 100644 ld/testsuite/ld-arm/arm-app-abs32.s delete mode 100644 ld/testsuite/ld-arm/arm-app.d delete mode 100644 ld/testsuite/ld-arm/arm-app.r delete mode 100644 ld/testsuite/ld-arm/arm-app.s delete mode 100644 ld/testsuite/ld-arm/arm-elf.exp delete mode 100644 ld/testsuite/ld-arm/arm-lib-plt32.d delete mode 100644 ld/testsuite/ld-arm/arm-lib-plt32.r delete mode 100644 ld/testsuite/ld-arm/arm-lib-plt32.s delete mode 100644 ld/testsuite/ld-arm/arm-lib.d delete mode 100644 ld/testsuite/ld-arm/arm-lib.r delete mode 100644 ld/testsuite/ld-arm/arm-lib.s delete mode 100644 ld/testsuite/ld-arm/arm-static-app.d delete mode 100644 ld/testsuite/ld-arm/arm-static-app.r delete mode 100644 ld/testsuite/ld-arm/arm-static-app.s delete mode 100644 ld/testsuite/ld-auto-import/auto-import.exp delete mode 100644 ld/testsuite/ld-auto-import/client.c delete mode 100644 ld/testsuite/ld-auto-import/dll.c delete mode 100644 ld/testsuite/ld-bootstrap/bootstrap.exp delete mode 100644 ld/testsuite/ld-cdtest/cdtest-bar.cc delete mode 100644 ld/testsuite/ld-cdtest/cdtest-foo.cc delete mode 100644 ld/testsuite/ld-cdtest/cdtest-foo.h delete mode 100644 ld/testsuite/ld-cdtest/cdtest-main.cc delete mode 100644 ld/testsuite/ld-cdtest/cdtest-nrv.dat delete mode 100644 ld/testsuite/ld-cdtest/cdtest.dat delete mode 100644 ld/testsuite/ld-cdtest/cdtest.exp delete mode 100644 ld/testsuite/ld-checks/asm.s delete mode 100644 ld/testsuite/ld-checks/checks.exp delete mode 100644 ld/testsuite/ld-checks/script delete mode 100644 ld/testsuite/ld-cris/badgotr1.d delete mode 100644 ld/testsuite/ld-cris/comref1.s delete mode 100644 ld/testsuite/ld-cris/cris.exp delete mode 100644 ld/testsuite/ld-cris/dso-1.s delete mode 100644 ld/testsuite/ld-cris/dso-2.s delete mode 100644 ld/testsuite/ld-cris/dso-3.s delete mode 100644 ld/testsuite/ld-cris/euwref1.s delete mode 100644 ld/testsuite/ld-cris/expdref1.s delete mode 100644 ld/testsuite/ld-cris/expdyn1.d delete mode 100644 ld/testsuite/ld-cris/expdyn1.s delete mode 100644 ld/testsuite/ld-cris/expdyn2.d delete mode 100644 ld/testsuite/ld-cris/expdyn3.d delete mode 100644 ld/testsuite/ld-cris/expdyn4.d delete mode 100644 ld/testsuite/ld-cris/expdyn5.d delete mode 100644 ld/testsuite/ld-cris/expdyn6.d delete mode 100644 ld/testsuite/ld-cris/expdyn7.d delete mode 100644 ld/testsuite/ld-cris/gotrel1.s delete mode 100644 ld/testsuite/ld-cris/gotrel2.s delete mode 100644 ld/testsuite/ld-cris/hide1 delete mode 100644 ld/testsuite/ld-cris/ldsym1.d delete mode 100644 ld/testsuite/ld-cris/libdso-1.d delete mode 100644 ld/testsuite/ld-cris/libdso-2.d delete mode 100644 ld/testsuite/ld-cris/libdso-3.d delete mode 100644 ld/testsuite/ld-cris/libdso-4.d delete mode 100644 ld/testsuite/ld-cris/locref1.d delete mode 100644 ld/testsuite/ld-cris/locref1.s delete mode 100644 ld/testsuite/ld-cris/locref2.d delete mode 100644 ld/testsuite/ld-cris/locref2.s delete mode 100644 ld/testsuite/ld-cris/nodyn4.d delete mode 100644 ld/testsuite/ld-cris/nodyn5.d delete mode 100644 ld/testsuite/ld-cris/noglob1.d delete mode 100644 ld/testsuite/ld-cris/noglob1.s delete mode 100644 ld/testsuite/ld-cris/undef1.d delete mode 100644 ld/testsuite/ld-cris/weakref1.d delete mode 100644 ld/testsuite/ld-cris/weakref2.d delete mode 100644 ld/testsuite/ld-cygwin/exe-export.exp delete mode 100644 ld/testsuite/ld-cygwin/testdll.c delete mode 100644 ld/testsuite/ld-cygwin/testdll.def delete mode 100644 ld/testsuite/ld-cygwin/testexe.c delete mode 100644 ld/testsuite/ld-cygwin/testexe.def delete mode 100644 ld/testsuite/ld-d10v/d10v.exp delete mode 100644 ld/testsuite/ld-d10v/default_layout.d delete mode 100644 ld/testsuite/ld-d10v/linktest-001.s delete mode 100644 ld/testsuite/ld-d10v/linktest-002.lt delete mode 100644 ld/testsuite/ld-d10v/linktest-002.s delete mode 100644 ld/testsuite/ld-d10v/regression-001.lt delete mode 100644 ld/testsuite/ld-d10v/regression-001.s delete mode 100644 ld/testsuite/ld-d10v/reloc-001.d delete mode 100644 ld/testsuite/ld-d10v/reloc-001.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-001.s delete mode 100644 ld/testsuite/ld-d10v/reloc-002.d delete mode 100644 ld/testsuite/ld-d10v/reloc-002.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-003.d delete mode 100644 ld/testsuite/ld-d10v/reloc-003.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-004.d delete mode 100644 ld/testsuite/ld-d10v/reloc-004.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-005.d delete mode 100644 ld/testsuite/ld-d10v/reloc-005.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-005.s delete mode 100644 ld/testsuite/ld-d10v/reloc-006.d delete mode 100644 ld/testsuite/ld-d10v/reloc-006.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-007.d delete mode 100644 ld/testsuite/ld-d10v/reloc-007.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-008.d delete mode 100644 ld/testsuite/ld-d10v/reloc-008.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-009.d delete mode 100644 ld/testsuite/ld-d10v/reloc-009.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-009.s delete mode 100644 ld/testsuite/ld-d10v/reloc-010.d delete mode 100644 ld/testsuite/ld-d10v/reloc-010.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-011.d delete mode 100644 ld/testsuite/ld-d10v/reloc-011.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-012.d delete mode 100644 ld/testsuite/ld-d10v/reloc-012.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-013.d delete mode 100644 ld/testsuite/ld-d10v/reloc-013.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-014.d delete mode 100644 ld/testsuite/ld-d10v/reloc-014.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-015.d delete mode 100644 ld/testsuite/ld-d10v/reloc-015.ld delete mode 100644 ld/testsuite/ld-d10v/reloc-016.d delete mode 100644 ld/testsuite/ld-d10v/reloc-016.ld delete mode 100644 ld/testsuite/ld-d10v/simple.s delete mode 100644 ld/testsuite/ld-discard/discard.exp delete mode 100644 ld/testsuite/ld-discard/discard.ld delete mode 100644 ld/testsuite/ld-discard/exit.s delete mode 100644 ld/testsuite/ld-discard/extern.d delete mode 100644 ld/testsuite/ld-discard/extern.s delete mode 100644 ld/testsuite/ld-discard/start.d delete mode 100644 ld/testsuite/ld-discard/start.s delete mode 100644 ld/testsuite/ld-discard/static.d delete mode 100644 ld/testsuite/ld-discard/static.s delete mode 100644 ld/testsuite/ld-elf/elf.exp delete mode 100644 ld/testsuite/ld-elf/merge.d delete mode 100644 ld/testsuite/ld-elf/merge.ld delete mode 100644 ld/testsuite/ld-elf/merge.s delete mode 100644 ld/testsuite/ld-elf/merge2.d delete mode 100644 ld/testsuite/ld-elf/merge2.s delete mode 100644 ld/testsuite/ld-elf/sec64k.exp delete mode 100644 ld/testsuite/ld-elfcomm/common1a.c delete mode 100644 ld/testsuite/ld-elfcomm/common1b.c delete mode 100644 ld/testsuite/ld-elfcomm/elfcomm.exp delete mode 100644 ld/testsuite/ld-elfvers/vers.exp delete mode 100644 ld/testsuite/ld-elfvers/vers1.c delete mode 100644 ld/testsuite/ld-elfvers/vers1.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers1.map delete mode 100644 ld/testsuite/ld-elfvers/vers1.sym delete mode 100644 ld/testsuite/ld-elfvers/vers1.ver delete mode 100644 ld/testsuite/ld-elfvers/vers13.asym delete mode 100644 ld/testsuite/ld-elfvers/vers15.c delete mode 100644 ld/testsuite/ld-elfvers/vers15.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers15.sym delete mode 100644 ld/testsuite/ld-elfvers/vers15.ver delete mode 100644 ld/testsuite/ld-elfvers/vers16.c delete mode 100644 ld/testsuite/ld-elfvers/vers16.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers16.map delete mode 100644 ld/testsuite/ld-elfvers/vers16a.c delete mode 100644 ld/testsuite/ld-elfvers/vers16a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers16a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers17.c delete mode 100644 ld/testsuite/ld-elfvers/vers17.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers17.map delete mode 100644 ld/testsuite/ld-elfvers/vers17.ver delete mode 100644 ld/testsuite/ld-elfvers/vers18.c delete mode 100644 ld/testsuite/ld-elfvers/vers18.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers18.map delete mode 100644 ld/testsuite/ld-elfvers/vers18.sym delete mode 100644 ld/testsuite/ld-elfvers/vers18.ver delete mode 100644 ld/testsuite/ld-elfvers/vers19.c delete mode 100644 ld/testsuite/ld-elfvers/vers19.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers19.ver delete mode 100644 ld/testsuite/ld-elfvers/vers2.c delete mode 100644 ld/testsuite/ld-elfvers/vers2.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers2.map delete mode 100644 ld/testsuite/ld-elfvers/vers2.ver delete mode 100644 ld/testsuite/ld-elfvers/vers20.c delete mode 100644 ld/testsuite/ld-elfvers/vers20.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers20.map delete mode 100644 ld/testsuite/ld-elfvers/vers20.ver delete mode 100644 ld/testsuite/ld-elfvers/vers20a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers21.c delete mode 100644 ld/testsuite/ld-elfvers/vers21.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers21.map delete mode 100644 ld/testsuite/ld-elfvers/vers21.sym delete mode 100644 ld/testsuite/ld-elfvers/vers21.ver delete mode 100644 ld/testsuite/ld-elfvers/vers22.c delete mode 100644 ld/testsuite/ld-elfvers/vers22.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers22.map delete mode 100644 ld/testsuite/ld-elfvers/vers22.ver delete mode 100644 ld/testsuite/ld-elfvers/vers22a.c delete mode 100644 ld/testsuite/ld-elfvers/vers22a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers22a.sym delete mode 100644 ld/testsuite/ld-elfvers/vers22a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers22b.c delete mode 100644 ld/testsuite/ld-elfvers/vers22b.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers22b.ver delete mode 100644 ld/testsuite/ld-elfvers/vers23.c delete mode 100644 ld/testsuite/ld-elfvers/vers23.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers23.ver delete mode 100644 ld/testsuite/ld-elfvers/vers23a.c delete mode 100644 ld/testsuite/ld-elfvers/vers23a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers23a.map delete mode 100644 ld/testsuite/ld-elfvers/vers23a.sym delete mode 100644 ld/testsuite/ld-elfvers/vers23a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers23b.c delete mode 100644 ld/testsuite/ld-elfvers/vers23b.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers23b.map delete mode 100644 ld/testsuite/ld-elfvers/vers23b.ver delete mode 100644 ld/testsuite/ld-elfvers/vers23c.ver delete mode 100644 ld/testsuite/ld-elfvers/vers23d.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers24.map delete mode 100644 ld/testsuite/ld-elfvers/vers24.rd delete mode 100644 ld/testsuite/ld-elfvers/vers24a.c delete mode 100644 ld/testsuite/ld-elfvers/vers24b.c delete mode 100644 ld/testsuite/ld-elfvers/vers24c.c delete mode 100644 ld/testsuite/ld-elfvers/vers25a.c delete mode 100644 ld/testsuite/ld-elfvers/vers25a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers25a.map delete mode 100644 ld/testsuite/ld-elfvers/vers25a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers25b.c delete mode 100644 ld/testsuite/ld-elfvers/vers25b.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers25b.ver delete mode 100644 ld/testsuite/ld-elfvers/vers26a.c delete mode 100644 ld/testsuite/ld-elfvers/vers26a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers26a.map delete mode 100644 ld/testsuite/ld-elfvers/vers26a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers26b.c delete mode 100644 ld/testsuite/ld-elfvers/vers26b.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers26b.ver delete mode 100644 ld/testsuite/ld-elfvers/vers27a.c delete mode 100644 ld/testsuite/ld-elfvers/vers27a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers27a.map delete mode 100644 ld/testsuite/ld-elfvers/vers27a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers27b.c delete mode 100644 ld/testsuite/ld-elfvers/vers27b.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers27b.ver delete mode 100644 ld/testsuite/ld-elfvers/vers27c.c delete mode 100644 ld/testsuite/ld-elfvers/vers27c.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers27c.ver delete mode 100644 ld/testsuite/ld-elfvers/vers27d.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers27d.sym delete mode 100644 ld/testsuite/ld-elfvers/vers27d.ver delete mode 100644 ld/testsuite/ld-elfvers/vers27d1.c delete mode 100644 ld/testsuite/ld-elfvers/vers27d2.c delete mode 100644 ld/testsuite/ld-elfvers/vers27d3.c delete mode 100644 ld/testsuite/ld-elfvers/vers27d4.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers27d4.ver delete mode 100644 ld/testsuite/ld-elfvers/vers3.c delete mode 100644 ld/testsuite/ld-elfvers/vers3.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers3.ver delete mode 100644 ld/testsuite/ld-elfvers/vers4.c delete mode 100644 ld/testsuite/ld-elfvers/vers4.sym delete mode 100644 ld/testsuite/ld-elfvers/vers4a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers4a.sym delete mode 100644 ld/testsuite/ld-elfvers/vers4a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers5.c delete mode 100644 ld/testsuite/ld-elfvers/vers6.c delete mode 100644 ld/testsuite/ld-elfvers/vers6.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers6.sym delete mode 100644 ld/testsuite/ld-elfvers/vers6.ver delete mode 100644 ld/testsuite/ld-elfvers/vers7.c delete mode 100644 ld/testsuite/ld-elfvers/vers7.map delete mode 100644 ld/testsuite/ld-elfvers/vers7a.c delete mode 100644 ld/testsuite/ld-elfvers/vers7a.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers7a.sym delete mode 100644 ld/testsuite/ld-elfvers/vers7a.ver delete mode 100644 ld/testsuite/ld-elfvers/vers8.c delete mode 100644 ld/testsuite/ld-elfvers/vers8.map delete mode 100644 ld/testsuite/ld-elfvers/vers8.ver delete mode 100644 ld/testsuite/ld-elfvers/vers9.c delete mode 100644 ld/testsuite/ld-elfvers/vers9.dsym delete mode 100644 ld/testsuite/ld-elfvers/vers9.sym delete mode 100644 ld/testsuite/ld-elfvers/vers9.ver delete mode 100644 ld/testsuite/ld-elfvsb/common.c delete mode 100644 ld/testsuite/ld-elfvsb/define.s delete mode 100644 ld/testsuite/ld-elfvsb/elf-offset.ld delete mode 100644 ld/testsuite/ld-elfvsb/elfvsb.dat delete mode 100644 ld/testsuite/ld-elfvsb/elfvsb.exp delete mode 100644 ld/testsuite/ld-elfvsb/hidden0.d delete mode 100644 ld/testsuite/ld-elfvsb/hidden1.d delete mode 100644 ld/testsuite/ld-elfvsb/internal0.d delete mode 100644 ld/testsuite/ld-elfvsb/internal1.d delete mode 100644 ld/testsuite/ld-elfvsb/main.c delete mode 100644 ld/testsuite/ld-elfvsb/protected0.d delete mode 100644 ld/testsuite/ld-elfvsb/protected1.d delete mode 100644 ld/testsuite/ld-elfvsb/sh1.c delete mode 100644 ld/testsuite/ld-elfvsb/sh2.c delete mode 100644 ld/testsuite/ld-elfvsb/sh3.c delete mode 100644 ld/testsuite/ld-elfvsb/test.c delete mode 100644 ld/testsuite/ld-elfvsb/undef.s delete mode 100644 ld/testsuite/ld-elfweak/bar.c delete mode 100644 ld/testsuite/ld-elfweak/bar1a.c delete mode 100644 ld/testsuite/ld-elfweak/bar1b.c delete mode 100644 ld/testsuite/ld-elfweak/bar1c.c delete mode 100644 ld/testsuite/ld-elfweak/dso.dsym delete mode 100644 ld/testsuite/ld-elfweak/dsodata.dsym delete mode 100644 ld/testsuite/ld-elfweak/dsow.dsym delete mode 100644 ld/testsuite/ld-elfweak/dsowdata.dsym delete mode 100644 ld/testsuite/ld-elfweak/elfweak.exp delete mode 100644 ld/testsuite/ld-elfweak/foo.c delete mode 100644 ld/testsuite/ld-elfweak/foo1a.c delete mode 100644 ld/testsuite/ld-elfweak/foo1b.c delete mode 100644 ld/testsuite/ld-elfweak/main.c delete mode 100644 ld/testsuite/ld-elfweak/main1.c delete mode 100644 ld/testsuite/ld-elfweak/strong.dat delete mode 100644 ld/testsuite/ld-elfweak/strong.sym delete mode 100644 ld/testsuite/ld-elfweak/strongcomm.sym delete mode 100644 ld/testsuite/ld-elfweak/strongdata.dat delete mode 100644 ld/testsuite/ld-elfweak/strongdata.sym delete mode 100644 ld/testsuite/ld-elfweak/weak.dat delete mode 100644 ld/testsuite/ld-elfweak/weak.dsym delete mode 100644 ld/testsuite/ld-elfweak/weakdata.dat delete mode 100644 ld/testsuite/ld-elfweak/weakdata.dsym delete mode 100644 ld/testsuite/ld-empic/empic.exp delete mode 100644 ld/testsuite/ld-empic/relax.t delete mode 100644 ld/testsuite/ld-empic/relax1.c delete mode 100644 ld/testsuite/ld-empic/relax2.c delete mode 100644 ld/testsuite/ld-empic/relax3.c delete mode 100644 ld/testsuite/ld-empic/relax4.c delete mode 100644 ld/testsuite/ld-empic/run.c delete mode 100644 ld/testsuite/ld-empic/runtest1.c delete mode 100644 ld/testsuite/ld-empic/runtest2.c delete mode 100644 ld/testsuite/ld-empic/runtesti.s delete mode 100644 ld/testsuite/ld-fastcall/export.s delete mode 100644 ld/testsuite/ld-fastcall/fastcall.exp delete mode 100644 ld/testsuite/ld-fastcall/import.s delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-1.d delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-2.d delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-5.d delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-6-fail.d delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-6.d delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-7.d delete mode 100644 ld/testsuite/ld-frv/fdpic-pie-8.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-1.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-2-fail.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-2.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-3.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-4.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-5.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-6-fail.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-6.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-7.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-8-fail.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-8.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-local-2.d delete mode 100644 ld/testsuite/ld-frv/fdpic-shared-local-8.d delete mode 100644 ld/testsuite/ld-frv/fdpic-static-1.d delete mode 100644 ld/testsuite/ld-frv/fdpic-static-2.d delete mode 100644 ld/testsuite/ld-frv/fdpic-static-5.d delete mode 100644 ld/testsuite/ld-frv/fdpic-static-6.d delete mode 100644 ld/testsuite/ld-frv/fdpic-static-7.d delete mode 100644 ld/testsuite/ld-frv/fdpic-static-8.d delete mode 100644 ld/testsuite/ld-frv/fdpic.exp delete mode 100644 ld/testsuite/ld-frv/fdpic1.s delete mode 100644 ld/testsuite/ld-frv/fdpic2.ldv delete mode 100644 ld/testsuite/ld-frv/fdpic2.s delete mode 100644 ld/testsuite/ld-frv/fdpic2min.ldv delete mode 100644 ld/testsuite/ld-frv/fdpic3.s delete mode 100644 ld/testsuite/ld-frv/fdpic4.s delete mode 100644 ld/testsuite/ld-frv/fdpic5.s delete mode 100644 ld/testsuite/ld-frv/fdpic6.ldv delete mode 100644 ld/testsuite/ld-frv/fdpic6.s delete mode 100644 ld/testsuite/ld-frv/fdpic7.s delete mode 100644 ld/testsuite/ld-frv/fdpic8.ldv delete mode 100644 ld/testsuite/ld-frv/fdpic8.s delete mode 100644 ld/testsuite/ld-frv/fdpic8min.ldv delete mode 100644 ld/testsuite/ld-h8300/h8300.exp delete mode 100644 ld/testsuite/ld-h8300/relax-2.d delete mode 100644 ld/testsuite/ld-h8300/relax-2.s delete mode 100644 ld/testsuite/ld-h8300/relax-3-coff.d delete mode 100644 ld/testsuite/ld-h8300/relax-3.d delete mode 100644 ld/testsuite/ld-h8300/relax-3.s delete mode 100644 ld/testsuite/ld-h8300/relax-4-coff.d delete mode 100644 ld/testsuite/ld-h8300/relax-4.d delete mode 100644 ld/testsuite/ld-h8300/relax-4.s delete mode 100644 ld/testsuite/ld-h8300/relax-5-coff.d delete mode 100644 ld/testsuite/ld-h8300/relax-5.d delete mode 100644 ld/testsuite/ld-h8300/relax-5.s delete mode 100644 ld/testsuite/ld-h8300/relax.d delete mode 100644 ld/testsuite/ld-h8300/relax.s delete mode 100644 ld/testsuite/ld-i386/combreloc.d delete mode 100644 ld/testsuite/ld-i386/combreloc.s delete mode 100644 ld/testsuite/ld-i386/i386.exp delete mode 100644 ld/testsuite/ld-i386/reloc.d delete mode 100644 ld/testsuite/ld-i386/reloc.s delete mode 100644 ld/testsuite/ld-i386/tlsbin.dd delete mode 100644 ld/testsuite/ld-i386/tlsbin.rd delete mode 100644 ld/testsuite/ld-i386/tlsbin.s delete mode 100644 ld/testsuite/ld-i386/tlsbin.sd delete mode 100644 ld/testsuite/ld-i386/tlsbin.td delete mode 100644 ld/testsuite/ld-i386/tlsbinpic.s delete mode 100644 ld/testsuite/ld-i386/tlsg.s delete mode 100644 ld/testsuite/ld-i386/tlsg.sd delete mode 100644 ld/testsuite/ld-i386/tlsindntpoff.dd delete mode 100644 ld/testsuite/ld-i386/tlsindntpoff.s delete mode 100644 ld/testsuite/ld-i386/tlslib.s delete mode 100644 ld/testsuite/ld-i386/tlsnopic.dd delete mode 100644 ld/testsuite/ld-i386/tlsnopic.rd delete mode 100644 ld/testsuite/ld-i386/tlsnopic.sd delete mode 100644 ld/testsuite/ld-i386/tlsnopic1.s delete mode 100644 ld/testsuite/ld-i386/tlsnopic2.s delete mode 100644 ld/testsuite/ld-i386/tlspic.dd delete mode 100644 ld/testsuite/ld-i386/tlspic.rd delete mode 100644 ld/testsuite/ld-i386/tlspic.sd delete mode 100644 ld/testsuite/ld-i386/tlspic.td delete mode 100644 ld/testsuite/ld-i386/tlspic1.s delete mode 100644 ld/testsuite/ld-i386/tlspic2.s delete mode 100644 ld/testsuite/ld-ia64/ia64.exp delete mode 100644 ld/testsuite/ld-ia64/tlsbin.dd delete mode 100644 ld/testsuite/ld-ia64/tlsbin.rd delete mode 100644 ld/testsuite/ld-ia64/tlsbin.s delete mode 100644 ld/testsuite/ld-ia64/tlsbin.sd delete mode 100644 ld/testsuite/ld-ia64/tlsbin.td delete mode 100644 ld/testsuite/ld-ia64/tlsbinpic.s delete mode 100644 ld/testsuite/ld-ia64/tlsg.s delete mode 100644 ld/testsuite/ld-ia64/tlsg.sd delete mode 100644 ld/testsuite/ld-ia64/tlslib.s delete mode 100644 ld/testsuite/ld-ia64/tlspic.dd delete mode 100644 ld/testsuite/ld-ia64/tlspic.rd delete mode 100644 ld/testsuite/ld-ia64/tlspic.sd delete mode 100644 ld/testsuite/ld-ia64/tlspic.td delete mode 100644 ld/testsuite/ld-ia64/tlspic1.s delete mode 100644 ld/testsuite/ld-ia64/tlspic2.s delete mode 100644 ld/testsuite/ld-linkonce/linkonce.exp delete mode 100644 ld/testsuite/ld-linkonce/x.s delete mode 100644 ld/testsuite/ld-linkonce/y.s delete mode 100644 ld/testsuite/ld-linkonce/zeroeh.ld delete mode 100644 ld/testsuite/ld-linkonce/zeroehl32.d delete mode 100644 ld/testsuite/ld-m68hc11/adj-brset.d delete mode 100644 ld/testsuite/ld-m68hc11/adj-brset.s delete mode 100644 ld/testsuite/ld-m68hc11/adj-jump.d delete mode 100644 ld/testsuite/ld-m68hc11/adj-jump.s delete mode 100644 ld/testsuite/ld-m68hc11/bug-1403.d delete mode 100644 ld/testsuite/ld-m68hc11/bug-1403.s delete mode 100644 ld/testsuite/ld-m68hc11/bug-1417.d delete mode 100644 ld/testsuite/ld-m68hc11/bug-1417.s delete mode 100644 ld/testsuite/ld-m68hc11/bug-3331.d delete mode 100644 ld/testsuite/ld-m68hc11/bug-3331.s delete mode 100644 ld/testsuite/ld-m68hc11/far-hc11.d delete mode 100644 ld/testsuite/ld-m68hc11/far-hc11.s delete mode 100644 ld/testsuite/ld-m68hc11/far-hc12.d delete mode 100644 ld/testsuite/ld-m68hc11/far-hc12.ld delete mode 100644 ld/testsuite/ld-m68hc11/far-hc12.s delete mode 100644 ld/testsuite/ld-m68hc11/link-hc12.s delete mode 100644 ld/testsuite/ld-m68hc11/link-hcs12.d delete mode 100644 ld/testsuite/ld-m68hc11/link-hcs12.s delete mode 100644 ld/testsuite/ld-m68hc11/m68hc11.exp delete mode 100644 ld/testsuite/ld-m68hc11/relax-direct.d delete mode 100644 ld/testsuite/ld-m68hc11/relax-direct.s delete mode 100644 ld/testsuite/ld-m68hc11/relax-group.d delete mode 100644 ld/testsuite/ld-m68hc11/relax-group.s delete mode 100644 ld/testsuite/ld-mips-elf/branch-misc-1.d delete mode 100644 ld/testsuite/ld-mips-elf/elf-rel-got-n32.d delete mode 100644 ld/testsuite/ld-mips-elf/elf-rel-got-n64-linux.d delete mode 100644 ld/testsuite/ld-mips-elf/elf-rel-got-n64.d delete mode 100644 ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d delete mode 100644 ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d delete mode 100644 ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-ln.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-lp.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-mn.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-mp.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-ref.s delete mode 100644 ld/testsuite/ld-mips-elf/empic1-sn.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-sp.d delete mode 100644 ld/testsuite/ld-mips-elf/empic1-space.s delete mode 100644 ld/testsuite/ld-mips-elf/empic1-tgt.s delete mode 100644 ld/testsuite/ld-mips-elf/empic2-fwd-0.d delete mode 100644 ld/testsuite/ld-mips-elf/empic2-fwd-1.d delete mode 100644 ld/testsuite/ld-mips-elf/empic2-fwd-tgt.s delete mode 100644 ld/testsuite/ld-mips-elf/empic2-ref.s delete mode 100644 ld/testsuite/ld-mips-elf/empic2-rev-0.d delete mode 100644 ld/testsuite/ld-mips-elf/empic2-rev-1.d delete mode 100644 ld/testsuite/ld-mips-elf/empic2-rev-tgt.s delete mode 100644 ld/testsuite/ld-mips-elf/empic2-space.s delete mode 100644 ld/testsuite/ld-mips-elf/emrelocs-eb.d delete mode 100644 ld/testsuite/ld-mips-elf/emrelocs-el.d delete mode 100644 ld/testsuite/ld-mips-elf/emrelocs.ld delete mode 100644 ld/testsuite/ld-mips-elf/emrelocs1.s delete mode 100644 ld/testsuite/ld-mips-elf/emrelocs2.s delete mode 100644 ld/testsuite/ld-mips-elf/jr.s delete mode 100644 ld/testsuite/ld-mips-elf/mips-elf-flags.exp delete mode 100644 ld/testsuite/ld-mips-elf/mips-elf.exp delete mode 100644 ld/testsuite/ld-mips-elf/mips16-1.d delete mode 100644 ld/testsuite/ld-mips-elf/mips16-1a.s delete mode 100644 ld/testsuite/ld-mips-elf/mips16-1b.s delete mode 100644 ld/testsuite/ld-mips-elf/multi-got-1-1.s delete mode 100644 ld/testsuite/ld-mips-elf/multi-got-1-2.s delete mode 100644 ld/testsuite/ld-mips-elf/multi-got-1.d delete mode 100644 ld/testsuite/ld-mips-elf/region1.d delete mode 100644 ld/testsuite/ld-mips-elf/region1.t delete mode 100644 ld/testsuite/ld-mips-elf/region1a.s delete mode 100644 ld/testsuite/ld-mips-elf/region1b.s delete mode 100644 ld/testsuite/ld-mips-elf/rel32-n32.d delete mode 100644 ld/testsuite/ld-mips-elf/rel32-o32.d delete mode 100644 ld/testsuite/ld-mips-elf/rel32.s delete mode 100644 ld/testsuite/ld-mips-elf/rel64.d delete mode 100644 ld/testsuite/ld-mips-elf/rel64.s delete mode 100644 ld/testsuite/ld-mips-elf/relax-jalr-n32-shared.d delete mode 100644 ld/testsuite/ld-mips-elf/relax-jalr-n32.d delete mode 100644 ld/testsuite/ld-mips-elf/relax-jalr-n64-shared.d delete mode 100644 ld/testsuite/ld-mips-elf/relax-jalr-n64.d delete mode 100644 ld/testsuite/ld-mips-elf/relax-jalr.s delete mode 100644 ld/testsuite/ld-mips-elf/reloc-1-n32.d delete mode 100644 ld/testsuite/ld-mips-elf/reloc-1-n64.d delete mode 100644 ld/testsuite/ld-mips-elf/reloc-1-rel.d delete mode 100644 ld/testsuite/ld-mips-elf/reloc-1a.s delete mode 100644 ld/testsuite/ld-mips-elf/reloc-1b.s delete mode 100644 ld/testsuite/ld-mips-elf/reloc-2.d delete mode 100644 ld/testsuite/ld-mips-elf/reloc-2.ld delete mode 100644 ld/testsuite/ld-mips-elf/reloc-2a.s delete mode 100644 ld/testsuite/ld-mips-elf/reloc-2b.s delete mode 100644 ld/testsuite/ld-mips-elf/reloc-3-r.d delete mode 100644 ld/testsuite/ld-mips-elf/reloc-3-srec.d delete mode 100644 ld/testsuite/ld-mips-elf/reloc-3.ld delete mode 100644 ld/testsuite/ld-mips-elf/reloc-3a.s delete mode 100644 ld/testsuite/ld-mips-elf/reloc-3b.s delete mode 100644 ld/testsuite/ld-mmix/a.s delete mode 100644 ld/testsuite/ld-mmix/areg-256.s delete mode 100644 ld/testsuite/ld-mmix/areg-t.s delete mode 100644 ld/testsuite/ld-mmix/aregm.s delete mode 100644 ld/testsuite/ld-mmix/b-badfil1.d delete mode 100644 ld/testsuite/ld-mmix/b-badfil1.s delete mode 100644 ld/testsuite/ld-mmix/b-badfil2.d delete mode 100644 ld/testsuite/ld-mmix/b-badfil2.s delete mode 100644 ld/testsuite/ld-mmix/b-badfixo.d delete mode 100644 ld/testsuite/ld-mmix/b-badfixo.s delete mode 100644 ld/testsuite/ld-mmix/b-badloc.d delete mode 100644 ld/testsuite/ld-mmix/b-badloc.s delete mode 100644 ld/testsuite/ld-mmix/b-badlop.d delete mode 100644 ld/testsuite/ld-mmix/b-badlop.s delete mode 100644 ld/testsuite/ld-mmix/b-badm.d delete mode 100644 ld/testsuite/ld-mmix/b-badm2.s delete mode 100644 ld/testsuite/ld-mmix/b-badmain.s delete mode 100644 ld/testsuite/ld-mmix/b-badquot.d delete mode 100644 ld/testsuite/ld-mmix/b-badquot.s delete mode 100644 ld/testsuite/ld-mmix/b-badrx1.d delete mode 100644 ld/testsuite/ld-mmix/b-badrx1.s delete mode 100644 ld/testsuite/ld-mmix/b-badrx2.d delete mode 100644 ld/testsuite/ld-mmix/b-badrx2.s delete mode 100644 ld/testsuite/ld-mmix/b-badrx3.d delete mode 100644 ld/testsuite/ld-mmix/b-badrx3.s delete mode 100644 ld/testsuite/ld-mmix/b-bend.s delete mode 100644 ld/testsuite/ld-mmix/b-bend1.d delete mode 100644 ld/testsuite/ld-mmix/b-bend2.d delete mode 100644 ld/testsuite/ld-mmix/b-bend3.d delete mode 100644 ld/testsuite/ld-mmix/b-bstab1.d delete mode 100644 ld/testsuite/ld-mmix/b-bstab1.s delete mode 100644 ld/testsuite/ld-mmix/b-fixo2.d delete mode 100644 ld/testsuite/ld-mmix/b-fixo2.s delete mode 100644 ld/testsuite/ld-mmix/b-goodmain.s delete mode 100644 ld/testsuite/ld-mmix/b-loc64k.d delete mode 100644 ld/testsuite/ld-mmix/b-loc64k.s delete mode 100644 ld/testsuite/ld-mmix/b-nosym.d delete mode 100644 ld/testsuite/ld-mmix/b-nosym.s delete mode 100644 ld/testsuite/ld-mmix/b-post1.s delete mode 100644 ld/testsuite/ld-mmix/b-twoinsn.s delete mode 100644 ld/testsuite/ld-mmix/b-widec.s delete mode 100644 ld/testsuite/ld-mmix/b-widec1.d delete mode 100644 ld/testsuite/ld-mmix/b-widec2.d delete mode 100644 ld/testsuite/ld-mmix/b-widec2.s delete mode 100644 ld/testsuite/ld-mmix/b-widec3.d delete mode 100644 ld/testsuite/ld-mmix/b-widec3.s delete mode 100644 ld/testsuite/ld-mmix/bpo-1.d delete mode 100644 ld/testsuite/ld-mmix/bpo-1.s delete mode 100644 ld/testsuite/ld-mmix/bpo-10.d delete mode 100644 ld/testsuite/ld-mmix/bpo-10.s delete mode 100644 ld/testsuite/ld-mmix/bpo-11.d delete mode 100644 ld/testsuite/ld-mmix/bpo-11.s delete mode 100644 ld/testsuite/ld-mmix/bpo-12.d delete mode 100644 ld/testsuite/ld-mmix/bpo-12m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-13.d delete mode 100644 ld/testsuite/ld-mmix/bpo-13m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-14.d delete mode 100644 ld/testsuite/ld-mmix/bpo-14m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-15.d delete mode 100644 ld/testsuite/ld-mmix/bpo-15m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-16.d delete mode 100644 ld/testsuite/ld-mmix/bpo-16m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-17.d delete mode 100644 ld/testsuite/ld-mmix/bpo-17m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-18.d delete mode 100644 ld/testsuite/ld-mmix/bpo-18m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-19.d delete mode 100644 ld/testsuite/ld-mmix/bpo-19m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-1m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-2.d delete mode 100644 ld/testsuite/ld-mmix/bpo-2.s delete mode 100644 ld/testsuite/ld-mmix/bpo-20.d delete mode 100644 ld/testsuite/ld-mmix/bpo-20m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-21.d delete mode 100644 ld/testsuite/ld-mmix/bpo-21m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-22.d delete mode 100644 ld/testsuite/ld-mmix/bpo-2m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-3.d delete mode 100644 ld/testsuite/ld-mmix/bpo-3.s delete mode 100644 ld/testsuite/ld-mmix/bpo-3m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-4.d delete mode 100644 ld/testsuite/ld-mmix/bpo-4.s delete mode 100644 ld/testsuite/ld-mmix/bpo-4m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-5.d delete mode 100644 ld/testsuite/ld-mmix/bpo-5.s delete mode 100644 ld/testsuite/ld-mmix/bpo-5m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-6.d delete mode 100644 ld/testsuite/ld-mmix/bpo-6.s delete mode 100644 ld/testsuite/ld-mmix/bpo-6m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-7.d delete mode 100644 ld/testsuite/ld-mmix/bpo-7.s delete mode 100644 ld/testsuite/ld-mmix/bpo-7m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-8.d delete mode 100644 ld/testsuite/ld-mmix/bpo-8.s delete mode 100644 ld/testsuite/ld-mmix/bpo-8m.d delete mode 100644 ld/testsuite/ld-mmix/bpo-9.d delete mode 100644 ld/testsuite/ld-mmix/bpo-9.s delete mode 100644 ld/testsuite/ld-mmix/bpo-9m.d delete mode 100644 ld/testsuite/ld-mmix/bpo64addr.ld delete mode 100644 ld/testsuite/ld-mmix/bspec1.d delete mode 100644 ld/testsuite/ld-mmix/bspec1.s delete mode 100644 ld/testsuite/ld-mmix/bspec1m.d delete mode 100644 ld/testsuite/ld-mmix/bspec2.d delete mode 100644 ld/testsuite/ld-mmix/bspec2.s delete mode 100644 ld/testsuite/ld-mmix/bspec2m.d delete mode 100644 ld/testsuite/ld-mmix/bspec801.s delete mode 100644 ld/testsuite/ld-mmix/bspec802.s delete mode 100644 ld/testsuite/ld-mmix/bspec803.s delete mode 100644 ld/testsuite/ld-mmix/bspec804.s delete mode 100644 ld/testsuite/ld-mmix/bspec805.s delete mode 100644 ld/testsuite/ld-mmix/bspec806.s delete mode 100644 ld/testsuite/ld-mmix/bspec807.s delete mode 100644 ld/testsuite/ld-mmix/bspec808.s delete mode 100644 ld/testsuite/ld-mmix/bza-1b.d delete mode 100644 ld/testsuite/ld-mmix/bza-1f.d delete mode 100644 ld/testsuite/ld-mmix/bza-2b.d delete mode 100644 ld/testsuite/ld-mmix/bza-2f.d delete mode 100644 ld/testsuite/ld-mmix/bza-7b.d delete mode 100644 ld/testsuite/ld-mmix/bza-7f.d delete mode 100644 ld/testsuite/ld-mmix/bza-8b.d delete mode 100644 ld/testsuite/ld-mmix/bza-8f.d delete mode 100644 ld/testsuite/ld-mmix/bza.s delete mode 100644 ld/testsuite/ld-mmix/data1.s delete mode 100644 ld/testsuite/ld-mmix/dloc1.s delete mode 100644 ld/testsuite/ld-mmix/dloc2.s delete mode 100644 ld/testsuite/ld-mmix/ext1-254.s delete mode 100644 ld/testsuite/ld-mmix/ext1.s delete mode 100644 ld/testsuite/ld-mmix/ext1g.s delete mode 100644 ld/testsuite/ld-mmix/ext1l.s delete mode 100644 ld/testsuite/ld-mmix/getaa-1b.d delete mode 100644 ld/testsuite/ld-mmix/getaa-1f.d delete mode 100644 ld/testsuite/ld-mmix/getaa-2b.d delete mode 100644 ld/testsuite/ld-mmix/getaa-2f.d delete mode 100644 ld/testsuite/ld-mmix/getaa-4b.d delete mode 100644 ld/testsuite/ld-mmix/getaa-4f.d delete mode 100644 ld/testsuite/ld-mmix/getaa-6b.d delete mode 100644 ld/testsuite/ld-mmix/getaa-6f.d delete mode 100644 ld/testsuite/ld-mmix/getaa-7b.d delete mode 100644 ld/testsuite/ld-mmix/getaa-7f.d delete mode 100644 ld/testsuite/ld-mmix/getaa-8b.d delete mode 100644 ld/testsuite/ld-mmix/getaa-8f.d delete mode 100644 ld/testsuite/ld-mmix/getaa.s delete mode 100644 ld/testsuite/ld-mmix/getaa12b.d delete mode 100644 ld/testsuite/ld-mmix/getaa12f.d delete mode 100644 ld/testsuite/ld-mmix/getaa14b.d delete mode 100644 ld/testsuite/ld-mmix/getaa14f.d delete mode 100644 ld/testsuite/ld-mmix/greg-1.d delete mode 100644 ld/testsuite/ld-mmix/greg-1.s delete mode 100644 ld/testsuite/ld-mmix/greg-10.d delete mode 100644 ld/testsuite/ld-mmix/greg-11.d delete mode 100644 ld/testsuite/ld-mmix/greg-11b.d delete mode 100644 ld/testsuite/ld-mmix/greg-12.d delete mode 100644 ld/testsuite/ld-mmix/greg-13.d delete mode 100644 ld/testsuite/ld-mmix/greg-14.d delete mode 100644 ld/testsuite/ld-mmix/greg-14s.d delete mode 100644 ld/testsuite/ld-mmix/greg-15.d delete mode 100644 ld/testsuite/ld-mmix/greg-16.d delete mode 100644 ld/testsuite/ld-mmix/greg-17.d delete mode 100644 ld/testsuite/ld-mmix/greg-18.d delete mode 100644 ld/testsuite/ld-mmix/greg-19.d delete mode 100644 ld/testsuite/ld-mmix/greg-2.d delete mode 100644 ld/testsuite/ld-mmix/greg-2.s delete mode 100644 ld/testsuite/ld-mmix/greg-20.d delete mode 100644 ld/testsuite/ld-mmix/greg-3.d delete mode 100644 ld/testsuite/ld-mmix/greg-3.s delete mode 100644 ld/testsuite/ld-mmix/greg-4.d delete mode 100644 ld/testsuite/ld-mmix/greg-4.s delete mode 100644 ld/testsuite/ld-mmix/greg-5.d delete mode 100644 ld/testsuite/ld-mmix/greg-5.s delete mode 100644 ld/testsuite/ld-mmix/greg-5s.d delete mode 100644 ld/testsuite/ld-mmix/greg-6.d delete mode 100644 ld/testsuite/ld-mmix/greg-7.d delete mode 100644 ld/testsuite/ld-mmix/greg-8.d delete mode 100644 ld/testsuite/ld-mmix/greg-9.d delete mode 100644 ld/testsuite/ld-mmix/gregbza1.s delete mode 100644 ld/testsuite/ld-mmix/gregget1.s delete mode 100644 ld/testsuite/ld-mmix/gregget2.s delete mode 100644 ld/testsuite/ld-mmix/gregldo1.s delete mode 100644 ld/testsuite/ld-mmix/gregpsj1.s delete mode 100644 ld/testsuite/ld-mmix/hdr-1.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-1b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-1f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-2b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-2f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-3b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-3f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-4b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-4f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-5b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-5f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-6b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-6f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-7b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-7f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-8b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-8f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-9b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa-9f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa.s delete mode 100644 ld/testsuite/ld-mmix/jumpa12b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa12f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa13b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa13f.d delete mode 100644 ld/testsuite/ld-mmix/jumpa14b.d delete mode 100644 ld/testsuite/ld-mmix/jumpa14f.d delete mode 100644 ld/testsuite/ld-mmix/loc1.d delete mode 100644 ld/testsuite/ld-mmix/loc1.s delete mode 100644 ld/testsuite/ld-mmix/loc1m.d delete mode 100644 ld/testsuite/ld-mmix/loc2.d delete mode 100644 ld/testsuite/ld-mmix/loc2.s delete mode 100644 ld/testsuite/ld-mmix/loc2m.d delete mode 100644 ld/testsuite/ld-mmix/loc3.d delete mode 100644 ld/testsuite/ld-mmix/loc3m.d delete mode 100644 ld/testsuite/ld-mmix/loc4.d delete mode 100644 ld/testsuite/ld-mmix/loc4m.d delete mode 100644 ld/testsuite/ld-mmix/loc5.d delete mode 100644 ld/testsuite/ld-mmix/loc5m.d delete mode 100644 ld/testsuite/ld-mmix/loc6.d delete mode 100644 ld/testsuite/ld-mmix/loc6m.d delete mode 100644 ld/testsuite/ld-mmix/loc7.d delete mode 100644 ld/testsuite/ld-mmix/loc7m.d delete mode 100644 ld/testsuite/ld-mmix/local1.d delete mode 100644 ld/testsuite/ld-mmix/local1.s delete mode 100644 ld/testsuite/ld-mmix/local10.d delete mode 100644 ld/testsuite/ld-mmix/local10m.d delete mode 100644 ld/testsuite/ld-mmix/local11.d delete mode 100644 ld/testsuite/ld-mmix/local11m.d delete mode 100644 ld/testsuite/ld-mmix/local12.d delete mode 100644 ld/testsuite/ld-mmix/local12m.d delete mode 100644 ld/testsuite/ld-mmix/local1m.d delete mode 100644 ld/testsuite/ld-mmix/local2.d delete mode 100644 ld/testsuite/ld-mmix/local2.s delete mode 100644 ld/testsuite/ld-mmix/local2m.d delete mode 100644 ld/testsuite/ld-mmix/local3.d delete mode 100644 ld/testsuite/ld-mmix/local3m.d delete mode 100644 ld/testsuite/ld-mmix/local4.d delete mode 100644 ld/testsuite/ld-mmix/local4m.d delete mode 100644 ld/testsuite/ld-mmix/local5.d delete mode 100644 ld/testsuite/ld-mmix/local5m.d delete mode 100644 ld/testsuite/ld-mmix/local6.d delete mode 100644 ld/testsuite/ld-mmix/local6m.d delete mode 100644 ld/testsuite/ld-mmix/local7.d delete mode 100644 ld/testsuite/ld-mmix/local7m.d delete mode 100644 ld/testsuite/ld-mmix/local8.d delete mode 100644 ld/testsuite/ld-mmix/local8m.d delete mode 100644 ld/testsuite/ld-mmix/local9.d delete mode 100644 ld/testsuite/ld-mmix/local9m.d delete mode 100644 ld/testsuite/ld-mmix/locdo-1.d delete mode 100644 ld/testsuite/ld-mmix/locdo.s delete mode 100644 ld/testsuite/ld-mmix/loct-1.d delete mode 100644 ld/testsuite/ld-mmix/loct.s delete mode 100644 ld/testsuite/ld-mmix/locto-1.d delete mode 100644 ld/testsuite/ld-mmix/locto.s delete mode 100644 ld/testsuite/ld-mmix/main1.s delete mode 100644 ld/testsuite/ld-mmix/mmix.exp delete mode 100644 ld/testsuite/ld-mmix/mmohdr1.ld delete mode 100644 ld/testsuite/ld-mmix/mmosec1.ld delete mode 100644 ld/testsuite/ld-mmix/mmosec2.ld delete mode 100644 ld/testsuite/ld-mmix/nop123.s delete mode 100644 ld/testsuite/ld-mmix/pad16.s delete mode 100644 ld/testsuite/ld-mmix/pad2p18m32.s delete mode 100644 ld/testsuite/ld-mmix/pad2p26m32.s delete mode 100644 ld/testsuite/ld-mmix/pad4.s delete mode 100644 ld/testsuite/ld-mmix/pushja.s delete mode 100644 ld/testsuite/ld-mmix/pushja1b-s.d delete mode 100644 ld/testsuite/ld-mmix/pushja1b.d delete mode 100644 ld/testsuite/ld-mmix/pushja1f-s.d delete mode 100644 ld/testsuite/ld-mmix/pushja1f.d delete mode 100644 ld/testsuite/ld-mmix/pushja2b.d delete mode 100644 ld/testsuite/ld-mmix/pushja2f.d delete mode 100644 ld/testsuite/ld-mmix/pushja7b-s.d delete mode 100644 ld/testsuite/ld-mmix/pushja7b.d delete mode 100644 ld/testsuite/ld-mmix/pushja7f-s.d delete mode 100644 ld/testsuite/ld-mmix/pushja7f.d delete mode 100644 ld/testsuite/ld-mmix/pushja8b.d delete mode 100644 ld/testsuite/ld-mmix/pushja8f.d delete mode 100644 ld/testsuite/ld-mmix/pushjs1.d delete mode 100644 ld/testsuite/ld-mmix/pushjs1b.d delete mode 100644 ld/testsuite/ld-mmix/pushjs1bm.d delete mode 100644 ld/testsuite/ld-mmix/pushjs1m.d delete mode 100644 ld/testsuite/ld-mmix/pushjs1r.d delete mode 100644 ld/testsuite/ld-mmix/pushjs2.d delete mode 100644 ld/testsuite/ld-mmix/pushjs2b.d delete mode 100644 ld/testsuite/ld-mmix/pushjs2bm.d delete mode 100644 ld/testsuite/ld-mmix/pushjs2m.d delete mode 100644 ld/testsuite/ld-mmix/pushjs2r.d delete mode 100644 ld/testsuite/ld-mmix/pushjs3.d delete mode 100644 ld/testsuite/ld-mmix/pushjs3b.d delete mode 100644 ld/testsuite/ld-mmix/pushjs3bm.d delete mode 100644 ld/testsuite/ld-mmix/pushjs3m.d delete mode 100644 ld/testsuite/ld-mmix/pushjs3r.d delete mode 100644 ld/testsuite/ld-mmix/pushjs4.d delete mode 100644 ld/testsuite/ld-mmix/pushjs4b.d delete mode 100644 ld/testsuite/ld-mmix/pushjs4bm.d delete mode 100644 ld/testsuite/ld-mmix/pushjs4m.d delete mode 100644 ld/testsuite/ld-mmix/pushjs4r.d delete mode 100644 ld/testsuite/ld-mmix/reg-1.d delete mode 100644 ld/testsuite/ld-mmix/reg-1m.d delete mode 100644 ld/testsuite/ld-mmix/reg-2.d delete mode 100644 ld/testsuite/ld-mmix/reg-2m.d delete mode 100644 ld/testsuite/ld-mmix/regext1.s delete mode 100644 ld/testsuite/ld-mmix/sec-1.d delete mode 100644 ld/testsuite/ld-mmix/sec-1.s delete mode 100644 ld/testsuite/ld-mmix/sec-2.d delete mode 100644 ld/testsuite/ld-mmix/sec-2.s delete mode 100644 ld/testsuite/ld-mmix/sec-3.d delete mode 100644 ld/testsuite/ld-mmix/sec-4.d delete mode 100644 ld/testsuite/ld-mmix/sec-5.d delete mode 100644 ld/testsuite/ld-mmix/sec-6.d delete mode 100644 ld/testsuite/ld-mmix/sec-6.s delete mode 100644 ld/testsuite/ld-mmix/sec-6m.d delete mode 100644 ld/testsuite/ld-mmix/sec-7a.s delete mode 100644 ld/testsuite/ld-mmix/sec-7b.s delete mode 100644 ld/testsuite/ld-mmix/sec-7c.s delete mode 100644 ld/testsuite/ld-mmix/sec-7d.s delete mode 100644 ld/testsuite/ld-mmix/sec-7e.s delete mode 100644 ld/testsuite/ld-mmix/sec-7m.d delete mode 100644 ld/testsuite/ld-mmix/sec-8a.s delete mode 100644 ld/testsuite/ld-mmix/sec-8b.s delete mode 100644 ld/testsuite/ld-mmix/sec-8d.s delete mode 100644 ld/testsuite/ld-mmix/sec-8m.d delete mode 100644 ld/testsuite/ld-mmix/sec-8m.s delete mode 100644 ld/testsuite/ld-mmix/spec801.d delete mode 100644 ld/testsuite/ld-mmix/spec802.d delete mode 100644 ld/testsuite/ld-mmix/spec803.d delete mode 100644 ld/testsuite/ld-mmix/spec804.d delete mode 100644 ld/testsuite/ld-mmix/spec805.d delete mode 100644 ld/testsuite/ld-mmix/spec806.d delete mode 100644 ld/testsuite/ld-mmix/spec807.d delete mode 100644 ld/testsuite/ld-mmix/spec808.d delete mode 100644 ld/testsuite/ld-mmix/start-1.d delete mode 100644 ld/testsuite/ld-mmix/start-2.d delete mode 100644 ld/testsuite/ld-mmix/start.s delete mode 100644 ld/testsuite/ld-mmix/start2.s delete mode 100644 ld/testsuite/ld-mmix/start3.s delete mode 100644 ld/testsuite/ld-mmix/start4.s delete mode 100644 ld/testsuite/ld-mmix/sym-1.d delete mode 100644 ld/testsuite/ld-mmix/sym-2.d delete mode 100644 ld/testsuite/ld-mmix/sym-2.s delete mode 100644 ld/testsuite/ld-mmix/undef-1.d delete mode 100644 ld/testsuite/ld-mmix/undef-1.s delete mode 100644 ld/testsuite/ld-mmix/undef-1m.d delete mode 100644 ld/testsuite/ld-mmix/undef-2.d delete mode 100644 ld/testsuite/ld-mmix/undef-2.s delete mode 100644 ld/testsuite/ld-mmix/undef-2m.d delete mode 100644 ld/testsuite/ld-mmix/undef-3.d delete mode 100644 ld/testsuite/ld-mmix/undef-3m.d delete mode 100644 ld/testsuite/ld-mmix/x.s delete mode 100644 ld/testsuite/ld-mmix/y.s delete mode 100644 ld/testsuite/ld-mmix/zeroeh.ld delete mode 100644 ld/testsuite/ld-mmix/zeroehelf.d delete mode 100644 ld/testsuite/ld-mmix/zeroehmmo.d delete mode 100644 ld/testsuite/ld-powerpc/apuinfo.rd delete mode 100644 ld/testsuite/ld-powerpc/apuinfo1.s delete mode 100644 ld/testsuite/ld-powerpc/apuinfo2.s delete mode 100644 ld/testsuite/ld-powerpc/powerpc.exp delete mode 100644 ld/testsuite/ld-powerpc/reloc.d delete mode 100644 ld/testsuite/ld-powerpc/reloc.s delete mode 100644 ld/testsuite/ld-powerpc/tls.d delete mode 100644 ld/testsuite/ld-powerpc/tls.g delete mode 100644 ld/testsuite/ld-powerpc/tls.s delete mode 100644 ld/testsuite/ld-powerpc/tls.t delete mode 100644 ld/testsuite/ld-powerpc/tls32.d delete mode 100644 ld/testsuite/ld-powerpc/tls32.g delete mode 100644 ld/testsuite/ld-powerpc/tls32.s delete mode 100644 ld/testsuite/ld-powerpc/tls32.t delete mode 100644 ld/testsuite/ld-powerpc/tlsexe.d delete mode 100644 ld/testsuite/ld-powerpc/tlsexe.g delete mode 100644 ld/testsuite/ld-powerpc/tlsexe.r delete mode 100644 ld/testsuite/ld-powerpc/tlsexe.t delete mode 100644 ld/testsuite/ld-powerpc/tlsexe32.d delete mode 100644 ld/testsuite/ld-powerpc/tlsexe32.g delete mode 100644 ld/testsuite/ld-powerpc/tlsexe32.r delete mode 100644 ld/testsuite/ld-powerpc/tlsexe32.t delete mode 100644 ld/testsuite/ld-powerpc/tlsexetoc.d delete mode 100644 ld/testsuite/ld-powerpc/tlsexetoc.g delete mode 100644 ld/testsuite/ld-powerpc/tlsexetoc.r delete mode 100644 ld/testsuite/ld-powerpc/tlsexetoc.t delete mode 100644 ld/testsuite/ld-powerpc/tlslib.s delete mode 100644 ld/testsuite/ld-powerpc/tlslib32.s delete mode 100644 ld/testsuite/ld-powerpc/tlsso.d delete mode 100644 ld/testsuite/ld-powerpc/tlsso.g delete mode 100644 ld/testsuite/ld-powerpc/tlsso.r delete mode 100644 ld/testsuite/ld-powerpc/tlsso.t delete mode 100644 ld/testsuite/ld-powerpc/tlsso32.d delete mode 100644 ld/testsuite/ld-powerpc/tlsso32.g delete mode 100644 ld/testsuite/ld-powerpc/tlsso32.r delete mode 100644 ld/testsuite/ld-powerpc/tlsso32.t delete mode 100644 ld/testsuite/ld-powerpc/tlstoc.d delete mode 100644 ld/testsuite/ld-powerpc/tlstoc.g delete mode 100644 ld/testsuite/ld-powerpc/tlstoc.s delete mode 100644 ld/testsuite/ld-powerpc/tlstoc.t delete mode 100644 ld/testsuite/ld-powerpc/tlstocso.d delete mode 100644 ld/testsuite/ld-powerpc/tlstocso.g delete mode 100644 ld/testsuite/ld-powerpc/tlstocso.r delete mode 100644 ld/testsuite/ld-powerpc/tlstocso.t delete mode 100644 ld/testsuite/ld-s390/s390.exp delete mode 100644 ld/testsuite/ld-s390/tlsbin.dd delete mode 100644 ld/testsuite/ld-s390/tlsbin.rd delete mode 100644 ld/testsuite/ld-s390/tlsbin.s delete mode 100644 ld/testsuite/ld-s390/tlsbin.sd delete mode 100644 ld/testsuite/ld-s390/tlsbin.td delete mode 100644 ld/testsuite/ld-s390/tlsbin_64.dd delete mode 100644 ld/testsuite/ld-s390/tlsbin_64.rd delete mode 100644 ld/testsuite/ld-s390/tlsbin_64.s delete mode 100644 ld/testsuite/ld-s390/tlsbin_64.sd delete mode 100644 ld/testsuite/ld-s390/tlsbin_64.td delete mode 100644 ld/testsuite/ld-s390/tlsbinpic.s delete mode 100644 ld/testsuite/ld-s390/tlsbinpic_64.s delete mode 100644 ld/testsuite/ld-s390/tlslib.s delete mode 100644 ld/testsuite/ld-s390/tlslib_64.s delete mode 100644 ld/testsuite/ld-s390/tlspic.dd delete mode 100644 ld/testsuite/ld-s390/tlspic.rd delete mode 100644 ld/testsuite/ld-s390/tlspic.sd delete mode 100644 ld/testsuite/ld-s390/tlspic.td delete mode 100644 ld/testsuite/ld-s390/tlspic1.s delete mode 100644 ld/testsuite/ld-s390/tlspic1_64.s delete mode 100644 ld/testsuite/ld-s390/tlspic2.s delete mode 100644 ld/testsuite/ld-s390/tlspic2_64.s delete mode 100644 ld/testsuite/ld-s390/tlspic_64.dd delete mode 100644 ld/testsuite/ld-s390/tlspic_64.rd delete mode 100644 ld/testsuite/ld-s390/tlspic_64.sd delete mode 100644 ld/testsuite/ld-s390/tlspic_64.td delete mode 100644 ld/testsuite/ld-scripts/align.exp delete mode 100644 ld/testsuite/ld-scripts/align.s delete mode 100644 ld/testsuite/ld-scripts/align.t delete mode 100644 ld/testsuite/ld-scripts/assert.exp delete mode 100644 ld/testsuite/ld-scripts/assert.s delete mode 100644 ld/testsuite/ld-scripts/assert.t delete mode 100644 ld/testsuite/ld-scripts/cross1.c delete mode 100644 ld/testsuite/ld-scripts/cross1.t delete mode 100644 ld/testsuite/ld-scripts/cross2.c delete mode 100644 ld/testsuite/ld-scripts/cross2.t delete mode 100644 ld/testsuite/ld-scripts/cross3.c delete mode 100644 ld/testsuite/ld-scripts/crossref.exp delete mode 100644 ld/testsuite/ld-scripts/data.d delete mode 100644 ld/testsuite/ld-scripts/data.exp delete mode 100644 ld/testsuite/ld-scripts/data.s delete mode 100644 ld/testsuite/ld-scripts/data.t delete mode 100644 ld/testsuite/ld-scripts/defined.exp delete mode 100644 ld/testsuite/ld-scripts/defined.s delete mode 100644 ld/testsuite/ld-scripts/defined.t delete mode 100644 ld/testsuite/ld-scripts/defined2.d delete mode 100644 ld/testsuite/ld-scripts/defined2.t delete mode 100644 ld/testsuite/ld-scripts/defined3.d delete mode 100644 ld/testsuite/ld-scripts/defined3.t delete mode 100644 ld/testsuite/ld-scripts/dynamic-sections-1.s delete mode 100644 ld/testsuite/ld-scripts/dynamic-sections-2.s delete mode 100644 ld/testsuite/ld-scripts/dynamic-sections.d delete mode 100644 ld/testsuite/ld-scripts/dynamic-sections.exp delete mode 100644 ld/testsuite/ld-scripts/dynamic-sections.t delete mode 100644 ld/testsuite/ld-scripts/map-address.d delete mode 100644 ld/testsuite/ld-scripts/map-address.exp delete mode 100644 ld/testsuite/ld-scripts/map-address.t delete mode 100644 ld/testsuite/ld-scripts/overlay-size-map.d delete mode 100644 ld/testsuite/ld-scripts/overlay-size.d delete mode 100644 ld/testsuite/ld-scripts/overlay-size.exp delete mode 100644 ld/testsuite/ld-scripts/overlay-size.s delete mode 100644 ld/testsuite/ld-scripts/overlay-size.t delete mode 100644 ld/testsuite/ld-scripts/phdrs.exp delete mode 100644 ld/testsuite/ld-scripts/phdrs.s delete mode 100644 ld/testsuite/ld-scripts/phdrs.t delete mode 100644 ld/testsuite/ld-scripts/phdrs2.exp delete mode 100644 ld/testsuite/ld-scripts/phdrs2.s delete mode 100644 ld/testsuite/ld-scripts/phdrs2.t delete mode 100644 ld/testsuite/ld-scripts/provide-1.d delete mode 100644 ld/testsuite/ld-scripts/provide-1.s delete mode 100644 ld/testsuite/ld-scripts/provide-1.t delete mode 100644 ld/testsuite/ld-scripts/provide-2.d delete mode 100644 ld/testsuite/ld-scripts/provide-2.s delete mode 100644 ld/testsuite/ld-scripts/provide-2.t delete mode 100644 ld/testsuite/ld-scripts/provide-3.d delete mode 100644 ld/testsuite/ld-scripts/provide-3.s delete mode 100644 ld/testsuite/ld-scripts/provide-3.t delete mode 100644 ld/testsuite/ld-scripts/provide.exp delete mode 100644 ld/testsuite/ld-scripts/script.exp delete mode 100644 ld/testsuite/ld-scripts/script.s delete mode 100644 ld/testsuite/ld-scripts/script.t delete mode 100644 ld/testsuite/ld-scripts/scriptm.t delete mode 100644 ld/testsuite/ld-scripts/sizeof.exp delete mode 100644 ld/testsuite/ld-scripts/sizeof.s delete mode 100644 ld/testsuite/ld-scripts/sizeof.t delete mode 100644 ld/testsuite/ld-scripts/weak.exp delete mode 100644 ld/testsuite/ld-scripts/weak.t delete mode 100644 ld/testsuite/ld-scripts/weak1.s delete mode 100644 ld/testsuite/ld-scripts/weak2.s delete mode 100644 ld/testsuite/ld-selective/1.c delete mode 100644 ld/testsuite/ld-selective/2.c delete mode 100644 ld/testsuite/ld-selective/3.cc delete mode 100644 ld/testsuite/ld-selective/4.cc delete mode 100644 ld/testsuite/ld-selective/5.cc delete mode 100644 ld/testsuite/ld-selective/keepdot.d delete mode 100644 ld/testsuite/ld-selective/keepdot.ld delete mode 100644 ld/testsuite/ld-selective/keepdot.s delete mode 100644 ld/testsuite/ld-selective/keepdot0.d delete mode 100644 ld/testsuite/ld-selective/keepdot0.ld delete mode 100644 ld/testsuite/ld-selective/sel-dump.exp delete mode 100644 ld/testsuite/ld-selective/selective.exp delete mode 100644 ld/testsuite/ld-sh/ld-r-1.d delete mode 100644 ld/testsuite/ld-sh/ldr1.s delete mode 100644 ld/testsuite/ld-sh/ldr2.s delete mode 100644 ld/testsuite/ld-sh/rd-sh.exp delete mode 100644 ld/testsuite/ld-sh/refdbg-0-dso.d delete mode 100644 ld/testsuite/ld-sh/refdbg-1.d delete mode 100644 ld/testsuite/ld-sh/refdbg.s delete mode 100644 ld/testsuite/ld-sh/refdbglib.s delete mode 100644 ld/testsuite/ld-sh/sh.exp delete mode 100644 ld/testsuite/ld-sh/sh1.s delete mode 100644 ld/testsuite/ld-sh/sh2.c delete mode 100644 ld/testsuite/ld-sh/sh64/abi32.sd delete mode 100644 ld/testsuite/ld-sh/sh64/abi32.xd delete mode 100644 ld/testsuite/ld-sh/sh64/abi64.sd delete mode 100644 ld/testsuite/ld-sh/sh64/abi64.xd delete mode 100644 ld/testsuite/ld-sh/sh64/abixx-noexp.sd delete mode 100644 ld/testsuite/ld-sh/sh64/cmpct1.sd delete mode 100644 ld/testsuite/ld-sh/sh64/cmpct1.xd delete mode 100644 ld/testsuite/ld-sh/sh64/crange-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2a.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2b.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2c.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2d.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2e.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2f.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2g.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2h.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange-2i.s delete mode 100644 ld/testsuite/ld-sh/sh64/crange1.rd delete mode 100644 ld/testsuite/ld-sh/sh64/crange2.rd delete mode 100644 ld/testsuite/ld-sh/sh64/crange3-cmpct.rd delete mode 100644 ld/testsuite/ld-sh/sh64/crange3-media.rd delete mode 100644 ld/testsuite/ld-sh/sh64/crange3.dd delete mode 100644 ld/testsuite/ld-sh/sh64/crange3.rd delete mode 100644 ld/testsuite/ld-sh/sh64/crangerel1.rd delete mode 100644 ld/testsuite/ld-sh/sh64/crangerel2.rd delete mode 100644 ld/testsuite/ld-sh/sh64/dlsection-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/dlsection.sd delete mode 100644 ld/testsuite/ld-sh/sh64/endian.dbd delete mode 100644 ld/testsuite/ld-sh/sh64/endian.dld delete mode 100644 ld/testsuite/ld-sh/sh64/endian.ld delete mode 100644 ld/testsuite/ld-sh/sh64/endian.s delete mode 100644 ld/testsuite/ld-sh/sh64/endian.sbd delete mode 100644 ld/testsuite/ld-sh/sh64/endian.sld delete mode 100644 ld/testsuite/ld-sh/sh64/gotplt.d delete mode 100644 ld/testsuite/ld-sh/sh64/gotplt.map delete mode 100644 ld/testsuite/ld-sh/sh64/gotplt.s delete mode 100644 ld/testsuite/ld-sh/sh64/init-cmpct.d delete mode 100644 ld/testsuite/ld-sh/sh64/init-media.d delete mode 100644 ld/testsuite/ld-sh/sh64/init.s delete mode 100644 ld/testsuite/ld-sh/sh64/init64.d delete mode 100644 ld/testsuite/ld-sh/sh64/mix1-noexp.sd delete mode 100644 ld/testsuite/ld-sh/sh64/mix1.sd delete mode 100644 ld/testsuite/ld-sh/sh64/mix1.xd delete mode 100644 ld/testsuite/ld-sh/sh64/mix2-noexp.sd delete mode 100644 ld/testsuite/ld-sh/sh64/mix2.sd delete mode 100644 ld/testsuite/ld-sh/sh64/mix2.xd delete mode 100644 ld/testsuite/ld-sh/sh64/rd-sh64.exp delete mode 100644 ld/testsuite/ld-sh/sh64/rel-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/rel-2.s delete mode 100644 ld/testsuite/ld-sh/sh64/rel32.xd delete mode 100644 ld/testsuite/ld-sh/sh64/rel64.xd delete mode 100644 ld/testsuite/ld-sh/sh64/relax.exp delete mode 100644 ld/testsuite/ld-sh/sh64/relax1.s delete mode 100644 ld/testsuite/ld-sh/sh64/relax2.s delete mode 100644 ld/testsuite/ld-sh/sh64/relax3.s delete mode 100644 ld/testsuite/ld-sh/sh64/relax4.s delete mode 100644 ld/testsuite/ld-sh/sh64/reldl-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/reldl-2.s delete mode 100644 ld/testsuite/ld-sh/sh64/reldl32.rd delete mode 100644 ld/testsuite/ld-sh/sh64/reldl64.rd delete mode 100644 ld/testsuite/ld-sh/sh64/relfail.exp delete mode 100644 ld/testsuite/ld-sh/sh64/relfail.s delete mode 100644 ld/testsuite/ld-sh/sh64/sh64-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/sh64-2.s delete mode 100644 ld/testsuite/ld-sh/sh64/sh64.exp delete mode 100644 ld/testsuite/ld-sh/sh64/shcmp-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/shdl-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/shdl-2.s delete mode 100644 ld/testsuite/ld-sh/sh64/shdl32.xd delete mode 100644 ld/testsuite/ld-sh/sh64/shdl64.sd delete mode 100644 ld/testsuite/ld-sh/sh64/shdl64.xd delete mode 100644 ld/testsuite/ld-sh/sh64/shmix-1.s delete mode 100644 ld/testsuite/ld-sh/sh64/shmix-2.s delete mode 100644 ld/testsuite/ld-sh/sh64/shmix-3.s delete mode 100644 ld/testsuite/ld-sh/sh64/stobin-0-dso.d delete mode 100644 ld/testsuite/ld-sh/sh64/stobin-1.d delete mode 100644 ld/testsuite/ld-sh/sh64/stobin.s delete mode 100644 ld/testsuite/ld-sh/sh64/stolib.s delete mode 100644 ld/testsuite/ld-sh/shared-1.d delete mode 100644 ld/testsuite/ld-sh/shared-2.d delete mode 100644 ld/testsuite/ld-sh/start.s delete mode 100644 ld/testsuite/ld-sh/sub2l-1.d delete mode 100644 ld/testsuite/ld-sh/sub2l.s delete mode 100644 ld/testsuite/ld-sh/textrel1.s delete mode 100644 ld/testsuite/ld-sh/textrel2.s delete mode 100644 ld/testsuite/ld-sh/tlsbin-0-dso.d delete mode 100644 ld/testsuite/ld-sh/tlsbin-1.d delete mode 100644 ld/testsuite/ld-sh/tlsbin-2.d delete mode 100644 ld/testsuite/ld-sh/tlsbin-3.d delete mode 100644 ld/testsuite/ld-sh/tlsbin-4.d delete mode 100644 ld/testsuite/ld-sh/tlsbin.s delete mode 100644 ld/testsuite/ld-sh/tlsbinpic.s delete mode 100644 ld/testsuite/ld-sh/tlslib.s delete mode 100644 ld/testsuite/ld-sh/tlspic-1.d delete mode 100644 ld/testsuite/ld-sh/tlspic-2.d delete mode 100644 ld/testsuite/ld-sh/tlspic-3.d delete mode 100644 ld/testsuite/ld-sh/tlspic-4.d delete mode 100644 ld/testsuite/ld-sh/tlspic1.s delete mode 100644 ld/testsuite/ld-sh/tlspic2.s delete mode 100644 ld/testsuite/ld-sh/tlstpoff-1.d delete mode 100644 ld/testsuite/ld-sh/tlstpoff-2.d delete mode 100644 ld/testsuite/ld-sh/tlstpoff1.s delete mode 100644 ld/testsuite/ld-sh/tlstpoff2.s delete mode 100644 ld/testsuite/ld-sh/weak1.d delete mode 100644 ld/testsuite/ld-sh/weak1.s delete mode 100644 ld/testsuite/ld-shared/elf-offset.ld delete mode 100644 ld/testsuite/ld-shared/main.c delete mode 100644 ld/testsuite/ld-shared/sh1.c delete mode 100644 ld/testsuite/ld-shared/sh2.c delete mode 100644 ld/testsuite/ld-shared/shared.dat delete mode 100644 ld/testsuite/ld-shared/shared.exp delete mode 100644 ld/testsuite/ld-shared/sun4.dat delete mode 100644 ld/testsuite/ld-shared/symbolic.dat delete mode 100644 ld/testsuite/ld-shared/xcoff.dat delete mode 100644 ld/testsuite/ld-sparc/sparc.exp delete mode 100644 ld/testsuite/ld-sparc/tlsg32.s delete mode 100644 ld/testsuite/ld-sparc/tlsg32.sd delete mode 100644 ld/testsuite/ld-sparc/tlsg64.s delete mode 100644 ld/testsuite/ld-sparc/tlsg64.sd delete mode 100644 ld/testsuite/ld-sparc/tlslib.s delete mode 100644 ld/testsuite/ld-sparc/tlsnopic.s delete mode 100644 ld/testsuite/ld-sparc/tlspic.s delete mode 100644 ld/testsuite/ld-sparc/tlssunbin32.dd delete mode 100644 ld/testsuite/ld-sparc/tlssunbin32.rd delete mode 100644 ld/testsuite/ld-sparc/tlssunbin32.s delete mode 100644 ld/testsuite/ld-sparc/tlssunbin32.sd delete mode 100644 ld/testsuite/ld-sparc/tlssunbin32.td delete mode 100644 ld/testsuite/ld-sparc/tlssunbin64.dd delete mode 100644 ld/testsuite/ld-sparc/tlssunbin64.rd delete mode 100644 ld/testsuite/ld-sparc/tlssunbin64.s delete mode 100644 ld/testsuite/ld-sparc/tlssunbin64.sd delete mode 100644 ld/testsuite/ld-sparc/tlssunbin64.td delete mode 100644 ld/testsuite/ld-sparc/tlssunbinpic32.s delete mode 100644 ld/testsuite/ld-sparc/tlssunbinpic64.s delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic32.dd delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic32.rd delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic32.s delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic32.sd delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic64.dd delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic64.rd delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic64.s delete mode 100644 ld/testsuite/ld-sparc/tlssunnopic64.sd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic32.dd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic32.rd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic32.s delete mode 100644 ld/testsuite/ld-sparc/tlssunpic32.sd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic32.td delete mode 100644 ld/testsuite/ld-sparc/tlssunpic64.dd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic64.rd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic64.s delete mode 100644 ld/testsuite/ld-sparc/tlssunpic64.sd delete mode 100644 ld/testsuite/ld-sparc/tlssunpic64.td delete mode 100644 ld/testsuite/ld-srec/sr1.c delete mode 100644 ld/testsuite/ld-srec/sr2.c delete mode 100644 ld/testsuite/ld-srec/sr3.cc delete mode 100644 ld/testsuite/ld-srec/srec.exp delete mode 100644 ld/testsuite/ld-undefined/undefined.c delete mode 100644 ld/testsuite/ld-undefined/undefined.exp delete mode 100644 ld/testsuite/ld-undefined/weak-undef.exp delete mode 100644 ld/testsuite/ld-undefined/weak-undef.s delete mode 100644 ld/testsuite/ld-undefined/weak-undef.t delete mode 100644 ld/testsuite/ld-versados/t1-1.ro delete mode 100644 ld/testsuite/ld-versados/t1-2.ro delete mode 100644 ld/testsuite/ld-versados/t1.ld delete mode 100644 ld/testsuite/ld-versados/t1.ook delete mode 100644 ld/testsuite/ld-versados/t2-1.ro delete mode 100644 ld/testsuite/ld-versados/t2-2.ro delete mode 100644 ld/testsuite/ld-versados/t2-3.ro delete mode 100644 ld/testsuite/ld-versados/t2.ld delete mode 100644 ld/testsuite/ld-versados/t2.ook delete mode 100644 ld/testsuite/ld-versados/versados.exp delete mode 100644 ld/testsuite/ld-x86-64/tlsbin.dd delete mode 100644 ld/testsuite/ld-x86-64/tlsbin.rd delete mode 100644 ld/testsuite/ld-x86-64/tlsbin.s delete mode 100644 ld/testsuite/ld-x86-64/tlsbin.sd delete mode 100644 ld/testsuite/ld-x86-64/tlsbin.td delete mode 100644 ld/testsuite/ld-x86-64/tlsbinpic.s delete mode 100644 ld/testsuite/ld-x86-64/tlsg.s delete mode 100644 ld/testsuite/ld-x86-64/tlsg.sd delete mode 100644 ld/testsuite/ld-x86-64/tlslib.s delete mode 100644 ld/testsuite/ld-x86-64/tlspic.dd delete mode 100644 ld/testsuite/ld-x86-64/tlspic.rd delete mode 100644 ld/testsuite/ld-x86-64/tlspic.sd delete mode 100644 ld/testsuite/ld-x86-64/tlspic.td delete mode 100644 ld/testsuite/ld-x86-64/tlspic1.s delete mode 100644 ld/testsuite/ld-x86-64/tlspic2.s delete mode 100644 ld/testsuite/ld-x86-64/x86-64.exp delete mode 100644 ld/testsuite/ld-xstormy16/external.s delete mode 100644 ld/testsuite/ld-xstormy16/pcrel.d delete mode 100644 ld/testsuite/ld-xstormy16/pcrel.s delete mode 100644 ld/testsuite/ld-xstormy16/xstormy16.exp delete mode 100644 ld/testsuite/ld-xtensa/coalesce.exp delete mode 100644 ld/testsuite/ld-xtensa/coalesce.t delete mode 100644 ld/testsuite/ld-xtensa/coalesce1.s delete mode 100644 ld/testsuite/ld-xtensa/coalesce2.s delete mode 100644 ld/testsuite/ld-xtensa/lcall.exp delete mode 100644 ld/testsuite/ld-xtensa/lcall.t delete mode 100644 ld/testsuite/ld-xtensa/lcall1.s delete mode 100644 ld/testsuite/ld-xtensa/lcall2.s delete mode 100644 ld/testsuite/lib/ld-lib.exp diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d091b86f3..fc2af42e1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2004-03-13 Mark Kettenis + + * config.bfd: Add x86_64-*-openbsd*. + * configure.in (x86_64-*-openbsd*): Set COREFILE to + netbsd-core.lo. + * configure: Regenerate. + 2004-02-28 H.J. Lu * elf-bfd.h (_bfd_elf_link_add_archive_symbols): New prototype. diff --git a/bfd/config.bfd b/bfd/config.bfd index da8d94684..37617ea63 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -493,7 +493,7 @@ case "${targ}" in targ_defvec=bfd_elf64_x86_64_vec targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec" ;; - x86_64-*-netbsd*) + x86_64-*-netbsd* | x86_64-*-openbsd*) targ_defvec=bfd_elf64_x86_64_vec targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec" ;; diff --git a/bfd/configure b/bfd/configure index 90df65505..3071237f0 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1803,7 +1803,7 @@ else if { (eval echo configure:1804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.C | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -2461,7 +2461,7 @@ else if { (eval echo configure:2462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.C | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -5495,7 +5495,9 @@ rm -f conftest* COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' ;; - x86_64-*-netbsd*) COREFILE=netbsd-core.lo ;; + x86_64-*-netbsd* | x86_64-*-openbsd*) + COREFILE=netbsd-core.lo + ;; esac case "$COREFILE" in @@ -5518,17 +5520,17 @@ rm -f conftest* do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5522: checking for $ac_hdr" >&5 +echo "configure:5524: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5532: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5556,12 +5558,12 @@ done if test "$ac_cv_header_sys_procfs_h" = yes; then echo $ac_n "checking for prstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5560: checking for prstatus_t in sys/procfs.h" >&5 +echo "configure:5562: checking for prstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus_t=yes else @@ -5592,12 +5594,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus_t" 1>&6 echo $ac_n "checking for prstatus32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5596: checking for prstatus32_t in sys/procfs.h" >&5 +echo "configure:5598: checking for prstatus32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus32_t=yes else @@ -5628,12 +5630,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus32_t" 1>&6 echo $ac_n "checking for prstatus_t.pr_who in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5632: checking for prstatus_t.pr_who in sys/procfs.h" >&5 +echo "configure:5634: checking for prstatus_t.pr_who in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes else @@ -5664,12 +5666,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" 1>&6 echo $ac_n "checking for prstatus32_t.pr_who in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5668: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 +echo "configure:5670: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=yes else @@ -5700,12 +5702,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" 1>&6 echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5704: checking for pstatus_t in sys/procfs.h" >&5 +echo "configure:5706: checking for pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus_t=yes else @@ -5736,12 +5738,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6 echo $ac_n "checking for pxstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5740: checking for pxstatus_t in sys/procfs.h" >&5 +echo "configure:5742: checking for pxstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pxstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pxstatus_t=yes else @@ -5772,12 +5774,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pxstatus_t" 1>&6 echo $ac_n "checking for pstatus32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5776: checking for pstatus32_t in sys/procfs.h" >&5 +echo "configure:5778: checking for pstatus32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus32_t=yes else @@ -5808,12 +5810,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus32_t" 1>&6 echo $ac_n "checking for prpsinfo_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5812: checking for prpsinfo_t in sys/procfs.h" >&5 +echo "configure:5814: checking for prpsinfo_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo_t=yes else @@ -5844,12 +5846,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo_t" 1>&6 echo $ac_n "checking for prpsinfo32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5848: checking for prpsinfo32_t in sys/procfs.h" >&5 +echo "configure:5850: checking for prpsinfo32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes else @@ -5880,12 +5882,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo32_t" 1>&6 echo $ac_n "checking for psinfo_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5884: checking for psinfo_t in sys/procfs.h" >&5 +echo "configure:5886: checking for psinfo_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo_t=yes else @@ -5916,12 +5918,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo_t" 1>&6 echo $ac_n "checking for psinfo32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5920: checking for psinfo32_t in sys/procfs.h" >&5 +echo "configure:5922: checking for psinfo32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo32_t=yes else @@ -5952,12 +5954,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo32_t" 1>&6 echo $ac_n "checking for lwpstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5956: checking for lwpstatus_t in sys/procfs.h" >&5 +echo "configure:5958: checking for lwpstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpstatus_t=yes else @@ -5988,12 +5990,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpstatus_t" 1>&6 echo $ac_n "checking for lwpxstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5992: checking for lwpxstatus_t in sys/procfs.h" >&5 +echo "configure:5994: checking for lwpxstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpxstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6008: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes else @@ -6024,12 +6026,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpxstatus_t" 1>&6 echo $ac_n "checking for lwpstatus_t.pr_context in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:6028: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 +echo "configure:6030: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes else @@ -6060,12 +6062,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" 1>&6 echo $ac_n "checking for lwpstatus_t.pr_reg in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:6064: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 +echo "configure:6066: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes else @@ -6096,12 +6098,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" 1>&6 echo $ac_n "checking for win32_pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:6100: checking for win32_pstatus_t in sys/procfs.h" >&5 +echo "configure:6102: checking for win32_pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_win32_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes else @@ -6582,10 +6584,10 @@ case ${host64}-${target64}-${want64} in if test -n "$GCC" ; then bad_64bit_gcc=no; echo $ac_n "checking for gcc version with buggy 64-bit support""... $ac_c" 1>&6 -echo "configure:6586: checking for gcc version with buggy 64-bit support" >&5 +echo "configure:6588: checking for gcc version with buggy 64-bit support" >&5 # Add more tests for gcc versions with non-working 64-bit support here. cat > conftest.$ac_ext <&6 -echo "configure:6631: checking for $ac_func" >&5 +echo "configure:6633: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6680,18 +6682,18 @@ fi done echo $ac_n "checking file_ptr type""... $ac_c" 1>&6 -echo "configure:6684: checking file_ptr type" >&5 +echo "configure:6686: checking file_ptr type" >&5 bfd_file_ptr="long" bfd_ufile_ptr="unsigned long" if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then echo $ac_n "checking size of off_t""... $ac_c" 1>&6 -echo "configure:6689: checking size of off_t" >&5 +echo "configure:6691: checking size of off_t" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. cat > conftest.$ac_ext < @@ -6701,7 +6703,7 @@ int main() { switch (0) case 0: case (sizeof (off_t) == $ac_size):; ; return 0; } EOF -if { (eval echo configure:6705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sizeof_off_t=$ac_size else @@ -6749,17 +6751,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6753: checking for $ac_hdr" >&5 +echo "configure:6755: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6763: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6788,12 +6790,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6792: checking for $ac_func" >&5 +echo "configure:6794: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6841,7 +6843,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:6845: checking for working mmap" >&5 +echo "configure:6847: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6849,7 +6851,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -7014,12 +7016,12 @@ fi for ac_func in madvise mprotect do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7018: checking for $ac_func" >&5 +echo "configure:7020: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else diff --git a/bfd/configure.in b/bfd/configure.in index f19626539..5b3bb1e5d 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -405,7 +405,9 @@ changequote([,])dnl COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' ;; - x86_64-*-netbsd*) COREFILE=netbsd-core.lo ;; + x86_64-*-netbsd* | x86_64-*-openbsd*) + COREFILE=netbsd-core.lo + ;; esac case "$COREFILE" in diff --git a/binutils/ChangeLog b/binutils/ChangeLog deleted file mode 100644 index 0b913773b..000000000 --- a/binutils/ChangeLog +++ /dev/null @@ -1,96 +0,0 @@ -2004-02-27 Andreas Schwab - - * ar.c (main): Support POSIX-compatible argument parsing. - -2004-02-23 Daniel Lucq - - * readelf.c (process_mips_specific): Print conflictsno as an - unsigned long. - -2004-02-21 Dmitry Timoshkov - - * dlltool.c (gen_exp_file): Always output names for forwarded symbols. - -2004-02-19 Jakub Jelinek - - * objcopy.c (copy_section): Avoid warnings. - -2004-02-14 Andrew Cagney - - * ar.c (remove_output): Use bfd_cache_close. - * arsup.c (ar_end): Ditto. - -2004-01-21 Roland McGrath - - * readelf.c (get_note_type): Match NT_AUXV. - -2004-01-20 Nick Clifton - - * version.c (print_version): Update copyright year to 2004. - -2004-01-14 Maciej W. Rozycki - - * acinclude.m4: Quote names of macros to be defined by AC_DEFUN - throughout. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2004-01-12 Jakub Jelinek - - * 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 - - * 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 - - * 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 - - * 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 - - * objcopy.c (filter_bytes): Delete. Move code to.. - (copy_section): ..here. Simplify size adjustment. Divide - section lma by interleave. - -2004-01-02 Nick Clifton - - * po/ru.po: New file: Russian translation. - * configure.in (ALL_LINGUAS): Add ru - * configure: Regenerate. - -For older changes see ChangeLog-0203 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/binutils/ChangeLog-0001 b/binutils/ChangeLog-0001 deleted file mode 100644 index 9d1489432..000000000 --- a/binutils/ChangeLog-0001 +++ /dev/null @@ -1,2060 +0,0 @@ -2001-12-20 Julian v. Bock - - * 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 - - * 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 - - * 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 - - * objcopy.c (copy_archive): Set output bfd format outside the loop. - -2001-12-18 Nick Clifton - - * po/ja.po: Import from translation project. - * configure.in (ALL_LINGUAS): Add ja. - * configure: Regenerate. - -2001-12-18 Thiemo Seufer - - * 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 - - * 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 - - * readelf.c (get_segment_type): Support PT_GNU_EH_FRAME. - -2001-12-11 Alan Modra - - * 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 - - * objcopy.c (setup_section): Copy entsize. - -2001-12-07 Geoffrey Keating - - * readelf.c (guess_is_rela): Add support for stormy16. - (dump_relocations): Likewise. - (get_machine_name): Likewise. - -2001-12-05 Nick Clifton - - * 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 - - * strings.c (get_char): Initialize value. - -2001-12-04 Thiemo Seufer - - * arlex.l: Silence compile warnings. - * arsup.h: Likewise. Fix formatting. - -2001-12-04 Jakub Jelinek - - * 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 - - * 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 - - * 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 - - * objcopy.c (setup_section): Preserve SEC_RELOC when - --set-section-flags is used. - -2001-11-19 Nick Clifton - - * 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 - - * testsuite/binutils-all/objdump.exp: Add x86-64. - -2001-11-15 Andreas Schwab - - * readelf.c: Fix warnings without terminating newline. - -2001-11-15 Alan Modra - - * doc/binutils.texi (objdump): Document ppc -M options. - -2001-11-14 Andreas Jaeger - - * doc/binutils.texi (objdump): Fix description to use x86-64. - -2001-11-14 Nick Clifton - - * bucomm.c (make_tempname): Use mkstemps instead of mkstemp, since - not all systems provide mkstemp. - -2001-11-14 Alan Modra - - * doc/binutils.texi (objdump): Document x86 -M options. - -2001-11-13 Keith Walker - - * 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 - - * 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 - - * MAINTAINERS: Add self as tic54x maintainer. This target - includes the IBM C54XDSP clone. - -2001-11-12 * Steven J. Hill - - * 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 - - * 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 - - * arlex.l: Accept `\' in filenames. Patch by . - - * arsup.c (ar_open): Prepend tmp- to basename, not whole path. - -2001-11-05 Martin Schwidefsky - - * MAINTAINERS: Add self as s390/s390x maintainer. - -2001-11-02 Tom Rix - - * MAINTAINERS: Add self as PPC XCOFF maintainer. - -2001-11-02 Nick Clifton - - * 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 - - * 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 - - * readelf.c (parse_args): Handle multiple options to the -w - switch. - -2001-10-12 Jakub Jelinek - - * readelf.c (get_section_type_name): Don't print SHT_ prefix for - LOPROC, LOOS and LOUSER. - -2001-10-11 J"orn Rennecke - - * MAINTAINERS: Update my email address. - -2001-10-03 Alan Modra - - * doc/Makefile.in: Regenerate. - * configure: Regenerate. - -2001-10-02 Nick Clifton - - * 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 - - * 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 - - * readelf.c (display_debug_aranges): Detect and warn about DWARF64 - format .debug_arange sections. - (main): Add missing prototype. - -2001-09-30 Hans-Peter Nilsson - - * Makefile.am: Update dependencies with "make dep-am". - * Makefile.in: Regenerate. - -2001-09-28 Richard Henderson - - * objdump.c (dump_section_header): Dump SEC_ARCH_BIT_0. - -2001-09-26 Alan Modra - - * 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 - - * 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 - - * readelf.c (print_vma): Print 8 digits of low hex value. - -2001-09-24 Andreas Jaeger - - * nlmconv.c: Fix warnings about unused attributes and function - prototypes. - - * strings.c: Add prototype for get_char. - -2000-09-19 H.J. Lu - - * doc/Makefile.am ($(DEMANGLER_NAME).1): Try cxxfilt.man and - $(srcdir)/cxxfilt.man. - * doc/Makefile.in: Rebuild. - -2001-09-19 Alan Modra - - * objcopy.c (copy_main): Correct rename-section string parsing. - Consolidate new_name parsing, and error messages. - -2001-09-18 Bruno Haible - - * addr2line.c: Don't include . - (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 . - (main): For gettext, also set the LC_CTYPE locate facet. - Use ISALNUM instead of isalpha/isdigit. - * dllwrap.c: Don't include . - (main): For gettext, also set the LC_CTYPE locate facet. - * nlmconv.c: Include "safe-ctype.h" instead of . - (main): For gettext, also set the LC_CTYPE locate facet. - Use TOUPPER instead of islower/toupper. - * nlmheader.y: Include "safe-ctype.h" instead of . - (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 . - (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 . - (cpp_line, handle_quotes): Use ISSPACE instead of isspace. - * rcparse.y: Include "safe-ctype.h" instead of . - 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 . - (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 . - (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 . - (isgraphic): Use ISPRINT instead of isascii/isprint. - (main): Remove HAVE_LC_MESSAGES dependency. - * sysdump.c: Include "safe-ctype.h" instead of . - (pbarray): Use ISPRINT instead of isprint. - (main): For gettext, also set the LC_CTYPE locate facet. - * windres.c: Include "safe-ctype.h" instead of . - (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 . - (unicode_print): Use ISPRINT instead of isprint. - * wrstabs.c: Include "safe-ctype.h" instead of . - (stab_variable): Use ISDIGIT instead of isdigit. - -2001-09-18 Alan Modra - - * 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 - - * 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 - - * 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 - - * readelf.c (get_machine_flags): Remove E_MIPS_MACH_MIPS32_4K. - -2001-08-29 Peter Targett - - * MAINTAINERS: Include ARC Maintainer. - -2001-08-29 Ben Elliston - - * stabs.c (stab_demangle_template): Initialise s4. - -2001-08-27 Alan Modra - - * readelf.c (dump_relocations): Recognise EM_PPC64. - -2001-08-26 Thiemo Seufer - - * readelf.c (get_machine_flags): Add detection of EF_MIPS_32BITMODE. - -2001-08-25 H.J. Lu - - * 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 - - * 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 - - * readelf.c (get_machine_flags): Add detection of EF_MIPS_UCODE. - -2001-08-21 H.J. Lu - - * 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 - - * 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 . - - * coffgrok.c: Add missing prototypes, include libiberty.h instead - of declaring xcalloc. - -2001-08-10 H.J. Lu - - * 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 - - * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes - to build warnings. - * configure: Regenerate. - -2001-08-09 Alan Modra - - * readelf.c: Add missing prototypes. - * objdump.c: Likewise. Format existing prototypes. - -2001-08-08 Alexandre Oliva - - * 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 - - * readelf.c (process_file): Return 0 if OK, otherwise return 1. - (main): Return process_file (). - -2001-08-05 Philip Blundell - - * doc/binutils.texi: Use "Thumb" not "THUMB". - -2001-08-03 John Healy - - Patch suggested by Frank Eigler . - * objdump.c (disassemble_data): Fill in section member of the - disasm_info structure. - -2001-08-03 Tom Walsh - - * configure.in: Added --with-windres option. - * configure: Regenerated. - -2001-07-11 Stephane Carrez - - * 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 - - * 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 - - * 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 - - * bucomm.c (list_supported_architectures): New function. - * bucomm.h (list_supported_architectures): Declare. - * objdump.c (usage): Call the above. - -2001-07-25 Dave Brolley - - * 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 - - * README: Update for 2.11. Change bug reporting email address. - * MAINTAINERS: Tidy up. Change bug reporting email address. - -2001-07-16 DJ Delorie - - * 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 - - * MAINTAINERS: Add Christian Groessler as maintainer for z8k port. - -2001-07-11 Nick Clifton - - * MAINTAINERS: Add notes about branch checkins. - -2001-07-05 Daniel Berlin - - * 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 - - * objcopy.c (filter_symbols): Don't turn undefined symbols - into local. - -2001-07-03 H.J. Lu - - * 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 - - * MAINTAINERS: Change MIPS maintainer to Eric Christopher. - -2001-07-01 Daniel Berlin - - * readelf.c: Support DWARF 2.1 tags, encodings, languages. - -2001-06-29 James Cownie - - * readelf.c: Support DWARF 2.1 attributes. - -2001-06-28 Alan Modra - - * 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 - - * 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 - - * objcopy.c (strip_main): Revert the change made on 2001-05-30 - by accident. - (copy_main): Apply the the change made to strip_main on - 2001-05-30 by accident. - -2001-06-23 Andreas Jaeger - - * 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 - - * MAINTAINERS: Add myself as M88k maintainer. - -2001-06-22 Jocelyn Mayer - - * objcopy.c (strip_main): Support -o or --output-file command lien - switch. - -2001-06-19 H.J. Lu - - * doc/Makefile.in: Regenerated. - -2001-06-19 Nick Clifton - - * readelf.c: Restore formatting. - -2001-06-18 H.J. Lu & Nick Clifton - - * 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 - - * NEWS: Fix a typo. Mention hppa64-elf. Add binutils-2.11 marker. - -2001-06-01 Alan Modra - - * MAINTAINERS: Update my email address. - -2001-05-30 Honda Hiroki - - * 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 - - * readelf.c (display_debug_frames): Fix warnings: Remove unused - variables, fix format strings. - -2001-05-28 Nick Clifton - - * objdump.c (disassemble_bytes): Remove section VMA adjustment - when computing the address of the line to show. - -2001-05-16 Richard Henderson - - * 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 - - * 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 - - * readelf.c (process_unwind): Print all unwind sections, not just - one. - -2001-05-07 Thiemo Seufer - - * readelf.c (process_unwind): Remove const specifier. - -2001-04-27 Michal Svec - - * 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 - - * NEWS: Announce support for OpenRISC. - -2001-04-17 Danny Smith - - * dlltool.c (do_default_excludes): Initialise to true. - -2001-04-10 Alan Modra - - * MAINTAINERS: Update my email address - * nm.c (print_symbol_info_bsd): Use a simple printf string. - -2001-04-05 Hans-Peter Nilsson - - * readelf.c (display_debug_lines): Fix typo for "Prologue". - -2001-03-30 H.J. Lu - - * readelf.c (process_unwind): Just return if do_unwind is 0. - -2001-03-28 Roger Sayle - - * 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 - - * readelf.c (process_unwind): Only do unwind sections for - IA64. - -2001-03-28 H.J. Lu - - * Makefile.am ($(srcdir)/dlltool.1): Remove the extra target. - * Makefile.in: Regenerate. - -2001-03-26 Andreas Jaeger - - * binutils.texi (nm): Fix texi syntax. - -2001-03-25 Stephane Carrez - - * 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 - - * 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 - - * 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 - - * readelf.c (guess_is_rela): Handle EM_S390_OLD. - (dump_relocations): Likewise. - (get_machine_name): Likewise. - -2001-02-28 Nick Clifton - - * 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 - - * 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 - - * 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 - - * MAINTAINERS: Add "Obvious Fix" rule. - -2001-02-11 Michael Sokolov - - * unwind-ia64.c: Don't use ANSI C preprocessor stringisation and string - literal concatenation. - -2001-02-11 Michael Sokolov - - * 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 - - * readelf.c (dump_relocations): Free corrected allocated - array. - (process_unwind): Fix compile time warning. - -2001-02-10 Nick Clifton - - * binutils.texi: Document new --unwind option to readelf. - -2001-02-09 Martin Schwidefsky - - * readelf.c: Add linux target for S/390. - -2001-02-10 Alan Modra - - * nm.c (print_symbol_info_bsd): Don't #ifdef inside printf in case - printf is a macro. - -2001-02-08 Hans-Peter Nilsson - - * acinclude.m4 (AM_PROG_LEX): Override installed definition. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2001-02-07 Todd Vierling - - * bucomm.c (bfd_target_vector): Change extern array to pointer. - * objdump.c (bfd_target_vector): Likewise. - -2001-02-07 David Mosberger - - * 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 - - * configure.in (OBJDUMP_DEFS): Match `arm*-*', not just `arm-*'. - * configure: Regenerate. - -2001-01-31 Steve deRosier - - * ieee.c (ieee_add_bb11): Don't check for backslashes - unless HAVE_DOS_BASED_FILE_SYSTEM is defined. - -2001-01-24 Mark Elbrecht - - * 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 - - * 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 - - * 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 - - * 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 - - * version.c (print_version): Update copyright date. - -2001-01-11 Peter Targett - - * readelf.c (dump_relocations): Include selection with EM_ARC. - (get_machine_name) Update name to "ARC". - -2001-01-09 Nick Clifton - - * 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 - - * binutils.texi (Bug Reporting): Replace `bug-gnu-utils' with - `bug-binutils'. - * README: Likewise. - -2000-12-19 Nick Clifton - - * 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 - - * MAINTAINERS: Add Diego Novillo as a maintainer for the Intel - Mode parts of the x86 port. - -2000-12-04 Andreas Jaeger - - * 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 - - * readelf.c: Fix formatting. - -2000-12-11 Jan Hubicka - - * MAINTAINERS: Add myself and Andreas Jaeger as x86_64 maintainer. - -2000-12-07 Andrew Haley - - * readelf.c (display_debug_frames): Only display columns that are - referenced by the frame debug info. - -2000-12-05 Nick Clifton - - * MAINTAINERS: Add Jason Merrill as DWARF2 maintainer. - -2000-12-04 Jason Merrill - - * 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 - - * 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 - - * readelf.c (frame_display_row): Output 's' for DW_CFA_same_value. - -2000-11-28 Hans-Peter Nilsson - - * 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 - - * 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 - - * 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 - - * NEWS: Announce support for v5t, v5te and XScale. - -2000-11-22 Nick Clifton - - * 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 - - * readelf.c (get_osabi_name): Change ELFOSABI_MONTEREY to - ELFOSABI_AIX. - -2000-11-17 Richard Henderson - - * readelf.c (display_debug_lines): Adjust last change to - use sizeof (external->li_length). - -2000-11-17 Richard Henderson - - * readelf.c (display_debug_lines): Fix section length check - and end_of_sequence computation. - -2000-11-06 Nick Clifton - - * 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 - - * 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 - - * MAINTAINERS: Add Jim Wilson as the maintainer for the IA64 - code. Add Eric Chrisopher as maintainer of MN10300 port. - -2000-10-12 Roger Sayle - - * Make comma after string after icon/control optional. - -2000-09-13 Anders Norlander - - * readelf.c (get_machine_flags): Also print EF_MIPS_MACH field. - - * NEWS: Mention support for MIPS32. - -2000-09-08 Nick Clifton - - * MAINTAINERS: Add Stephane Carrez as maintainer for 68HC[11|12]. - -2000-09-07 H.J. Lu - - * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. - * configure: Rebuild. - -2000-09-06 Alexandre Oliva - - * configure: Rebuilt with new libtool.m4. - -2000-09-05 Nick Clifton - - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2000-09-04 Todd Vierling - - * strip.1: Fix stray '\' in -o formatting. - -2000-09-02 Nick Clifton - - * 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 - - * acinclude.m4: Include libtool and gettext macros from the - top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-30 Jamie Guinan - - * resrc.c (close_input_stream): Delete extraneous logic - -2000-08-24 Hans-Peter Nilsson - - * NEWS: Mention support for CRIS. - -2000-08-21 Nick Clifton - - * addr2line.c: Changed email address for Ulrich Lauther. - -2000-08-17 Christopher C. Chimelis - - * objdump.c (LONGEST_ARCH): Set to sizeof("powerpc:common"). - -2000-08-17 Nick Clifton - - * 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 - - * objcopy.c (strip_main): Silently accept -d as an alias for -g - for compatibility with old BSD systems. - -2000-08-14 Jason Eckhardt - - * NEWS: Mention i860 support. - -2000-08-11 Carlo Wood - - * addr2line.c (main): Add const to char *. - -2000-08-11 Geoff Keating - - * ar.c (main): Don't crash if called with no arguments - or only '-X32_64' as an argument. - -2000-08-08 DJ Delorie - - * resrc.c: use "gcc -xc" instead of -xc-header - -2000-08-05 Jason Eckhardt - - * 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 - - * MAINTAINERS: Add information about CGEN maintainers. - -2000-07-26 Geoff Keating - - * 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 - - * rdcoff.c (external_coff_symbol_p): K&R-ise. - -2000-07-20 H.J. Lu - - * binutils.texi: Put back "@end table" deleted by - accident. - -2000-07-05 Kenneth Block - - * 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 - - * 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 - - * 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 - - * 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 - - * readelf.c (process_dynamic_segment): Change DF_1_NODEPLIB - to DF_1_NODEFLIB. - -2000-07-19 H.J. Lu - - * readelf.c (get_dynamic_type): Fix DT_CHECKSUM. - -2000-07-19 H.J. Lu - - * 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 - - * binutils.texi (readelf): Fix spelling typo. - -2000-07-11 Mark Kettenis - - * 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 - - * stabs.c (parse_stab_range_type): Cast to proper type to fix - warning. - -2000-07-10 Ryan Bradetich - - * 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 - - * MAINTAINERS: Add several more port specific maintainers. - -2000-07-05 Nick Clifton - - * MAINTAINERS: Add blanket write privs for Michael Meissner. - -2000-06-05 DJ Delorie - - * MAINTAINERS: New. - -2000-07-01 Eric Fifer - - * dllwrap.c: Changed mistaken dyn_string_append() calls - to dyn_string_append_cstr(). - -2000-07-01 Alexander Aganichev - - * 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 - - * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed - (CLEANFILES): Add DEPA. - * Makefile.in: Regenerate. - -2000-06-27 Alan Modra - - * ar.c: Revert incorrect 2000-06-25 patch. - * bucomm.c: Likewise. - -2000-06-25 Mark Elbrecht - - * 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 - - * ar.c (normalize): Advance past both characters in a DOS based - : filepath prefix. - (main): Likewise. - * bucomm.c (make_tempname): Likewise. - -2000-06-24 Nick Clifton - - * objdump.c (usage): Fix description of --stabs switch. - -2000-06-22 Alan Modra - - * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we - find one. - * Makefile.in: Regenerate. - -2000-06-20 Alexander Aganichev - - * 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 - - * ar.c (print_contents): Improve verbose message. - -2000-06-15 H.J. Lu - - * 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 - - * binutils.texi: Put a warning on copying relocatable object - files between two different formats. - -2000-06-13 DJ Delorie - - * 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 - - * configure: Regenerate. - -2000-06-08 David O'Brien - - * configure.in (VERSION): Update to show this is the CVS mainline. - -2000-06-02 David O'Brien - - * strings.c (isgraphic): Interpret as a printable character, - analogous to . - -2000-05-30 Alan Modra - - * 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 - - * resrc.c (close_input_stream): zero out cpp_pipe after closing it. - -2000-05-26 Alan Modra - - * Makefile.am: Update dependencies with "make dep-am" - * Makefile.in: Regenerate. - -2000-05-26 Eli Zaretskii - - * 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 - - * 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 - - * size.c (usage): Associate short options with corresponding long - option to give a clue as to their function. - -2000-05-14 Philippe De Muyter - - * size.c (main): Accept and ignore `-f' option. - -2000-05-13 Alan Modra - - * 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 - - * 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 - - * objcopy.c (setup_section): Add const and gettext calls for err. - -2000-05-02 H.J. Lu - - * 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 - - * coffgrok.c: Add ATTRIBUTE_UNUSED as appropriate. - * srconv.c: Likewise. - * sysdump.c: Likewise. - -2000-04-23 Denis Chertykov - - * readelf.c (guess_is_rela): AVR uses RELA relocations. - (get_machine_name): machine name for EM_AVR added. - -2000-04-21 Richard Henderson - David Mosberger - - * 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 - - * objdump.c (disassemble_data): Set octets per byte *after* - resolving arch/mach for binary files. - -2000-04-14 Michael Sokolov - - * 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 - - * 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 - - * 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 - - * 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 - - * objdump.c (dump_section_header): Print CLINK and BLOCK flags. - -2000-04-06 Jason Merrill - - * 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 - - * 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 - - * 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 - * 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 - - * readelf.c (process_symbol_table): Correctly read in symbol - versioning information. - -2000-04-04 Alan Modra - - * 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 - - * 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 - - * 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 - - * readelf.c: Include sys/types.h before sys/stat.h for ultrix. - -2000-03-27 Nick Clifton - - * rddbg.c (read_section_stabs_debugging_info): Catch out of range - string offsets in corrupt stabs entries. - -2000-03-27 Alan Modra - - * readelf.c: Include elf/avr.h - (dump_relocations): Add EM_AVR case. - -2000-03-09 Tim Waugh - - * strings.1: Correct '-bytes' to '--bytes'. - -2000-03-08 H.J. Lu - - * Makefile.am (install-exec-local): Depend on - install-binPROGRAMS for parallel make. - * Makefile.in: Regenerated. - -2000-02-27 Ian Lance Taylor - - From Brad Lucier : - * readelf.c (process_dynamic_segment): Add cast to make sure - argument to %* is int. - -2000-02-25 H.J. Lu - - * configure.in (AC_SEARCH_LIBS): Pass m, not -lm. - -2000-02-24 Nick Clifton - - * 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 - - * readelf.c (get_osabi_name): Handle ELFOSABI_LINUX. - -2000-02-22 Nick Clifton - - * readelf.c (process_symbol_table): Remove use of ELF_ST_OTHER. - -2000-02-22 Ian Lance Taylor - - From Brad Lucier : - * 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 - - * 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 - - * resrc.c: Remove unmatched #if for cygwin. - -2000-02-14 Fernando Nasser - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils.texi (objdump): Document new ARM specific - disassembler options. - - * objdump.c (usage): Call disassembler_usage(). - -2000-01-27 Alan Modra - - * 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 - - * readelf.c (get_osabi_name): Recognise ELFOSABI_ARM. - -2000-01-15 Alan Modra - - * 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 - - * readelf.c (get_machine_name): Change EM_S370 to return "IBM - System/370". - -2000-01-11 Nick Clifton - - * readelf.c (get_dynamic_type): Remove DT_ENCODING. - -2000-01-10 Nick Clifton - - * readelf.c (get_note_type): Display NT_WIN32PSTATUS notes. - -2000-01-07 Mumit Khan - - * 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 - - * 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 - - * binutils.texi: Document new, ARM specific disassembler - command line switch "-M force-thumb". - -For older changes see ChangeLog-9899 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/binutils/ChangeLog-0203 b/binutils/ChangeLog-0203 deleted file mode 100644 index c63377507..000000000 --- a/binutils/ChangeLog-0203 +++ /dev/null @@ -1,2181 +0,0 @@ -2003-12-31 Daniel Jacobowitz - - * MAINTAINERS: Rename CONFIGURE to BUILD SYSTEM and add myself. - -2003-12-29 Nick Clifton - - * 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 - Maciej W. Rozycki - - * 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 - - * 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 - - * readelf.c (guess_is_rela): Changed m32r's default type to RELA. - -2003-12-11 Nick Clifton - - * objcopy.c (strip_usage): Add --only-keep-debug. - (copy_usage): Likewise. - -2003-12-04 Nick Clifton - - * 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 - - * cxxfilt.c (usage): Mention new -p/--no-params options. - -2003-11-28 Alan Modra - - * 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 - - * rename.c (smart_rename): Make sure that we have write - permission on the destination file before renaming. - -2003-11-26 Daniel Jacobowitz - Nick Clifton - - * readelf.c: Add a comment describing the difference between - readelf and objdump. - * doc/binutils.texi (readelf): Likewise. - -2003-11-25 Danny Smith - - * doc/binutils.texi (dlltool): Document dlltool --temp-prefix - option. - * dlltool.c (usage): Likewise. - -2003-11-22 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * objdump.c: Revert rev 1.81 commit. - -2003-11-10 Tobias Burnus - - * ar.c (print_contents): Remove "member" from verbose output in - order to conform to POSIX specification. - -2003-11-10 Alan Modra - - * README: Expand bug reporting information. - -2003-11-07 Jonathan R. Grant - - * 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 - - * ieee.c: Fix "the the" typo. - * stabs.c: Likewise. - -2003-10-30 Marshall T. Vandegrift - - * 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 - - * readelf.c (dump_section): Don't display DEL characters. - -2003-10-27 Kazu Hirata - - * 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 - - * 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 - - * objcopy.c (copy_main): Reads machine flags from arch_info - structure. - -2003-10-20 Andrew Cagney - - * coffgrok.h (coff_section): Replace 'struct sec" with "struct - bfd_section". - -2003-10-07 Nathan Sidwell - - * 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 - - * resrc.c (define_icon): Fix storage of color attributes 'planes' and - 'bit count' in icon groups. - -2003-09-30 Chris Demetriou - - * NEWS: Add an indication of the cutoff for 2.14. - -2003-09-30 Chris Demetriou - - * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_64R2. - -2003-09-29 H.J. Lu - - * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON. - (get_symbol_index_type): Likewise. - -2003-09-25 H.J. Lu - - * readelf.c (process_version_sections): Indent version names. - -2003-09-15 Anthony Green - - * dlltool.c (prefix_encode): Fix ISO C90 conversion. - (dlltmp): Ditto. - (dtab): Ditto. - -2003-09-14 Andreas Jaeger - - * 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 - - * MAINTAINERS: Update my e-mail address. - -2003-09-09 Ian Lance Taylor - - * MAINTAINERS: Update my e-mail address. - -2003-09-04 Nick Clifton - - * 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 - - * readelf.c (get_machine_flags): Recognise V850E1 machine type. - -2003-09-03 Andrew Cagney - - * objdump.c: Refer to init_disassemble_info in comments. - (disassemble_data): Replace INIT_DISASSEMBLE_INFO with - init_disassemble_info. - -2003-09-03 Nick Clifton - - * 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 - - * objdump.c: Improve comments/documentation. - dump_data: Eliminate duplicate function calls to bfd_section_size. - -2003-09-02 Alan Modra - - * MAINTAINERS: Move Dave Anglin's entry to where it belongs. - -2003-08-21 Nick Clifton - - * po/tr.po: Updated Turkish translation. - -2003-08-14 Alan Modra - - * 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 - - * 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 - - * po/fr.po: Updated French translation. - -2003-08-05 Alan Modra - - * 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 - Alan Modra - - * 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 - - * 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 - - * MAINTAINERS: Remove self as M88k maintainer. Future M88k - maintenance defaults to the blanket write privilege maintainers. - -2003-07-29 Michael Meissner - - * MAINTAINERS: Updated my email address. - -2003-07-29 Nick Clifton - - * objdump.c: Update to ISO C. - -2003-07-24 Nick Clifton - - * 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 - - * objcopy.c: Switch to ISO C. Remove debugging code accidentally - left in. Some formatting tidy ups. - -2003-07-22 Salvador Eduardo Tropea - - * 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 - - * 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 - - * 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 - - * po/es.po: New Spanish translation. - -2003-07-11 Alan Modra - - * po/binutils.pot: Regenerate. - -2003-07-05 Christopher Faylor - - * dlltool.c (prefix_encode): Use a fixed length for alpha. - -2003-07-04 Christopher Faylor - - * 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 - - * 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 - - * readelf.c (dynamic_segment_ia64_val): Print address and newline - for sections by default. Comment fix. - -2003-06-28 Danny Smith - - * 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 - - * 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 - - * 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 - - * 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 - - * NEWS: Correct spelling of "relocatable". - * objdump.c: Likewise. - * sysroff.info: Likewise. - -2003-06-19 Nick Clifton - - * 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 - - * 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 - - * po/Make-in (DESTDIR): New. - (install-data-yes): Support $(DESTDIR). - (uninstall): Likewise. - -2003-06-11 Alan Modra - - * Makefile.in: Regenerate. - -2003-05-23 Jakub Jelinek - - * readelf.c (get_segment_type): Handle PT_GNU_STACK. - -2003-06-03 Elias Athanasopoulos - - * NEWS: Document the new BSD/POSIX single-character mapping for - .comment/.note sections. - -2003-06-02 Chris Demetriou - Jason Thorpe - - * 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 - - * readelf.c (byte_get_signed): New. - (get_encoded_value): New. - (display_debug_frames): Use it. Always pre-process opcodes. - -2003-05-20 Michal Ludvig - - * readelf.c (display_debug_frames): Print both registers - for DW_CFA_register. - -2003-05-16 Kelley Cook - - * configure.in: Accept i[3-7]86 variants. Escape '[]' for - i[3-7]86-*-interix. - * configure.in: Regenerate. - -2003-05-13 Michael Eager - - * 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 - - * debug.c (debug_get_real_type): Extend test for circular debug - references. - -2003-05-12 Nick Clifton - - * configure.in (ALL_LINGUAS): Add zh_CN. - * configure: Regenerate. - * po/zh_CN.po: New file: Chinese (simplified) translation. - -2003-05-11 Jason Eckhardt - - * MAINTAINERS: Update my mail address. - -2003-05-07 H.J. Lu - - * readelf.c (dump_relocations): Enlarge the type field in wide - mode by one character. - -2003-05-03 Richard Henderson - - * 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 - - * 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 - - * doc/binutils.texi: Fix the documentation for the -fo option. - -2003-04-23 J"orn Rennecke - - * readelf.c (get_machine_name) : Amend return value - to refer to SuperH. - - * readelf.c (decode_location_expression): Don't add a trailing ';'. - -2003-04-23 Dimitrie O. Paun - Nick Clifton - - * 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 - - * 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 - - * readelf.c: Replace references to Mitsubishi M32R with - references to Renesas M32R. - -2003-04-15 Rohit Kumar Srivastava - - * readelf.c: Replace occurrances of 'Hitachi' with 'Renesas'. - -2003-04-09 Alexandre Oliva - - * doc/binutils.texi (objdump) [--debugging]: Suggest readelf -w - for debugging information types not supported by objdump. - -2003-04-09 Bernd Jendrissek - - * configure.in: Recognize canonical form of i[3-6]86-pe*. - * configure: Regenerate. - -2003-04-09 Alexandre Oliva - - * 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 - - * 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 - - * 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 - - * 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 - - * MAINTAINERS: Add myself as Xtensa maintainer. - -2003-04-01 Bob Wilson - - * 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 - - * configure.in: Change "arm-pe*" to "arm-*-pe*". Similarly for - thumb-pe*, mcore-pe and mcore-*elf. - * configure: Regenerate. - -2003-03-31 Alexandre Oliva - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * dlltool.c (gen_def_file): Put demangled name comments on - own line preceding export name. - -2003-03-17 Nick Clifton - - * objdump.c (disassemble_data): Use disasm_info.fprintf_func not - printf for emitting new lines. - -2003-03-16 Elias Athanasopoulos - - * 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 - - * po/da.po: Update. - -2003-03-12 Nick Clifton - - * MAINTAINERS: Remove Peter Targett as ARC maintainer. - -2003-03-10 Ben Elliston - - * MAINTAINERS: Update my mail address. - -2003-03-06 Elias Athanasopoulos - - * stabs.c (BYTES_IN_WORD): Remove definition. - * wrstabs.c (BYTES_IN_WORD): Likewise. - -2003-03-04 Nick Clifton - - * nm.c (main): Print a warning message if --size-sort and - --undefined-only are used together. - -2003-03-04 Elias Athanasopoulos - - * nm.c (print_symbol): Remove check for undefined_only. - -2003-03-03 Nick Clifton - - * po/da.po: Installed latest translation. - -2003-02-24 Nick Clifton - - * README: Update binutils references to 2.13. - Add paragraph about using --disable-nls. - -2003-02-24 Elias Athanasopoulos - - * doc/binutils.texi (nm --size-sort): Update. - -2003-02-21 James E Wilson - - * MAINTAINERS: Update email address. - -2003-02-21 Ian Wienand - - * 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 - - * 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 - - * objcopy.c (filter_symbols): Fix compilation problems with - HP-UX's C compiler. - -2003-02-19 Christopher Faylor - - * rclex.l (handle_quotes): Fix minor formatting problems introduced in - previous change. - -2003-02-19 Mark Blackburn - - * rclex.l (handle_quotes): Handle strings spanning more than one line. - -2003-02-12 Bob Wilson - - * 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 - - * readelf.c (decode_ARM_machine_flags): Handle the - EF_ARM_MAVERICK_FLOAT flag. - -2003-02-04 Andreas Schwab - - * rddbg.c (read_section_stabs_debugging_info): Cast ptrdiff_t to - long and use %ld in printf format. - -2003-01-28 Richard Sandiford - - * 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 - - * readelf.c (display_debug_loc): Skip address base changes. - -2003-01-17 Fabio Alemagna - - * readelf.c (get_osabi_name): Handle ELFOSABI_AROS, ELFOSABI_OPENVMS - and ELFOSABI_NSK. - -2003-01-16 Alan Modra - - * readelf.c: Include elf/ppc64.h. - (dump_relocations ): Use elf_ppc64_reloc_type. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-01-02 Ben Elliston - - * readelf.c (guess_is_rela): Handle EM_IQ2000. - (get_machine_name): Likewise. - (dump_relocations): Likewise. - * NEWS: Mention IQ2000 support. - -2003-01-02 Richard Sandiford - - * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_32R2. - -2002-12-30 Chris Demetriou - - * doc/binutils.texi (objdump): Note MIPS HWR (Hardware Register) - changes in MIPS -M options. - -2002-12-30 Dmitry Diky - - * Makefile.am: Add msp430 target. - * Makefile.in: Regenerate. - * readelf.c: Add support for msp430 target. - -2002-12-27 Chris Demetriou - - * doc/binutils.texi (objdump): Document MIPS -M options. - -2002-12-23 Andreas Schwab - - * readelf.c (main): Reset dump request after each file. - -2002-12-23 Nick Clifton - - * nlmconv.c (main): Pass TRUE as third argument to - bfd_arch_get_compatible. - -2002-12-23 Nick Clifton - - * 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 - - * README : Don't use libibery's needed_list or - required_list, instead link libiberty/*.o. - -2002-12-19 Kazu Hirata - - * doc/binutils.texi: Fix typos. - -2002-12-14 John David Anglin - - * doc/binutils.texi: Add missing parenthesis. - -2002-12-15 Nick Kelsey - - * objcopy.c: Add --prefix-symbols= 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= - and --prefix-alloc-sections= 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 - - * 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 - - * 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 - - * NEWS: Mention that bfd no longer declares a "boolean" type. - -2002-12-07 Alan Modra - - * 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 ): Likewise. - (process_dynamic_segment): Adjust print format string. - (rela_addr, rela_size): Delete. - (process_relocs): Formatting. - -2002-12-05 Jim Wilson - - * configure.in (OBJDUMP_DEFS): Define SKIP_ZEROES as 16 for IA-64. - * configure: Regenerate. - -2002-12-04 Ian Lance Taylor - - * MAINTAINERS: Change e-mail address back to airs.com. - -2002-12-04 Aldy Hernandez - - * MAINTAINERS: Add self. - -2002-11-30 Alan Modra - - * 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 - - * 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 - - * size.c (usage): Fix typo describing switch for hex format. - -2002-11-18 Svein E. Seldal - - * 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 - - * 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 - - * po/da.po: Updated Danish translation. - -2002-11-12 Klee Dienes - - * 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 - - * MAINTAINERS: Reinstate DJ Delorie as COFF maintainer. Drop COFF from - cgf maintainership. - -2002-11-11 Christopher Faylor - - * MAINTAINERS: Replace DJ Delorie as PE/COFF maintainer. - -2002-11-07 Nick Clifton - - * 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 - - * 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 - - * 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 - - * MAINTAINERS: Add self as TIC4X maintainer. - -2002-11-06 Hiroyuki Machida - - * readelf.c (get_symbol_index_type): Add hex number to - PROCESSOR-specific, OS-specific, reserved and unknown symbol - types. - -2002-11-04 Alan Modra - - * 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 - - * 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 - - * MAINTAINERS: Add self as SH maintainer. - -2002-10-23 Ben Elliston - - * 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 - - * MAINTAINERS: Discontinue Hans-Peter Nilsson as SH maintainer. - -2002-10-21 Svein E. Seldal - - * objdump.c (dump_data): Correct addr_offset for opb != 1. - -2002-10-15 Alan Modra - - * 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 - - * 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 - - * 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 - - * addr2line.c (slurp_symtab): Read in dynamic symbols if no - ordinary ones are available. - -2002-09-30 H.J. Lu - - * readelf.c (get_machine_flags): Handle E_MIPS_MACH_4120, - E_MIPS_MACH_5400 and E_MIPS_MACH_5500. - -2002-09-17 Zack Weinberg - - * 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 - - * readelf.c (decode_location_expression): DW_OP_calli -> DW_OP_call_ref - Handle DW_OP_GNU_push_tls_address. - -2002-09-11 Nick Clifton - - * po/tr.po: Updated Turkish translation. - -2002-09-10 Nick Clifton - - * MAINTAINERS: Add Ben Elliston as a maintainer for configure and - testsuite changes. Add paragraphs about testsuite and config - patches. - -2002-08-29 Nick Clifton - - * readelf.c (get_machine_flags): Remove redundant reference to - E_V850EA_ARCH. - -2002-08-28 Alan Modra - - * objdump.c (dump_bfd): Restore lines accidentally deleted in - last commit. - -2002-08-28 Michael Hayes - - * objdump.c (dump_headers): Add printing of HAS_LOAD_PAGE flag. - (dump_bfd_header): Likewise. - -2002-08-27 Alan Modra - - * nm.c: Revert last change. - -2002-08-26 Alan Modra - - * 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 - - * MAINTAINERS: Change my mailing address. - -2002-08-23 John David Anglin - - * MAINTAINERS: Add Dave Anglin as HPPA co-maintainer. - -2002-08-22 Nick Clifton - - * MAINTAINERS: Add Jeff Law as (maintainance) maintainer for - HPPA. - -2002-08-21 John David Anglin - - * readelf.c (parse_args): Change debug_dump_opt to static. - -2002-08-16 Sivaguru Sankaridurg - - * 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 - - * readelf.c: Include elf/i370.h. - (dump_relocations): Handle EM_S370. - (dynamic_segment_parisc_val): Print \n. - (process_dynamic_segment ): Here too. - -2002-08-14 Nick Clifton - - * nm.c (usage): Change 'gnu-new-abi' to 'gnu-v3'. - * objdump.c (usage): Likewise. - * doc/binutils.texi: Likewise. - -2002-08-14 Luke Dunstan - - * rcparse.y (acc_entry): Don't warn about ALT use with - non-VIRTKEY. - -2002-08-13 H.J. Lu - - * 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 - - * po/sv.po: Updated Swedish translation. - -2002-08-05 Alan Modra - - * prdbg.c (pr_fix_visibility): Remove assert. - -2002-07-31 Nick Clifton - - * 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 - - * 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 - - * po/es.po: Updated Spanish translation. - * po/fr.po: Updated French translation. - -2002-07-24 Nick Clifton - - * po/es.po: Updated Spanish translation. - -2002-07-23 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2002-07-23 Nick Clifton - - * po/fr.po: Updated French translation. - -2002-07-23 Eric S. Raymond - - * doc/binutils.texi (addr2line ): Correct brackets. - -2002-07-20 Alan Modra - - * budemang.c: Include config.h and string.h/strings.h. - -2002-07-18 Denis Chertykov - Frank Ch. Eigler - - * 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 - - * NEWS: Add 'Changes in 2.13'. - -2002-07-10 Jakub Jelinek - - * 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 - - * Makefile.am (check-DEJAGNU): Revert 2002-06-25 change. - * Makefile.in: Regenerate. - -2002-07-02 Alan Modra - - * 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 - - * 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 - - * readelf.c (dump_relocations): Handle 68HC11/68HC12 relocations. - -2002-06-26 Nick Clifton - - * MAINTAINERS: Remove Tom Rix from d10v and pcc maintainerships. - -2002-06-26 Alan Modra - - * nm.c (print_symname): When demangling, strip leading dots from - symbol names to avoid confusing the demangler. - -2002-06-25 H.J. Lu - - * Makefile.am (check-DEJAGNU): Set LC_ALL=C and export it. - * Makefile.in: Regenerated. - -2002-06-21 Igor Schein - - * configure.in: Quote bu_cv_have_fopen64. - * configure: Regenerate. - -2002-06-21 Mitsru Chinen - - * 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 - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * nm.c: When computing size of symbols for an ELF target use the - internal size field. - -2002-06-06 John David Anglin - - * 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 - - * objcopy.c (copy_section): Don't copy SEC_GROUP sections. - -2002-06-03 Elias Athanasopoulos - - * objdump.c: Fix formatting. - -2002-05-29 Ben Elliston - - * MAINTAINERS: Add self as M68k maintainer. - -2002-05-28 Kuang Hwa Lin - - * readelf.c: Modified/Added DLX elf support. - -2002-05-27 Nick Clifton - - * 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 - - * unwind-ia64.c (unw_print_brmask): Don't use sprintf. - (unw_print_grmask): Likewise. - (unw_print_frmask): Likewise. - -2002-05-26 Kazu Hirata - - * 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 - - * 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 - - * MAINTAINERS: Add self as the d10v maintainer. - -2002-05-24 TAMURA Kent - - * configure.in: Builds dlltool for i386-netbsdpe. - * configure: Regenerate. - -2002-05-23 Kazu Hirata - - * 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 - - * 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 - - * 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 - - * 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 - - * objdump.c (dump_headers): Fix output formatting for ELF32 - architectures in a BFD64 enabled toolchain. - -2002-05-20 Kazu Hirata - - * 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 - - * 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 - - * MAINTAINERS: Add myself as the second AVR port maintainer. - -2002-05-16 Stephane Carrez - - * MAINTAINERS: Update my email address. - -2002-05-09 Nick Clifton - - * MAINTAINERS: Add Jason Thorpe as VAX maintainer. - -2002-05-09 Alan Modra - - * configure.in: Replace `*pe' with `pe' throughout. - * configure: Regenerate. - -2002-05-07 Federico G. Schwindt - - * Makefile.am: Honour DESTDIR. - * Makefile.in: Regenerate. - -2002-05-06 Alan Modra - - * 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 - - * rclex.l (get_string): Correct "strings" list handling. - * resrc.c (read_rc_file): Discard strings. - -2002-05-04 Alan Modra - - * 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 - - * size.c (display_archive): Add last_arfile and code to close archives. - -2002-05-01 Alan Modra - - * nm.c (print_symbol): Check returned filename from - bfd_find_nearest_line is non-NULL. - -2002-04-25 Elena Zannoni - - * readelf.c (get_AT_name): Handle DW_AT_GNU_vector. - -2002-04-24 Christian Groessler - - * MAINTAINERS: Changed my email address. - -2002-04-17 Thiemo Seufer - - * arparse.y: Fix syntax warning. - -2002-04-16 Nick Clifton - - * 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 - - * resrc.c (write_rc_dialog): If charset is non-default value - display all of the DIALOGEX parameters. - -2002-04-15 Eric Kohl - - * 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 - - * rcparse.y: Set MEMFLAG_PURE by default. - -2002-04-09 Bernd Herd - - * 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 - - * resrc.c: print CLASS names in quotes - -2002-04-09 J"orn Rennecke - - * MAINTAINERS: Update my email address. - -2002-04-04 Alan Modra - - * 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 - - * MAINTAINERS: Update my email address. - -2002-03-21 Alan Modra - - * 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 - - * 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 - - * 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 - - * po/fr.po: Updated version. - -2002-03-13 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-07 Daniel Jacobowitz - - * README: Update some version numbers. - -2002-03-07 Daniel Jacobowitz - - * doc/binutils.texi (Target Selection): Fix LD crossreferences. - (Architecture Selection): Likewise. - -2002-03-01 Dmitry Timoshkov - - * dlltool.c (gen_exp_file): Take into account --kill-at (-k) while - generating .exp file. - -2002-02-21 Nick Clifton - - * readelf.c (dump_relocations): Fix typo. - -2002-02-20 Nick Clifton - - * NEWS: Mark 2.12 branch. - -2002-02-18 Timothy Daly - - * 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 - - * NEWS: Mention support for MMIX. - -2002-02-13 Matt Fredette - - * readelf.c (get_machine_flags): Recognize EF_M68000. - -2002-02-12 Alexandre Oliva - - * MAINTAINERS: Added self as MN10300 co-maintainer. - -2002-02-12 Alan Modra - - * readelf.c (get_ppc64_dynamic_type): Handle DT_PPC64_OPD and - DT_PPC64_OPDSZ. - -2002-02-11 Daniel Jacobowitz - - * MAINTAINERS: List myself as branch maintainer. - -2002-02-11 Alan Modra - - * configure: Regenerate. - * objcopy.c: Update copyright date. - * doc/Makefile.in: Regenerate. - -2002-02-10 Daniel Jacobowitz - - * nlmconv.c: Back out localtime PARAMS change. - -2002-02-11 Alan Modra - - * 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 - - * 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 - - * MAINTAINERS: Added self as SH co-maintainer. - -2002-02-05 Nick Clifton - - * po/tr.po: Updated translation. - -2002-02-01 Alan Modra - - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - -2002-01-29 Daniel Jacobowitz - - * nm.c (print_value): Mark abfd unused. - -2002-01-29 Daniel Jacobowitz - - * unwind-ia64.c (unw_decoder): Change second argument - to unsigned int, to match function prototypes. - -2002-01-29 Daniel Jacobowitz - - * objdump.c: Include "getopt.h" after "bucomm.h" so that - __GNU_LIBRARY__ will be defined. - * size.c: Likewise. - -2002-01-27 Daniel Jacobowitz - - * configure: Regenerated. - -2002-01-26 Hans-Peter Nilsson - - * doc/Makefile.am (install): Depend on install-info. - * doc/Makefile.in: Regenerate. - -2002-01-25 Jason R. Thorpe - - * 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 - - * po/fr.po: Updated version. - * po/es.po: Updated version. - -2002-01-23 Nick Clifton - - * 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 - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2002-01-18 Andreas Jaeger - - * version.c (print_version): Update year. - -2002-01-17 Alan Modra - - * readelf.c (get_machine_name): Handle EM_PPC64. - (guess_is_rela): Here too. - -2002-01-17 Nick Clifton - - * po/binutils.pot: Regenerate. - * po/fr.po: Regenerate. - * po/tr.po: Regenerate. - -2002-01-16 Nick Clifton - - * po/tr.po: Import new version. - -2002-01-16 Alan Modra - - * readelf.c (get_ppc64_dynamic_type): New. - (get_dynamic_type): Call it. - -2002-01-15 Nick Clifton - - * 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 - - * MAINTAINERS: Add self as co-maintainer for the ARM code. - -2001-12-18 Nick Clifton - - * po/es.po: Import from translation project. - * configure.in (ALL_LINGUAS): Add es. - * configure: Regenerate. - -2002-01-09 Jason Thorpe - - * readelf.c (get_netbsd_elfcore_note_type): Use - NT_NETBSDCORE_PROCINFO and NT_NETBSDCORE_FIRSTMACH. - -2002-01-09 Jason Thorpe - - * 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 - - * 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 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/binutils/ChangeLog-9197 b/binutils/ChangeLog-9197 deleted file mode 100644 index 98613157c..000000000 --- a/binutils/ChangeLog-9197 +++ /dev/null @@ -1,5217 +0,0 @@ -Mon Dec 29 16:58:05 1997 Ian Lance Taylor - - From Matthew Bellantoni : - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.com (HAVE_SBRK): Undefine. - -Tue Oct 14 16:14:35 1997 Nick Clifton - - * 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 - - * 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 - - * binutils.texi (strip): Remove duplicate --target. From Marty - Leisner . - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils.texi (ar cmdline): Document that q now works like r. - From Marty Leisner . - - * binutils.texi (size): The object file argument is optional. - From Marty Leisner . - - * aclocal.m4: Rebuild with new libtool. - * configure: Rebuild. - -Tue Aug 26 17:48:34 1997 Ian Lance Taylor - - * 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 - - * windres.c: Include . - (define_resource): Set a timestamp for the resource. - -Wed Aug 6 13:37:58 1997 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 : - * 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 - - From Ton van Overbeek : - * 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 - - * resbin.c (bin_to_res_string): Correct adjustment of data and - length. From Ton van Overbeek . - -Tue Jul 22 18:01:23 1997 Ian Lance Taylor - - * nlmconv.c (link_inputs): Call libiberty pexecute function. - (pexecute) [multiple versions]: Remove. - -Tue Jul 22 16:19:34 1997 Robert Hoehne - - * 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 - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - * ar.c (bfd_special_undocumented_glue): Add const. - -Mon May 12 22:09:35 1997 Bob Manson - - * Makefile.in (check): Pass CC_FOR_TARGET and CFLAGS_FOR_TARGET - to runtest. - -Mon May 12 13:14:22 1997 Ian Lance Taylor - - * 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 - - * Makefile.in (maintainer-clean realclean): Change *.info* - to binutils.info* to save sysroff.info. - -Tue Apr 15 13:42:22 1997 Ian Lance Taylor - - * 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 - - * Makefile.in (INSTALL): Change install.sh to install-sh. - - From Thomas Graichen : - * 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 - - * 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 - - * Makefile.in (VERSION): Set to 2.8.1. - - * Branched binutils 2.8. - -Tue Apr 1 16:21:44 1997 Klaus Kaempf - - * 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 - - * objcopy.c (make_same_dates): Use statbuf, not buf, if not - HAVE_GOOD_UTIME_H. - -Fri Mar 28 17:57:53 1997 Alan Modra - - * 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 - - Based on patch from Marty Leisner : - * objcopy.c: Include or . - (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 - : - * 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 - - * 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 - - * 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 - - * 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 - - Based on patches from Jamie Lokier : - * 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 - - * rddbg.c (free_saved_stabs): Set the strings to NULL after being - freed. - -Fri Feb 28 17:18:45 1997 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * arsup.c, coffgrok.c, dlltool.c, nlmconv.c: Use xmalloc rather - than malloc. - -Wed Feb 12 16:12:02 1997 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * objcopy.1: Add missing space after .B. - -Fri Jan 31 10:33:07 1997 Andreas Schwab - - * objdump.c (disassemble_data): Initialize `aux.require_sec'. - -Wed Jan 29 13:21:21 1997 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * Makefile.in (maintainer-clean realclean): Remove *.info*, not - just *.info. From H.J. Lu . - -Tue Dec 31 15:42:54 1996 Ian Lance Taylor - - * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE. - -Fri Dec 27 11:19:26 1996 Ian Lance Taylor - - * 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 - - Based on patch from Andrew J Klossner : - * 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 - - * 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 - - * 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 - - * 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 - - * objdump.c (disassemble_data): Don't crash if there is no - symbol. - -Fri Nov 22 17:29:14 1996 Andreas Schwab - - * ar.c (open_inarch): Don't call bfd_openr with a null name. - -Fri Nov 1 12:08:13 1996 Ian Lance Taylor - - * binutils.texi: Add section on reporting bugs. - -Thu Oct 31 18:20:53 1996 Ian Lance Taylor - - * 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 - - * objdump.c (objdump_print_value): Don't print the empty string - for zero. - -Mon Oct 28 16:58:14 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * makefile.vms: Bump version date. - -Tue Oct 1 15:00:59 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.in (i[345]86-*-*): Recognize i686 for pentium pro. - * configure: Regenerate. - -Thu Aug 29 11:29:20 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * mpw-make.sed: Add symbolic doublequotes around the version - number. - -Thu Aug 8 12:27:52 1996 Klaus Kaempf - - * 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 - - * 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 - - * objdump.c (disassemble_data): Set disasm_info.flavour from - abfd. - -Tue Jul 23 13:59:54 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 . - -Sat Jun 29 21:18:09 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * Makefile.in (DISTSTUFF): Add deflex.c. - -Tue Jun 18 15:03:44 1996 Klaus Kaempf - - * config.h-vms, makefile.vms: New files. - -Mon Jun 17 09:47:31 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * strings.c (main): Make main an int function, not void. - -Fri May 31 13:59:24 1996 Ian Lance Taylor - - * 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 - - * 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 - - * objdump.c (disassemble_data): Don't refer to bytes past the end - of data. - -Wed Apr 24 14:10:21 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.in: Permit --enable-shared to specify a list of - directories. - * configure: Rebuild. - -Fri Mar 29 16:11:33 1996 Ian Lance Taylor - - * 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 - - * wrstabs.c (stab_enum_type): Set buf before using it. - -Fri Mar 22 15:49:08 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.in: Add AC_FUNC_VFORK. - * configure, config.in: Rebuild. - * dlltool.c, nlmconv.c: Include 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 - - * 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 . - -Mon Mar 11 12:35:03 1996 Ian Lance Taylor - - * 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 - - * prdbg.c (pr_int_constant): Initialize info correctly. - (pr_float_constant): Likewise. - -Mon Feb 26 18:11:37 1996 Stan Shebs - - * mpw-make.sed: Update to handle shared library support. - -Sat Feb 24 11:21:49 1996 Alan Modra : - - * Makefile.in ($(OBJDUMP_PROG)): Search $(BFDLIB) before - $(OPCODES). - -Thu Feb 15 12:44:45 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - Support for building bfd and opcodes as shared libraries, based on - patches from Alan Modra : - * 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 - - * 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 - - * configure: Regenerate. - -Thu Feb 1 09:38:18 1996 Steve Chamberlain - - * 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 - - * Makefile.in (distclean): Remove $(DEMANGLER_PROG).1. - -Mon Jan 29 17:36:29 1996 Ian Lance Taylor - - Based on patches from H J Lu : - * 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 - - * objdump.c (fprintf): Add prototype to avoid compiler warning on - SunOS. - -Fri Jan 26 11:53:42 1996 Ian Lance Taylor - - * 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 - - * mpw-make.sed: Add a "stamps" target. - -Thu Jan 25 13:51:44 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * objdump.c (disassemble_data): Handle unknown endianness. - Pass fprintf to INIT_DISASSEMBLE_INFO. - -Mon Jan 22 16:46:43 1996 Doug Evans - - 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * srconv.c (wr_hd): Space size within segment was being - stored in segment identifier field. - -Tue Jan 16 12:07:25 1996 Stan Shebs - - * 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 - - * objdump.c (dump_section_header): Add new section flags - SEC_{EXCLUDE,SORT_ENTRIES}. - -Thu Jan 11 11:45:34 1996 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * arparse.y: Include "bucomm.h", not . - * nlmheader.y: Don't include "sysdep.h". - -Tue Dec 26 18:23:18 1995 Ian Lance Taylor - - * nm.c (print_symdef_entry): Check return value of - bfd_get_elt_at_index. - -Sat Dec 23 11:03:16 1995 Michael Meissner - - * 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 - - * 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 - - * dlltool.c (fill_ordinals): Start from 1 if no other instructions - given. - -Tue Dec 12 12:05:21 1995 Ian Lance Taylor - - * Makefile.in (clean): Remove $(DEMANGLER_PROG).1. From Ronald - F. Guilmette . - -Mon Dec 11 14:33:05 1995 Stan Shebs - - * mac-binutils.r: Fix copyright and version strings. - - * Makefile.in (version): Remove, no longer used. - -Fri Dec 1 14:41:56 1995 Stan Shebs - - * mpw-make.sed (install, install-only): Edit in Mac-specific - install procedure. - -Thu Nov 30 20:26:02 1995 Kim Knuttila - - * 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 - - * 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 - - * configure: Regenerate with autoconf 2.7. - -Wed Nov 22 13:17:15 1995 Ian Lance Taylor - - * 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 - - * 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 - - * Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not - $(host_canonical) and $(target_canonical). - -Thu Nov 16 03:39:20 1995 Ken Raeburn - - Version 2.6 released. - * Makefile.in (VERSION): Update to 2.6. - -Wed Nov 15 12:14:17 1995 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * objcopy.c (setup_section): Copy the section lma independently of - the vma. - -Wed Nov 8 11:33:00 1995 Ian Lance Taylor - - * arsup.c (ar_open): Cast malloc return value. - -Tue Nov 7 09:01:26 1995 Kim Knuttila - - * 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 - - * 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 - - * bucomm.h: Include . - * ar.c: Don't include or . - * bucomm.c, dlltool.c, nlmconv.c, objcopy.c, objdump.c: Likewise. - -Fri Nov 3 12:38:09 1995 Ian Lance Taylor - - * objdump.c: Include . - - Permit user to override DEMANGLER_PROG from command line. From - Manfred Hollstein . - * 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 - - * Makefile.in (syslex.o): add -I$(srcdir) if compiling in a - separate directory. - -Mon Oct 30 14:24:18 1995 Ian Lance Taylor - - * 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 - - * 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 - - * mpw-make.sed: Edit paths to generated y.tab.[ch] files. - -Fri Oct 20 18:40:34 1995 Ian Lance Taylor - - * binutils.texi: Change --with-targets to --enable-targets. - -Thu Oct 19 17:47:41 1995 Fred Fish - - * 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 - - * dlltool.c (i386_jtab, arm_jtab): New - (gen_lib_file): Rewritten to use bfd. - -Fri Oct 13 16:10:07 1995 Michael Meissner - - * Makefile.in (install): Don't give error message if dlltool - wasn't built. - -Fri Oct 13 11:04:37 1995 steve chamberlain - - * 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 - - * 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 - - * Makefile.in (TOOL_PROGS): Include DLLTOOL_PROG. - -Mon Oct 9 13:06:31 1995 steve chamberlain - - * dlltool.c (add_underscore): New. - (xlate): Use new name. - (main, usage): Update. - -Fri Oct 6 14:08:51 1995 Ken Raeburn - - * sysinfo.y: Eliminate unused terminals "[" and "]" and unused - nonterminal "name". One s/r conflict remains. - - Mon Sep 25 22:49:32 1995 Andreas Schwab - - * 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 - - * 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 - - * bucomm.c: Always include time.h. - -Thu Oct 5 17:25:21 1995 Ian Lance Taylor - - * 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 - - * arsup.c (ar_save): Use rename, not unlink/link/unlink. - -Mon Oct 2 12:10:25 1995 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * configure.in: Call AC_HEADER_SYS_WAIT. - * configure: Rebuild. - * config.in: Rebuild. - * dlltool.c: Include "libiberty.h" and "bucomm.h". Don't include - , , or . Don't include . - Include . Use HAVE_SYS_WAIT_H to control whether to - include 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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", , and "config.h". - Include "fopen-same.h" or "fopen-bin.h", based on - USE_BINARY_FOPEN. Include , and declare errno if it is - not a macro. Include , , , - , and if they are present. Declare strchr, - strrchr, and strstr if no string header file exists. Include - if it exists and does not. Define - O_RDONLY and O_RDWR if necessary. - * ar.c: Don't include "sysdep.h". Do include and - . Use HAVE_GOOD_UTIME_H rather than POSIX_UTIME. Use - HAVE_UTIMES rather than !USE_UTIME. Don't include , and - don't declare errno. - * arsup.c: Don't include . - * bucomm.c: Don't include "sysdep.h". Include , - , and . Include 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 and - . - (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 . - (dump_symbol_info): Rename from symbol_info. Change all callers. - -Mon Sep 4 14:30:00 1995 Ian Lance Taylor - - * 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 - - * 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 - - * dlltool.c (run): Add missing 3rd arg to waitpid. - -Wed Aug 30 11:02:11 1995 steve chamberlain - - * Makefile.in (TOOL_PROGS): Include dlltool if needed. - -Tue Aug 29 13:25:21 1995 steve chamberlain - - * 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 - - * 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 - - 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 - - * dlltool.c (gen_exp_file): Fix RVA handling. - (rva_s, rva_n): Delete. - -Fri Aug 11 18:27:18 1995 Ian Lance Taylor - - * nm.c (main): Ignore -e. - -Thu Aug 10 17:35:00 1995 Ken Raeburn - - * 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 - - * coffgrok.c (do_type): Handle array dimensions the same way gdb - does. - -Tue Aug 8 17:10:42 1995 steve chamberlain - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * dlltool.c (mtable, ARM jump): Must redirect via pc offsetable ptr. - -Wed Jun 14 13:27:22 1995 Steve Chamberlain - - * deflex.l, defparse.y, dlltool.c: New files. - * Makefile.in, configure.in: Support for them. - -Mon Jun 12 11:27:54 1995 Steve Chamberlain - - * sysdump.c: Include sysdep.h - (main): Open input with FOPEN_RB. - -Fri Jun 9 17:26:11 1995 Michael Meissner - - * 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 - - 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 - - * 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 - - * configure.in: Don't build nlmconv on PowerPC eabi any more, it - is not needed. - -Thu Apr 27 20:21:24 1995 Doug Evans - - * 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 - - * 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 - - * objdump.c (dump_section_header): Display load address after - virtual memory (run-time) address. - -Wed Apr 19 09:44:06 1995 Jason Merrill - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.in: Add support for powerpc-*-ebai. - -Wed Jan 18 10:02:12 1995 Steve Chamberlain - - * 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 - - * 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 . - -Tue Dec 20 19:13:44 1994 Ian Lance Taylor - - * ar.c (main): Ignore 'f' modifier used on HP/UX 9. - -Thu Dec 15 17:34:12 1994 Stan Shebs - - * 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 - - * 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 - - * objcopy.c (add_strip_symbol): Cast return value of xmalloc. - -Wed Nov 30 11:05:43 1994 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * Makefile.in (VERSION): Bump to 2.5.3. - -Thu Nov 3 19:04:34 1994 Ken Raeburn - - * 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 - - * ar.c (main): Treat ar qs like ar rs. - -Tue Oct 25 16:19:25 1994 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * Makefile.in (VERSION): Updated to 2.5. - * Version 2.5 released. - -Tue Oct 11 15:26:42 1994 Ian Lance Taylor - - * 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 - - * 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 . - -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 (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" : - - 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. - - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/binutils/ChangeLog-9899 b/binutils/ChangeLog-9899 deleted file mode 100644 index ad1fdc754..000000000 --- a/binutils/ChangeLog-9899 +++ /dev/null @@ -1,1908 +0,0 @@ -1999-12-28 Nick Clifton - - * 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 - - * strings.c (main): Correct handling of numeric argument. - -1999-12-23 Andrew Haley - - * dlltool.c (mtable): mcore how_jtab_roff is 4 bytes into the - jtab; was 8. - -1999-12-17 Nick Clifton - - * 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 - - * readelf.c (print_vma): Support native 64bit ELF systems. - -1999-12-09 Nick Clifton - - * 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 - - * 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 - - * 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 - - * objcopy.c (copy_usage): Reformat. - (strip_usage): Reformat. - -1999-11-21 Nick Clifton - - * 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 - - * 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 - - * 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 - - * dlltool.c (assemble_file): Remove spurious test of exp_name. - -1999-10-22 Nick Clifton - - * 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 - - * ar.c (normalize): Fix full_pathname code. - -1999-10-08 Ben Elliston - - * binutils.texi: Some rewording and clarifications. - -1999-09-15 Ulrich Drepper - - * 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 - - * readelf.c (get_parisc_dynamic_type): Handle DT_HP_GST_* values. - -1999-09-02 Ulrich Drepper - - * 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 - - * dlltool.c (scan_drectve_symbols): Handle type tags in exported - symbols. - (scan_filtered_symbols): Likewise. - -1999-09-19 Ian Lance Taylor - - * 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 - - * 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 - - * ar.c (main): Clear output_file if we don't change the archive. - (delete_members, replace_members): Likewise. - -1999-09-12 Donn Terry - - * 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 - - * 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 - - * binutils.texi: Add info dir entries for all programs described - here. Fix arguments of @var to not contain punctuation. - -1999-09-06 Donn Terry - - * 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 - - * readelf.c: Include "elf/pj.h". - (dump_relocations): Handle EM_PJ. - (get_machine_name): Likewise. - (get_machine_flags): Likewise. - -1999-08-31 Scott Bambrough - - * 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 - - * binutils.texi (Bug Reporting): Clarify that large files should - not be sent to bug-gnu-utils. - -1999-08-28 Stephane Carrez - - * 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 - - * 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 - - * readelf.c (display_debug_lines, case DW_LNS_const_add_pc): Multiply - adv by info.li_min_insn_length. - -1999-08-26 Jakub Jelinek - - * readelf.c (get_sparc64_dynamic_type): New function. - (get_dynamic_type): Use it. - -1999-08-26 Jim Wilson - - * readelf.c (display_debug_lines, case default): Change second line - setting adv to use = not +=. - -1999-08-19 Nick Clifton - - * dlltool.c: Added more examples to the comment at the start. - -1999-08-18 Nick Clifton - - * dlltool.c (make_head): Only emit interworking directive if - necessary. - -Thu Jul 15 22:44:21 1999 Hans-Peter Nilsson - - * readelf.c (process_abbrev_section): Handle standard-conforming - single zero at the end of the section. - -1999-08-09 Ian Lance Taylor - - * 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 - - * objdump.c (dump_section_header): Update for renaming of - SEC_SHORT to SEC_SMALL_DATA. Print SEC_SHARED flag. - - From Eli Zaretskii : - * 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 - - * 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 - - From Mark Elbrecht: - * configure.bat: Remove; obsolete. - -1999-07-16 Jakub Jelinek - - * readelf.c (get_machine_flags): Print EF_SPARC_SUN_US3. - -1999-07-15 Ian Lance Taylor - - * configure.in: Bump version number to 2.9.5. - * configure: Rebuild. - -1999-07-14 Richard Henderson - - * objdump.c (dump_section_header): Print SEC_SHORT. - -1999-07-11 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * Makefile.am (dlltool_SOURCES): Add dyn-string.c. - * Makefile.in: Rebuild. - -1999-06-23 Mumit Khan - - * 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 - - Based on patches from Mumit Khan : - * configure.in: Define EXECUTABLE_SUFFIX. - * dlltool.c: Include "dyn-string.h". Include 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 , , , - , or . Include and either - or . - (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 - - * 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 - - * deflex.l: Accept single-character symbol names. - -1999-06-16 Nick Clifton - - * readelf.c (get_symbol_type): Detect ARM symbols typed as Thumb - functions. - -1999-06-14 Nick Clifton - - * 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 - - * binutils.texi: Fix typos. - -1999-06-13 Ian Lance Taylor - - * objdump.c (disassemble_bytes): If the disassembler returns an - error, print out anything it may have printed to the buffer. From - H.J. Lu . - - * defparse.y (explist): Remove separate expline to eliminate - shift/reduce conflict. - - From Kai-Uwe Rommel : - * 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 - - * 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 : - * 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 - - * 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 - - * windres.c (usage): Fix typo. - -1999-06-04 Nick Clifton - - * 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 - - * readelf.c: Add support for 64bit ELF files. - -1999-06-03 Nick Clifton - - * dlltool.c (mcore_elf_gen_out_file): Use constants for temporary - file names. - -Wed Jun 2 12:34:36 1999 Richard Henderson - - * dlltool.c (gen_exp_file): Revert 19990411 change. - -Mon May 31 09:56:22 1999 Andreas Schwab - - * readelf.c (process_relocs): Determine type of reloc from - DT_PLTREL and from section type. - -1999-05-29 Nick Clifton - - * 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 - - * readelf.c (dump_relocations): Fix typo. - -1999-05-28 Nick Clifton - - * 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 - - * readelf.c: Include "elf/i960.h". - (dump_relocations): Handle EM_960. - -Thu May 27 11:58:33 1999 Andreas Schwab - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * rename.c (smart_rename): Fix test of whether file exists. - -1999-05-06 Nick Clifton - - * objdump.c (disassemble_data): Set display_endian based on target - endianism. - -1999-05-05 Catherine Moore - - * 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 - - * readelf.c (get_machine_flags): Check for EF_CPU32. - (get_data_encoding): Fix typo. - -1999-04-26 Tom Tromey - - * aclocal.m4, configure: Updated for new version of libtool. - -1999-04-18 Ian Lance Taylor - - * 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 - - * dlltool.c (make_one_lib_file): Mark thumb functions as - C_THUMBEXTFUNC. - -1999-04-11 Richard Henderson - - * bucomm.h (environ): Declare it, if needed. - (alloca) [C_ALLOCA]: Don't use gcc's builtin or . - * 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 . - -1999-04-08 Tom Tromey - - * binutils.texi (c++filt): Updated for -j/--java, and hp/edg - formats. - -1999-04-08 Nick Clifton - - * 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 - - * 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 - - * readelf.c (decode_location_expression): Fix DW_OP_const8{s|u} - decodes. - -1999-04-04 Ian Lance Taylor - - * 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 . - (extract_file): Call set_times rather than utime. - (write_archive): Call smart_rename rather than unlink and rename. - * objcopy.c: Don't include . - (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 - . Don't include and . - (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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * readelf.c: Fix compile time warings. - -1999-02-17 DJ Delorie - - * 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 - - * 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 - - * 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 - - * readelf.c (dump_relocations): Handle EM_ARM as REL. - -1999-01-29 Nick Clifton - - * readelf.c (process_symbol_table): Do not produce a histogram of - bucket chains if none were found. - -1999-01-27 Nick Clifton - - * 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 - - * readelf.c (process_section_headers): Omit trailing space at end - of section header contents line. - -Wed Dec 16 17:20:05 1998 Doug Evans - - * aclocal.m4: Regenerate. - -Mon Dec 14 12:55:36 1998 Jim Wilson - - * 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 - - * objdump.1: Fix typo (-d to -D). From Nokubi Hirotaka - . - -Sun Dec 6 13:28:09 1998 Ian Lance Taylor - - * 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 - . - -1998-12-03 Ulrich Drepper - - * readelf.c (process_dynamic_segment): Improve output format for - various DT_* values. - -1998-12-02 Ulrich Drepper - - * 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 - - * ar.c (extract_file): Add some paranoia checks for negatively - sized files. - -Tue Nov 24 09:39:24 1998 Nick Clifton - - * stabs.c (DIR_SEPARATOR): Define as '\\' if WIN32 is defined. - -Tue Nov 17 10:25:26 1998 Nick Clifton - - * Makefile.in: Regenerate. - -Mon Nov 16 19:17:23 1998 Dave Brolley - - * po/binutils.pot: Regenerate. - -Mon Nov 16 10:18:53 1998 Nick Clifton - - * Makefile.am: Regernated dependencies. - * aclocal.m4: Regenerated. - * configure: Regenerated. - -Sat Nov 14 14:50:56 1998 Ian Lance Taylor - - * debug.c (debug_name_type): Correct return type from false to - DEBUG_TYPE_NULL. - -Sat Nov 14 14:48:21 1998 Andreas Schwab - - * objdump.c (disassemble_data): Skip over relocs below start - address. - -Tue Nov 10 15:31:52 1998 Nick Clifton - - * Makefile.am: Add dependency of readelf.c on elf/fr30.h - * Makefile.in: Regenerate. - -Wed Nov 4 16:25:55 1998 Nick Clifton - - * readelf.c: Add support for the FR30. - -Mon Nov 2 14:59:33 1998 Geoffrey Noer - - * configure.in: detect cygwin* instead of cygwin32* - * configure: regenerate - -Fri Oct 30 15:14:49 1998 Geoffrey Noer - - * dllwrap.c: change all references to cygwin32_ to cygwin_, - change Cygwin target def to CYGWIN. - -Wed Oct 28 10:31:19 1998 Nick Clifton - - * objdump.c (disassemble_data): Replace 'unsigned long' with - 'bfd_vma'. - -Tue Oct 27 14:39:00 1998 Nick Clifton - - * objdump.c (disassemble_bytes): Applied this patch from Philip - Blundell : Make address variables unsigned to - avoid problems when disassembling code at high-bit-set addresses. - -Mon Oct 26 14:07:59 1998 Mumit Khan - - * 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 - - * 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 - - * 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 - - * 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 - - * dlltool.c (scan_all_symbols): Fix patch error. - -Fri Oct 16 22:56:20 1998 Felix Lee - - * 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 - - * 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 - - * 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 - - From Mumit Khan : - * dlltool.c (scan_all_symbols): Don't re-export symbols exported - by other DLLs. - -Thu Oct 8 15:33:08 1998 Geoffrey Noer - - * Makefile.am (BUILD_DLLWRAP): Add. - (BUILD_DLLWRAP, DLLWRAP_PROG): Add. - (bin_PROGRAMS): Add dllwrap. - * Makefile.in: regenerate with automake - - From Mumit Khan : - * 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 - - * Makefile.am (windres_SOURCES): Add resres.c. - (windres_OBJECTS): Add resres.o. - * Makefile.in: regenerate with automake - - From Anders Norlander . - * 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 - - From Nokubi Hirotaka : - * 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 - - * rcparse.y (memflags_move): Correct recursion. - -1998-09-10 Ulrich Drepper - - * 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 - - * readelf.c (process_section_contents): Do not try to dump empty - sections. - -Sat Sep 5 19:17:10 1998 Mumit Khan - - * dlltool.c (scan_all_symbols): Don't re-export symbols exported - by other DLLs. - -1998-09-02 14:50 Ulrich Drepper - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * readelf.c (dump_relocations): EM_ARM uses rela relocs. - -1998-07-30 16:25 Ulrich Drepper - - * 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 - - * readelf.c (get_dynamic_type): Remove empty default from switch - statement. - -Fri Jul 24 16:28:12 1998 Ian Lance Taylor - - * Makefile.am (install-exec-local): Don't remove the file before - checking whether $(bindir) == $(tooldir)/bin. From Maciej - W. Rozycki . - * Makefile.in: Rebuild. - -Fri Jul 24 09:38:59 1998 Nick Clifton - - * objcopy.c: Removed spurious inclusion of elf/internal.h and - elf-bfd.h. - -1998-07-22 Ulrich Drepper - - * readelf.c: Consistantly use elf_ prefix for *_reloc_type - functions. - -Wed Jul 22 16:29:12 1998 Nick Clifton - - * 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 - - * 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 - - * 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 - - * readelf.c (dump_relocations): Display number of unrecognised - relocations. - -1998-07-21 13:13 Ulrich Drepper - - * 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 - - * 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 - - * 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 - - * readelf.c (process_symbol_table): Fix little alignment problem - in printed table header. - -1998-07-20 07:14 Ulrich Drepper - - * 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 - - * 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 - - * readelf.c: Switch prototypes from unsigned short to unsigned - int. - -Fri Jul 10 16:17:50 1998 Ian Lance Taylor - - From Christian Holland : - * 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 - - * 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 - - * 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 . - -Thu Jul 2 14:01:34 1998 Klaus Kaempf - - * 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 - - * 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 - - * objcopy.c: Minor formatting improvements. - * readelf.c: Minor output formatting improvement. - -Wed Jul 1 14:23:48 1998 Ian Lance Taylor - - * 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 - : - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - 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 - - * 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 - - * readelf.c (usage): Write to stdout, not stderr. - -Fri Jun 12 13:33:51 1998 Tom Tromey - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * objcopy.c (copy_usage): Add missing \n\ from help description. - -Wed Jun 3 19:31:33 1998 Ian Lance Taylor - - * 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 - - * 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 - - From Yuli Barcohen : - * debug.c (debug_type_samep): Avoid endless loops comparing - function and method parameter types. - -Fri May 22 14:02:42 1998 Ian Lance Taylor - - * dlltool.c (dump_iat): Comment out; not used. - (display): Rename from tell. Change all callers. - -Thu May 14 14:00:56 1998 Nick Clifton - - * 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 - - * ar.c (usage): Extend information provided about command line - options. - -Wed May 6 15:28:51 1998 Klaus Kaempf - - * makefile.vms: Run dec c with /nodebug. Pass CC value when - calling make. - -Tue May 5 15:19:00 1998 Nick Clifton - - * 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 - - * 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 - - * 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 - - * 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 if HAVE_LOCALE_H. - (LC_MESSAGES): Now can be defined even when ENABLE_NLS. - -Tue Apr 28 10:33:07 1998 Bill Moyer - - 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 - - * configure.in: Change version number to 2.9.4 - * configure: Rebuild. - -Wed Apr 22 16:00:35 1998 Tom Tromey - - * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir). - -Wed Apr 22 00:33:56 1998 Tom Tromey - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - From Zack Weinberg and H.J. Lu - : - * 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 - - * binutils.texi: Use @itemx for a secondary item in a table. - -Tue Mar 31 18:44:13 1998 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * defparse.y (explist): Allow epsilon. - Suggestion from Jonathan-Harris@psion.com. - -Thu Mar 26 16:59:09 1998 Richard Henderson - - * 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 - - Based on patch from H.J. Lu : - * Makefile.am (DISTSTUFF): New variable. - (diststuff): New target. - (DISTCLEANFILES): New variable. - * Makefile.in: Rebuild. - -Tue Mar 24 19:33:08 1998 Ian Lance Taylor - - * rclex.l: Accept { and } as synonyms for BEGIN and END. - -Fri Mar 20 19:18:08 1998 Ian Lance Taylor - - * aclocal.m4, configure: Rebuild with libtool 1.2. - -Tue Feb 24 13:07:50 1998 Doug Evans - - * 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 - - * Makefile.am (install-exec-local): Install properly when ln - fails or tooldir == prefix. - -Tue Feb 17 18:40:55 1998 Richard Henderson - - * 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 - - * 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 - - * 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 - - * deflex.l: Accept '?' in symbol names, for VC++ mangled names. - From Mikey . - - * 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 - - * configure, aclocal.m4: Rebuild with new libtool. - -Thu Feb 5 12:21:13 1998 Ian Lance Taylor - - * configure, Makefile.in, aclocal.m4: Rebuild with new libtool. - -Fri Jan 30 19:16:28 1998 Doug Evans - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/binutils/MAINTAINERS b/binutils/MAINTAINERS deleted file mode 100644 index 79cabaa4e..000000000 --- a/binutils/MAINTAINERS +++ /dev/null @@ -1,168 +0,0 @@ - ========= 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: - - bug-binutils@gnu.org or binutils@sources.redhat.com - -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-if, 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@sources.redhat.com). - - --------- Blanket Write Privs --------- - -The following people have permission to check patches into the -repository without obtaining approval first: - - Nick Clifton (head maintainer) - Richard Henderson - Ian Taylor - Jeff Law - Jim Wilson - DJ Delorie - Alan Modra - Michael Meissner - - --------- 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 - ARM Nick Clifton - ARM Richard Earnshaw - AVR Denis Chertykov - AVR Marek Michalkiewicz - BUILD SYSTEM Ben Elliston - BUILD SYSTEM Daniel Jacobowitz - CRIS Hans-Peter Nilsson - DWARF2 Jason Merrill - FR30 Dave Brolley - FRV Dave Brolley - HPPA Dave Anglin - HPPA elf32 Alan Modra - HPPA elf64 Jeff Law [Basic maintainance only] - IA-64 Jim Wilson - IQ2000 Stan Cox - i860 Jason Eckhardt - ix86 Alan Modra - ix86 PE Christopher Faylor - ix86 COFF DJ Delorie - ix86 H.J.Lu - ix86 INTEL MODE Diego Novillo - M68HC11 M68HC12 Stephane Carrez - M68k Ben Elliston - MIPS Eric Christopher - MIPS Thiemo Seufer - MMIX Hans-Peter Nilsson - MN10300 Eric Christopher - MN10300 Alexandre Oliva - PPC Geoff Keating - PPC vector ext Aldy Hernandez - s390, s390x Martin Schwidefsky - SH Jörn Rennecke - SH Alexandre Oliva - SH Kaz Kojima - SPARC Jakub Jelinek - TESTSUITES Ben Elliston - TIC4X Svein Seldal - TIC54X Timothy Wall - VAX Jason R Thorpe - x86_64 Jan Hubicka - x86_64 Andreas Jaeger - Xtensa Bob Wilson - z8k Christian Groessler - - - --------- 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@sources.redhat.com - -The current CGEN maintainers are: - - Doug Evans, Ben Elliston, 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: - - Daniel Jacobowitz - - -------- 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 diff --git a/binutils/Makefile.am b/binutils/Makefile.am deleted file mode 100644 index 324c0ea06..000000000 --- a/binutils/Makefile.am +++ /dev/null @@ -1,564 +0,0 @@ -## Process this file with automake to generate Makefile.in - -## FIXME: Work around apparent bug in automake. -INTLLIBS = @INTLLIBS@ - -AUTOMAKE_OPTIONS = cygnus dejagnu - -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` - -WARN_CFLAGS = @WARN_CFLAGS@ -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 - -# 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 -DLLWRAP_PROG=dllwrap - -SRCONV_PROG=srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT) - -PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ - -bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ - -## We need a special rule to install the programs which are built with -## -new, and to rename cxxfilt to c++filt. -noinst_PROGRAMS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG) - -EXTRA_PROGRAMS = $(NLMCONV_PROG) srconv sysdump coffdump $(DLLTOOL_PROG) $(WINDRES_PROG) $(DLLWRAP_PROG) - -# Stuff that goes in tooldir/ if appropriate. -TOOL_PROGS = nm-new strip-new ar ranlib dlltool - -BASEDIR = $(srcdir)/.. -BFDDIR = $(BASEDIR)/bfd -INCDIR = $(BASEDIR)/include - -MKDEP = gcc -MM - -INCLUDES = -D_GNU_SOURCE \ - -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \ - @HDEFINES@ \ - -I$(srcdir)/../intl -I../intl \ - -DLOCALEDIR="\"$(prefix)/share/locale\"" \ - -Dbin_dummy_emulation=$(EMULATION_VECTOR) - -HFILES = \ - arsup.h binemul.h bucomm.h budbg.h budemang.h \ - coffgrok.h debug.h dlltool.h nlmconv.h \ - windres.h winduni.h - -GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h - -CFILES = \ - addr2line.c ar.c arsup.c binemul.c bucomm.c budemang.c \ - coffdump.c coffgrok.c cxxfilt.c debug.c dlltool.c dllwrap.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 \ - 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 version.c \ - windres.c winduni.c wrstabs.c - -GENERATED_CFILES = \ - arparse.c arlex.c sysroff.c sysinfo.c syslex.c \ - defparse.c deflex.c nlmheader.c rcparse.c rclex.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 - -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_COLLATE= sort > tmp \ - && mv tmp $(srcdir)/po/POTFILES.in - -EXPECT = `if [ -f $$r/../expect/expect ] ; then \ - echo $$r/../expect/expect ; \ - else echo expect ; fi` -RUNTEST = `if [ -f ${srcdir}/../dejagnu/runtest ] ; then \ - echo ${srcdir}/../dejagnu/runtest ; \ - else echo runtest ; fi` - -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; \ - EXPECT=$(EXPECT); export EXPECT; \ - if [ -f $(top_builddir)/../expect/expect ]; then \ - TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \ - export TCL_LIBRARY; \ - fi; \ - 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: - /bin/sh $(srcdir)/sanity.sh $(bindir) - -LDADD = $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) - -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 -readelf_LDADD = $(INTLLIBS) $(LIBIBERTY) - -strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS) - -nm_new_SOURCES = nm.c budemang.c $(BULIBS) - -objdump_SOURCES = objdump.c budemang.c prdbg.c $(DEBUG_SRCS) $(BULIBS) -objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) - -objdump.o:objdump.c - $(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c - -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) -ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) - -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@ $(INTLLIBS) - -addr2line_SOURCES = addr2line.c budemang.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.o syslex.o - $(CC_FOR_BUILD) $(CFLAGS) $(LDFLAGS) -o $@ sysinfo.o syslex.o - -syslex.o: syslex.c sysinfo.h - if [ -r syslex.c ]; then \ - $(CC_FOR_BUILD) -c -I. $(CFLAGS) syslex.c ; \ - else \ - $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(CFLAGS) $(srcdir)/syslex.c ;\ - fi - -sysinfo.o: sysinfo.c - if [ -r sysinfo.c ]; then \ - $(CC_FOR_BUILD) -c -I. $(CFLAGS) sysinfo.c ; \ - else \ - $(CC_FOR_BUILD) -c -I. $(CFLAGS) $(srcdir)/sysinfo.c ; \ - fi - -# We need these for parallel make. -arparse.h: arparse.c -defparse.h: defparse.c -nlmheader.h: nlmheader.c -rcparse.h: rcparse.c -sysinfo.h: sysinfo.c - -srconv_SOURCES = srconv.c coffgrok.c $(BULIBS) - -dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS) -dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) - -dlltool.o:dlltool.c - $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/dlltool.c - -rescoff.o:rescoff.c - $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/rescoff.c - -coffdump_SOURCES = coffdump.c coffgrok.c $(BULIBS) - -sysdump_SOURCES = sysdump.c $(BULIBS) - -# coff/sym.h and coff/ecoff.h won't be found by the automatic dependency -# scripts, since they are only included conditionally. -nlmconv.o: nlmconv.c $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - ldname=`echo ld | sed '$(transform)'`; \ - $(COMPILE) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c - -nlmconv_SOURCES = nlmconv.c nlmheader.y $(BULIBS) - -windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.l \ - winduni.c resres.c $(BULIBS) -windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) - -dllwrap_SOURCES = dllwrap.c version.c -dllwrap_LDADD = $(LIBIBERTY) $(INTLLIBS) - - -EXTRA_DIST = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \ - syslex.c deflex.c defparse.h defparse.c rclex.c rcparse.h rcparse.c - -diststuff: $(EXTRA_DIST) info - -DISTCLEANFILES = sysinfo sysroff.c sysroff.h \ - site.exp site.bak - -Makefile: $(BFDDIR)/configure.in - -# Targets to rebuild dependencies in this Makefile. -# Have to get rid of DEP1 here so that "$?" later includes all of $(CFILES). -DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h - rm -f DEP1 - $(MAKE) MKDEP="$(MKDEP)" DEP1 - sed -f dep.sed < DEP1 > DEPA - echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> DEPA - if grep ' /' DEPA > /dev/null 2> /dev/null; then \ - echo 'make DEP failed!'; exit 1; \ - else \ - mv -f DEPA $@; \ - fi - -DEP1: $(CFILES) $(GENERATED_CFILES) - echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2 - echo '# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.' >> DEP2 - $(MKDEP) $(INCLUDES) $(CFLAGS) $? >> DEP2 - mv -f DEP2 $@ - -dep.sed: dep-in.sed config.status - objdir=`pwd`; \ - sed <$(srcdir)/dep-in.sed >dep.sed \ - -e 's!@INCDIR@!$(INCDIR)!' \ - -e 's!@BFDDIR@!$(BFDDIR)!' \ - -e 's!@SRCDIR@!$(srcdir)!' \ - -e "s!@OBJDIR@!$${objdir}!" \ - -e 's!@TOPDIR@!'`echo $(srcdir) | sed -e s,/binutils$$,,`'!' - -dep: DEP - sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile - cat DEP >> tmp-Makefile - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile - -dep-in: DEP - sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in - cat DEP >> tmp-Makefile.in - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in - -dep-am: DEP - sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am - cat DEP >> tmp-Makefile.am - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am - -.PHONY: dep dep-in dep-am - -### - -MOSTLYCLEANFILES = sysinfo binutils.log binutils.sum abcdefgh* -mostlyclean-local: - -rm -rf tmpdir - -CLEANFILES = dep.sed DEP DEPA DEP1 DEP2 - -.PHONY: install-exec-local - -install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS) - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -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 - -# What appears below is generated by a hacked mkdep using gcc -MM. - -# DO NOT DELETE THIS LINE -- mkdep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. -addr2line.o: addr2line.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h \ - $(INCDIR)/demangle.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h budemang.h -ar.o: ar.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/libiberty.h $(INCDIR)/progress.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/aout/ar.h $(BFDDIR)/libbfd.h arsup.h $(INCDIR)/filenames.h \ - binemul.h -arsup.o: arsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h arsup.h $(INCDIR)/libiberty.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/filenames.h -binemul.o: binemul.c binemul.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h -bucomm.o: bucomm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/libiberty.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/filenames.h $(BFDDIR)/libbfd.h -budemang.o: budemang.c config.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h $(INCDIR)/demangle.h \ - budemang.h -coffdump.o: coffdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h coffgrok.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h -coffgrok.o: coffgrok.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h coffgrok.h -cxxfilt.o: cxxfilt.c config.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h $(INCDIR)/demangle.h $(INCDIR)/safe-ctype.h -debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h -dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/demangle.h \ - $(INCDIR)/dyn-string.h dlltool.h $(INCDIR)/safe-ctype.h -dllwrap.o: dllwrap.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/dyn-string.h -emul_aix.o: emul_aix.c binemul.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/xcoff.h $(BFDDIR)/libcoff.h $(BFDDIR)/libxcoff.h -emul_vanilla.o: emul_vanilla.c binemul.h ../bfd/bfd.h \ - $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h -filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h -ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/ieee.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ - budbg.h $(INCDIR)/filenames.h -is-ranlib.o: is-ranlib.c -is-strip.o: is-strip.c -maybe-ranlib.o: maybe-ranlib.c -maybe-strip.o: maybe-strip.c -nlmconv.o: nlmconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h \ - $(BFDDIR)/libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \ - $(INCDIR)/nlm/external.h nlmconv.h -nm.o: nm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/progress.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h budemang.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def $(INCDIR)/aout/ranlib.h $(INCDIR)/demangle.h \ - $(INCDIR)/libiberty.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h -not-ranlib.o: not-ranlib.c -not-strip.o: not-strip.c -objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - budbg.h $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h -objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/progress.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - budemang.h $(INCDIR)/safe-ctype.h $(INCDIR)/dis-asm.h \ - $(INCDIR)/libiberty.h $(INCDIR)/demangle.h debug.h \ - budbg.h $(INCDIR)/aout/aout64.h -prdbg.o: prdbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ - budbg.h -rdcoff.o: rdcoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h debug.h budbg.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -rddbg.o: rddbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ - budbg.h -readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/alpha.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \ - $(INCDIR)/elf/avr.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/d10v.h \ - $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h $(INCDIR)/elf/fr30.h \ - $(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/i860.h \ - $(INCDIR)/elf/i960.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/ip2k.h \ - $(INCDIR)/elf/m32r.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/m68hc11.h \ - $(INCDIR)/elf/mcore.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/mmix.h \ - $(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/msp430.h \ - $(INCDIR)/elf/or32.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/ppc64.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/sh.h \ - $(INCDIR)/elf/sparc.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/vax.h \ - $(INCDIR)/elf/x86-64.h $(INCDIR)/elf/xstormy16.h $(INCDIR)/elf/iq2000.h \ - $(INCDIR)/elf/xtensa.h $(INCDIR)/aout/ar.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h unwind-ia64.h -rename.o: rename.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h -resbin.o: resbin.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h -rescoff.o: rescoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -resrc.o: resrc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - windres.h winduni.h -resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h -size.o: size.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h -srconv.o: srconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h sysroff.h coffgrok.h $(INCDIR)/libiberty.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - sysroff.c -stabs.o: stabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/demangle.h debug.h budbg.h $(INCDIR)/filenames.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -strings.o: strings.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h -sysdump.o: sysdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h $(INCDIR)/libiberty.h \ - sysroff.h sysroff.c -version.o: version.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h ../bfd/bfdver.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h -windres.o: windres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h windres.h \ - winduni.h -winduni.o: winduni.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h winduni.h $(INCDIR)/safe-ctype.h -wrstabs.o: wrstabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - debug.h budbg.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def -arparse.o: arparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h arsup.h -arlex.o: arlex.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - arparse.h -sysroff.o: sysroff.c -sysinfo.o: sysinfo.c -syslex.o: syslex.c sysinfo.h -defparse.o: defparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h dlltool.h -deflex.o: deflex.c $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \ - defparse.h dlltool.h -nlmheader.o: nlmheader.c $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h \ - ../bfd/bfd.h $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \ - nlmconv.h -rcparse.o: rcparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h $(INCDIR)/safe-ctype.h -rclex.o: rclex.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - windres.h winduni.h rcparse.h -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/binutils/Makefile.in b/binutils/Makefile.in deleted file mode 100644 index 46eeac806..000000000 --- a/binutils/Makefile.in +++ /dev/null @@ -1,1296 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_alias = @build_alias@ -build_triplet = @build@ -host_alias = @host_alias@ -host_triplet = @host@ -target_alias = @target_alias@ -target_triplet = @target@ -AR = @AR@ -AS = @AS@ -BUILD_DLLTOOL = @BUILD_DLLTOOL@ -BUILD_DLLWRAP = @BUILD_DLLWRAP@ -BUILD_MISC = @BUILD_MISC@ -BUILD_NLMCONV = @BUILD_NLMCONV@ -BUILD_SRCONV = @BUILD_SRCONV@ -BUILD_WINDRES = @BUILD_WINDRES@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -DATADIRNAME = @DATADIRNAME@ -DEMANGLER_NAME = @DEMANGLER_NAME@ -DLLTOOL = @DLLTOOL@ -DLLTOOL_DEFS = @DLLTOOL_DEFS@ -EMULATION = @EMULATION@ -EMULATION_VECTOR = @EMULATION_VECTOR@ -EXEEXT = @EXEEXT@ -GCJ = @GCJ@ -GCJFLAGS = @GCJFLAGS@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -HDEFINES = @HDEFINES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLOBJS = @INTLOBJS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -NLMCONV_DEFS = @NLMCONV_DEFS@ -OBJDUMP = @OBJDUMP@ -OBJDUMP_DEFS = @OBJDUMP_DEFS@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -bfdincludedir = @bfdincludedir@ -bfdlibdir = @bfdlibdir@ -l = @l@ - -INTLLIBS = @INTLLIBS@ - -AUTOMAKE_OPTIONS = cygnus dejagnu - -SUBDIRS = doc po - -tooldir = $(exec_prefix)/$(target_alias) - -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` - -WARN_CFLAGS = @WARN_CFLAGS@ -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 - -# 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 -DLLWRAP_PROG = dllwrap - -SRCONV_PROG = srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT) - -PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ - -bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ - -noinst_PROGRAMS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG) - -EXTRA_PROGRAMS = $(NLMCONV_PROG) srconv sysdump coffdump $(DLLTOOL_PROG) $(WINDRES_PROG) $(DLLWRAP_PROG) - -# Stuff that goes in tooldir/ if appropriate. -TOOL_PROGS = nm-new strip-new ar ranlib dlltool - -BASEDIR = $(srcdir)/.. -BFDDIR = $(BASEDIR)/bfd -INCDIR = $(BASEDIR)/include - -MKDEP = gcc -MM - -INCLUDES = -D_GNU_SOURCE \ - -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \ - @HDEFINES@ \ - -I$(srcdir)/../intl -I../intl \ - -DLOCALEDIR="\"$(prefix)/share/locale\"" \ - -Dbin_dummy_emulation=$(EMULATION_VECTOR) - - -HFILES = \ - arsup.h binemul.h bucomm.h budbg.h budemang.h \ - coffgrok.h debug.h dlltool.h nlmconv.h \ - windres.h winduni.h - - -GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h - -CFILES = \ - addr2line.c ar.c arsup.c binemul.c bucomm.c budemang.c \ - coffdump.c coffgrok.c cxxfilt.c debug.c dlltool.c dllwrap.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 \ - 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 version.c \ - windres.c winduni.c wrstabs.c - - -GENERATED_CFILES = \ - arparse.c arlex.c sysroff.c sysinfo.c syslex.c \ - defparse.c deflex.c nlmheader.c rcparse.c rclex.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 - -BFDLIB = ../bfd/libbfd.la - -OPCODES = ../opcodes/libopcodes.la - -LIBIBERTY = ../libiberty/libiberty.a - -POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES) - -EXPECT = `if [ -f $$r/../expect/expect ] ; then \ - echo $$r/../expect/expect ; \ - else echo expect ; fi` - -RUNTEST = `if [ -f ${srcdir}/../dejagnu/runtest ] ; then \ - echo ${srcdir}/../dejagnu/runtest ; \ - else echo runtest ; fi` - - -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` - - -LDADD = $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) - -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 -readelf_LDADD = $(INTLLIBS) $(LIBIBERTY) - -strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS) - -nm_new_SOURCES = nm.c budemang.c $(BULIBS) - -objdump_SOURCES = objdump.c budemang.c prdbg.c $(DEBUG_SRCS) $(BULIBS) -objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) - -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) - -ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) - -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@ $(INTLLIBS) - -addr2line_SOURCES = addr2line.c budemang.c $(BULIBS) - -srconv_SOURCES = srconv.c coffgrok.c $(BULIBS) - -dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS) -dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) - -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.l \ - winduni.c resres.c $(BULIBS) - -windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) - -dllwrap_SOURCES = dllwrap.c version.c -dllwrap_LDADD = $(LIBIBERTY) $(INTLLIBS) - -EXTRA_DIST = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \ - syslex.c deflex.c defparse.h defparse.c rclex.c rcparse.h rcparse.c - - -DISTCLEANFILES = sysinfo sysroff.c sysroff.h \ - site.exp site.bak - - -### - -MOSTLYCLEANFILES = sysinfo binutils.log binutils.sum abcdefgh* - -CLEANFILES = dep.sed DEP DEPA DEP1 DEP2 -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -bin_PROGRAMS = size$(EXEEXT) objdump$(EXEEXT) ar$(EXEEXT) \ -strings$(EXEEXT) ranlib$(EXEEXT) objcopy$(EXEEXT) @BUILD_NLMCONV@ \ -@BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ addr2line$(EXEEXT) \ -readelf$(EXEEXT) @BUILD_DLLWRAP@ @BUILD_MISC@ -noinst_PROGRAMS = nm-new$(EXEEXT) strip-new$(EXEEXT) cxxfilt$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) - - -DEFS = @DEFS@ -I. -I$(srcdir) -I. -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -nlmconv_OBJECTS = nlmconv.$(OBJEXT) nlmheader.$(OBJEXT) \ -bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT) -nlmconv_LDADD = $(LDADD) -nlmconv_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -nlmconv_LDFLAGS = -srconv_OBJECTS = srconv.$(OBJEXT) coffgrok.$(OBJEXT) bucomm.$(OBJEXT) \ -version.$(OBJEXT) filemode.$(OBJEXT) -srconv_LDADD = $(LDADD) -srconv_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -srconv_LDFLAGS = -sysdump_OBJECTS = sysdump.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \ -filemode.$(OBJEXT) -sysdump_LDADD = $(LDADD) -sysdump_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -sysdump_LDFLAGS = -coffdump_OBJECTS = coffdump.$(OBJEXT) coffgrok.$(OBJEXT) \ -bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT) -coffdump_LDADD = $(LDADD) -coffdump_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -coffdump_LDFLAGS = -dlltool_OBJECTS = dlltool.$(OBJEXT) defparse.$(OBJEXT) deflex.$(OBJEXT) \ -bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT) -dlltool_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -dlltool_LDFLAGS = -windres_OBJECTS = windres.$(OBJEXT) resrc.$(OBJEXT) rescoff.$(OBJEXT) \ -resbin.$(OBJEXT) rcparse.$(OBJEXT) rclex.$(OBJEXT) winduni.$(OBJEXT) \ -resres.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT) -windres_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -windres_LDFLAGS = -dllwrap_OBJECTS = dllwrap.$(OBJEXT) version.$(OBJEXT) -dllwrap_DEPENDENCIES = ../libiberty/libiberty.a -dllwrap_LDFLAGS = -size_OBJECTS = size.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \ -filemode.$(OBJEXT) -size_LDADD = $(LDADD) -size_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -size_LDFLAGS = -objdump_OBJECTS = objdump.$(OBJEXT) budemang.$(OBJEXT) prdbg.$(OBJEXT) \ -rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) ieee.$(OBJEXT) \ -rdcoff.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT) -objdump_DEPENDENCIES = ../opcodes/libopcodes.la ../bfd/libbfd.la \ -../libiberty/libiberty.a -objdump_LDFLAGS = -ar_OBJECTS = arparse.$(OBJEXT) arlex.$(OBJEXT) ar.$(OBJEXT) \ -not-ranlib.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) binemul.$(OBJEXT) \ -emul_$(EMULATION).$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \ -filemode.$(OBJEXT) -ar_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -ar_LDFLAGS = -strings_OBJECTS = strings.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \ -filemode.$(OBJEXT) -strings_LDADD = $(LDADD) -strings_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -strings_LDFLAGS = -ranlib_OBJECTS = ar.$(OBJEXT) is-ranlib.$(OBJEXT) arparse.$(OBJEXT) \ -arlex.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) binemul.$(OBJEXT) \ -emul_$(EMULATION).$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \ -filemode.$(OBJEXT) -ranlib_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -ranlib_LDFLAGS = -objcopy_OBJECTS = objcopy.$(OBJEXT) not-strip.$(OBJEXT) \ -rename.$(OBJEXT) rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \ -ieee.$(OBJEXT) rdcoff.$(OBJEXT) wrstabs.$(OBJEXT) bucomm.$(OBJEXT) \ -version.$(OBJEXT) filemode.$(OBJEXT) -objcopy_LDADD = $(LDADD) -objcopy_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -objcopy_LDFLAGS = -addr2line_OBJECTS = addr2line.$(OBJEXT) budemang.$(OBJEXT) \ -bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT) -addr2line_LDADD = $(LDADD) -addr2line_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -addr2line_LDFLAGS = -readelf_OBJECTS = readelf.$(OBJEXT) version.$(OBJEXT) \ -unwind-ia64.$(OBJEXT) -readelf_DEPENDENCIES = ../libiberty/libiberty.a -readelf_LDFLAGS = -nm_new_OBJECTS = nm.$(OBJEXT) budemang.$(OBJEXT) bucomm.$(OBJEXT) \ -version.$(OBJEXT) filemode.$(OBJEXT) -nm_new_LDADD = $(LDADD) -nm_new_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -nm_new_LDFLAGS = -strip_new_OBJECTS = objcopy.$(OBJEXT) is-strip.$(OBJEXT) \ -rename.$(OBJEXT) rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \ -ieee.$(OBJEXT) rdcoff.$(OBJEXT) wrstabs.$(OBJEXT) bucomm.$(OBJEXT) \ -version.$(OBJEXT) filemode.$(OBJEXT) -strip_new_LDADD = $(LDADD) -strip_new_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -strip_new_LDFLAGS = -cxxfilt_OBJECTS = cxxfilt.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \ -filemode.$(OBJEXT) -cxxfilt_LDADD = $(LDADD) -cxxfilt_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a -cxxfilt_LDFLAGS = -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LEXLIB = @LEXLIB@ -YLWRAP = $(top_srcdir)/../ylwrap -CFLAGS = @CFLAGS@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = README ./stamp-h.in ChangeLog Makefile.am Makefile.in \ -NEWS acinclude.m4 aclocal.m4 arlex.c arparse.c config.in configure \ -configure.in deflex.c defparse.c nlmheader.c rclex.c rcparse.c - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -SOURCES = $(nlmconv_SOURCES) $(srconv_SOURCES) $(sysdump_SOURCES) $(coffdump_SOURCES) $(dlltool_SOURCES) $(windres_SOURCES) $(dllwrap_SOURCES) $(size_SOURCES) $(objdump_SOURCES) $(ar_SOURCES) $(strings_SOURCES) $(ranlib_SOURCES) $(objcopy_SOURCES) $(addr2line_SOURCES) $(readelf_SOURCES) $(nm_new_SOURCES) $(strip_new_SOURCES) $(cxxfilt_SOURCES) -OBJECTS = $(nlmconv_OBJECTS) $(srconv_OBJECTS) $(sysdump_OBJECTS) $(coffdump_OBJECTS) $(dlltool_OBJECTS) $(windres_OBJECTS) $(dllwrap_OBJECTS) $(size_OBJECTS) $(objdump_OBJECTS) $(ar_OBJECTS) $(strings_OBJECTS) $(ranlib_OBJECTS) $(objcopy_OBJECTS) $(addr2line_OBJECTS) $(readelf_OBJECTS) $(nm_new_OBJECTS) $(strip_new_OBJECTS) $(cxxfilt_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .l .lo .o .obj .s .y -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 - cd $(srcdir) && $(ACLOCAL) - -config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -config.h: stamp-h - @if test ! -f $@; then \ - rm -f stamp-h; \ - $(MAKE) stamp-h; \ - else :; fi -stamp-h: $(srcdir)/config.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=config.h:config.in \ - $(SHELL) ./config.status - @echo timestamp > stamp-h 2> /dev/null -$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in - @if test ! -f $@; then \ - rm -f $(srcdir)/stamp-h.in; \ - $(MAKE) $(srcdir)/stamp-h.in; \ - else :; fi -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f config.h - -maintainer-clean-hdr: - -mostlyclean-binPROGRAMS: - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -distclean-binPROGRAMS: - -maintainer-clean-binPROGRAMS: - -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - list='$(bin_PROGRAMS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - done - -mostlyclean-noinstPROGRAMS: - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) - -distclean-noinstPROGRAMS: - -maintainer-clean-noinstPROGRAMS: - -.c.o: - $(COMPILE) -c $< - -# FIXME: We should only use cygpath when building on Windows, -# and only if it is available. -.c.obj: - $(COMPILE) -c `cygpath -w $<` - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -rm -f *.$(OBJEXT) - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -.c.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -maintainer-clean-libtool: - -nlmconv$(EXEEXT): $(nlmconv_OBJECTS) $(nlmconv_DEPENDENCIES) - @rm -f nlmconv$(EXEEXT) - $(LINK) $(nlmconv_LDFLAGS) $(nlmconv_OBJECTS) $(nlmconv_LDADD) $(LIBS) - -srconv$(EXEEXT): $(srconv_OBJECTS) $(srconv_DEPENDENCIES) - @rm -f srconv$(EXEEXT) - $(LINK) $(srconv_LDFLAGS) $(srconv_OBJECTS) $(srconv_LDADD) $(LIBS) - -sysdump$(EXEEXT): $(sysdump_OBJECTS) $(sysdump_DEPENDENCIES) - @rm -f sysdump$(EXEEXT) - $(LINK) $(sysdump_LDFLAGS) $(sysdump_OBJECTS) $(sysdump_LDADD) $(LIBS) - -coffdump$(EXEEXT): $(coffdump_OBJECTS) $(coffdump_DEPENDENCIES) - @rm -f coffdump$(EXEEXT) - $(LINK) $(coffdump_LDFLAGS) $(coffdump_OBJECTS) $(coffdump_LDADD) $(LIBS) - -dlltool$(EXEEXT): $(dlltool_OBJECTS) $(dlltool_DEPENDENCIES) - @rm -f dlltool$(EXEEXT) - $(LINK) $(dlltool_LDFLAGS) $(dlltool_OBJECTS) $(dlltool_LDADD) $(LIBS) - -windres$(EXEEXT): $(windres_OBJECTS) $(windres_DEPENDENCIES) - @rm -f windres$(EXEEXT) - $(LINK) $(windres_LDFLAGS) $(windres_OBJECTS) $(windres_LDADD) $(LIBS) - -dllwrap$(EXEEXT): $(dllwrap_OBJECTS) $(dllwrap_DEPENDENCIES) - @rm -f dllwrap$(EXEEXT) - $(LINK) $(dllwrap_LDFLAGS) $(dllwrap_OBJECTS) $(dllwrap_LDADD) $(LIBS) - -size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) - @rm -f size$(EXEEXT) - $(LINK) $(size_LDFLAGS) $(size_OBJECTS) $(size_LDADD) $(LIBS) - -objdump$(EXEEXT): $(objdump_OBJECTS) $(objdump_DEPENDENCIES) - @rm -f objdump$(EXEEXT) - $(LINK) $(objdump_LDFLAGS) $(objdump_OBJECTS) $(objdump_LDADD) $(LIBS) - -ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES) - @rm -f ar$(EXEEXT) - $(LINK) $(ar_LDFLAGS) $(ar_OBJECTS) $(ar_LDADD) $(LIBS) - -strings$(EXEEXT): $(strings_OBJECTS) $(strings_DEPENDENCIES) - @rm -f strings$(EXEEXT) - $(LINK) $(strings_LDFLAGS) $(strings_OBJECTS) $(strings_LDADD) $(LIBS) - -ranlib$(EXEEXT): $(ranlib_OBJECTS) $(ranlib_DEPENDENCIES) - @rm -f ranlib$(EXEEXT) - $(LINK) $(ranlib_LDFLAGS) $(ranlib_OBJECTS) $(ranlib_LDADD) $(LIBS) - -objcopy$(EXEEXT): $(objcopy_OBJECTS) $(objcopy_DEPENDENCIES) - @rm -f objcopy$(EXEEXT) - $(LINK) $(objcopy_LDFLAGS) $(objcopy_OBJECTS) $(objcopy_LDADD) $(LIBS) - -addr2line$(EXEEXT): $(addr2line_OBJECTS) $(addr2line_DEPENDENCIES) - @rm -f addr2line$(EXEEXT) - $(LINK) $(addr2line_LDFLAGS) $(addr2line_OBJECTS) $(addr2line_LDADD) $(LIBS) - -readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES) - @rm -f readelf$(EXEEXT) - $(LINK) $(readelf_LDFLAGS) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS) - -nm-new$(EXEEXT): $(nm_new_OBJECTS) $(nm_new_DEPENDENCIES) - @rm -f nm-new$(EXEEXT) - $(LINK) $(nm_new_LDFLAGS) $(nm_new_OBJECTS) $(nm_new_LDADD) $(LIBS) - -strip-new$(EXEEXT): $(strip_new_OBJECTS) $(strip_new_DEPENDENCIES) - @rm -f strip-new$(EXEEXT) - $(LINK) $(strip_new_LDFLAGS) $(strip_new_OBJECTS) $(strip_new_LDADD) $(LIBS) - -cxxfilt$(EXEEXT): $(cxxfilt_OBJECTS) $(cxxfilt_DEPENDENCIES) - @rm -f cxxfilt$(EXEEXT) - $(LINK) $(cxxfilt_LDFLAGS) $(cxxfilt_OBJECTS) $(cxxfilt_LDADD) $(LIBS) -.l.c: - $(SHELL) $(YLWRAP) "$(LEX)" $< $(LEX_OUTPUT_ROOT).c $@ -- $(AM_LFLAGS) $(LFLAGS) -.y.c: - $(SHELL) $(YLWRAP) "$(YACC)" $< y.tab.c $*.c y.tab.h $*.h -- $(AM_YFLAGS) $(YFLAGS) -arparse.h: arparse.c -defparse.h: defparse.c -nlmheader.h: nlmheader.c -rcparse.h: rcparse.c - - -# 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. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive install-info-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - 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; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" != "." || dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && 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; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)config.in$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.in $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done - -RUNTESTFLAGS = - -DEJATOOL = $(PACKAGE) - -RUNTESTDEFAULTFLAGS = --tool $(DEJATOOL) --srcdir $$srcdir -site.exp: Makefile - @echo 'Making a new site.exp file...' - @test ! -f site.bak || rm -f site.bak - @echo '## these variables are automatically generated by make ##' > $@-t - @echo '# Do not edit here. If you wish to override these values' >> $@-t - @echo '# edit the last section' >> $@-t - @echo 'set tool $(DEJATOOL)' >> $@-t - @echo 'set srcdir $(srcdir)' >> $@-t - @echo 'set objdir' `pwd` >> $@-t - @echo 'set host_alias $(host_alias)' >> $@-t - @echo 'set host_triplet $(host_triplet)' >> $@-t - @echo 'set target_alias $(target_alias)' >> $@-t - @echo 'set target_triplet $(target_triplet)' >> $@-t - @echo 'set build_alias $(build_alias)' >> $@-t - @echo 'set build_triplet $(build_triplet)' >> $@-t - @echo '## All variables above are generated by configure. Do Not Edit ##' >> $@-t - @test ! -f site.exp || sed '1,/^## All variables above are.*##/ d' site.exp >> $@-t - @test ! -f site.exp || mv site.exp site.bak - @mv $@-t site.exp -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: - $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -install-info-am: -install-info: install-info-recursive -all-recursive-am: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -install-exec-am: install-binPROGRAMS install-exec-local -install-exec: install-exec-recursive - -install-data-am: -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: uninstall-binPROGRAMS -uninstall: uninstall-recursive -all-am: Makefile $(PROGRAMS) config.h -all-redirect: all-recursive-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(bindir) - - -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - -test -z "arlex.cdeflex.crclex.carparse.harparse.cdefparse.hdefparse.cnlmheader.hnlmheader.crcparse.hrcparse.c" || rm -f arlex.c deflex.c rclex.c arparse.h arparse.c defparse.h defparse.c nlmheader.h nlmheader.c rcparse.h rcparse.c -mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \ - mostlyclean-noinstPROGRAMS mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags \ - mostlyclean-generic mostlyclean-local - -mostlyclean: mostlyclean-recursive - -clean-am: clean-hdr clean-binPROGRAMS clean-noinstPROGRAMS \ - clean-compile clean-libtool clean-tags clean-generic \ - mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-hdr distclean-binPROGRAMS \ - distclean-noinstPROGRAMS distclean-compile \ - distclean-libtool distclean-tags distclean-generic \ - clean-am - -rm -f libtool - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \ - maintainer-clean-noinstPROGRAMS \ - maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ -maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ -mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ -clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile mostlyclean-libtool distclean-libtool \ -clean-libtool maintainer-clean-libtool install-data-recursive \ -uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir check-DEJAGNU \ -info-am info dvi-am dvi check check-am installcheck-am installcheck \ -install-info-am install-info all-recursive-am install-exec-local \ -install-exec-am install-exec install-data-am install-data install-am \ -install uninstall-am uninstall all-redirect all-am all installdirs-am \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - -po/POTFILES.in: @MAINT@ Makefile - for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \ - && mv tmp $(srcdir)/po/POTFILES.in - -check-DEJAGNU: site.exp - srcdir=`cd $(srcdir) && pwd`; export srcdir; \ - r=`pwd`; export r; \ - EXPECT=$(EXPECT); export EXPECT; \ - if [ -f $(top_builddir)/../expect/expect ]; then \ - TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \ - export TCL_LIBRARY; \ - fi; \ - 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: - /bin/sh $(srcdir)/sanity.sh $(bindir) - -objdump.o:objdump.c - $(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.o syslex.o - $(CC_FOR_BUILD) $(CFLAGS) $(LDFLAGS) -o $@ sysinfo.o syslex.o - -syslex.o: syslex.c sysinfo.h - if [ -r syslex.c ]; then \ - $(CC_FOR_BUILD) -c -I. $(CFLAGS) syslex.c ; \ - else \ - $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(CFLAGS) $(srcdir)/syslex.c ;\ - fi - -sysinfo.o: sysinfo.c - if [ -r sysinfo.c ]; then \ - $(CC_FOR_BUILD) -c -I. $(CFLAGS) sysinfo.c ; \ - else \ - $(CC_FOR_BUILD) -c -I. $(CFLAGS) $(srcdir)/sysinfo.c ; \ - fi - -# We need these for parallel make. -arparse.h: arparse.c -defparse.h: defparse.c -nlmheader.h: nlmheader.c -rcparse.h: rcparse.c -sysinfo.h: sysinfo.c - -dlltool.o:dlltool.c - $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/dlltool.c - -rescoff.o:rescoff.c - $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/rescoff.c - -# coff/sym.h and coff/ecoff.h won't be found by the automatic dependency -# scripts, since they are only included conditionally. -nlmconv.o: nlmconv.c $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - ldname=`echo ld | sed '$(transform)'`; \ - $(COMPILE) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c - -diststuff: $(EXTRA_DIST) info - -Makefile: $(BFDDIR)/configure.in - -# Targets to rebuild dependencies in this Makefile. -# Have to get rid of DEP1 here so that "$?" later includes all of $(CFILES). -DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h - rm -f DEP1 - $(MAKE) MKDEP="$(MKDEP)" DEP1 - sed -f dep.sed < DEP1 > DEPA - echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> DEPA - if grep ' /' DEPA > /dev/null 2> /dev/null; then \ - echo 'make DEP failed!'; exit 1; \ - else \ - mv -f DEPA $@; \ - fi - -DEP1: $(CFILES) $(GENERATED_CFILES) - echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2 - echo '# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.' >> DEP2 - $(MKDEP) $(INCLUDES) $(CFLAGS) $? >> DEP2 - mv -f DEP2 $@ - -dep.sed: dep-in.sed config.status - objdir=`pwd`; \ - sed <$(srcdir)/dep-in.sed >dep.sed \ - -e 's!@INCDIR@!$(INCDIR)!' \ - -e 's!@BFDDIR@!$(BFDDIR)!' \ - -e 's!@SRCDIR@!$(srcdir)!' \ - -e "s!@OBJDIR@!$${objdir}!" \ - -e 's!@TOPDIR@!'`echo $(srcdir) | sed -e s,/binutils$$,,`'!' - -dep: DEP - sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile - cat DEP >> tmp-Makefile - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile - -dep-in: DEP - sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in - cat DEP >> tmp-Makefile.in - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in - -dep-am: DEP - sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am - cat DEP >> tmp-Makefile.am - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am - -.PHONY: dep dep-in dep-am -mostlyclean-local: - -rm -rf tmpdir - -.PHONY: install-exec-local - -install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS) - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -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 - -# What appears below is generated by a hacked mkdep using gcc -MM. - -# DO NOT DELETE THIS LINE -- mkdep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. -addr2line.o: addr2line.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h \ - $(INCDIR)/demangle.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h budemang.h -ar.o: ar.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/libiberty.h $(INCDIR)/progress.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/aout/ar.h $(BFDDIR)/libbfd.h arsup.h $(INCDIR)/filenames.h \ - binemul.h -arsup.o: arsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h arsup.h $(INCDIR)/libiberty.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/filenames.h -binemul.o: binemul.c binemul.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h -bucomm.o: bucomm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/libiberty.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/filenames.h $(BFDDIR)/libbfd.h -budemang.o: budemang.c config.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h $(INCDIR)/demangle.h \ - budemang.h -coffdump.o: coffdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h coffgrok.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h -coffgrok.o: coffgrok.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h coffgrok.h -cxxfilt.o: cxxfilt.c config.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h $(INCDIR)/demangle.h $(INCDIR)/safe-ctype.h -debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h -dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/demangle.h \ - $(INCDIR)/dyn-string.h dlltool.h $(INCDIR)/safe-ctype.h -dllwrap.o: dllwrap.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/dyn-string.h -emul_aix.o: emul_aix.c binemul.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/xcoff.h $(BFDDIR)/libcoff.h $(BFDDIR)/libxcoff.h -emul_vanilla.o: emul_vanilla.c binemul.h ../bfd/bfd.h \ - $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h -filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h -ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/ieee.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ - budbg.h $(INCDIR)/filenames.h -is-ranlib.o: is-ranlib.c -is-strip.o: is-strip.c -maybe-ranlib.o: maybe-ranlib.c -maybe-strip.o: maybe-strip.c -nlmconv.o: nlmconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h \ - $(BFDDIR)/libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \ - $(INCDIR)/nlm/external.h nlmconv.h -nm.o: nm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/progress.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h budemang.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def $(INCDIR)/aout/ranlib.h $(INCDIR)/demangle.h \ - $(INCDIR)/libiberty.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h -not-ranlib.o: not-ranlib.c -not-strip.o: not-strip.c -objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - budbg.h $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h -objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/progress.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - budemang.h $(INCDIR)/safe-ctype.h $(INCDIR)/dis-asm.h \ - $(INCDIR)/libiberty.h $(INCDIR)/demangle.h debug.h \ - budbg.h $(INCDIR)/aout/aout64.h -prdbg.o: prdbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ - budbg.h -rdcoff.o: rdcoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h debug.h budbg.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -rddbg.o: rddbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ - budbg.h -readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/alpha.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \ - $(INCDIR)/elf/avr.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/d10v.h \ - $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h $(INCDIR)/elf/fr30.h \ - $(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/i860.h \ - $(INCDIR)/elf/i960.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/ip2k.h \ - $(INCDIR)/elf/m32r.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/m68hc11.h \ - $(INCDIR)/elf/mcore.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/mmix.h \ - $(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/msp430.h \ - $(INCDIR)/elf/or32.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/ppc64.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/sh.h \ - $(INCDIR)/elf/sparc.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/vax.h \ - $(INCDIR)/elf/x86-64.h $(INCDIR)/elf/xstormy16.h $(INCDIR)/elf/iq2000.h \ - $(INCDIR)/elf/xtensa.h $(INCDIR)/aout/ar.h bucomm.h \ - config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h unwind-ia64.h -rename.o: rename.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h -resbin.o: resbin.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h -rescoff.o: rescoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -resrc.o: resrc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - windres.h winduni.h -resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h -size.o: size.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/libiberty.h -srconv.o: srconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h sysroff.h coffgrok.h $(INCDIR)/libiberty.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - sysroff.c -stabs.o: stabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/demangle.h debug.h budbg.h $(INCDIR)/filenames.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -strings.o: strings.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h -sysdump.o: sysdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h $(INCDIR)/libiberty.h \ - sysroff.h sysroff.c -version.o: version.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h ../bfd/bfdver.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h -windres.o: windres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h bucomm.h config.h \ - $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h windres.h \ - winduni.h -winduni.o: winduni.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h winduni.h $(INCDIR)/safe-ctype.h -wrstabs.o: wrstabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - debug.h budbg.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def -arparse.o: arparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h arsup.h -arlex.o: arlex.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - arparse.h -sysroff.o: sysroff.c -sysinfo.o: sysinfo.c -syslex.o: syslex.c sysinfo.h -defparse.o: defparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h dlltool.h -deflex.o: deflex.c $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \ - defparse.h dlltool.h -nlmheader.o: nlmheader.c $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h \ - ../bfd/bfd.h $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \ - nlmconv.h -rcparse.o: rcparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \ - winduni.h $(INCDIR)/safe-ctype.h -rclex.o: rclex.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \ - windres.h winduni.h rcparse.h -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY - -# 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/NEWS b/binutils/NEWS deleted file mode 100644 index a72826ef8..000000000 --- a/binutils/NEWS +++ /dev/null @@ -1,273 +0,0 @@ --*- text -*- - -* 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= 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=, --prefix-sections= and - --prefix-alloc-sections= 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. - - -Local variables: -fill-column: 79 -End: diff --git a/binutils/README b/binutils/README deleted file mode 100644 index 5bc2508b3..000000000 --- a/binutils/README +++ /dev/null @@ -1,273 +0,0 @@ - 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. - -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 . 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. diff --git a/binutils/acinclude.m4 b/binutils/acinclude.m4 deleted file mode 100644 index c5ae4d468..000000000 --- a/binutils/acinclude.m4 +++ /dev/null @@ -1,32 +0,0 @@ -sinclude(../bfd/acinclude.m4) - -dnl sinclude(../libtool.m4) already included in bfd/acinclude.m4 -dnl The lines below arrange for aclocal not to bring libtool.m4 -dnl AM_PROG_LIBTOOL into aclocal.m4, while still arranging for automake -dnl to add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_SUBST(LIBTOOL) -]) - -dnl sinclude(../gettext.m4) already included in bfd/acinclude.m4 -ifelse(yes,no,[ -AC_DEFUN([CY_WITH_NLS],) -AC_SUBST(INTLLIBS) -]) - -## Replacement for AC_PROG_LEX and AC_DECL_YYTEXT -## by Alexandre Oliva - -## We need to override the installed aclocal/lex.m4 because of a bug in -## this definition in the recommended automake snapshot of 000227: -## There were double-quotes around ``$missing_dir/missing flex'' which was -## bad since aclocal wraps it in double-quotes. - -dnl AM_PROG_LEX -dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT -AC_DEFUN([AM_PROG_LEX], -[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) -AC_CHECK_PROGS(LEX, flex lex, [$missing_dir/missing flex]) -AC_PROG_LEX -AC_DECL_YYTEXT]) diff --git a/binutils/aclocal.m4 b/binutils/aclocal.m4 deleted file mode 100644 index d1f4a36bb..000000000 --- a/binutils/aclocal.m4 +++ /dev/null @@ -1,205 +0,0 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p5 - -dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -sinclude(../bfd/acinclude.m4) - -dnl sinclude(../libtool.m4) already included in bfd/acinclude.m4 -dnl The lines below arrange for aclocal not to bring libtool.m4 -dnl AM_PROG_LIBTOOL into aclocal.m4, while still arranging for automake -dnl to add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_SUBST(LIBTOOL) -]) - -dnl sinclude(../gettext.m4) already included in bfd/acinclude.m4 -ifelse(yes,no,[ -AC_DEFUN([CY_WITH_NLS],) -AC_SUBST(INTLLIBS) -]) - - - -dnl AM_PROG_LEX -dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT -AC_DEFUN(AM_PROG_LEX, -[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) -AC_CHECK_PROGS(LEX, flex lex, [$missing_dir/missing flex]) -AC_PROG_LEX -AC_DECL_YYTEXT]) - -#serial 1 -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) - -# Do all the work for Automake. 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. - -# serial 1 - -dnl Usage: -dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AC_PROG_INSTALL]) -PACKAGE=[$1] -AC_SUBST(PACKAGE) -VERSION=[$2] -AC_SUBST(VERSION) -dnl test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi -ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) -AC_REQUIRE([AM_SANITY_CHECK]) -AC_REQUIRE([AC_ARG_PROGRAM]) -dnl FIXME This is truly gross. -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -AC_REQUIRE([AC_PROG_MAKE_SET])]) - -# -# Check to make sure that the build environment is sane. -# - -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftestfile -# 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 conftestfile 2> /dev/null` - if test "[$]*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "[$]*" != "X $srcdir/configure conftestfile" \ - && test "[$]*" != "X conftestfile $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" = conftestfile - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -rm -f conftest* -AC_MSG_RESULT(yes)]) - -dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) -dnl The program must properly implement --version. -AC_DEFUN([AM_MISSING_PROG], -[AC_MSG_CHECKING(for working $2) -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if ($2 --version) < /dev/null > /dev/null 2>&1; then - $1=$2 - AC_MSG_RESULT(found) -else - $1="$3/missing $2" - AC_MSG_RESULT(missing) -fi -AC_SUBST($1)]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. - -AC_DEFUN([AM_CONFIG_HEADER], -[AC_PREREQ([2.12]) -AC_CONFIG_HEADER([$1]) -dnl When config.status generates a header, we must update the stamp-h file. -dnl This file resides in the same directory as the config header -dnl that is generated. We must strip everything past the first ":", -dnl and everything past the last "/". -AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl -ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, -<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, -<>; do - case " <<$>>CONFIG_HEADERS " in - *" <<$>>am_file "*<<)>> - echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx - ;; - esac - am_indx=`expr "<<$>>am_indx" + 1` -done<<>>dnl>>) -changequote([,]))]) - -# Add --enable-maintainer-mode option to configure. -# From Jim Meyering - -# serial 1 - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT($USE_MAINTAINER_MODE) - AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -# Define a conditional. - -AC_DEFUN([AM_CONDITIONAL], -[AC_SUBST($1_TRUE) -AC_SUBST($1_FALSE) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi]) - diff --git a/binutils/addr2line.c b/binutils/addr2line.c deleted file mode 100644 index 354153ead..000000000 --- a/binutils/addr2line.c +++ /dev/null @@ -1,349 +0,0 @@ -/* addr2line.c -- convert addresses to line number and function name - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - Contributed by Ulrich Lauther - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 - -#include "bfd.h" -#include "getopt.h" -#include "libiberty.h" -#include "demangle.h" -#include "bucomm.h" -#include "budemang.h" - -static bfd_boolean with_functions; /* -f, show function names. */ -static bfd_boolean do_demangle; /* -C, demangle names. */ -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[] = -{ - {"basenames", no_argument, NULL, 's'}, - {"demangle", optional_argument, NULL, 'C'}, - {"exe", required_argument, NULL, 'e'}, - {"functions", no_argument, NULL, 'f'}, - {"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 translate_addresses (bfd *); -static void process_file (const char *, const char *); - -/* 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\ - -b --target= Set the binary file format\n\ - -e --exe= 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")); - - list_supported_targets (program_name, stream); - if (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 symcount; - unsigned int size; - - if ((bfd_get_file_flags (abfd) & HAS_SYMS) == 0) - return; - - symcount = bfd_read_minisymbols (abfd, FALSE, (void *) &syms, &size); - if (symcount == 0) - symcount = bfd_read_minisymbols (abfd, TRUE /* dynamic */, (void *) &syms, &size); - - if (symcount < 0) - bfd_fatal (bfd_get_filename (abfd)); -} - -/* 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 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_before_reloc (section); - if (pc >= vma + size) - return; - - found = bfd_find_nearest_line (abfd, section, syms, pc - vma, - &filename, &functionname, &line); -} - -/* Read hexadecimal addresses from stdin, translate into - file_name:line_number and optionally function name. */ - -static void -translate_addresses (bfd *abfd) -{ - 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); - } - - found = FALSE; - bfd_map_over_sections (abfd, find_address_in_section, NULL); - - if (! found) - { - if (with_functions) - printf ("??\n"); - printf ("??:0\n"); - } - else - { - if (with_functions) - { - const char *name; - char *alloc = NULL; - - name = functionname; - if (name == NULL || *name == '\0') - name = "??"; - else if (do_demangle) - { - alloc = demangle (abfd, name); - name = alloc; - } - - printf ("%s\n", name); - - if (alloc != NULL) - free (alloc); - } - - if (base_names && filename != NULL) - { - char *h; - - h = strrchr (filename, '/'); - if (h != NULL) - filename = h + 1; - } - - printf ("%s:%u\n", filename ? filename : "??", line); - } - - /* 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. */ - -static void -process_file (const char *file_name, const char *target) -{ - bfd *abfd; - char **matching; - - if (get_file_size (file_name) < 1) - return; - - abfd = bfd_openr (file_name, target); - if (abfd == NULL) - bfd_fatal (file_name); - - if (bfd_check_format (abfd, bfd_archive)) - fatal (_("%s: can not 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); - } - - slurp_symtab (abfd); - - translate_addresses (abfd); - - if (syms != NULL) - { - free (syms); - syms = NULL; - } - - bfd_close (abfd); -} - -int main (int, char **); - -int -main (int argc, char **argv) -{ - const char *file_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); - - bfd_init (); - set_default_bfd_target (); - - file_name = NULL; - target = NULL; - while ((c = getopt_long (argc, argv, "b:Ce:sfHhVv", long_options, (int *) 0)) - != EOF) - { - switch (c) - { - case 0: - break; /* We've been given a long option. */ - 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 'v': - case 'V': - print_version ("addr2line"); - break; - case 'h': - case 'H': - usage (stdout, 0); - break; - default: - usage (stderr, 1); - break; - } - } - - if (file_name == NULL) - file_name = "a.out"; - - addr = argv + optind; - naddr = argc - optind; - - process_file (file_name, target); - - return 0; -} diff --git a/binutils/ar.c b/binutils/ar.c deleted file mode 100644 index ec0657d63..000000000 --- a/binutils/ar.c +++ /dev/null @@ -1,1410 +0,0 @@ -/* ar.c - Archive modify and extract. - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* - Bugs: should use getopt the way tar does (complete w/optional -) and - should have long options too. 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 "bfd.h" -#include "libiberty.h" -#include "progress.h" -#include "bucomm.h" -#include "aout/ar.h" -#include "libbfd.h" -#include "arsup.h" -#include "filenames.h" -#include "binemul.h" -#include - -#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 - -/* We need to open files in binary modes on system where that makes a - difference. */ -#ifndef O_BINARY -#define O_BINARY 0 -#endif - -#define BUFSIZE 8192 - -/* Kludge declaration from BFD! This is ugly! FIXME! XXX */ - -struct ar_hdr * - bfd_special_undocumented_glue (bfd * abfd, const char *filename); - -/* 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); - -#if 0 -static void do_quick_append - (const char *archive_filename, char **files_to_append); -#endif - -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 void ranlib_only (const char *archname); -static void ranlib_touch (const char *archname); -static void usage (int); - -/** Globals and flags */ - -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; - -/* 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; - -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; - -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->next; head; head = head->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 (; count > 0; files++, count--) - { - bfd_boolean found = FALSE; - - match_count = 0; - for (head = arch->next; head; head = head->next) - { - PROGRESS (1); - if (head->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); - } - if ((head->filename != NULL) && - (!FILENAME_CMP (normalize (*files, arch), head->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); - } - } - 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; - - s = help ? stdout : stderr; - - if (! is_ranlib) - { - /* xgettext:c-format */ - fprintf (s, _("Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"), - program_name); - /* xgettext:c-format */ - fprintf (s, _(" %s -M [ filename)) - filename = bslash; - if (filename == NULL && file[0] != '\0' && file[1] == ':') - filename = file + 1; - } -#endif - if (filename != (char *) NULL) - filename++; - else - filename = 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 (output_filename); - } -} - -/* The option parsing should be in its own function. - It will be when I have getopt working. */ - -int main (int, char **); - -int -main (int argc, char **argv) -{ - char *arg_ptr; - char c; - enum - { - none = 0, delete, replace, print_table, - print_files, extract, move, quick_append - } operation = none; - int arg_index; - char **files; - int file_count; - char *inarch_filename; - int show_version; - int i; - int do_posix = 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 = argv[0]; - xmalloc_set_program_name (program_name); - - if (is_ranlib < 0) - { - char *temp; - - temp = strrchr (program_name, '/'); -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (program_name, '\\'); - if (temp == NULL || (bslash != NULL && bslash > temp)) - temp = bslash; - if (temp == NULL && program_name[0] != '\0' && program_name[1] == ':') - temp = program_name + 1; - } -#endif - if (temp == NULL) - temp = program_name; - else - ++temp; - if (strlen (temp) >= 6 - && FILENAME_CMP (temp + strlen (temp) - 6, "ranlib") == 0) - is_ranlib = 1; - else - is_ranlib = 0; - } - - if (argc > 1 && argv[1][0] == '-') - { - if (strcmp (argv[1], "--help") == 0) - usage (1); - else if (strcmp (argv[1], "--version") == 0) - { - if (is_ranlib) - print_version ("ranlib"); - else - print_version ("ar"); - } - } - - START_PROGRESS (program_name, 0); - - bfd_init (); - set_default_bfd_target (); - - show_version = 0; - - 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) - { - bfd_boolean touch = FALSE; - - if (argc < 2 - || strcmp (argv[1], "--help") == 0 - || strcmp (argv[1], "-h") == 0 - || strcmp (argv[1], "-H") == 0) - usage (0); - if (strcmp (argv[1], "-V") == 0 - || strcmp (argv[1], "-v") == 0 - || strncmp (argv[1], "--v", 3) == 0) - print_version ("ranlib"); - arg_index = 1; - if (strcmp (argv[1], "-t") == 0) - { - ++arg_index; - touch = TRUE; - } - while (arg_index < argc) - { - if (! touch) - ranlib_only (argv[arg_index]); - else - ranlib_touch (argv[arg_index]); - ++arg_index; - } - xexit (0); - } - - if (argc == 2 && strcmp (argv[1], "-M") == 0) - { - mri_emul (); - xexit (0); - } - - if (argc < 2) - usage (0); - - arg_index = 1; - arg_ptr = argv[arg_index]; - - if (*arg_ptr == '-') - { - /* When the first option starts with '-' we support POSIX-compatible - option parsing. */ - do_posix = 1; - ++arg_ptr; /* compatibility */ - } - - do - { - while ((c = *arg_ptr++) != '\0') - { - 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")); - switch (c) - { - case 'd': - operation = delete; - 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; - default: - /* xgettext:c-format */ - non_fatal (_("illegal option -- %c"), c); - usage (0); - } - } - - /* With POSIX-compatible option parsing continue with the next - argument if it starts with '-'. */ - if (do_posix && arg_index + 1 < argc && argv[arg_index + 1][0] == '-') - arg_ptr = argv[++arg_index] + 1; - else - do_posix = 0; - } - while (do_posix); - - if (show_version) - print_version ("ar"); - - ++arg_index; - if (arg_index >= argc) - usage (0); - - if (mri_mode) - { - mri_emul (); - } - else - { - bfd *arch; - - /* 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) - { - ranlib_only (argv[arg_index]); - xexit (0); - } - - if (operation == none) - fatal (_("no operation specified")); - - if (newer_only && operation != replace) - fatal (_("`u' is only meaningful with the `r' option.")); - - if (postype != pos_default) - posname = argv[arg_index++]; - - if (counted_name_mode) - { - if (operation != extract && operation != delete) - 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++]; - - files = arg_index < argc ? argv + arg_index : NULL; - file_count = argc - arg_index; - -#if 0 - /* 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 do a quick append if we need to construct an - extended name table, because do_quick_append won't be able to - rebuild the name table. Unfortunately, at this point we - don't actually know the maximum name length permitted by this - object file format. So, we guess. FIXME. */ - if (operation == quick_append && ! ar_truncate) - { - char **chk; - - for (chk = files; chk != NULL && *chk != '\0'; chk++) - { - if (strlen (normalize (*chk, (bfd *) NULL)) > 14) - { - operation = replace; - break; - } - } - } - - if (operation == quick_append) - { - /* Note that quick appending to a non-existent archive creates it, - even if there are no files to append. */ - do_quick_append (inarch_filename, files); - xexit (0); - } -#endif - - arch = open_inarch (inarch_filename, - files == NULL ? (char *) NULL : files[0]); - - 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 delete: - if (files != NULL) - delete_members (arch, files); - else - output_filename = NULL; - break; - - case move: - if (files != NULL) - move_members (arch, files); - else - output_filename = NULL; - break; - - 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) -{ - const char *target; - bfd **last_one; - bfd *next_one; - struct stat sbuf; - bfd *arch; - char **matching; - - bfd_set_error (bfd_error_no_error); - - target = NULL; - - 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; - } - - /* Try to figure out the target to use for the archive from the - first object on the list. */ - if (file != NULL) - { - bfd *obj; - - obj = bfd_openr (file, NULL); - 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); - } - - last_one = &(arch->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->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) -{ - int ncopied = 0; - char *cbuf = xmalloc (BUFSIZE); - struct stat buf; - long size; - if (bfd_stat_arch_elt (abfd, &buf) != 0) - /* xgettext:c-format */ - fatal (_("internal stat error on %s"), bfd_get_filename (abfd)); - - if (verbose) - /* xgettext:c-format */ - printf (_("\n<%s>\n\n"), bfd_get_filename (abfd)); - - bfd_seek (abfd, (file_ptr) 0, SEEK_SET); - - size = buf.st_size; - while (ncopied < size) - { - - int nread; - int tocopy = size - ncopied; - if (tocopy > BUFSIZE) - tocopy = BUFSIZE; - - nread = bfd_bread (cbuf, (bfd_size_type) tocopy, abfd); - if (nread != tocopy) - /* xgettext:c-format */ - fatal (_("%s is not a valid archive"), - bfd_get_filename (bfd_my_archive (abfd))); - fwrite (cbuf, 1, nread, stdout); - 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 = xmalloc (BUFSIZE); - int nread, tocopy; - long ncopied = 0; - long 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 (size < 0) - /* xgettext:c-format */ - fatal (_("stat returns negative size for %s"), bfd_get_filename (abfd)); - - 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, (bfd_size_type) 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 (cbuf, 1, nread, ostream); - 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_times (bfd_get_filename (abfd), &buf); - - free (cbuf); -} - -#if 0 - -/* We don't use this anymore. Too many systems expect ar to rebuild - the symbol table even when q is used. */ - -/* Just do it quickly; don't worry about dups, armap, or anything like that */ - -static void -do_quick_append (const char *archive_filename, char **files_to_append) -{ - FILE *ofile, *ifile; - char *buf = xmalloc (BUFSIZE); - long tocopy, thistime; - bfd *temp; - struct stat sbuf; - bfd_boolean newfile = FALSE; - bfd_set_error (bfd_error_no_error); - - 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. - - (And yes, I know this is all unused, but somebody, someday, - might wish to resurrect this again... -- 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 - - newfile = TRUE; - } - - ofile = fopen (archive_filename, FOPEN_AUB); - if (ofile == NULL) - { - perror (program_name); - xexit (1); - } - - temp = bfd_openr (archive_filename, NULL); - if (temp == NULL) - { - bfd_fatal (archive_filename); - } - if (!newfile) - { - if (!bfd_check_format (temp, bfd_archive)) - /* xgettext:c-format */ - fatal (_("%s is not an archive"), archive_filename); - } - else - { - fwrite (ARMAG, 1, SARMAG, ofile); - if (!silent_create) - /* xgettext:c-format */ - non_fatal (_("creating %s"), archive_filename); - } - - if (ar_truncate) - temp->flags |= BFD_TRADITIONAL_FORMAT; - - /* assume it's an archive, go straight to the end, sans $200 */ - fseek (ofile, 0, 2); - - for (; files_to_append && *files_to_append; ++files_to_append) - { - struct ar_hdr *hdr = bfd_special_undocumented_glue (temp, *files_to_append); - if (hdr == NULL) - { - bfd_fatal (*files_to_append); - } - - BFD_SEND (temp, _bfd_truncate_arname, (temp, *files_to_append, (char *) hdr)); - - ifile = fopen (*files_to_append, FOPEN_RB); - if (ifile == NULL) - { - bfd_nonfatal (*files_to_append); - } - - if (stat (*files_to_append, &sbuf) != 0) - { - bfd_nonfatal (*files_to_append); - } - - tocopy = sbuf.st_size; - - /* XXX should do error-checking! */ - fwrite (hdr, 1, sizeof (struct ar_hdr), ofile); - - while (tocopy > 0) - { - thistime = tocopy; - if (thistime > BUFSIZE) - thistime = BUFSIZE; - fread (buf, 1, thistime, ifile); - fwrite (buf, 1, thistime, ofile); - tocopy -= thistime; - } - fclose (ifile); - if ((sbuf.st_size % 2) == 1) - putc ('\012', ofile); - } - fclose (ofile); - bfd_close (temp); - free (buf); -} - -#endif /* 0 */ - -static void -write_archive (bfd *iarch) -{ - bfd *obfd; - char *old_name, *new_name; - bfd *contents_head = iarch->next; - - old_name = xmalloc (strlen (bfd_get_filename (iarch)) + 1); - strcpy (old_name, bfd_get_filename (iarch)); - new_name = make_tempname (old_name); - - 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 (!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); -} - -/* 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)->next); - } - else - { - for (; *after_bfd; after_bfd = &(*after_bfd)->next) - if (FILENAME_CMP ((*after_bfd)->filename, realposname) == 0) - { - if (realpos == pos_after) - after_bfd = &(*after_bfd)->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->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)->next); - goto next_file; - } - } - - current_ptr_ptr = &((*current_ptr_ptr)->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->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; - *current_ptr_ptr = current_ptr->next; - - /* Now glue to end */ - after_bfd = get_pos_bfd (&arch->next, pos_end, NULL); - link = *after_bfd; - *after_bfd = current_ptr; - current_ptr->next = link; - - if (verbose) - printf ("m - %s\n", *files_to_move); - - goto next_file; - } - - current_ptr_ptr = &((*current_ptr_ptr)->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->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->next, pos_after, - current->filename); - if (ar_emul_replace (after_bfd, *files_to_move, - verbose)) - { - /* Snip out this entry from the chain. */ - *current_ptr = (*current_ptr)->next; - changed = TRUE; - } - - goto next_file; - } - current_ptr = &(current->next); - } - } - - /* Add to the end of the archive. */ - after_bfd = get_pos_bfd (&arch->next, pos_end, NULL); - - if (get_file_size (* files_to_move) > 0 - && ar_emul_append (after_bfd, *files_to_move, verbose)) - changed = TRUE; - - next_file:; - - files_to_move++; - } - - if (changed) - write_archive (arch); - else - output_filename = NULL; -} - -static void -ranlib_only (const char *archname) -{ - bfd *arch; - - if (get_file_size (archname) < 1) - return; - write_armap = 1; - arch = open_inarch (archname, (char *) NULL); - if (arch == NULL) - xexit (1); - write_archive (arch); -} - -/* Update the timestamp of the symbol map of an archive. */ - -static void -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; - 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); - - bfd_update_armap_timestamp (arch); - - if (! bfd_close (arch)) - bfd_fatal (archname); -#endif -} - -/* 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/arlex.l b/binutils/arlex.l deleted file mode 100644 index ab1ff164e..000000000 --- a/binutils/arlex.l +++ /dev/null @@ -1,91 +0,0 @@ -%{ -/* arlex.l - Strange script language lexer */ - -/* Copyright 1992, 1997, 2000, 2002, 2003 Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -/* Contributed by Steve Chamberlain - sac@cygnus.com - -*/ -#define DONTDECLARE_MALLOC -#include "ansidecl.h" -#include "libiberty.h" -#include "arparse.h" - -#define YY_NO_UNPUT - -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/arparse.y b/binutils/arparse.y deleted file mode 100644 index d54de24d1..000000000 --- a/binutils/arparse.y +++ /dev/null @@ -1,203 +0,0 @@ -%{ -/* arparse.y - Stange script language parser */ - -/* Copyright 1992, 1993, 1995, 1997, 1999, 2003 - Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -/* Contributed by Steve Chamberlain - sac@cygnus.com - -*/ -#define DONTDECLARE_MALLOC -#include "bfd.h" -#include "bucomm.h" -#include "arsup.h" -extern int verbose; -extern int yylex (void); -static int yyerror (const char *); -%} - -%union { - char *name; -struct list *list ; - -}; - -%token NEWLINE -%token VERBOSE -%token 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 modulelist -%type modulename -%type 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/arsup.c b/binutils/arsup.c deleted file mode 100644 index a621bf9b3..000000000 --- a/binutils/arsup.c +++ /dev/null @@ -1,478 +0,0 @@ -/* arsup.c - Archive support for MRI compatibility - Copyright 1992, 1994, 1995, 1996, 1997, 2000, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 "bfd.h" -#include "arsup.h" -#include "libiberty.h" -#include "bucomm.h" -#include "filenames.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 void -map_over_list (bfd *arch, void (*function) (bfd *, bfd *), struct list *list) -{ - bfd *head; - - if (list == NULL) - { - bfd *next; - - head = arch->next; - while (head != NULL) - { - next = head->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->next; head; head = head->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); - } - } -} - - -FILE *outfile; - -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); -} - - -bfd *obfd; -char *real_name; - -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->next; - element = bfd_openr_next_archived_file (ibfd, element); - } - } - - bfd_set_format (obfd, bfd_archive); - - obfd->has_armap = 1; - } -} - -static void -ar_addlib_doer (bfd *abfd, bfd *prev) -{ - /* Add this module to the output bfd. */ - if (prev != NULL) - prev->next = abfd->next; - - abfd->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->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->next; - found = 1; - } - else - prev = &(member->next); - - member = member->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); - - rename (ofilename, real_name); - 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->next = member->next; - found = 1; - } - } - else - { - prev = &(member->next); - } - member = member->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->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->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/arsup.h b/binutils/arsup.h deleted file mode 100644 index e3a180791..000000000 --- a/binutils/arsup.h +++ /dev/null @@ -1,61 +0,0 @@ -/* arsup.h - archive support header file - Copyright 1992, 1993, 1994, 1996, 2003 Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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/binemul.c b/binutils/binemul.c deleted file mode 100644 index 3f6ed6573..000000000 --- a/binutils/binemul.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Binutils emulation layer. - Copyright 2002, 2003 Free Software Foundation, Inc. - Written by Tom Rix, Redhat. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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, bfd_boolean verbose) -{ - if (bin_dummy_emulation.ar_append) - return bin_dummy_emulation.ar_append (after_bfd, file_name, verbose); - - return FALSE; -} - -bfd_boolean -ar_emul_default_append (bfd **after_bfd, char *file_name, - bfd_boolean verbose) -{ - bfd *temp; - - temp = *after_bfd; - *after_bfd = bfd_openr (file_name, NULL); - - AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name); - AR_EMUL_APPEND_PRINT_VERBOSE (verbose, file_name); - - (*after_bfd)->next = temp; - - return TRUE; -} - -bfd_boolean -ar_emul_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose) -{ - if (bin_dummy_emulation.ar_replace) - return bin_dummy_emulation.ar_replace (after_bfd, file_name, verbose); - - return FALSE; -} - -bfd_boolean -ar_emul_default_replace (bfd **after_bfd, char *file_name, - bfd_boolean verbose) -{ - bfd *temp; - - temp = *after_bfd; - *after_bfd = bfd_openr (file_name, NULL); - - AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name); - AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name); - - (*after_bfd)->next = temp; - - return TRUE; -} - -bfd_boolean -ar_emul_create (bfd **abfd_out, char *archive_file_name, char *file_name) -{ - if (bin_dummy_emulation.ar_create) - return bin_dummy_emulation.ar_create (abfd_out, archive_file_name, - file_name); - - return FALSE; -} - -bfd_boolean -ar_emul_default_create (bfd **abfd_out, char *archive_file_name, - char *file_name) -{ - char *target = NULL; - - /* Try to figure out the target to use for the archive from the - first object on the list. */ - if (file_name != NULL) - { - bfd *obj; - - obj = bfd_openr (file_name, NULL); - if (obj != NULL) - { - if (bfd_check_format (obj, bfd_object)) - target = bfd_get_target (obj); - (void) bfd_close (obj); - } - } - - /* Create an empty archive. */ - *abfd_out = bfd_openw (archive_file_name, target); - if (*abfd_out == NULL - || ! bfd_set_format (*abfd_out, bfd_archive) - || ! bfd_close (*abfd_out)) - bfd_fatal (archive_file_name); - - 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/binemul.h b/binutils/binemul.h deleted file mode 100644 index 59dc2bde2..000000000 --- a/binutils/binemul.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Binutils emulation layer. - Copyright 2002, 2003 Free Software Foundation, Inc. - Written by Tom Rix, Redhat. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef BINEMUL_H -#define BINEMUL_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 *, bfd_boolean); -extern bfd_boolean ar_emul_default_append (bfd **, char *, bfd_boolean); -extern bfd_boolean ar_emul_replace (bfd **, char *, bfd_boolean); -extern bfd_boolean ar_emul_default_replace (bfd **, char *, bfd_boolean); -extern bfd_boolean ar_emul_create (bfd **, char *, char *); -extern bfd_boolean ar_emul_default_create (bfd **, char *, char *); -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) == (bfd *) 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 *, bfd_boolean); - bfd_boolean (* ar_replace) (bfd **, char *, bfd_boolean); - bfd_boolean (* ar_create) (bfd **, char *, char *); - bfd_boolean (* ar_parse_arg) (char *); -} -bin_emulation_xfer_type; - -#endif diff --git a/binutils/bucomm.c b/binutils/bucomm.c deleted file mode 100644 index 6573e2d9c..000000000 --- a/binutils/bucomm.c +++ /dev/null @@ -1,477 +0,0 @@ -/* bucomm.c -- Bin Utils COMmon code. - Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* We might put this in a library someday so it could be dynamically - loaded, but for now it's not necessary. */ - -#include "bfd.h" -#include "bfdver.h" -#include "libiberty.h" -#include "bucomm.h" -#include "filenames.h" -#include "libbfd.h" - -#include -#include /* ctime, maybe time_t */ - -#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 = bfd_errmsg (bfd_get_error ()); - - if (string) - fprintf (stderr, "%s: %s: %s\n", program_name, string, errmsg); - else - fprintf (stderr, "%s: %s\n", program_name, errmsg); -} - -void -bfd_fatal (const char *string) -{ - bfd_nonfatal (string); - xexit (1); -} - -void -report (const char * format, va_list args) -{ - 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) -{ - 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 = bfd_target_list (); - - if (name == NULL) - fprintf (f, _("Supported targets:")); - else - fprintf (f, _("%s: supported targets:"), name); - - 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; - - if (name == NULL) - fprintf (f, _("Supported architectures:")); - else - fprintf (f, _("%s: supported architectures:"), name); - - for (arch = bfd_arch_list (); *arch; arch++) - fprintf (f, " %s", *arch); - fprintf (f, "\n"); -} - -/* 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 = (int) bfd_arch_obscure + 1; a < (int) 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 a; - int ret = 1; - char *dummy_name; - - /* 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 = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++) - if (strcmp (bfd_printable_arch_mach (a, 0), "UNKNOWN!") != 0) - { - printf ("%*s ", (int) LONGEST_ARCH - 1, - bfd_printable_arch_mach (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, 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); - - /* 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'; - /* POSIX 1003.2/D11 says to skip first character (entry type). */ - fprintf (file, "%s %ld/%ld %6ld %s ", modebuf + 1, - (long) buf.st_uid, (long) buf.st_gid, - (long) buf.st_size, timebuf); - } - } - - fprintf (file, "%s\n", bfd_get_filename (abfd)); -} - -/* Return the name of a temporary file in the same directory as FILENAME. */ - -char * -make_tempname (char *filename) -{ - static char template[] = "stXXXXXX"; - char *tmpname; - char *slash = strrchr (filename, '/'); - -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (filename, '\\'); - if (slash == NULL || (bslash != NULL && bslash > slash)) - slash = bslash; - if (slash == NULL && filename[0] != '\0' && filename[1] == ':') - slash = filename + 1; - } -#endif - - if (slash != (char *) NULL) - { - char c; - - c = *slash; - *slash = 0; - tmpname = xmalloc (strlen (filename) + sizeof (template) + 2); - strcpy (tmpname, filename); -#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 (tmpname[1] == ':' && tmpname[2] == '\0') - strcat (tmpname, "."); -#endif - strcat (tmpname, "/"); - strcat (tmpname, template); - mktemp (tmpname); - *slash = c; - } - else - { - tmpname = xmalloc (sizeof (template)); - strcpy (tmpname, template); - mktemp (tmpname); - } - return tmpname; -} - -/* 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 zero 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 - return statbuf.st_size; - - return 0; -} diff --git a/binutils/bucomm.h b/binutils/bucomm.h deleted file mode 100644 index f604053ce..000000000 --- a/binutils/bucomm.h +++ /dev/null @@ -1,197 +0,0 @@ -/* bucomm.h -- binutils common include file. - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2002, 2003 Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _BUCOMM_H -#define _BUCOMM_H - -#include "ansidecl.h" -#include -#include - -#include "config.h" -#include "bin-bugs.h" - -#ifdef ANSI_PROTOTYPES -#include -#else -#include -#endif - -#ifdef USE_BINARY_FOPEN -#include "fopen-bin.h" -#else -#include "fopen-same.h" -#endif - -#include -#ifndef errno -extern int errno; -#endif - -#ifdef HAVE_UNISTD_H -#include -#endif - -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#else -extern char *strchr (); -extern char *strrchr (); -#endif -#endif - -#ifdef HAVE_STDLIB_H -#include -#endif - -#ifdef HAVE_FCNTL_H -#include -#else -#ifdef HAVE_SYS_FILE_H -#include -#endif -#endif - -#ifdef NEED_DECLARATION_STRSTR -extern char *strstr (); -#endif - -#ifdef HAVE_SBRK -#ifdef NEED_DECLARATION_SBRK -extern char *sbrk (); -#endif -#endif - -#ifdef NEED_DECLARATION_GETENV -extern char *getenv (); -#endif - -#ifdef NEED_DECLARATION_ENVIRON -extern char **environ; -#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 - -#if defined(__GNUC__) && !defined(C_ALLOCA) -# undef alloca -# define alloca __builtin_alloca -#else -# if defined(HAVE_ALLOCA_H) && !defined(C_ALLOCA) -# include -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -# if !defined (__STDC__) && !defined (__hpux) -char *alloca (); -# else -void *alloca (); -# endif /* __STDC__, __hpux */ -# endif /* alloca */ -# endif /* HAVE_ALLOCA_H */ -#endif - -#ifdef HAVE_LOCALE_H -# include -#endif - -#ifdef ENABLE_NLS -# include -# 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 - -/* bucomm.c */ -void bfd_nonfatal (const char *); - -void bfd_fatal (const char *) ATTRIBUTE_NORETURN; - -void report (const char *, va_list); - -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 *); - -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/budbg.h b/binutils/budbg.h deleted file mode 100644 index f5c03bd23..000000000 --- a/binutils/budbg.h +++ /dev/null @@ -1,58 +0,0 @@ -/* budbg.c -- Interfaces to the generic debugging information routines. - Copyright 1995, 1996, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef BUDBG_H -#define BUDBG_H - -#include - -/* Routine used to read generic debugging information. */ - -extern void *read_debugging_info (bfd *, asymbol **, long); - -/* 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/budemang.c b/binutils/budemang.c deleted file mode 100644 index 525a1c898..000000000 --- a/binutils/budemang.c +++ /dev/null @@ -1,75 +0,0 @@ -/* demangle.c -- A wrapper calling libiberty cplus_demangle - Copyright 2002, 2003 Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "config.h" -#include -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#include "bfd.h" -#include "libiberty.h" -#include "demangle.h" -#include "budemang.h" - -/* Wrapper around cplus_demangle. Strips leading underscores and - other such chars that would otherwise confuse the demangler. */ - -char * -demangle (bfd *abfd, const char *name) -{ - char *res; - const char *p; - - if (abfd != NULL && bfd_get_symbol_leading_char (abfd) == name[0]) - ++name; - - /* This is a hack for better error reporting on XCOFF, PowerPC64-ELF - or the MS PE format. These formats have a number of leading '.'s - on at least some symbols, so we remove all dots to avoid - confusing the demangler. */ - p = name; - while (*p == '.') - ++p; - - res = cplus_demangle (p, DMGL_ANSI | DMGL_PARAMS); - if (res) - { - size_t dots = p - name; - - /* Now put back any stripped dots. */ - if (dots != 0) - { - size_t len = strlen (res) + 1; - char *add_dots = xmalloc (len + dots); - - memcpy (add_dots, name, dots); - memcpy (add_dots + dots, res, len); - free (res); - res = add_dots; - } - return res; - } - - return xstrdup (name); -} diff --git a/binutils/budemang.h b/binutils/budemang.h deleted file mode 100644 index b837d718d..000000000 --- a/binutils/budemang.h +++ /dev/null @@ -1,25 +0,0 @@ -/* demangle.h -- A wrapper calling libiberty cplus_demangle - Copyright 2002, 2003 Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ -#ifndef BUDEMANG_H -#define BUDEMANG_H - -char *demangle (bfd *, const char *); - -#endif diff --git a/binutils/coffdump.c b/binutils/coffdump.c deleted file mode 100644 index 039b95536..000000000 --- a/binutils/coffdump.c +++ /dev/null @@ -1,552 +0,0 @@ -/* Coff file dumper. - Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at - your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Steve Chamberlain - - This module reads a type tree generated by coffgrok and prints - it out so we can test the grokker. */ - -#include "bfd.h" -#include "libiberty.h" - -#include "coffgrok.h" -#include "bucomm.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 *); -extern void dump_coff_symbol (struct coff_symbol *); -static void dump_coff_scope (struct coff_scope *); -static void dump_coff_sfile (struct coff_sfile *); -static void dump_coff_section (struct coff_section *); -extern void coff_dump (struct coff_ofile *); -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); -} - -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 ("List of blocks %lx ",(unsigned long) 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); -} - -void -coff_dump (struct coff_ofile *ptr) -{ - int i; - - printf ("Coff dump"); - nl (); - printf ("#souces %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 SYSROFF object file\n")); - fprintf (file, _(" The options are:\n\ - -h --help Display this information\n\ - -v --version Display the program's version\n\ -\n")); - - if (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); - - 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/coffgrok.c b/binutils/coffgrok.c deleted file mode 100644 index b2ec98c4b..000000000 --- a/binutils/coffgrok.c +++ /dev/null @@ -1,741 +0,0 @@ -/* coffgrok.c - Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 "bfd.h" -#include "libiberty.h" -#include "bucomm.h" - -#include "coff/internal.h" -#include "../bfd/libcoff.h" -#include "coffgrok.h" -int lofile = 1; -static struct coff_scope *top_scope; -static struct coff_scope *file_scope; -static struct coff_ofile *ofile; - -struct coff_symbol *last_function_symbol; -struct coff_type *last_function_type; -struct coff_type *last_struct; -struct coff_type *last_enum; -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 link) -{ - struct coff_scope *n = empty_scope (); - if (link) - { - 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 = section->_raw_size; - 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/coffgrok.h b/binutils/coffgrok.h deleted file mode 100644 index c063f1dc7..000000000 --- a/binutils/coffgrok.h +++ /dev/null @@ -1,225 +0,0 @@ -/* coffgrok.h - Copyright 2001 Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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/config.in b/binutils/config.in deleted file mode 100644 index f2bd04955..000000000 --- a/binutils/config.in +++ /dev/null @@ -1,204 +0,0 @@ -/* config.in. Generated automatically from configure.in by autoheader. */ - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* 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 if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* 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 run-time. - 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 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if lex declares yytext as a char * by default, not a char[]. */ -#undef YYTEXT_POINTER - -/* Define if you have the __argz_count function. */ -#undef HAVE___ARGZ_COUNT - -/* Define if you have the __argz_next function. */ -#undef HAVE___ARGZ_NEXT - -/* Define if you have the __argz_stringify function. */ -#undef HAVE___ARGZ_STRINGIFY - -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT - -/* Define if you have the getc_unlocked function. */ -#undef HAVE_GETC_UNLOCKED - -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the munmap function. */ -#undef HAVE_MUNMAP - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if you have the sbrk function. */ -#undef HAVE_SBRK - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setlocale function. */ -#undef HAVE_SETLOCALE - -/* Define if you have the setmode function. */ -#undef HAVE_SETMODE - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the strchr function. */ -#undef HAVE_STRCHR - -/* Define if you have the strcoll function. */ -#undef HAVE_STRCOLL - -/* Define if you have the utimes function. */ -#undef HAVE_UTIMES - -/* Define if you have the header file. */ -#undef HAVE_ARGZ_H - -/* Define if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define if you have the header file. */ -#undef HAVE_NL_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_FILE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the header file. */ -#undef HAVE_VALUES_H - -/* Name of package */ -#undef PACKAGE - -/* Version number of package */ -#undef VERSION - -/* Define if you have the stpcpy function */ -#undef HAVE_STPCPY - -/* Define if your locale.h file contains LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - -/* Define to 1 if NLS is requested */ -#undef ENABLE_NLS - -/* Define as 1 if you have gettext and don't want to use GNU gettext. */ -#undef HAVE_GETTEXT - -/* Does the platform use an executable suffix? */ -#undef HAVE_EXECUTABLE_SUFFIX - -/* Suffix used for executables, if any. */ -#undef EXECUTABLE_SUFFIX - -/* Is fopen64 available? */ -#undef HAVE_FOPEN64 - -/* Enable LFS */ -#undef _LARGEFILE64_SOURCE - -/* Is the type time_t defined in ? */ -#undef HAVE_TIME_T_IN_TIME_H - -/* Is the type time_t defined in ? */ -#undef HAVE_TIME_T_IN_TYPES_H - -/* Does define struct utimbuf? */ -#undef HAVE_GOOD_UTIME_H - -/* Define if fprintf is not declared in system header files. */ -#undef NEED_DECLARATION_FPRINTF - -/* Define if strstr is not declared in system header files. */ -#undef NEED_DECLARATION_STRSTR - -/* Define if sbrk is not declared in system header files. */ -#undef NEED_DECLARATION_SBRK - -/* Define if getenv is not declared in system header files. */ -#undef NEED_DECLARATION_GETENV - -/* Define if environ is not declared in system header files. */ -#undef NEED_DECLARATION_ENVIRON - -/* Use b modifier when opening binary files? */ -#undef USE_BINARY_FOPEN - -/* Configured target name. */ -#undef TARGET - -/* Define to 1 if user symbol names have a leading underscore, 0 if not. */ -#undef TARGET_PREPENDS_UNDERSCORE - diff --git a/binutils/configure b/binutils/configure deleted file mode 100755 index 8210910ac..000000000 --- a/binutils/configure +++ /dev/null @@ -1,6081 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --enable-shared[=PKGS] build shared libraries [default=yes]" -ac_help="$ac_help - --enable-static[=PKGS] build static libraries [default=yes]" -ac_help="$ac_help - --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" -ac_help="$ac_help - --with-gnu-ld assume the C compiler uses GNU ld [default=no]" -ac_help="$ac_help - --disable-libtool-lock avoid locking (might break parallel builds)" -ac_help="$ac_help - --with-pic try to use only PIC/non-PIC objects [default=use both]" -ac_help="$ac_help - --enable-targets alternative target configurations" -ac_help="$ac_help - --enable-commonbfdlib build shared BFD/opcodes/libiberty library" -ac_help="$ac_help - --enable-build-warnings Enable build-time compiler warnings if gcc is used" -ac_help="$ac_help - --disable-nls do not use Native Language Support" -ac_help="$ac_help - --with-included-gettext use the GNU gettext library included here" -ac_help="$ac_help - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -sitefile= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -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=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -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 ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$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" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$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) - # 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 << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --site-file=FILE use FILE as the site file - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --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 -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$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" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - 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) - 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" ;; - - -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" ;; - - -site-file | --site-file | --site-fil | --site-fi | --site-f) - ac_prev=sitefile ;; - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) - sitefile="$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 ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=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" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=ar.c - -# 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 its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - 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 - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$sitefile"; then - if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi - fi -else - CONFIG_SITE="$sitefile" -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:561: checking for Cygwin environment" >&5 -if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_cygwin=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_cygwin=no -fi -rm -f conftest* -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_cygwin" 1>&6 -CYGWIN= -test "$ac_cv_cygwin" = yes && CYGWIN=yes -echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:594: checking for mingw32 environment" >&5 -if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_mingw32=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_mingw32=no -fi -rm -f conftest* -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_mingw32" 1>&6 -MINGW32= -test "$ac_cv_mingw32" = yes && MINGW32=yes - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Do some error checking and defaulting for the host and target type. -# The inputs are: -# configure --host=HOST --target=TARGET --build=BUILD NONOPT -# -# The rules are: -# 1. You are not allowed to specify --host, --target, and nonopt at the -# same time. -# 2. Host defaults to nonopt. -# 3. If nonopt is not specified, then host defaults to the current host, -# as determined by config.guess. -# 4. Target and build default to nonopt. -# 5. If nonopt is not specified, then target and build default to host. - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -case $host---$target---$nonopt in -NONE---*---* | *---NONE---* | *---*---NONE) ;; -*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; -esac - - -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:671: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:692: checking target system type" >&5 - -target_alias=$target -case "$target_alias" in -NONE) - case $nonopt in - NONE) target_alias=$host_alias ;; - *) target_alias=$nonopt ;; - esac ;; -esac - -target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` -target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$target" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:710: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 - -test "$host_alias" != "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - - echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 -echo "configure:734: checking for strerror in -lcposix" >&5 -ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lcposix $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lcposix" -else - echo "$ac_t""no" 1>&6 -fi - - - - -BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ ]*\([^ ]*\)[ ]*).*/\1/p' < ${srcdir}/../bfd/configure.in` -# 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 -# 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" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:789: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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 - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -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. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&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_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:842: checking whether build environment is sane" >&5 -# Just in case -sleep 1 -echo timestamp > conftestfile -# 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 conftestfile 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "$*" != "X $srcdir/configure conftestfile" \ - && test "$*" != "X conftestfile $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". - { echo "configure: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" 1>&2; exit 1; } - fi - - test "$2" = conftestfile - ) -then - # Ok. - : -else - { echo "configure: error: newly created file is older than distributed files! -Check your system clock" 1>&2; exit 1; } -fi -rm -f conftest* -echo "$ac_t""yes" 1>&6 -if test "$program_transform_name" = s,x,x,; then - program_transform_name= -else - # Double any \ or $. echo might interpret backslashes. - cat <<\EOF_SED > conftestsed -s,\\,\\\\,g; s,\$,$$,g -EOF_SED - program_transform_name="`echo $program_transform_name|sed -f conftestsed`" - rm -f conftestsed -fi -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" - -# sed with no file args requires a program. -test "$program_transform_name" = "" && program_transform_name="s,x,x," - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:899: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftestmake -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= -else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - -PACKAGE=binutils - -VERSION=${BFD_VERSION} - -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } -fi -cat >> confdefs.h <> confdefs.h <&6 -echo "configure:945: checking for working aclocal" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (aclocal --version) < /dev/null > /dev/null 2>&1; then - ACLOCAL=aclocal - echo "$ac_t""found" 1>&6 -else - ACLOCAL="$missing_dir/missing aclocal" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:958: checking for working autoconf" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (autoconf --version) < /dev/null > /dev/null 2>&1; then - AUTOCONF=autoconf - echo "$ac_t""found" 1>&6 -else - AUTOCONF="$missing_dir/missing autoconf" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:971: checking for working automake" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (automake --version) < /dev/null > /dev/null 2>&1; then - AUTOMAKE=automake - echo "$ac_t""found" 1>&6 -else - AUTOMAKE="$missing_dir/missing automake" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:984: checking for working autoheader" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (autoheader --version) < /dev/null > /dev/null 2>&1; then - AUTOHEADER=autoheader - echo "$ac_t""found" 1>&6 -else - AUTOHEADER="$missing_dir/missing autoheader" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:997: checking for working makeinfo" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (makeinfo --version) < /dev/null > /dev/null 2>&1; then - MAKEINFO=makeinfo - echo "$ac_t""found" 1>&6 -else - MAKEINFO="$missing_dir/missing makeinfo" - echo "$ac_t""missing" 1>&6 -fi - - - -# Check whether --enable-shared or --disable-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. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_shared=yes -fi - -# Check whether --enable-static or --disable-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. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_static=yes -fi - -# Check whether --enable-fast-install or --disable-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. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_fast_install=yes -fi - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1083: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1113: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_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 $# -gt 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 - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1164: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1196: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 1207 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:1212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1238: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1243: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1271: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&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 - -# Check whether --with-gnu-ld or --without-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. - echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1314: checking for ld used by GCC" >&5 - 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 - echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1344: checking for GNU ld" >&5 -else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1347: checking for non-GNU ld" >&5 -fi -if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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 - 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 GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$lt_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 - 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 - echo "$ac_t""$LD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } -echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1382: checking if the linker ($LD) is GNU ld" >&5 -if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - lt_cv_prog_gnu_ld=yes -else - lt_cv_prog_gnu_ld=no -fi -fi - -echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&6 -with_gnu_ld=$lt_cv_prog_gnu_ld - - -echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 -echo "configure:1399: checking for $LD option to reload object files" >&5 -if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - lt_cv_ld_reload_flag='-r' -fi - -echo "$ac_t""$lt_cv_ld_reload_flag" 1>&6 -reload_flag=$lt_cv_ld_reload_flag -test -n "$reload_flag" && reload_flag=" $reload_flag" - -echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1411: checking for BSD-compatible nm" >&5 -if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/${ac_tool_prefix}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 - if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then - lt_cv_path_NM="$tmp_nm -B" - break - elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - lt_cv_path_NM="$tmp_nm -p" - break - else - 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 - fi - fi - done - IFS="$ac_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi -fi - -NM="$lt_cv_path_NM" -echo "$ac_t""$NM" 1>&6 - -echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1449: checking whether ln -s works" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftestdata -if ln -s X conftestdata 2>/dev/null -then - rm -f conftestdata - ac_cv_prog_LN_S="ln -s" -else - ac_cv_prog_LN_S=ln -fi -fi -LN_S="$ac_cv_prog_LN_S" -if test "$ac_cv_prog_LN_S" = "ln -s"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:1470: checking how to recognise dependant libraries" >&5 -if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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 egrep 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*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi4*) - 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* | mingw* |pw32*) - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd='/usr/bin/file -L' - case "$host_os" in - rhapsody* | darwin1.012) - lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' - ;; - *) # Darwin 1.3 on - lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' - ;; - esac - ;; - -freebsd* ) - 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)/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 - ;; - -hpux10.20*|hpux11*) - case $host_cpu in - hppa*) - 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_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - 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_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - esac - ;; - -irix5* | irix6*) - case $host_os in - irix5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux-gnu*) - case $host_cpu in - alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' - fi - ;; - -newsos6) - 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 - ;; - -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; - -sysv5uw[78]* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - 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*` - ;; - esac - ;; -esac - -fi - -echo "$ac_t""$lt_cv_deplibs_check_method" 1>&6 -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method - -echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:1643: checking for object suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftest* -echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:1649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done -else - { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; } -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_objext" 1>&6 -OBJEXT=$ac_cv_objext -ac_objext=$ac_cv_objext - - - -echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1669: checking for executable suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe -else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:1679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no -fi -fi - -EXEEXT="" -test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} -echo "$ac_t""${ac_cv_exeext}" 1>&6 -ac_exeext=$EXEEXT - -if test $host != $build; then - ac_tool_prefix=${host_alias}- -else - ac_tool_prefix= -fi - -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 -echo "configure:1712: checking for ${ac_tool_prefix}file" >&5 -if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - 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 <&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 - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$ac_t""$MAGIC_CMD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo $ac_n "checking for file""... $ac_c" 1>&6 -echo "configure:1774: checking for file" >&5 -if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - 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 <&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 - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$ac_t""$MAGIC_CMD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# 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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1845: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -if test -z "$ac_cv_prog_RANLIB"; then -if test -n "$ac_tool_prefix"; then - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1877: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -else - RANLIB=":" -fi -fi - -# 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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1912: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -STRIP="$ac_cv_prog_STRIP" -if test -n "$STRIP"; then - echo "$ac_t""$STRIP" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -if test -z "$ac_cv_prog_STRIP"; then -if test -n "$ac_tool_prefix"; then - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1944: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_STRIP="strip" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":" -fi -fi -STRIP="$ac_cv_prog_STRIP" -if test -n "$STRIP"; then - echo "$ac_t""$STRIP" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -else - STRIP=":" -fi -fi - - -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - - -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - : -fi - -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" - -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi - -test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" -test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 2011 "configure"' > conftest.$ac_ext - if { (eval echo configure:2012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; 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* - ;; - -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo configure:2045: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - case "`/usr/bin/file conftest.o`" in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - 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" - echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2063: checking whether the C compiler needs -belf" >&5 -if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - lt_cv_cc_needs_belf=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - lt_cv_cc_needs_belf=no -fi -rm -f conftest* - ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -fi - -echo "$ac_t""$lt_cv_cc_needs_belf" 1>&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 - ;; - - -esac - - -# Save cache, so that ltconfig can load it -cat > confcache <<\EOF -# 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. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# 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. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ -AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ -objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ -deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \ -|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; } - -# Reload cache, that may have been modified by ltconfig -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log - - - - - - - -# Check whether --enable-targets or --disable-targets was given. -if test "${enable_targets+set}" = set; then - enableval="$enable_targets" - case "${enableval}" in - yes | "") { echo "configure: error: enable-targets option must specify target names or 'all'" 1>&2; exit 1; } - ;; - no) enable_targets= ;; - *) enable_targets=$enableval ;; -esac -fi -# Check whether --enable-commonbfdlib or --disable-commonbfdlib was given. -if test "${enable_commonbfdlib+set}" = set; then - enableval="$enable_commonbfdlib" - case "${enableval}" in - yes) commonbfdlib=true ;; - no) commonbfdlib=false ;; - *) { echo "configure: error: bad value ${enableval} for BFD commonbfdlib option" 1>&2; exit 1; } ;; -esac -fi - -build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" -# Check whether --enable-build-warnings or --disable-build-warnings was given. -if test "${enable_build_warnings+set}" = set; then - enableval="$enable_build_warnings" - case "${enableval}" in - yes) ;; - no) build_warnings="-w";; - ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${build_warnings} ${t}";; - *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${t} ${build_warnings}";; - *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; -esac -if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then - echo "Setting warning flags = $build_warnings" 6>&1 -fi -fi -WARN_CFLAGS="" -if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then - WARN_CFLAGS="${build_warnings}" -fi - - - - - - -if test -z "$target" ; then - { echo "configure: error: Unrecognized target system type; please check config.sub." 1>&2; exit 1; } -fi -if test -z "$host" ; then - { echo "configure: error: Unrecognized host system type; please check config.sub." 1>&2; exit 1; } -fi - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2256: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2286: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_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 $# -gt 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 - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2337: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2369: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 2380 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:2385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2411: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:2416: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:2444: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&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 - - -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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2481: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_YACC="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -YACC="$ac_cv_prog_YACC" -if test -n "$YACC"; then - echo "$ac_t""$YACC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2512: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -missing_dir=`cd $ac_aux_dir && pwd` -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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2597: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_LEX="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -LEX="$ac_cv_prog_LEX" -if test -n "$LEX"; then - echo "$ac_t""$LEX" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$LEX" && break -done -test -n "$LEX" || LEX="$missing_dir/missing flex" - -# Extract the first word of "flex", so it can be a program name with args. -set dummy flex; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2630: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_LEX="flex" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex" -fi -fi -LEX="$ac_cv_prog_LEX" -if test -n "$LEX"; then - echo "$ac_t""$LEX" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$LEXLIB" -then - case "$LEX" in - flex*) ac_lib=fl ;; - *) ac_lib=l ;; - esac - echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:2664: checking for yywrap in -l$ac_lib" >&5 -ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-l$ac_lib $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LEXLIB="-l$ac_lib" -else - echo "$ac_t""no" 1>&6 -fi - -fi - -echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:2706: checking lex output file root" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # The minimal lex program is just a single line: %%. But some broken lexes -# (Solaris, I think it was) want two %% lines, so accommodate them. -echo '%% -%%' | $LEX -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 - { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } -fi -fi - -echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - -echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:2727: checking whether yytext is a pointer" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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 -echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c -ac_save_LIBS="$LIBS" -LIBS="$LIBS $LEXLIB" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_prog_lex_yytext_pointer=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -LIBS="$ac_save_LIBS" -rm -f "${LEX_OUTPUT_ROOT}.c" - -fi - -echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 -if test $ac_cv_prog_lex_yytext_pointer = yes; then - cat >> confdefs.h <<\EOF -#define YYTEXT_POINTER 1 -EOF - -fi - - -ALL_LINGUAS="fr tr ja es sv da zh_CN ru" -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2772: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2800: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - 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 > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - 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 > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#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)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:2880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2904: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} - -; return 0; } -EOF -if { (eval echo configure:2958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_const=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_const=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const -EOF - -fi - -echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2979: checking for inline" >&5 -if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_inline=$ac_kw; break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done - -fi - -echo "$ac_t""$ac_cv_c_inline" 1>&6 -case "$ac_cv_c_inline" in - inline | yes) ;; - no) cat >> confdefs.h <<\EOF -#define inline -EOF - ;; - *) cat >> confdefs.h <&6 -echo "configure:3019: checking for off_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_off_t=yes -else - rm -rf conftest* - ac_cv_type_off_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_off_t" 1>&6 -if test $ac_cv_type_off_t = no; then - cat >> confdefs.h <<\EOF -#define off_t long -EOF - -fi - -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3052: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:3087: checking for working alloca.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -char *p = alloca(2 * sizeof(int)); -; return 0; } -EOF -if { (eval echo configure:3099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_header_alloca_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_alloca_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 -if test $ac_cv_header_alloca_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ALLOCA_H 1 -EOF - -fi - -echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3120: checking for alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -# define alloca _alloca -# else -# if HAVE_ALLOCA_H -# include -# 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); -; return 0; } -EOF -if { (eval echo configure:3153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_func_alloca_works=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_func_alloca_works=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 -if test $ac_cv_func_alloca_works = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ALLOCA 1 -EOF - -fi - -if test $ac_cv_func_alloca_works = no; then - # 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=alloca.${ac_objext} - cat >> confdefs.h <<\EOF -#define C_ALLOCA 1 -EOF - - -echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:3185: checking whether alloca needs Cray hooks" >&5 -if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 | - egrep "webecray" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_os_cray=yes -else - rm -rf conftest* - ac_cv_os_cray=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_os_cray" 1>&6 -if test $ac_cv_os_cray = yes; then -for ac_func in _getb67 GETB67 getb67; do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3215: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <&6 -fi - -done -fi - -echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:3270: checking stack direction for C alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat > conftest.$ac_ext < addr) ? 1 : -1; -} -main () -{ - exit (find_stack_direction() < 0); -} -EOF -if { (eval echo configure:3297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_stack_direction=1 -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_stack_direction=-1 -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 -cat >> confdefs.h <&6 -echo "configure:3322: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in getpagesize -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3361: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3414: checking for working mmap" >&5 -if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat > conftest.$ac_ext < -#include -#include - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif - -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -#ifdef __cplusplus -extern "C" { void *malloc(unsigned); } -#else -char *malloc(); -#endif - -int -main() -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize(); - - /* - * First, make a file with some known garbage in it. - */ - data = malloc(pagesize); - if (!data) - exit(1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand(); - umask(0); - fd = creat("conftestmmap", 0600); - if (fd < 0) - exit(1); - if (write(fd, data, pagesize) != pagesize) - exit(1); - close(fd); - - /* - * Next, try to mmap the file at a fixed address which - * already has something else allocated at it. If we can, - * also make sure that we see the same garbage. - */ - fd = open("conftestmmap", O_RDWR); - if (fd < 0) - exit(1); - data2 = malloc(2 * pagesize); - if (!data2) - exit(1); - data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit(1); - - /* - * Finally, make sure that changes to the mapped area - * do not percolate back to the file as seen by read(). - * (This is a bug on some variants of i386 svr4.0.) - */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = malloc(pagesize); - if (!data3) - exit(1); - if (read(fd, data3, pagesize) != pagesize) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit(1); - close(fd); - unlink("conftestmmap"); - exit(0); -} - -EOF -if { (eval echo configure:3562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_mmap_fixed_mapped=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_MMAP 1 -EOF - -fi - - - for ac_hdr in argz.h limits.h locale.h nl_types.h malloc.h string.h \ -unistd.h values.h sys/param.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3590: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - for ac_func in getcwd munmap putenv setenv setlocale strchr strcasecmp \ -__argz_count __argz_stringify __argz_next -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3630: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - - if test "${ac_cv_func_stpcpy+set}" != "set"; then - for ac_func in stpcpy -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3687: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - fi - if test "${ac_cv_func_stpcpy}" = "yes"; then - cat >> confdefs.h <<\EOF -#define HAVE_STPCPY 1 -EOF - - fi - - if test $ac_cv_header_locale_h = yes; then - echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3749: checking for LC_MESSAGES" >&5 -if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -return LC_MESSAGES -; return 0; } -EOF -if { (eval echo configure:3761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - am_cv_val_LC_MESSAGES=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - am_cv_val_LC_MESSAGES=no -fi -rm -f conftest* -fi - -echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6 - if test $am_cv_val_LC_MESSAGES = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_LC_MESSAGES 1 -EOF - - fi - fi - echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3782: checking whether NLS is requested" >&5 - # Check whether --enable-nls or --disable-nls was given. -if test "${enable_nls+set}" = set; then - enableval="$enable_nls" - USE_NLS=$enableval -else - USE_NLS=yes -fi - - echo "$ac_t""$USE_NLS" 1>&6 - - - USE_INCLUDED_LIBINTL=no - - if test "$USE_NLS" = "yes"; then - cat >> confdefs.h <<\EOF -#define ENABLE_NLS 1 -EOF - - echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3802: checking whether included gettext is requested" >&5 - # Check whether --with-included-gettext or --without-included-gettext was given. -if test "${with_included_gettext+set}" = set; then - withval="$with_included_gettext" - nls_cv_force_use_gnu_gettext=$withval -else - nls_cv_force_use_gnu_gettext=no -fi - - echo "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6 - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - nls_cv_header_intl= - nls_cv_header_libgt= - CATOBJEXT=NONE - - ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3821: checking for libintl.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3831: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:3848: checking for gettext in libc" >&5 -if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -return (int) gettext ("") -; return 0; } -EOF -if { (eval echo configure:3860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - gt_cv_func_gettext_libc=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - gt_cv_func_gettext_libc=no -fi -rm -f conftest* -fi - -echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 - - if test "$gt_cv_func_gettext_libc" != "yes"; then - echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:3876: checking for bindtextdomain in -lintl" >&5 -ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lintl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:3911: checking for gettext in libintl" >&5 -if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - gt_cv_func_gettext_libintl=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - gt_cv_func_gettext_libintl=no -fi -rm -f conftest* -fi - -echo "$ac_t""$gt_cv_func_gettext_libintl" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - fi - - if test "$gt_cv_func_gettext_libc" = "yes" \ - || test "$gt_cv_func_gettext_libintl" = "yes"; then - cat >> confdefs.h <<\EOF -#define HAVE_GETTEXT 1 -EOF - - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3951: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$MSGFMT" in - /*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then - ac_cv_path_MSGFMT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test -n "$MSGFMT"; then - echo "$ac_t""$MSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - if test "$MSGFMT" != "no"; then - for ac_func in dcgettext -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3985: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4040: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$GMSGFMT" in - /*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - ?:/*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_GMSGFMT="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_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 - echo "$ac_t""$GMSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4076: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$XGETTEXT" in - /*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test -n "$XGETTEXT"; then - echo "$ac_t""$XGETTEXT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - CATOBJEXT=.gmo - DATADIRNAME=share -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CATOBJEXT=.mo - DATADIRNAME=lib -fi -rm -f conftest* - INSTOBJEXT=.mo - fi - fi - -else - echo "$ac_t""no" 1>&6 -fi - - - - if test "$CATOBJEXT" = "NONE"; then - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - INTLOBJS="\$(GETTOBJS)" - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4148: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$MSGFMT" in - /*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then - ac_cv_path_MSGFMT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test -n "$MSGFMT"; then - echo "$ac_t""$MSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4182: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$GMSGFMT" in - /*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - ?:/*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_GMSGFMT="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_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 - echo "$ac_t""$GMSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4218: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$XGETTEXT" in - /*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test -n "$XGETTEXT"; then - echo "$ac_t""$XGETTEXT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.gmo - INSTOBJEXT=.mo - DATADIRNAME=share - INTLDEPS='$(top_builddir)/../intl/libintl.a' - INTLLIBS=$INTLDEPS - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - nls_cv_header_intl=libintl.h - nls_cv_header_libgt=libgettext.h - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then - : ; - else - echo "$ac_t""found xgettext programs is not GNU xgettext; ignore it" 1>&6 - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - else - DATADIRNAME=share - nls_cv_header_intl=libintl.h - nls_cv_header_libgt=libgettext.h - fi - - # If this is used in GNU gettext we have to set USE_NLS to `yes' - # because some of the sources are only built for this goal. - if test "$PACKAGE" = gettext; then - USE_NLS=yes - USE_INCLUDED_LIBINTL=yes - fi - - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - - - - - - - - - - - - - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4308: checking for catalogs to be installed" >&5 - NEW_LINGUAS= - for lang in ${LINGUAS=$ALL_LINGUAS}; do - case "$ALL_LINGUAS" in - *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; - esac - done - LINGUAS=$NEW_LINGUAS - echo "$ac_t""$LINGUAS" 1>&6 - fi - - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - if test $ac_cv_header_locale_h = yes; then - INCLUDE_LOCALE_H="#include " - else - INCLUDE_LOCALE_H="\ -/* The system does not provide the header . Take care yourself. */" - fi - - - if test -f $srcdir/po2tbl.sed.in; then - if test "$CATOBJEXT" = ".cat"; then - ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:4336: checking for linux/version.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - msgformat=linux -else - echo "$ac_t""no" 1>&6 -msgformat=xopen -fi - - - sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed - fi - sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ - $srcdir/po2tbl.sed.in > po2tbl.sed - fi - - if test "$PACKAGE" = "gettext"; then - GT_NO="#NO#" - GT_YES= - else - GT_NO= - GT_YES="#YES#" - fi - - - - MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs" - - - l= - - - if test -f $srcdir/po/POTFILES.in; then - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - fi - - -echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4409: checking whether to enable maintainer-specific portions of Makefiles" >&5 - # Check whether --enable-maintainer-mode or --disable-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 - - echo "$ac_t""$USE_MAINTAINER_MODE" 1>&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 - - - - -echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:4434: checking for executable suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe -else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:4444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no -fi -fi - -EXEEXT="" -test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} -echo "$ac_t""${ac_cv_exeext}" 1>&6 -ac_exeext=$EXEEXT - -if test -n "$EXEEXT"; then - cat >> confdefs.h <<\EOF -#define HAVE_EXECUTABLE_SUFFIX 1 -EOF - -fi -cat >> confdefs.h <&6 -echo "configure:4487: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -# 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 -# 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" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:4526: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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 - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -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. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&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_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -# 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 - echo $ac_n "checking for build system executable suffix""... $ac_c" 1>&6 -echo "configure:4593: checking for build system executable suffix" >&5 -if eval "test \"`echo '$''{'bfd_cv_build_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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 - -echo "$ac_t""$bfd_cv_build_exeext" 1>&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_hdr in string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4628: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:4665: checking for sys/wait.h that is POSIX.1 compatible" >&5 -if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#ifndef WEXITSTATUS -#define WEXITSTATUS(stat_val) ((unsigned)(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; } -EOF -if { (eval echo configure:4686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_header_sys_wait_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_sys_wait_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6 -if test $ac_cv_header_sys_wait_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_SYS_WAIT_H 1 -EOF - -fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:4709: checking for working alloca.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -char *p = alloca(2 * sizeof(int)); -; return 0; } -EOF -if { (eval echo configure:4721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_header_alloca_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_alloca_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 -if test $ac_cv_header_alloca_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ALLOCA_H 1 -EOF - -fi - -echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:4742: checking for alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -# define alloca _alloca -# else -# if HAVE_ALLOCA_H -# include -# 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); -; return 0; } -EOF -if { (eval echo configure:4775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_func_alloca_works=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_func_alloca_works=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 -if test $ac_cv_func_alloca_works = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ALLOCA 1 -EOF - -fi - -if test $ac_cv_func_alloca_works = no; then - # 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=alloca.${ac_objext} - cat >> confdefs.h <<\EOF -#define C_ALLOCA 1 -EOF - - -echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4807: checking whether alloca needs Cray hooks" >&5 -if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 | - egrep "webecray" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_os_cray=yes -else - rm -rf conftest* - ac_cv_os_cray=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_os_cray" 1>&6 -if test $ac_cv_os_cray = yes; then -for ac_func in _getb67 GETB67 getb67; do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4837: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <&6 -fi - -done -fi - -echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4892: checking stack direction for C alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat > conftest.$ac_ext < addr) ? 1 : -1; -} -main () -{ - exit (find_stack_direction() < 0); -} -EOF -if { (eval echo configure:4919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_stack_direction=1 -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_stack_direction=-1 -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 -cat >> confdefs.h <&6 -echo "configure:4943: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - -# Check whether fopen64 is available and whether _LARGEFILE64_SOURCE -# needs to be defined for it -echo $ac_n "checking for fopen64""... $ac_c" 1>&6 -echo "configure:4999: checking for fopen64" >&5 -if eval "test \"`echo '$''{'bu_cv_have_fopen64'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -FILE *f = fopen64 ("/tmp/foo","r"); -; return 0; } -EOF -if { (eval echo configure:5011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - bu_cv_have_fopen64=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - saved_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" - cat > conftest.$ac_ext < -int main() { -FILE *f = fopen64 ("/tmp/foo","r"); -; return 0; } -EOF -if { (eval echo configure:5028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bu_cv_have_fopen64=no -fi -rm -f conftest* - CPPFLAGS=$saved_CPPFLAGS -fi -rm -f conftest* -fi - -echo "$ac_t""$bu_cv_have_fopen64" 1>&6 -if test "$bu_cv_have_fopen64" != no; then - cat >> confdefs.h <<\EOF -#define HAVE_FOPEN64 1 -EOF - - if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE"; then - cat >> confdefs.h <<\EOF -#define _LARGEFILE64_SOURCE 1 -EOF - - fi -fi - -# Some systems have frexp only in -lm, not in -lc. - -echo $ac_n "checking for library containing frexp""... $ac_c" 1>&6 -echo "configure:5060: checking for library containing frexp" >&5 -if eval "test \"`echo '$''{'ac_cv_search_frexp'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_func_search_save_LIBS="$LIBS" -ac_cv_search_frexp="no" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_search_frexp="none required" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -test "$ac_cv_search_frexp" = "no" && for i in m; do -LIBS="-l$i $ac_func_search_save_LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_search_frexp="-l$i" -break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done -LIBS="$ac_func_search_save_LIBS" -fi - -echo "$ac_t""$ac_cv_search_frexp" 1>&6 -if test "$ac_cv_search_frexp" != "no"; then - test "$ac_cv_search_frexp" = "none required" || LIBS="$ac_cv_search_frexp $LIBS" - -else : - -fi - -echo $ac_n "checking for time_t in time.h""... $ac_c" 1>&6 -echo "configure:5122: checking for time_t in time.h" >&5 -if eval "test \"`echo '$''{'bu_cv_decl_time_t_time_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -time_t i; -; return 0; } -EOF -if { (eval echo configure:5134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bu_cv_decl_time_t_time_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bu_cv_decl_time_t_time_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$bu_cv_decl_time_t_time_h" 1>&6 -if test $bu_cv_decl_time_t_time_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TIME_T_IN_TIME_H 1 -EOF - -fi - -echo $ac_n "checking for time_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:5155: checking for time_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'bu_cv_decl_time_t_types_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -time_t i; -; return 0; } -EOF -if { (eval echo configure:5167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bu_cv_decl_time_t_types_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bu_cv_decl_time_t_types_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$bu_cv_decl_time_t_types_h" 1>&6 -if test $bu_cv_decl_time_t_types_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TIME_T_IN_TYPES_H 1 -EOF - -fi - -# Under Next 3.2 apparently does not define struct utimbuf -# by default. -echo $ac_n "checking for utime.h""... $ac_c" 1>&6 -echo "configure:5190: checking for utime.h" >&5 -if eval "test \"`echo '$''{'bu_cv_header_utime_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef HAVE_TIME_H -#include -#endif -#include -int main() { -struct utimbuf s; -; return 0; } -EOF -if { (eval echo configure:5206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bu_cv_header_utime_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bu_cv_header_utime_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$bu_cv_header_utime_h" 1>&6 -if test $bu_cv_header_utime_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_GOOD_UTIME_H 1 -EOF - -fi - -echo $ac_n "checking whether fprintf must be declared""... $ac_c" 1>&6 -echo "configure:5227: checking whether fprintf must be declared" >&5 -if eval "test \"`echo '$''{'bfd_cv_decl_needed_fprintf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -int main() { -char *(*pfn) = (char *(*)) fprintf -; return 0; } -EOF -if { (eval echo configure:5253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_decl_needed_fprintf=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bfd_cv_decl_needed_fprintf=yes -fi -rm -f conftest* -fi - -echo "$ac_t""$bfd_cv_decl_needed_fprintf" 1>&6 -if test $bfd_cv_decl_needed_fprintf = yes; then - cat >> confdefs.h <<\EOF -#define NEED_DECLARATION_FPRINTF 1 -EOF - -fi - -echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:5274: checking whether strstr must be declared" >&5 -if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -int main() { -char *(*pfn) = (char *(*)) strstr -; return 0; } -EOF -if { (eval echo configure:5300: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_decl_needed_strstr=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bfd_cv_decl_needed_strstr=yes -fi -rm -f conftest* -fi - -echo "$ac_t""$bfd_cv_decl_needed_strstr" 1>&6 -if test $bfd_cv_decl_needed_strstr = yes; then - cat >> confdefs.h <<\EOF -#define NEED_DECLARATION_STRSTR 1 -EOF - -fi - -echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6 -echo "configure:5321: checking whether sbrk must be declared" >&5 -if eval "test \"`echo '$''{'bfd_cv_decl_needed_sbrk'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -int main() { -char *(*pfn) = (char *(*)) sbrk -; return 0; } -EOF -if { (eval echo configure:5347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_decl_needed_sbrk=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bfd_cv_decl_needed_sbrk=yes -fi -rm -f conftest* -fi - -echo "$ac_t""$bfd_cv_decl_needed_sbrk" 1>&6 -if test $bfd_cv_decl_needed_sbrk = yes; then - cat >> confdefs.h <<\EOF -#define NEED_DECLARATION_SBRK 1 -EOF - -fi - -echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:5368: checking whether getenv must be declared" >&5 -if eval "test \"`echo '$''{'bfd_cv_decl_needed_getenv'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -int main() { -char *(*pfn) = (char *(*)) getenv -; return 0; } -EOF -if { (eval echo configure:5394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_decl_needed_getenv=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bfd_cv_decl_needed_getenv=yes -fi -rm -f conftest* -fi - -echo "$ac_t""$bfd_cv_decl_needed_getenv" 1>&6 -if test $bfd_cv_decl_needed_getenv = yes; then - cat >> confdefs.h <<\EOF -#define NEED_DECLARATION_GETENV 1 -EOF - -fi - -echo $ac_n "checking whether environ must be declared""... $ac_c" 1>&6 -echo "configure:5415: checking whether environ must be declared" >&5 -if eval "test \"`echo '$''{'bfd_cv_decl_needed_environ'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -int main() { -char *(*pfn) = (char *(*)) environ -; return 0; } -EOF -if { (eval echo configure:5441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_decl_needed_environ=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - bfd_cv_decl_needed_environ=yes -fi -rm -f conftest* -fi - -echo "$ac_t""$bfd_cv_decl_needed_environ" 1>&6 -if test $bfd_cv_decl_needed_environ = yes; then - cat >> confdefs.h <<\EOF -#define NEED_DECLARATION_ENVIRON 1 -EOF - -fi - - - -case "${host}" in -*-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*) - cat >> confdefs.h <<\EOF -#define USE_BINARY_FOPEN 1 -EOF - ;; -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 - -all_targets=false -BUILD_NLMCONV= -NLMCONV_DEFS= -BUILD_SRCONV= -BUILD_DLLTOOL= -DLLTOOL_DEFS= -BUILD_WINDRES= -BUILD_DLLWRAP= -BUILD_MISC= -OBJDUMP_DEFS= - -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" - 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)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - arm-*-pe* | arm-*-wince) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - thumb-*-pe*) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - arm*-* | xscale-* | strongarm-* | d10v-*) - OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS" - ;; - 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)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)' - ;; - i[3-7]86-*-interix) - BUILD_DLLTOOL='$(DLLTOOL_PROG)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" - ;; - powerpc*-aix5.[01]) - ;; - powerpc*-aix5.*) - OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT" - ;; - powerpc*-*-pe* | powerpc*-*-cygwin*) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - sh*-*-pe) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - mips*-*-pe) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - mcore-*-pe) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - mcore-*-elf) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE_ELF" - ;; - c4x-*-* | tic4x-*-*) - OBJDUMP_DEFS="$OBJDUMP_DEFS -DSKIP_ZEROES=32" - ;; - ia64-*-*) - OBJDUMP_DEFS="$OBJDUMP_DEFS -DSKIP_ZEROES=16" - ;; - esac - fi -done - -if test "${with_windres+set}" = set; then - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' -fi - - - - - - - - - - - -cat >> confdefs.h <> confdefs.h </dev/null` - if test -n "$result"; then - targ=$result - else - targ=$targ_alias - fi - - . ${srcdir}/configure.tgt - - EMULATION=$targ_emul - EMULATION_VECTOR=$targ_emul_vector -done - - - - -trap '' 1 2 15 -cat > confcache <<\EOF -# 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. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# 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. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile doc/Makefile po/Makefile.in:po/Make-in config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@target@%$target%g -s%@target_alias@%$target_alias%g -s%@target_cpu@%$target_cpu%g -s%@target_vendor@%$target_vendor%g -s%@target_os@%$target_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@PACKAGE@%$PACKAGE%g -s%@VERSION@%$VERSION%g -s%@ACLOCAL@%$ACLOCAL%g -s%@AUTOCONF@%$AUTOCONF%g -s%@AUTOMAKE@%$AUTOMAKE%g -s%@AUTOHEADER@%$AUTOHEADER%g -s%@MAKEINFO@%$MAKEINFO%g -s%@SET_MAKE@%$SET_MAKE%g -s%@CC@%$CC%g -s%@LN_S@%$LN_S%g -s%@OBJEXT@%$OBJEXT%g -s%@EXEEXT@%$EXEEXT%g -s%@RANLIB@%$RANLIB%g -s%@STRIP@%$STRIP%g -s%@LIBTOOL@%$LIBTOOL%g -s%@WARN_CFLAGS@%$WARN_CFLAGS%g -s%@YACC@%$YACC%g -s%@LEX@%$LEX%g -s%@LEXLIB@%$LEXLIB%g -s%@CPP@%$CPP%g -s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g -s%@ALLOCA@%$ALLOCA%g -s%@USE_NLS@%$USE_NLS%g -s%@MSGFMT@%$MSGFMT%g -s%@GMSGFMT@%$GMSGFMT%g -s%@XGETTEXT@%$XGETTEXT%g -s%@USE_INCLUDED_LIBINTL@%$USE_INCLUDED_LIBINTL%g -s%@CATALOGS@%$CATALOGS%g -s%@CATOBJEXT@%$CATOBJEXT%g -s%@DATADIRNAME@%$DATADIRNAME%g -s%@GMOFILES@%$GMOFILES%g -s%@INSTOBJEXT@%$INSTOBJEXT%g -s%@INTLDEPS@%$INTLDEPS%g -s%@INTLLIBS@%$INTLLIBS%g -s%@INTLOBJS@%$INTLOBJS%g -s%@POFILES@%$POFILES%g -s%@POSUB@%$POSUB%g -s%@INCLUDE_LOCALE_H@%$INCLUDE_LOCALE_H%g -s%@GT_NO@%$GT_NO%g -s%@GT_YES@%$GT_YES%g -s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g -s%@l@%$l%g -s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g -s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g -s%@MAINT@%$MAINT%g -s%@HDEFINES@%$HDEFINES%g -s%@AR@%$AR%g -s%@CC_FOR_BUILD@%$CC_FOR_BUILD%g -s%@EXEEXT_FOR_BUILD@%$EXEEXT_FOR_BUILD%g -s%@DEMANGLER_NAME@%$DEMANGLER_NAME%g -s%@NLMCONV_DEFS@%$NLMCONV_DEFS%g -s%@BUILD_NLMCONV@%$BUILD_NLMCONV%g -s%@BUILD_SRCONV@%$BUILD_SRCONV%g -s%@BUILD_DLLTOOL@%$BUILD_DLLTOOL%g -s%@DLLTOOL_DEFS@%$DLLTOOL_DEFS%g -s%@BUILD_WINDRES@%$BUILD_WINDRES%g -s%@BUILD_DLLWRAP@%$BUILD_DLLWRAP%g -s%@BUILD_MISC@%$BUILD_MISC%g -s%@OBJDUMP_DEFS@%$OBJDUMP_DEFS%g -s%@EMULATION@%$EMULATION%g -s%@EMULATION_VECTOR@%$EMULATION_VECTOR%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #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. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h - -case "x$CONFIG_FILES" in -*) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; -esac - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/binutils/configure.com b/binutils/configure.com deleted file mode 100644 index 99463d5ec..000000000 --- a/binutils/configure.com +++ /dev/null @@ -1,76 +0,0 @@ -$! -$! 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. -$! -$! Written by Klaus K"ampf (kkaempf@rmi.de) -$! -$arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2 -$arch = f$element(arch_indx,"|","|VAX|Alpha|") -$! -$! -$! Generate config.h -$! -$ create []config.h -/* config.h. Generated automatically by configure. */ -/* config.in. Generated automatically from configure.in by autoheader. */ -/* Is the type time_t defined in ? */ -#define HAVE_TIME_T_IN_TIME_H 1 -/* Is the type time_t defined in ? */ -#define HAVE_TIME_T_IN_TYPES_H 1 -/* Does define struct utimbuf? */ -#define HAVE_GOOD_UTIME_H 1 -/* Whether fprintf must be declared even if is included. */ -#define NEED_DECLARATION_FPRINTF 1 -/* Whether sbrk must be declared even if is included. */ -#undef NEED_DECLARATION_SBRK -/* Do we need to use the b modifier when opening binary files? */ -/* #undef USE_BINARY_FOPEN */ -/* Define if you have the sbrk function. */ -/* #undef HAVE_SBRK 1 */ -/* Define if you have the utimes function. */ -#define HAVE_UTIMES 1 -/* Define if you have the header file. */ -#define HAVE_FCNTL_H 1 -/* Define if you have the header file. */ -#define HAVE_STDLIB_H 1 -/* Define if you have the header file. */ -#define HAVE_STRING_H 1 -/* Define if you have the header file. */ -#define HAVE_STRINGS_H 1 -/* Define if you have the header file. */ -#define HAVE_SYS_FILE_H 1 -/* Define if you have the header file. */ -#define HAVE_UNISTD_H 1 -$ write sys$output "Generated `config.h'" -$! -$! -$! Edit VERSION in makefile.vms-in -$! -$ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - - []makefile.vms-in /output=[]makefile.vms -$DECK -! -! Get VERSION from configure.in -! - mfile := CREATE_BUFFER("mfile", "CONFIGURE.IN"); - rang := CREATE_RANGE(BEGINNING_OF(mfile), END_OF(mfile)); - match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(binutils, ', FORWARD, EXACT, rang); - IF match_pos <> 0 THEN; - POSITION(BEGINNING_OF(match_pos)); - ERASE(match_pos); - vers := CURRENT_LINE-")"; - ELSE; - vers := "unknown"; - ENDIF; - - file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); - rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); - match_pos := SEARCH_QUIETLY('@VERSION@', FORWARD, EXACT, rang); - POSITION(BEGINNING_OF(match_pos)); - ERASE(match_pos); - COPY_TEXT(vers); - WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); - QUIT -$ EOD -$ write sys$output "Created `makefile.vms'" diff --git a/binutils/configure.in b/binutils/configure.in deleted file mode 100644 index 888908439..000000000 --- a/binutils/configure.in +++ /dev/null @@ -1,357 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -dnl -AC_PREREQ(2.13) -AC_INIT(ar.c) - -AC_CANONICAL_SYSTEM -AC_ISC_POSIX - -changequote(,)dnl -BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ ]*\([^ ]*\)[ ]*).*/\1/p' < ${srcdir}/../bfd/configure.in` -changequote([,])dnl -AM_INIT_AUTOMAKE(binutils, ${BFD_VERSION}) - -AM_PROG_LIBTOOL - -AC_ARG_ENABLE(targets, -[ --enable-targets alternative target configurations], -[case "${enableval}" in - yes | "") AC_ERROR(enable-targets option must specify target names or 'all') - ;; - no) enable_targets= ;; - *) enable_targets=$enableval ;; -esac])dnl -AC_ARG_ENABLE(commonbfdlib, -[ --enable-commonbfdlib build shared BFD/opcodes/libiberty library], -[case "${enableval}" in - yes) commonbfdlib=true ;; - no) commonbfdlib=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;; -esac])dnl - -build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" -AC_ARG_ENABLE(build-warnings, -[ --enable-build-warnings Enable build-time compiler warnings if gcc is used], -[case "${enableval}" in - yes) ;; - no) build_warnings="-w";; - ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${build_warnings} ${t}";; - *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${t} ${build_warnings}";; - *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; -esac -if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then - echo "Setting warning flags = $build_warnings" 6>&1 -fi])dnl -WARN_CFLAGS="" -if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then - WARN_CFLAGS="${build_warnings}" -fi -AC_SUBST(WARN_CFLAGS) - -AM_CONFIG_HEADER(config.h:config.in) - -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_CC - -AC_PROG_YACC -AM_PROG_LEX - -ALL_LINGUAS="fr tr ja es sv da zh_CN ru" -CY_GNU_GETTEXT - -AM_MAINTAINER_MODE -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) -AC_HEADER_SYS_WAIT -AC_FUNC_ALLOCA -AC_CHECK_FUNCS(sbrk utimes setmode getc_unlocked strcoll) - -# Check whether fopen64 is available and whether _LARGEFILE64_SOURCE -# needs to be defined for it -AC_MSG_CHECKING([for fopen64]) -AC_CACHE_VAL(bu_cv_have_fopen64, -[AC_TRY_LINK([#include ], [FILE *f = fopen64 ("/tmp/foo","r");], -bu_cv_have_fopen64=yes, -[saved_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" - AC_TRY_LINK([#include ], [FILE *f = fopen64 ("/tmp/foo","r");], -bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE", -bu_cv_have_fopen64=no) - CPPFLAGS=$saved_CPPFLAGS])]) -AC_MSG_RESULT($bu_cv_have_fopen64) -if test "$bu_cv_have_fopen64" != no; then - AC_DEFINE([HAVE_FOPEN64], 1, - [Is fopen64 available?]) - if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE"; then - AC_DEFINE([_LARGEFILE64_SOURCE], 1, - [Enable LFS]) - fi -fi - -# Some systems have frexp only in -lm, not in -lc. -AC_SEARCH_LIBS(frexp, m) - -AC_MSG_CHECKING(for time_t in time.h) -AC_CACHE_VAL(bu_cv_decl_time_t_time_h, -[AC_TRY_COMPILE([#include ], [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 ?]) -fi - -AC_MSG_CHECKING(for time_t in sys/types.h) -AC_CACHE_VAL(bu_cv_decl_time_t_types_h, -[AC_TRY_COMPILE([#include ], [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 ?]) -fi - -# Under Next 3.2 apparently does not define struct utimbuf -# by default. -AC_MSG_CHECKING([for utime.h]) -AC_CACHE_VAL(bu_cv_header_utime_h, -[AC_TRY_COMPILE([#include -#ifdef HAVE_TIME_H -#include -#endif -#include ], -[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 define struct utimbuf?]) -fi - -BFD_NEED_DECLARATION(fprintf) -BFD_NEED_DECLARATION(strstr) -BFD_NEED_DECLARATION(sbrk) -BFD_NEED_DECLARATION(getenv) -BFD_NEED_DECLARATION(environ) - -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 - -all_targets=false -BUILD_NLMCONV= -NLMCONV_DEFS= -BUILD_SRCONV= -BUILD_DLLTOOL= -DLLTOOL_DEFS= -BUILD_WINDRES= -BUILD_DLLWRAP= -BUILD_MISC= -OBJDUMP_DEFS= - -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" - 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)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - arm-*-pe* | arm-*-wince) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - thumb-*-pe*) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - arm*-* | xscale-* | strongarm-* | d10v-*) - OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS" - ;; -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)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)' - ;; -changequote(,)dnl - i[3-7]86-*-interix) -changequote([,])dnl - BUILD_DLLTOOL='$(DLLTOOL_PROG)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" - ;; -changequote(,)dnl - powerpc*-aix5.[01]) -changequote([,])dnl - ;; - powerpc*-aix5.*) - OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT" - ;; - powerpc*-*-pe* | powerpc*-*-cygwin*) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - sh*-*-pe) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - mips*-*-pe) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - mcore-*-pe) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE" - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' - ;; - mcore-*-elf) - BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' - DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE_ELF" - ;; - c4x-*-* | tic4x-*-*) - OBJDUMP_DEFS="$OBJDUMP_DEFS -DSKIP_ZEROES=32" - ;; - ia64-*-*) - OBJDUMP_DEFS="$OBJDUMP_DEFS -DSKIP_ZEROES=16" - ;; - esac - fi -done - -if test "${with_windres+set}" = set; then - BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' -fi - -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_DLLWRAP) -AC_SUBST(BUILD_MISC) -AC_SUBST(OBJDUMP_DEFS) - -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 -for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'` -do - # Canonicalize the secondary target names. - result=`$ac_config_sub $targ_alias 2>/dev/null` - if test -n "$result"; then - targ=$result - else - targ=$targ_alias - fi - - . ${srcdir}/configure.tgt - - EMULATION=$targ_emul - EMULATION_VECTOR=$targ_emul_vector -done - -AC_SUBST(EMULATION) -AC_SUBST(EMULATION_VECTOR) - -AC_OUTPUT(Makefile doc/Makefile po/Makefile.in:po/Make-in, -[ -case "x$CONFIG_FILES" in -*) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; -esac -]) diff --git a/binutils/configure.tgt b/binutils/configure.tgt deleted file mode 100644 index 2d5ce2b8a..000000000 --- a/binutils/configure.tgt +++ /dev/null @@ -1,26 +0,0 @@ -# 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. - -# 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-*-aix5* | rs6000-*-aix5*) - targ_emul=aix - targ_emul_vector=bin_aix5_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/cxxfilt.c b/binutils/cxxfilt.c deleted file mode 100644 index 1b297fd9d..000000000 --- a/binutils/cxxfilt.c +++ /dev/null @@ -1,291 +0,0 @@ -/* Demangler for GNU C++ - main program - Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 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 GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#include "config.h" -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "demangle.h" -#include "getopt.h" -#include "safe-ctype.h" - -static int flags = DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE; - -static void demangle_it (char *); -static void usage (FILE *, int) ATTRIBUTE_NORETURN; -static void print_demangler_list (FILE *); - -static void -demangle_it (char *mangled_name) -{ - char *result; - - /* For command line args, also try to demangle type encodings. */ - result = cplus_demangle (mangled_name, flags | DMGL_TYPES); - if (result == NULL) - { - printf ("%s\n", mangled_name); - } - else - { - printf ("%s\n", 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 [-_] [-n] [--strip-underscores] [--no-strip-underscores]\n\ - [-p] [--no-params]\n", - program_name); - - fprintf (stream, "\ - [-s "); - print_demangler_list (stream); - fprintf (stream, "]\n"); - - fprintf (stream, "\ - [--format "); - print_demangler_list (stream); - fprintf (stream, "]\n"); - - fprintf (stream, "\ - [--help] [--version] [arg...]\n"); - exit (status); -} - -#define MBUF_SIZE 32767 -char mbuffer[MBUF_SIZE]; - -int strip_underscore = 0; - -static const struct option long_options[] = { - {"strip-underscores", no_argument, 0, '_'}, - {"format", required_argument, 0, 's'}, - {"help", no_argument, 0, 'h'}, - {"no-params", no_argument, 0, 'p'}, - {"no-strip-underscores", no_argument, 0, 'n'}, - {"version", no_argument, 0, 'v'}, - {0, no_argument, 0, 0} -}; - -static const char *standard_symbol_characters (void); - -static const char *hp_symbol_characters (void); - -/* 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 , 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) -{ - char *result; - int c; - const char *valid_symbols; - enum demangling_styles style = auto_demangling; - - program_name = argv[0]; - xmalloc_set_program_name (program_name); - - strip_underscore = TARGET_PREPENDS_UNDERSCORE; - - while ((c = getopt_long (argc, argv, "_nps:", 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 '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); - } - else - cplus_demangle_set_style (style); - } - break; - } - } - - if (optind < argc) - { - for ( ; optind < argc; optind++) - { - demangle_it (argv[optind]); - } - } - else - { - 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 (;;) - { - int i = 0; - c = getchar (); - /* Try to read a label. */ - while (c != EOF && (ISALNUM (c) || strchr (valid_symbols, c))) - { - if (i >= MBUF_SIZE-1) - break; - mbuffer[i++] = c; - c = getchar (); - } - if (i > 0) - { - int skip_first = 0; - - mbuffer[i] = 0; - if (mbuffer[0] == '.' || mbuffer[0] == '$') - ++skip_first; - if (strip_underscore && mbuffer[skip_first] == '_') - ++skip_first; - - if (skip_first > i) - skip_first = i; - - flags |= (int) style; - result = cplus_demangle (mbuffer + skip_first, flags); - if (result) - { - if (mbuffer[0] == '.') - putc ('.', stdout); - fputs (result, stdout); - free (result); - } - else - fputs (mbuffer, stdout); - - fflush (stdout); - } - if (c == EOF) - break; - putchar (c); - fflush (stdout); - } - } - - return (0); -} diff --git a/binutils/debug.c b/binutils/debug.c deleted file mode 100644 index 5d46b7810..000000000 --- a/binutils/debug.c +++ /dev/null @@ -1,3372 +0,0 @@ -/* debug.c -- Handle generic debugging information. - Copyright 1995, 1996, 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 -#include - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.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 -{ - /* 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 *kpointer; - /* DEBUG_KIND_FUNCTION. */ - struct debug_function_type *kfunction; - /* DEBUG_KIND_REFERENCE. */ - struct debug_type *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 *kconst; - /* DEBUG_KIND_VOLATILE. */ - struct debug_type *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 -{ - /* Name of the field. */ - const char *name; - /* Type of the field. */ - struct debug_type *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 -{ - /* Type of the base class. */ - struct debug_type *type; - /* Bit position of the base class in the object. */ - unsigned int bitpos; - /* Whether the base class is virtual. */ - bfd_boolean virtual; - /* Visibility of the base class. */ - enum debug_visibility visibility; -}; - -/* A method of an object. */ - -struct debug_method -{ - /* The name of the method. */ - const char *name; - /* A NULL terminated array of different types of variants. */ - struct debug_method_variant **variants; -}; - -/* The variants of a method function of an object. These indicate - which method to run. */ - -struct debug_method_variant -{ - /* The physical name of the function. */ - const char *physname; - /* The type of the function. */ - struct debug_type *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 *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 *type; - /* DEBUG_OBJECT_TAG. */ - struct debug_type *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 *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 *t1; - struct debug_type *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 *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 *debug_make_type - (struct debug_handle *, enum debug_type_kind, unsigned int); -static struct debug_type *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 *, struct debug_name *); -static bfd_boolean debug_write_class_type - (struct debug_handle *, const struct debug_write_fns *, void *, - struct debug_type *, 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 *); -static bfd_boolean debug_type_samep - (struct debug_handle *, struct debug_type *, struct debug_type *); -static bfd_boolean debug_class_type_samep - (struct debug_handle *, struct debug_type *, struct debug_type *); - -/* 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 (f->filename[0] == name[0] - && f->filename[1] == name[1] - && strcmp (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 * -debug_make_type (struct debug_handle *info ATTRIBUTE_UNUSED, - enum debug_type_kind kind, unsigned int size) -{ - struct debug_type *t; - - t = (struct debug_type *) 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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 virtual, - enum debug_visibility visibility) -{ - struct debug_baseclass *b; - - b = (struct debug_baseclass *) xmalloc (sizeof *b); - memset (b, 0, sizeof *b); - - b->type = type; - b->bitpos = bitpos; - b->virtual = 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 *f; - - f = (struct debug_field *) 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 *f; - - f = (struct debug_field *) 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 *m; - - m = (struct debug_method *) 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 *m; - - m = (struct debug_method_variant *) 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 *m; - - m = (struct debug_method_variant *) 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 *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 *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 * -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 *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 *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 *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 *type, const char *tag) -{ - unsigned int i; - unsigned int id; - struct debug_type *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 *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 *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->virtual, - b->visibility)) - return FALSE; - } - } - - if (type->u.kclass->methods != NULL) - { - for (i = 0; type->u.kclass->methods[i] != NULL; i++) - { - struct debug_method *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 *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 *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 *t1, - struct debug_type *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 = ⊤ - - 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 **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 **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 *t1, - struct debug_type *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 **pf1, **pf2; - - for (pf1 = c1->fields, pf2 = c2->fields; - *pf1 != NULL && *pf2 != NULL; - pf1++, pf2++) - { - struct debug_field *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 **pb1, **pb2; - - for (pb1 = c1->baseclasses, pb2 = c2->baseclasses; - *pb1 != NULL && *pb2 != NULL; - ++pb1, ++pb2) - { - struct debug_baseclass *b1, *b2; - - b1 = *pb1; - b2 = *pb2; - if (b1->bitpos != b2->bitpos - || b1->virtual != b2->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 **pm1, **pm2; - - for (pm1 = c1->methods, pm2 = c2->methods; - *pm1 != NULL && *pm2 != NULL; - ++pm1, ++pm2) - { - struct debug_method *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 **pv1, **pv2; - - for (pv1 = m1->variants, pv2 = m2->variants; - *pv1 != NULL && *pv2 != NULL; - ++pv1, ++pv2) - { - struct debug_method_variant *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/debug.h b/binutils/debug.h deleted file mode 100644 index 3331e0b9b..000000000 --- a/binutils/debug.h +++ /dev/null @@ -1,792 +0,0 @@ -/* debug.h -- Describe generic debugging information. - Copyright 1995, 1996, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 *debug_type; - -#define DEBUG_TYPE_NULL ((debug_type) NULL) - -/* A field in a struct or union. */ - -typedef struct debug_field *debug_field; - -#define DEBUG_FIELD_NULL ((debug_field) NULL) - -/* A base class for an object. */ - -typedef struct debug_baseclass *debug_baseclass; - -#define DEBUG_BASECLASS_NULL ((debug_baseclass) NULL) - -/* A method of an object. */ - -typedef struct debug_method *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 *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/deflex.l b/binutils/deflex.l deleted file mode 100644 index 106cc7bf1..000000000 --- a/binutils/deflex.l +++ /dev/null @@ -1,93 +0,0 @@ -%{/* deflex.l - Lexer for .def files */ - -/* Copyright 1995, 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -/* Contributed by Steve Chamberlain - sac@cygnus.com - -*/ -#define DONTDECLARE_MALLOC -#include "libiberty.h" -#include "defparse.h" -#include "dlltool.h" - -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; } -"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" { } -"\n" { linenumber ++ ;} -"=" { return '=';} -"." { return '.';} -"@" { return '@';} -"," { return ',';} -%% -#ifndef yywrap -/* Needed for lex, though not flex. */ -int yywrap(void) { return 1; } -#endif diff --git a/binutils/defparse.y b/binutils/defparse.y deleted file mode 100644 index d0bccd95a..000000000 --- a/binutils/defparse.y +++ /dev/null @@ -1,175 +0,0 @@ -%{ /* defparse.y - parser for .def files */ - -/* Copyright 1995, 1997, 1998, 1999 Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "bfd.h" -#include "bucomm.h" -#include "dlltool.h" -%} - -%union { - char *id; - int number; -}; - -%token NAME, LIBRARY, DESCRIPTION, STACKSIZE, HEAPSIZE, CODE, DATA -%token SECTIONS, EXPORTS, IMPORTS, VERSIONK, BASE, CONSTANT -%token READ WRITE EXECUTE SHARED NONSHARED NONAME -%token SINGLE MULTIPLE INITINSTANCE INITGLOBAL TERMINSTANCE TERMGLOBAL -%token ID -%token NUMBER -%type opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA -%type attr attr_list opt_number -%type opt_name opt_equal_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 - { def_exports ($1, $2, $3, $4, $5, $6);} - ; -implist: - implist impline - | impline - ; - -impline: - ID '=' ID '.' ID '.' ID { def_import ($1,$3,$5,$7, 0); } - | ID '=' ID '.' ID '.' NUMBER { def_import ($1,$3,$5, 0,$7); } - | ID '=' ID '.' ID { def_import ($1,$3, 0,$5, 0); } - | ID '=' ID '.' NUMBER { def_import ($1,$3, 0, 0,$5); } - | ID '.' ID '.' ID { def_import ( 0,$1,$3,$5, 0); } - | ID '.' ID '.' NUMBER { def_import ( 0,$1,$3, 0,$5); } - | ID '.' ID { def_import ( 0,$1, 0,$3, 0); } - | ID '.' NUMBER { def_import ( 0,$1, 0, 0,$3); } -; - -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_name: ID { $$ =$1; } - | ID '.' ID - { - char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1); - sprintf (name, "%s.%s", $1, $3); - $$ = name; - } - | { $$=""; } - ; - -opt_ordinal: - '@' NUMBER { $$=$2;} - | { $$=-1;} - ; - -opt_equal_name: - '=' ID { $$ = $2; } - | '=' ID '.' ID - { - char *name = xmalloc (strlen ($2) + 1 + strlen ($4) + 1); - sprintf (name, "%s.%s", $2, $4); - $$ = name; - } - | { $$ = 0; } - ; - -opt_base: BASE '=' NUMBER { $$= $3;} - | { $$=-1;} - ; - -option_list: - /* empty */ - | option_list opt_comma option - ; - -option: - INITINSTANCE - | INITGLOBAL - | TERMINSTANCE - | TERMGLOBAL - ; diff --git a/binutils/dep-in.sed b/binutils/dep-in.sed deleted file mode 100644 index aeb22a1ac..000000000 --- a/binutils/dep-in.sed +++ /dev/null @@ -1,20 +0,0 @@ -:loop -/\\$/N -/\\$/b loop - -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/\\\n */ /g - -s/ *$// -s/ */ /g -/:$/d - -s/\(.\{50\}[^ ]*\) /\1 \\\ - /g diff --git a/binutils/dlltool.c b/binutils/dlltool.c deleted file mode 100644 index 02b71d34d..000000000 --- a/binutils/dlltool.c +++ /dev/null @@ -1,3629 +0,0 @@ -/* dlltool.c -- tool to generate stuff for PE style DLLs - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 [ , ] - The result is going to be .EXE - - LIBRARY [ , ] - The result is going to be .DLL - - EXPORTS ( ( ( [ = ] ) - | ( = . )) - [ @ ] [ NONAME ] [CONSTANT] [DATA] ) * - Declares name1 as an exported symbol from the - DLL, with optional ordinal number . - Or declares name1 as an alias (forward) of the function - in the DLL . - - IMPORTS ( ( = . ) - | ( [ = ] . )) * - Declares that or the exported function whoes ordinal number - is is to be imported from the file . If - is specified then this is the name that the imported - function will be refereed to in the body of the DLL. - - DESCRIPTION - Puts into output .exp file in the .rdata section - - [STACKSIZE|HEAPSIZE] [ , ] - Generates --stack|--heap , - in the output .drectve section. The linker will - see this and act upon it. - - [CODE|DATA] + - SECTIONS ( + )* - = READ | WRITE | EXECUTE | SHARED - Generates --attr in the output - .drectve section. The linker will see this and act - upon it. - - - A -export: in a .drectve section in an input .o or .a - file to this program is equivalent to a EXPORTS - 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). */ - -/* AIX requires this to be the first thing in the file. */ -#ifndef __GNUC__ -# ifdef _AIX - #pragma alloca -#endif -#endif - -#define show_allnames 0 - -#define PAGE_SIZE 4096 -#define PAGE_MASK (-PAGE_SIZE) -#include "bfd.h" -#include "libiberty.h" -#include "bucomm.h" -#include "getopt.h" -#include "demangle.h" -#include "dyn-string.h" -#include "dlltool.h" -#include "safe-ctype.h" - -#include -#include - -#ifdef ANSI_PROTOTYPES -#include -#else -#include -#endif - -#ifdef DLLTOOL_ARM -#include "coff/arm.h" -#include "coff/internal.h" -#endif - -/* 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 (char *); -static void mcore_elf_gen_out_file (void); -#endif - -#ifdef HAVE_SYS_WAIT_H -#include -#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 */ - -/* 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. */ - 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 *head_label; -static char *imp_name_lab; -static char *dll_name; - -static int add_indirect = 0; -static int add_underscore = 0; -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; - -/* 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_ to import libraries for backward - compatibility to old Cygwin releases. */ -static bfd_boolean create_compat_implib; - -static char *def_file; - -extern char * program_name; - -static int machine; -static int killat; -static int add_stdcall_alias; -static int verbose; -static FILE *output_def; -static FILE *base_file; - -#ifdef DLLTOOL_ARM -#ifdef DLLTOOL_ARM_EPOC -static const char *mname = "arm-epoc"; -#else -static const char *mname = "arm"; -#endif -#endif - -#ifdef DLLTOOL_I386 -static const char *mname = "i386"; -#endif - -#ifdef DLLTOOL_PPC -static const char *mname = "ppc"; -#endif - -#ifdef DLLTOOL_SH -static const char *mname = "sh"; -#endif - -#ifdef DLLTOOL_MIPS -static const char *mname = "mips"; -#endif - -#ifdef DLLTOOL_MCORE -static const char * mname = "mcore-le"; -#endif - -#ifdef DLLTOOL_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 - -#define PATHMAX 250 /* What's the right name for this ? */ - -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 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 /*
*/ -}; - -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 /*
*/ -}; - -/* 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 - -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. */ - }; - -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 - } - , - { -#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 - } - , - { -#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 - } - , - { -#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 - } - , -#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 - } - , - { -#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 - } - , - { -#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 - } - , - { -#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 - } - , - { -#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 - } - , - { -#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, 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; - int ordinal; - int constant; - int noname; - 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); -static void process_def_file (const char *); -static void new_directive (char *); -static void append_import (const char *, const char *, int); -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 *, long *, int, 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 *); -#if 0 -static void dump_iat (FILE *, export_type *); -#endif -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); -static bfd *make_head (void); -static bfd *make_tail (void); -static void gen_lib_file (void); -static int pfunc (const void *, const void *); -static int nfunc (const void *, const void *); -static void remove_null_names (export_type **); -static void dtab (export_type **); -static void process_duplicates (export_type **); -static void fill_ordinals (export_type **); -static int alphafunc (const void *, const void *); -static void mangle_defs (void); -static void usage (FILE *, int); -static void inform (const char *, ...); - -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 machine) -{ - switch (machine) - { - case MARM: - case M386: - case MPPC: - case MTHUMB: - case MARM_INTERWORK: - case MMCORE_BE: - case MMCORE_LE: - case MMCORE_ELF: - case MMCORE_ELF_LE: - case MARM_EPOC: - break; - default: - /* xgettext:c-format */ - fatal (_("Internal error: Unknown machine type: %d"), machine); - break; - } - return ""; -} - -static const char * -rvabefore (int machine) -{ - switch (machine) - { - case MARM: - case M386: - case MPPC: - case MTHUMB: - case MARM_INTERWORK: - case MMCORE_BE: - case MMCORE_LE: - case MMCORE_ELF: - case MMCORE_ELF_LE: - case MARM_EPOC: - return ".rva\t"; - default: - /* xgettext:c-format */ - fatal (_("Internal error: Unknown machine type: %d"), machine); - break; - } - return ""; -} - -static const char * -asm_prefix (int machine) -{ - switch (machine) - { - 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: - break; - case M386: - return "_"; - default: - /* xgettext:c-format */ - fatal (_("Internal error: Unknown machine type: %d"), machine); - 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 asm_prefix(machine) -#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 mtable[machine].how_jtab -#define HOW_JTAB_SIZE mtable[machine].how_jtab_size -#define HOW_JTAB_ROFF mtable[machine].how_jtab_roff -#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 const char *d_name; /* Arg to NAME or LIBRARY. */ -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) -{ - struct export *p = (struct export *) xmalloc (sizeof (*p)); - - p->name = name; - p->internal_name = internal_name ? internal_name : name; - p->ordinal = ordinal; - p->constant = constant; - p->noname = noname; - 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 */ -} - -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")); - - d_name = name; - /* If --dllname not provided, use the one in the DEF file. - FIXME: Is this appropriate for executables? */ - if (! dll_name) - dll_name = xstrdup (name); - 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")); - - d_name = name; - /* If --dllname not provided, use the one in the DEF file. */ - if (! dll_name) - dll_name = xstrdup (name); - 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 *dll_name, int func_ordinal) -{ - iheadtype **pq; - iheadtype *q; - - for (pq = &import_list; *pq != NULL; pq = &(*pq)->next) - { - if (strcmp ((*pq)->dllname, dll_name) == 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->next = NULL; - q->nfuncs++; - return; - } - } - - q = xmalloc (sizeof (iheadtype)); - q->dllname = xstrdup (dll_name); - q->nfuncs = 1; - q->funchead = xmalloc (sizeof (ifunctype)); - q->functail = q->funchead; - q->next = NULL; - q->functail->name = xstrdup (symbol_name); - 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: - = . - = . - . - . - 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 or 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 *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); -} - -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 (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_before_reloc (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] == '-' - && strncmp (p, "-export:", 8) == 0) - { - char * name; - char * c; - flagword flags = BSF_FUNCTION; - - p += 8; - name = p; - while (p < e && *p != ',' && *p != ' ' && *p != '-') - p++; - c = xmalloc (p - name + 1); - memcpy (c, name, p - name); - c[p - name] = 0; - if (p < e && *p == ',') /* found type tag. */ - { - char *tag_start = ++p; - while (p < e && *p != ' ' && *p != '-') - p++; - if (strncmp (tag_start, "data", 4) == 0) - 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)); - - 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); - } - } - 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)); - - 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); - } - } -} - -/* 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", 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"), filename); - - /* 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) - { - if (bfd_check_format (arfile, bfd_object)) - scan_open_obj_file (arfile); - bfd_close (arfile); - arfile = bfd_openr_next_archived_file (f, arfile); - } - -#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 ((char *) 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\n", - ASM_C, - i, - exp->name, - exp->internal_name, - exp->ordinal, - exp->noname ? "NONAME " : "", - exp->constant ? "CONSTANT" : "", - exp->data ? "DATA" : ""); - } -} - -/* Generate the .exp file. */ - -static int -sfunc (const void *a, const void *b) -{ - return *(const long *) a - *(const long *) b; -} - -static void -flush_page (FILE *f, long *need, int 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, - 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++) - { - long needed = need[i]; - - if (needed) - needed = ((needed - page_addr) | 0x3000) & 0xffff; - - fprintf (f, "\t%s\t0x%lx\n", ASM_SHORT, 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\n", - quote, - exp->name, - quote, - exp->ordinal, - exp->noname ? " NONAME" : "", - exp->data ? " DATA" : ""); - } - else - { - char *quote1 = strchr (exp->internal_name, '.') ? "\"" : ""; - /* char *alias = */ - fprintf (output_def, "\t%s%s%s = %s%s%s @ %d%s%s\n", - quote, - exp->name, - quote, - quote1, - exp->internal_name, - quote1, - exp->ordinal, - exp->noname ? " NONAME" : "", - exp->data ? " DATA" : ""); - } - } - - 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++ ) - fprintf (filvar, "\t%sfuncptr%d_%d%s\n", - ASM_RVA_BEFORE, headindex, funcindex, ASM_RVA_AFTER); - 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++ ) - fprintf (filvar, "\t%sfuncptr%d_%d%s\n", - ASM_RVA_BEFORE, headindex, funcindex, ASM_RVA_AFTER); - 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->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, (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) - { -#if 0 - fprintf (f, "\t%s\t%d\t%s %d..%d missing\n", - ASM_SPACE, - (exp->ordinal - i) * 4, - ASM_C, - i, exp->ordinal - 1); - i = exp->ordinal; -#endif - 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, 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 Oridinal 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, 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\n", ASM_GLOBAL, exp->name); - if (create_compat_implib) - fprintf (f, "__imp_%s:\n", exp->name); - fprintf (f, "_imp__%s:\n", 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) - { - int addr; - long need[PAGE_SIZE]; - long page_addr; - int numbytes; - int num_entries; - long *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); - fread (copy, 1, numbytes, base_file); - num_entries = numbytes / sizeof (long); - - - fprintf (f, "\t.section\t.reloc\n"); - if (num_entries) - { - int src; - int dst = 0; - int last = -1; - qsort (copy, num_entries, sizeof (long), 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 == '@'); - - if (add_underscore && !lead_at) - { - char *copy = xmalloc (strlen (name) + 2); - - copy[0] = '_'; - strcpy (copy + 1, name); - name = copy; - } - - if (killat) - { - char *p; - - name += lead_at; - p = strchr (name, '@'); - if (p) - *p = 0; - } - return name; -} - -/**********************************************************************/ - -#if 0 - -static void -dump_iat (FILE *f, export_type *exp) -{ - if (exp->noname && !show_allnames ) - { - fprintf (f, "\t%s\t0x%08x\n", - ASM_LONG, - exp->ordinal | 0x80000000); /* hint or orindal ?? */ - } - else - { - fprintf (f, "\t%sID%d%s\n", ASM_RVA_BEFORE, - exp->ordinal, - ASM_RVA_AFTER); - } -} - -#endif - -typedef struct -{ - int id; - const char *name; - int flags; - int align; - asection *sec; - asymbol *sym; - asymbol **sympp; - int size; - unsigned char *data; -} sinfo; - -#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 - -#define INIT_SEC_DATA(id, name, flags, align) \ - { id, name, flags, align, NULL, NULL, NULL, 0, NULL } -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] = -{ - { TEXT, ".text", SEC_CODE | SEC_HAS_CONTENTS, 3}, - { PDATA, ".pdata", SEC_HAS_CONTENTS, 2}, - { RDATA, ".reldata", SEC_HAS_CONTENTS, 2}, - { IDATA5, ".idata$5", SEC_HAS_CONTENTS, 2}, - { IDATA4, ".idata$4", SEC_HAS_CONTENTS, 2}, - { IDATA6, ".idata$6", SEC_HAS_CONTENTS, 1}, - { IDATA7, ".idata$7", SEC_HAS_CONTENTS, 2}, - { DATA, ".data", SEC_DATA, 2}, - { 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) + strlen (prefix) + strlen (name); - char *copy = xmalloc (len +1 ); - - strcpy (copy, ASM_PREFIX); - 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) + strlen (prefix) + strlen (name); - copy = xmalloc (len + 1); - strcpy (copy, prefix); - strcat (copy, ASM_PREFIX); - strcat (copy, name); - } - return copy; -} - -static bfd * -make_one_lib_file (export_type *exp, int i) -{ -#if 0 - { - char *name; - FILE *f; - const char *prefix = "d"; - char *dest; - - name = (char *) alloca (strlen (prefix) + 10); - sprintf (name, "%ss%05d.s", prefix, i); - f = fopen (name, FOPEN_WT); - fprintf (f, "\t.text\n"); - fprintf (f, "\t%s\t%s%s\n", ASM_GLOBAL, ASM_PREFIX, exp->name); - if (create_compat_implib) - fprintf (f, "\t%s\t__imp_%s\n", ASM_GLOBAL, exp->name); - fprintf (f, "\t%s\t_imp__%s\n", ASM_GLOBAL, exp->name); - if (create_compat_implib) - fprintf (f, "%s%s:\n\t%s\t__imp_%s\n", ASM_PREFIX, - exp->name, ASM_JUMP, exp->name); - - fprintf (f, "\t.section\t.idata$7\t%s To force loading of head\n", ASM_C); - fprintf (f, "\t%s\t%s\n", ASM_LONG, head_label); - - - fprintf (f,"%s Import Address Table\n", ASM_C); - - fprintf (f, "\t.section .idata$5\n"); - if (create_compat_implib) - fprintf (f, "__imp_%s:\n", exp->name); - fprintf (f, "_imp__%s:\n", exp->name); - - dump_iat (f, exp); - - fprintf (f, "\n%s Import Lookup Table\n", ASM_C); - fprintf (f, "\t.section .idata$4\n"); - - dump_iat (f, exp); - - if(!exp->noname || show_allnames) - { - fprintf (f, "%s Hint/Name table\n", ASM_C); - fprintf (f, "\t.section .idata$6\n"); - fprintf (f, "ID%d:\t%s\t%d\n", exp->ordinal, ASM_SHORT, exp->hint); - fprintf (f, "\t%s\t\"%s\"\n", ASM_TEXT, xlate (exp->name)); - } - - fclose (f); - - dest = (char *) alloca (strlen (prefix) + 10); - sprintf (dest, "%ss%05d.o", prefix, i); - assemble_file (name, dest); - } -#else /* if 0 */ - { - 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"), outname); - - /* 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 = (asection *)&bfd_und_section; - 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 = (asection *)&bfd_und_section; - 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; - 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 *) * 2); - rpp[0] = rel; - rpp[1] = 0; - - rel->address = HOW_JTAB_ROFF; - rel->addend = 0; - - if (machine == MPPC) - { - rel->howto = bfd_reloc_type_lookup (abfd, - BFD_RELOC_16_GOTOFF); - rel->sym_ptr_ptr = iname_pp; - } - else - { - rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32); - rel->sym_ptr_ptr = secdata[IDATA5].sympp; - } - sec->orelocation = rpp; - sec->reloc_count = 1; - } - break; - case IDATA4: - case IDATA5: - /* An idata$4 or idata$5 is one word long, and has an - rva to idata$6. */ - - 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; - si->size = strlen (xlate (exp->name)) + 3; - si->data = xmalloc (si->size); - si->data[0] = idx & 0xff; - si->data[1] = idx >> 8; - strcpy (si->data + 2, xlate (exp->name)); - } - break; - case IDATA7: - 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); - -/* vma += si->size;*/ - } - } - /* 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); - return abfd; - } -#endif -} - -static bfd * -make_head (void) -{ - FILE *f = fopen (TMP_HEAD_S, FOPEN_WT); - - 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 .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"); - fprintf (f, "\t%s\t0\n", ASM_LONG); - fprintf (f, "fthunk:\n"); - } - - if (!no_idata4) - { - fprintf (f, "\t.section\t.idata$4\n"); - - fprintf (f, "\t%s\t0\n", ASM_LONG); - fprintf (f, "\t.section .idata$4\n"); - fprintf (f, "hname:\n"); - } - - fclose (f); - - assemble_file (TMP_HEAD_S, TMP_HEAD_O); - - return bfd_openr (TMP_HEAD_O, HOW_BFD_READ_TARGET); -} - -static bfd * -make_tail (void) -{ - FILE *f = fopen (TMP_TAIL_S, FOPEN_WT); - - if (f == NULL) - { - fatal (_("failed to open temporary tail file: %s"), TMP_TAIL_S); - return NULL; - } - - if (!no_idata4) - { - fprintf (f, "\t.section .idata$4\n"); - fprintf (f, "\t%s\t0\n", ASM_LONG); - } - - if (!no_idata5) - { - fprintf (f, "\t.section .idata$5\n"); - fprintf (f, "\t%s\t0\n", ASM_LONG); - } - -#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 .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 .idata$6\n"); -#else - fprintf (f, "\t.section .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); - - return bfd_openr (TMP_TAIL_O, HOW_BFD_READ_TARGET); -} - -static void -gen_lib_file (void) -{ - 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 open .lib file: %s"), imp_name); - - /* xgettext:c-format */ - inform (_("Creating library file: %s"), imp_name); - - bfd_set_format (outarch, bfd_archive); - outarch->has_armap = 1; - - /* Work out a reasonable size of things to put onto one line. */ - 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 = make_one_lib_file (exp, i); - n->next = head; - head = n; - } - - /* Now stick them all into the archive. */ - ar_head->next = head; - ar_tail->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->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; exp; i++, exp = exp->next) - { - sprintf (name, "%s%05d.o", TMP_STUB, i); - if (unlink (name) < 0) - /* xgettext:c-format */ - non_fatal (_("cannot delete %s: %s"), name, strerror (errno)); - } - } - - inform (_("Created lib file")); -} - -/**********************************************************************/ - -/* 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; - - return (strcmp (ap->name, bp->name)); -} - -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 -dtab (export_type **ptr -#ifndef SACDEBUG -ATTRIBUTE_UNUSED -#endif - ) -{ -#ifdef SACDEBUG - int i; - for (i = 0; i < d_nfuncs; i++) - { - if (ptr[i]) - { - printf ("%d %s @ %d %s%s%s\n", - i, ptr[i]->name, ptr[i]->ordinal, - ptr[i]->noname ? "NONAME " : "", - ptr[i]->constant ? "CONSTANT" : "", - ptr[i]->data ? "DATA" : ""); - } - else - printf ("empty\n"); - } -#endif -} - -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); - - dtab (d_export_vec); - 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 oridinals: %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; - } - - dtab (d_export_vec); - remove_null_names (d_export_vec); - dtab (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) - { - register 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 int -alphafunc (const void *av, const void *bv) -{ - const export_type **a = (const export_type **) av; - const export_type **b = (const export_type **) bv; - - return strcmp ((*a)->name, (*b)->name); -} - -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 - = (export_type **) 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 *), alphafunc); - - /* 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 \n"), program_name); - /* xgetext:c-format */ - fprintf (file, _(" -m --machine Create as DLL for . [default: %s]\n"), mname); - fprintf (file, _(" possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n")); - fprintf (file, _(" -e --output-exp Generate an export file.\n")); - fprintf (file, _(" -l --output-lib Generate an interface library.\n")); - fprintf (file, _(" -a --add-indirect Add dll indirects to export file.\n")); - fprintf (file, _(" -D --dllname Name of input dll to put into interface lib.\n")); - fprintf (file, _(" -d --input-def Name of .def file to be read in.\n")); - fprintf (file, _(" -z --output-def 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 Don't export \n")); - fprintf (file, _(" --no-default-excludes Clear default exclude symbols\n")); - fprintf (file, _(" -b --base-file 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, _(" -U --add-underscore Add underscores to symbols in interface library.\n")); - fprintf (file, _(" -k --kill-at Kill @ from exported names.\n")); - fprintf (file, _(" -A --add-stdcall-alias Add aliases without @.\n")); - fprintf (file, _(" -S --as Use for assembler.\n")); - fprintf (file, _(" -f --as-flags Pass 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 Use to construct temp file names.\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")); -#ifdef DLLTOOL_MCORE_ELF - fprintf (file, _(" -M --mcore-elf Process mcore-elf object files into .\n")); - fprintf (file, _(" -L --linker Use as the linker.\n")); - fprintf (file, _(" -F --linker-flags Pass to the linker.\n")); -#endif - 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) - -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'}, - {"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'}, - {"kill-at", no_argument, NULL, 'k'}, - {"add-stdcall-alias", no_argument, NULL, 'A'}, - {"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'}, - {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); - - while ((c = getopt_long (ac, av, -#ifdef DLLTOOL_MCORE_ELF - "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHhM:L:F:", -#else - "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHh", -#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 '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 = 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 '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 '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; - 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; - - if (!dll_name && exp_name) - { - int len = strlen (exp_name) + 5; - dll_name = xmalloc (len); - strcpy (dll_name, exp_name); - strcat (dll_name, ".dll"); - } - - 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 (); - } - - if (output_def) - gen_def_file (); - -#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 -{ - char * filename; - struct fname_cache * next; -} -fname_cache; - -static fname_cache fnames; - -static void -mcore_elf_cache_filename (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/dlltool.h b/binutils/dlltool.h deleted file mode 100644 index c2eaea6fd..000000000 --- a/binutils/dlltool.h +++ /dev/null @@ -1,41 +0,0 @@ -/* dlltool.h -- header file for dlltool - Copyright 1997, 1998, 2003 Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "ansidecl.h" -#include - -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); -extern void def_heapsize (int, int); -extern void def_import - (const char *, const char *, const char *, const char *, int); -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 yydebug; -extern int yylex (void); -extern FILE *yyin; -extern int linenumber; diff --git a/binutils/dllwrap.c b/binutils/dllwrap.c deleted file mode 100644 index e4db7bae5..000000000 --- a/binutils/dllwrap.c +++ /dev/null @@ -1,1220 +0,0 @@ -/* dllwrap.c -- wrapper for DLLTOOL and GCC to generate PE style DLLs - Copyright 1998, 1999, 2000, 2001, 2002, 2003 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 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* AIX requires this to be the first thing in the file. */ -#ifndef __GNUC__ -# ifdef _AIX - #pragma alloca -#endif -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "bfd.h" -#include "libiberty.h" -#include "bucomm.h" -#include "getopt.h" -#include "dyn-string.h" - -#include -#include - -#ifdef ANSI_PROTOTYPES -#include -#else -#include -#endif - -#ifdef HAVE_SYS_WAIT_H -#include -#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; - -typedef enum { - UNKNOWN_TARGET, - CYGWIN_TARGET, - MINGW_TARGET -} -target_type; - -static target_type which_target = UNKNOWN_TARGET; - -static int dontdeltemps = 0; -static int dry_run = 0; - -static char *program_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); -static void inform (const char *, ...); -static void warn (const char *, ...); -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 (program_name != NULL) - fprintf (stderr, "%s: ", program_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 *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; -} - -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, program_name, temp_base, - &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH); - - if (pid == -1) - { - int errno_val = errno; - - fprintf (stderr, "%s: ", program_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 ("wait: %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 \n"), program_name); - fprintf (file, _(" Generic options:\n")); - fprintf (file, _(" --quiet, -q Work quietly\n")); - fprintf (file, _(" --verbose, -v Verbose\n")); - fprintf (file, _(" --version Print dllwrap version\n")); - fprintf (file, _(" --implib Synonym for --output-lib\n")); - fprintf (file, _(" Options for %s:\n"), program_name); - fprintf (file, _(" --driver-name Defaults to \"gcc\"\n")); - fprintf (file, _(" --driver-flags Override default ld flags\n")); - fprintf (file, _(" --dlltool-name Defaults to \"dlltool\"\n")); - fprintf (file, _(" --entry Specify alternate DLL entry point\n")); - fprintf (file, _(" --image-base Specify image base address\n")); - fprintf (file, _(" --target 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 \n")); - fprintf (file, _(" --output-exp Generate export file.\n")); - fprintf (file, _(" --output-lib Generate input library.\n")); - fprintf (file, _(" --add-indirect Add dll indirects to export file.\n")); - fprintf (file, _(" --dllname Name of input dll to put into output lib.\n")); - fprintf (file, _(" --def Name input .def file\n")); - fprintf (file, _(" --output-def 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 Exclude from .def\n")); - fprintf (file, _(" --no-default-excludes Zap default exclude symbols\n")); - fprintf (file, _(" --base-file 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 @ from exported names\n")); - fprintf (file, _(" --add-stdcall-alias Add aliases without @\n")); - fprintf (file, _(" --as Use for assembler\n")); - fprintf (file, _(" --nodelete Keep temp files.\n")); - fprintf (file, _(" Rest are passed unmodified to the language driver\n")); - fprintf (file, "\n\n"); - 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) - -/* DLLTOOL options. */ -#define OPTION_NODELETE (OPTION_MNO_CYGWIN + 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}, - - /* 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; - - program_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); - - 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 (program_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_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; - - /* 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 (! entry_point || strlen (entry_point) == 0) - { - switch (which_target) - { - case CYGWIN_TARGET: - entry_point = "__cygwin_dll_entry@12"; - break; - - case MINGW_TARGET: - entry_point = "_DllMainCRTStartup@12"; - break; - - default: - entry_point = "_DllMain@12"; - break; - } - } - 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 is specified, then create it - * and then pass it on. - */ - - if (! def_file_seen) - { - int i; - 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) ? 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/doc/Makefile.am b/binutils/doc/Makefile.am deleted file mode 100644 index 851f20563..000000000 --- a/binutils/doc/Makefile.am +++ /dev/null @@ -1,165 +0,0 @@ -## Process this file with automake to generate Makefile.in - -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 - -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 \ - windres.1 \ - $(DEMANGLER_NAME).1 - -info_TEXINFOS = binutils.texi - -config.texi: Makefile - rm -f config.texi - echo '@set VERSION $(VERSION)' > config.texi - -binutils_TEXI = $(srcdir)/binutils.texi - -binutils.dvi: $(binutils_TEXI) config.texi - -binutils.info: $(binutils_TEXI) config.texi - -# Man page generation from texinfo -addr2line.1: $(binutils_TEXI) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - touch $@ - -$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod - -($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ - mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) - rm -f strip.pod - -windres.1: $(binutils_TEXI) - touch $@ - -$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod - -($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ - mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) - rm -f windres.pod - -cxxfilt.man: $(binutils_TEXI) - 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 - -MAINTAINERCLEANFILES = config.texi -DISTCLEANFILES = config.texi -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: install-info - -# Maintenance - -# We need it for the taz target in ../../Makefile.in. -info: $(MANS) diff --git a/binutils/doc/Makefile.in b/binutils/doc/Makefile.in deleted file mode 100644 index e05f5bee1..000000000 --- a/binutils/doc/Makefile.in +++ /dev/null @@ -1,564 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_alias = @build_alias@ -build_triplet = @build@ -host_alias = @host_alias@ -host_triplet = @host@ -target_alias = @target_alias@ -target_triplet = @target@ -AR = @AR@ -AS = @AS@ -BUILD_DLLTOOL = @BUILD_DLLTOOL@ -BUILD_DLLWRAP = @BUILD_DLLWRAP@ -BUILD_MISC = @BUILD_MISC@ -BUILD_NLMCONV = @BUILD_NLMCONV@ -BUILD_SRCONV = @BUILD_SRCONV@ -BUILD_WINDRES = @BUILD_WINDRES@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CC_FOR_BUILD = @CC_FOR_BUILD@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -DATADIRNAME = @DATADIRNAME@ -DEMANGLER_NAME = @DEMANGLER_NAME@ -DLLTOOL = @DLLTOOL@ -DLLTOOL_DEFS = @DLLTOOL_DEFS@ -EMULATION = @EMULATION@ -EMULATION_VECTOR = @EMULATION_VECTOR@ -EXEEXT = @EXEEXT@ -EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ -GCJ = @GCJ@ -GCJFLAGS = @GCJFLAGS@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -HDEFINES = @HDEFINES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -LEX = @LEX@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -NLMCONV_DEFS = @NLMCONV_DEFS@ -OBJDUMP = @OBJDUMP@ -OBJDUMP_DEFS = @OBJDUMP_DEFS@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -YACC = @YACC@ -bfdincludedir = @bfdincludedir@ -bfdlibdir = @bfdlibdir@ -l = @l@ - -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 - -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 \ - windres.1 \ - $(DEMANGLER_NAME).1 - - -info_TEXINFOS = binutils.texi - -binutils_TEXI = $(srcdir)/binutils.texi - -MAINTAINERCLEANFILES = config.texi -DISTCLEANFILES = config.texi -MOSTLYCLEANFILES = $(DEMANGLER_NAME).1 -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then echo $(top_srcdir)/../texinfo/util/texi2dvi; else echo texi2dvi; fi` -TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex -INFO_DEPS = binutils.info -DVIS = binutils.dvi -TEXINFOS = binutils.texi -man1dir = $(mandir)/man1 -MANS = $(man_MANS) - -NROFF = nroff -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -.SUFFIXES: .dvi .info .ps .texi .texinfo .txi -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --cygnus doc/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -binutils.info: binutils.texi -binutils.dvi: binutils.texi - - -DVIPS = dvips - -.texi.info: - @rm -f $@ $@-[0-9] $@-[0-9][0-9] - $(MAKEINFO) -I $(srcdir) $< - -.texi.dvi: - TEXINPUTS=$(top_srcdir)/../texinfo/texinfo.tex:$$TEXINPUTS \ - MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< - -.texi: - @rm -f $@ $@-[0-9] $@-[0-9][0-9] - $(MAKEINFO) -I $(srcdir) $< - -.texinfo.info: - @rm -f $@ $@-[0-9] $@-[0-9][0-9] - $(MAKEINFO) -I $(srcdir) $< - -.texinfo: - @rm -f $@ $@-[0-9] $@-[0-9][0-9] - $(MAKEINFO) -I $(srcdir) $< - -.texinfo.dvi: - TEXINPUTS=$(top_srcdir)/../texinfo/texinfo.tex:$$TEXINPUTS \ - MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< - -.txi.info: - @rm -f $@ $@-[0-9] $@-[0-9][0-9] - $(MAKEINFO) -I $(srcdir) $< - -.txi.dvi: - TEXINPUTS=$(top_srcdir)/../texinfo/texinfo.tex:$$TEXINPUTS \ - MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< - -.txi: - @rm -f $@ $@-[0-9] $@-[0-9][0-9] - $(MAKEINFO) -I $(srcdir) $< -.dvi.ps: - $(DVIPS) $< -o $@ - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(infodir) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ - if test -f $$d/$$ifile; then \ - echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ - $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ - else : ; fi; \ - done; \ - done - @$(POST_INSTALL) - @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ - install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ - done; \ - else : ; fi - -uninstall-info: - $(PRE_UNINSTALL) - @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ - ii=yes; \ - else ii=; fi; \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - test -z "$$ii" \ - || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ - done - @$(NORMAL_UNINSTALL) - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ - done - -dist-info: $(INFO_DEPS) - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - if test -f $$base; then d=.; else d=$(srcdir); fi; \ - for file in `cd $$d && eval echo $$base*`; do \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file; \ - done; \ - done - -mostlyclean-aminfo: - -rm -f binutils.aux binutils.cp binutils.cps binutils.dvi binutils.fn \ - binutils.fns binutils.ky binutils.kys binutils.ps \ - binutils.log binutils.pg binutils.toc binutils.tp \ - binutils.tps binutils.vr binutils.vrs binutils.op binutils.tr \ - binutils.cv binutils.cn - -clean-aminfo: - -distclean-aminfo: - -maintainer-clean-aminfo: - for i in $(INFO_DEPS); do \ - rm -f $$i; \ - if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ - rm -f $$i-[0-9]*; \ - fi; \ - done -clean-info: mostlyclean-aminfo - -install-man1: - $(mkinstalldirs) $(DESTDIR)$(man1dir) - @list='$(man1_MANS)'; \ - l2='$(man_MANS)'; for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ - done - -uninstall-man1: - @list='$(man1_MANS)'; \ - l2='$(man_MANS)'; for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ - rm -f $(DESTDIR)$(man1dir)/$$inst; \ - done -install-man: $(MANS) - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-man1 -uninstall-man: - @$(NORMAL_UNINSTALL) - $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 -tags: TAGS -TAGS: - - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = doc - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info -info-am: $(INFO_DEPS) -info: info-am -dvi-am: $(DVIS) -dvi: dvi-am -check-am: -check: check-am -installcheck-am: -installcheck: installcheck-am -install-info-am: -install-info: install-info-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: install-man -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-man -uninstall: uninstall-am -all-am: Makefile $(MANS) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 - - -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -mostlyclean-am: mostlyclean-aminfo mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-aminfo clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-aminfo distclean-generic clean-am - -rm -f libtool - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-aminfo maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: install-info-am uninstall-info mostlyclean-aminfo \ -distclean-aminfo clean-aminfo maintainer-clean-aminfo install-man1 \ -uninstall-man1 install-man uninstall-man tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-info-am \ -install-info install-exec-am install-exec install-data-am install-data \ -install-am install uninstall-am uninstall all-redirect all-am all \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -config.texi: Makefile - rm -f config.texi - echo '@set VERSION $(VERSION)' > config.texi - -binutils.dvi: $(binutils_TEXI) config.texi - -binutils.info: $(binutils_TEXI) config.texi - -# Man page generation from texinfo -addr2line.1: $(binutils_TEXI) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - 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) - touch $@ - -$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod - -($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ - mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) - rm -f strip.pod - -windres.1: $(binutils_TEXI) - touch $@ - -$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod - -($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ - mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) - rm -f windres.pod - -cxxfilt.man: $(binutils_TEXI) - 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: install-info - -# Maintenance - -# We need it for the taz target in ../../Makefile.in. -info: $(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/doc/binutils.texi b/binutils/doc/binutils.texi deleted file mode 100644 index 2e7872029..000000000 --- a/binutils/doc/binutils.texi +++ /dev/null @@ -1,3655 +0,0 @@ -\input texinfo @c -*- Texinfo -*- -@setfilename binutils.info -@c Copyright 2001, 2002, 2003 Free Software Foundation, Inc. - -@include config.texi - -@ifinfo -@format -START-INFO-DIR-ENTRY -* Binutils: (binutils). The GNU binary utilities. -* ar: (binutils)ar. Create, modify, and extract from archives -* nm: (binutils)nm. List symbols from object files -* objcopy: (binutils)objcopy. Copy and translate object files -* objdump: (binutils)objdump. Display information from object files -* ranlib: (binutils)ranlib. Generate index to archive contents -* readelf: (binutils)readelf. Display the contents of ELF format files. -* size: (binutils)size. List section sizes and total size -* strings: (binutils)strings. List printable strings from files -* strip: (binutils)strip. Discard symbols -* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols -* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt -* addr2line: (binutils)addr2line. Convert addresses to file and line -* nlmconv: (binutils)nlmconv. Converts object code into an NLM -* windres: (binutils)windres. Manipulate Windows resources -* dlltool: (binutils)dlltool. Create files needed to build and use DLLs -END-INFO-DIR-ENTRY -@end format -@end ifinfo - -@ifinfo -@c man begin COPYRIGHT -Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, -2001, 2002, 2003 Free Software Foundation, Inc. - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 -or any later version published by the Free Software Foundation; -with no Invariant Sections, with no Front-Cover Texts, and with no -Back-Cover Texts. A copy of the license is included in the -section entitled ``GNU Free Documentation License''. - -@c man end -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore -@end ifinfo - -@synindex ky cp -@c -@c This file documents the GNU binary utilities "ar", "ld", "objcopy", -@c "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib". -@c -@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, -@c 2002, 2003 Free Software Foundation, Inc. -@c -@c This text may be freely distributed under the terms of the GNU -@c Free Documentation License. -@c - -@setchapternewpage odd -@settitle @sc{gnu} Binary Utilities -@titlepage -@finalout -@title The @sc{gnu} Binary Utilities -@subtitle Version @value{VERSION} -@sp 1 -@subtitle May 1993 -@author Roland H. Pesch -@author Jeffrey M. Osier -@author Cygnus Support -@page - -@tex -{\parskip=0pt \hfill Cygnus Support\par \hfill -\TeX{}info \texinfoversion\par } -@end tex - -@vskip 0pt plus 1filll -Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001, -2002, 2003 Free Software Foundation, Inc. - - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with no Invariant Sections, with no Front-Cover Texts, and with no - Back-Cover Texts. A copy of the license is included in the - section entitled ``GNU Free Documentation License''. - -@end titlepage - -@node Top -@top Introduction - -@cindex version -This brief manual contains documentation for the @sc{gnu} binary -utilities (collectively 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 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 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. A copy of the license is included in the -section entitled "GNU Free Documentation License". - -@menu -* ar:: Create, modify, and extract from archives -* nm:: List symbols from object files -* objcopy:: Copy and translate object files -* objdump:: Display information from object files -* ranlib:: Generate index to archive contents -* readelf:: Display the contents of ELF format files. -* size:: List section sizes and total size -* strings:: List printable strings from files -* strip:: Discard symbols -* c++filt:: Filter to demangle encoded C++ symbols -* cxxfilt: c++filt. MS-DOS name for c++filt -* addr2line:: Convert addresses to file and line -* nlmconv:: Converts object code into an NLM -* windres:: Manipulate Windows resources -* dlltool:: Create files needed to build and use DLLs -* Selecting The Target System:: How these utilities determine the target. -* Reporting Bugs:: Reporting Bugs -* GNU Free Documentation License:: GNU Free Documentation License -* Index:: 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 [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}] -ar -M [ }), 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{--debug-syms}] [@option{-g}|@option{--extern-only}] - [@option{-B}] [@option{-C}|@option{--demangle}[=@var{style}]] [@option{-D}|@option{--dynamic}] - [@option{-S}|@option{--print-size}] [@option{-s}|@option{--print-armap}] - [@option{-A}|@option{-o}|@option{--print-file-name}] - [@option{-n}|@option{-v}|@option{--numeric-sort}] [@option{-p}|@option{--no-sort}] - [@option{-r}|@option{--reverse-sort}] [@option{--size-sort}] [@option{-u}|@option{--undefined-only}] - [@option{-t} @var{radix}|@option{--radix=}@var{radix}] [@option{-P}|@option{--portability}] - [@option{--target=}@var{bfdname}] [@option{-f}@var{format}|@option{--format=}@var{format}] - [@option{--defined-only}] [@option{-l}|@option{--line-numbers}] [@option{--no-demangle}] - [@option{-V}|@option{--version}] [@option{-X 32_64}] [@option{--help}] [@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 -local; if uppercase, the symbol is global (external). - -@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 -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 -The symbol is in the initialized data section. - -@item G -The symbol is in an initialized data section for small objects. Some -object file formats permit more efficient access to small data objects, -such as a global int variable as opposed to a large global array. - -@item I -The symbol is an indirect reference to another symbol. This is a @sc{gnu} -extension to the a.out object file format which is rarely used. - -@item N -The symbol is a debugging symbol. - -@item R -The symbol is in a read only data section. - -@item S -The symbol is in an uninitialized data section for small objects. - -@item T -The symbol is in the text (code) section. - -@item U -The symbol is undefined. - -@item V -The symbol is a weak object. When a weak defined symbol is linked with -a normal defined symbol, the normal defined symbol is used with no error. -When a weak undefined symbol is linked and the symbol is not defined, -the value of the weak symbol becomes zero with no error. - -@item W -The symbol is a weak symbol that has not been specifically tagged as a -weak object symbol. When a weak defined symbol is linked with a normal -defined symbol, the normal defined symbol is used with no error. -When a weak undefined symbol is linked and the symbol is not defined, -the value of the weak symbol becomes zero with no error. - -@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. -@ifclear man -For more information, see @ref{Top,Stabs,Stabs Overview,stabs.info, The -``stabs'' debug format}. -@end ifclear - -@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 -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 -S -@itemx --print-size -Print size, not the value, of defined symbols for the @code{bsd} output format. - -@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 -r -@itemx --reverse-sort -Reverse the order of the sort (whether numeric or alphabetic); let the -last come first. - -@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 -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 --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 -u -@itemx --undefined-only -@cindex external symbols -@cindex undefined symbols -Display only undefined symbols (those external to each object file). - -@item --defined-only -@cindex external symbols -@cindex undefined symbols -Display only defined symbols for 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 --help -Show a summary of the options to @command{nm} and exit. -@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{-G} @var{symbolname}|@option{--keep-global-symbol=}@var{symbolname}] - [@option{-L} @var{symbolname}|@option{--localize-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{interleave}|@option{--interleave=}@var{interleave}] - [@option{-j} @var{sectionname}|@option{--only-section=}@var{sectionname}] - [@option{-R} @var{sectionname}|@option{--remove-section=}@var{sectionname}] - [@option{-p}|@option{--preserve-dates}] - [@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{section}@{=,+,-@}@var{val}] - [@option{--change-section-lma} @var{section}@{=,+,-@}@var{val}] - [@option{--change-section-vma} @var{section}@{=,+,-@}@var{val}] - [@option{--change-warnings}] [@option{--no-change-warnings}] - [@option{--set-section-flags} @var{section}=@var{flags}] - [@option{--add-section} @var{sectionname}=@var{filename}] - [@option{--rename-section} @var{oldname}=@var{newname}[,@var{flags}]] - [@option{--change-leading-char}] [@option{--remove-leading-char}] - [@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{--keep-global-symbols=}@var{filename}] - [@option{--localize-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{--only-keep-debug}] - [@option{--writable-text}] - [@option{--readonly-text}] - [@option{--pure}] - [@option{--impure}] - [@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}). - -@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 raw binary 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{sectionname} -@itemx --only-section=@var{sectionname} -Copy only the named section from the input file to the output file. -This option may be given more than once. Note that using this option -inappropriately may make the output file unusable. - -@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. - -@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} -Copy only symbol @var{symbolname} from the source file. 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 -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 -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 -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} -Keep only every @var{byte}th byte of the input file (header data is not -affected). @var{byte} can be in the range from 0 to @var{interleave}-1, -where @var{interleave} is given by the @option{-i} or @option{--interleave} -option, or the default of 4. This option is useful for creating files -to program @sc{rom}. It is typically used with an @code{srec} output -target. - -@item -i @var{interleave} -@itemx --interleave=@var{interleave} -Only copy one out of every @var{interleave} bytes. Select which byte to -copy with the @option{-b} or @option{--byte} option. The default is 4. -@command{objcopy} ignores this option if you do not specify either @option{-b} or -@option{--byte}. - -@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 --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{section}@{=,+,-@}@var{val} -@itemx --adjust-section-vma @var{section}@{=,+,-@}@var{val} -@cindex changing section address -Set or change both the VMA address and the LMA address of the named -@var{section}. 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{section} does not exist in the input file, a warning will -be issued, unless @option{--no-change-warnings} is used. - -@item --change-section-lma @var{section}@{=,+,-@}@var{val} -@cindex changing section LMA -Set or change the LMA address of the named @var{section}. The LMA -address is the address where the section will be loaded into memory at -program load time. Normally this is the same as the VMA address, which -is the address of the section at program run time, but on some systems, -especially those where a program is held in ROM, the two can be -different. If @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{section} does not exist in the input file, a warning -will be issued, unless @option{--no-change-warnings} is used. - -@item --change-section-vma @var{section}@{=,+,-@}@var{val} -@cindex changing section VMA -Set or change the VMA address of the named @var{section}. The VMA -address is the address where the section will be located once the -program has started executing. Normally this is the same as the LMA -address, which is the address where the section will be loaded into -memory, but on some systems, especially those where a program is held in -ROM, the two can be different. If @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{section} does not exist 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 named section does not -exist, 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 named section does not exist. - -@item --set-section-flags @var{section}=@var{flags} -Set the flags for the named section. 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 -B \ - --rename-section .data=.rodata,alloc,load,readonly,data,contents \ - -@end smallexample - -@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 --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 --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 --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. - -@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 --only-keep-debug -Strip a file, removing any sections that would be stripped by -@option{--strip-debug} and leaving the debugging sections. - -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 - -ie 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. - -@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{--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{-r}|@option{--reloc}] - [@option{-R}|@option{--dynamic-reloc}] - [@option{-s}|@option{--full-contents}] - [@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{-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,-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 debugging -information stored in the file and print it out using a C like syntax. -Only certain types of debugging information have been implemented. -Some other types are supported by @command{readelf -w}. -@xref{readelf}. - -@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. - -@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 --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. - -@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-name-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{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 PPC, @option{booke}, @option{booke32} and @option{booke64} select -disassembly of BookE instructions. @option{32} and @option{64} select -PowerPC and PowerPC64 disassembly, respectively. - -For MIPS, this option controls the printing of 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 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. - -@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 -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. - -@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 --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 -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. -@ifclear man -For more information on stabs symbols, see @ref{Top,Stabs,Stabs -Overview,stabs.info, The ``stabs'' debug format}. -@end ifclear - -@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. - -@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 -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 -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{-vV}] @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 -v -@itemx -V -@itemx --version -Show the version number of @command{ranlib}. -@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{-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 -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{-afov}] [@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{--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. - -@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. - -@item -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{-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{--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. - -@item -s -@itemx --strip-all -Remove all symbols. - -@item -g -@itemx -S -@itemx -d -@itemx --strip-debug -Remove debugging symbols only. - -@item --strip-unneeded -Remove all symbols that are not needed for relocation processing. - -@item -K @var{symbolname} -@itemx --keep-symbol=@var{symbolname} -Keep only symbol @var{symbolname} from the source file. 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 -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 --only-keep-debug -Strip a file, removing any sections that would be stripped by -@option{--strip-debug} and leaving the debugging sections. - -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 - -ie 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. - -@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-underscores}] - [@option{-j}|@option{--java}] - [@option{-n}|@option{--no-strip-underscores}] - [@option{-p}|@option{--no-params}] - [@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 provides function overloading, which means -that you can write many functions with the same name (providing each -takes parameters of different types). All C++ and Java function names -are encoded into a low-level assembly label (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 the linker can keep these overloaded -functions from clashing. - -Every alphanumeric word (consisting of letters, digits, underscores, -dollars, or periods) seen in the input is a potential label. If the -label decodes into a C++ name, the C++ name replaces the low-level -name in the output. - -You can use @command{c++filt} to decipher individual symbols: - -@example -c++filt @var{symbol} -@end example - -If no @var{symbol} arguments are given, @command{c++filt} reads symbol -names from the standard input and writes the demangled names to the -standard output. All results are printed on the standard output. - -@c man end - -@c man begin OPTIONS cxxfilt - -@table @env -@item -_ -@itemx --strip-underscores -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 -j -@itemx --java -Prints demangled names using Java syntax. The default is to use C++ -syntax. - -@item -n -@itemx --no-strip-underscores -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 -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 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{-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{-H}|@option{--help}] [@option{-V}|@option{--version}] - [addr addr @dots{}] -@c man end -@end smallexample - -@c man begin DESCRIPTION addr2line - -@command{addr2line} translates program addresses into file names and line -numbers. Given an address and an executable, it uses the debugging -information in the executable to figure out which file name and line -number are associated with a given address. - -The executable to use is specified with the @option{-e} option. The -default is the file @file{a.out}. - -@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 address is printed on a separate line. If the -@command{-f} option is used, then each @samp{FILENAME:LINENO} line is -preceded by a @samp{FUNCTIONNAME} line which is the name of the function -containing the address. - -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 -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. -@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 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 compatability 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 -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 descrived 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 -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 Create files needed to build and use DLLs -@cindex DLL -@kindex dlltool - -@command{dlltool} may be used to create the files needed to build and use -dynamic link libraries (DLLs). - -@quotation -@emph{Warning:} @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{--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{-k}|@option{--kill-at}] - [@option{-A}|@option{--add-stdcall-alias}] - [@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}] [@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}] - [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 @samp{.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 .def file it creates. - -In order to mark a function as being exported from a DLL, it needs to -have an @option{-export:} 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 .def file. - -The third file needed for DLL creation is the library file that programs -will link with in order to access the functions in the DLL. This file -can be created by giving the @option{-l} option to dlltool when it -is creating or reading in a .def file. - -@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 - -@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 .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 .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 --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 .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 .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 the exported functions. - -@item -k -@itemx --kill-at -Specifies that when @command{dlltool} is creating the exports file it -should not append the string @samp{@@ }. 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{@@ } -in addition to the symbols with @samp{@@ }. - -@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 -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 -@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 - -@ignore -@c man begin SEEALSO dlltool -the Info entries 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{-e}|@option{--headers}] - [@option{-s}|@option{--syms}|@option{--symbols}] - [@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} |@option{--hex-dump=}] - [@option{-w[liaprmfFso]}| - @option{--debug-dump}[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=frames-interp,=str,=loc]] - [@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 specifiying @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 -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 -e -@itemx --headers -Display all the headers in the file. Equivalent to @option{-h -l -S}. - -@item -n -@itemx --notes -@cindex ELF core notes -Displays the contents of the NOTE segment, if it exists. - -@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 are currently supported. - -@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 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 informations -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 table in the file's dynamic section, rather than the one in the -symbols section. - -@item -x -@itemx --hex-dump= -Displays the contents of the indicated section as a hexadecimal dump. - -@item -w[liaprmfFso] -@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=frames-interp,=str,=loc] -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. - -@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 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. - -In any event, we also recommend that you send bug reports for the binary -utilities to @samp{bug-binutils@@gnu.org}. - -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, uuencoded if -necessary to get them through the mail system. Note that -@samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid -sending very large files to it. Making the files available for -anonymous FTP is OK. - -If the source files were produced exclusively using @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 synch, or you have encountered a bug in -the C library on your system. (This has happened!) Your copy might -crash and ours would not. If you told us to expect a crash, then when -ours fails to crash, we would know that the bug was not happening for -us. If you had not told us to expect a crash, then we would not be able -to draw any conclusion from our observations. - -@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 - -@include fdl.texi - -@node Index -@unnumbered Index - -@printindex cp - -@contents -@bye diff --git a/binutils/doc/fdl.texi b/binutils/doc/fdl.texi deleted file mode 100644 index f4726b9b1..000000000 --- a/binutils/doc/fdl.texi +++ /dev/null @@ -1,368 +0,0 @@ -@c -*-texinfo-*- -@node GNU Free Documentation License - -@appendix GNU Free Documentation License -@center Version 1.1, March 2000 - -@display -Copyright (C) 2000 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display -@sp 1 -@enumerate 0 -@item -PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -written document ``free'' in the sense of freedom: to assure everyone -the effective freedom to copy and redistribute it, with or without -modifying it, either commercially or noncommercially. Secondarily, -this License preserves for the author and publisher a way to get -credit for their work, while not being considered responsible for -modifications made by others. - -This License is a kind of ``copyleft'', which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -@sp 1 -@item -APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The ``Document'', below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as ``you.'' - -A ``Modified Version'' of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A ``Secondary Section'' is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (For example, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The ``Invariant Sections'' are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. - -The ``Cover Texts'' are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. - -A ``Transparent'' copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, whose contents can be viewed and edited directly and -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not ``Transparent'' is called ``Opaque.'' - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML designed for human modification. Opaque formats include -PostScript, PDF, proprietary formats that can be read and edited only -by proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML produced by some word processors for output -purposes only. - -The ``Title Page'' means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, ``Title Page'' means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. -@sp 1 -@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. -@sp 1 -@item -COPYING IN QUANTITY - -If you publish printed copies of the Document numbering more than 100, -and the Document's license notice requires Cover Texts, you must enclose -the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. If you use the latter -option, you must take reasonably prudent steps, when you begin -distribution of Opaque copies in quantity, to ensure that this -Transparent copy will remain thus accessible at the stated location -until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to -the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -@sp 1 -@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: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission.@* -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has less than five).@* -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher.@* -D. Preserve all the copyright notices of the Document.@* -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices.@* -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below.@* -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice.@* -H. Include an unaltered copy of this License.@* -I. Preserve the section entitled ``History'', and its title, and add to - it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section entitled ``History'' in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence.@* -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the ``History'' section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission.@* -K. In any section entitled ``Acknowledgements'' or ``Dedications'', - preserve the section's title, and preserve in the section all the - substance and tone of each of the contributor acknowledgements - and/or dedications given therein.@* -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles.@* -M. Delete any section entitled ``Endorsements.'' Such a section - may not be included in the Modified Version.@* -N. Do not retitle any existing section as ``Endorsements'' - or to conflict in title with any Invariant Section.@* -@sp 1 -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. -@sp 1 -@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. - -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.'' -@sp 1 -@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. -@sp 1 -@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, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an ``aggregate'', and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. -@sp 1 -@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 provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. -@sp 1 -@item -TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. -@sp 1 -@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 -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. - -@end enumerate - -@unnumberedsec 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.1 -or any later version published by the Free Software Foundation; -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}. -A copy of the license is included in the section entitled "GNU -Free Documentation License." -@end group -@end smallexample - -If you have no Invariant Sections, write ``with no Invariant Sections'' -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write ``no Front-Cover Texts'' instead of -``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/binutils/emul_aix.c b/binutils/emul_aix.c deleted file mode 100644 index e7150aeba..000000000 --- a/binutils/emul_aix.c +++ /dev/null @@ -1,175 +0,0 @@ -/* Binutils emulation layer. - Copyright 2002, 2003 Free Software Foundation, Inc. - Written by Tom Rix, Redhat. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "binemul.h" -#include "bfdlink.h" -#include "coff/internal.h" -#include "coff/xcoff.h" -#include "libcoff.h" -#include "libxcoff.h" - -/* Default to . */ -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 *); -static bfd_boolean ar_emul_aix_append (bfd **, char *, bfd_boolean); -static bfd_boolean ar_emul_aix5_append (bfd **, char *, bfd_boolean); -static bfd_boolean ar_emul_aix_replace (bfd **, char *, bfd_boolean); -static bfd_boolean ar_emul_aix5_replace (bfd **, char *, bfd_boolean); -static bfd_boolean ar_emul_aix_parse_arg (char *); -static bfd_boolean ar_emul_aix_internal - (bfd **, char *, bfd_boolean, const char *, bfd_boolean); - -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 -ar_emul_aix_internal (bfd **after_bfd, char *file_name, bfd_boolean verbose, - const char * target_name, bfd_boolean is_append) -{ - bfd *temp; - bfd *try_bfd; - - temp = *after_bfd; - - /* Try 64 bit. */ - try_bfd = bfd_openr (file_name, target_name); - - /* Failed or the object is possibly 32 bit. */ - if (NULL == try_bfd || ! bfd_check_format (try_bfd, bfd_object)) - try_bfd = bfd_openr (file_name, "aixcoff-rs6000"); - - AR_EMUL_ELEMENT_CHECK (try_bfd, file_name); - - if (bfd_xcoff_is_xcoff64 (try_bfd) && (! X64)) - return FALSE; - - if (bfd_xcoff_is_xcoff32 (try_bfd) - && bfd_check_format (try_bfd, bfd_object) && (! X32)) - return FALSE; - - if (is_append) - { - AR_EMUL_APPEND_PRINT_VERBOSE (verbose, file_name); - } - else - { - AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name); - } - - *after_bfd = try_bfd; - (*after_bfd)->next = temp; - - return TRUE; -} - - -static bfd_boolean -ar_emul_aix_append (bfd **after_bfd, char *file_name, bfd_boolean verbose) -{ - return ar_emul_aix_internal (after_bfd, file_name, verbose, - "aixcoff64-rs6000", TRUE); -} - -static bfd_boolean -ar_emul_aix5_append (bfd **after_bfd, char *file_name, bfd_boolean verbose) -{ - return ar_emul_aix_internal (after_bfd, file_name, verbose, - "aix5coff64-rs6000", TRUE); -} - -static bfd_boolean -ar_emul_aix_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose) -{ - return ar_emul_aix_internal (after_bfd, file_name, verbose, - "aixcoff64-rs6000", FALSE); -} - -static bfd_boolean -ar_emul_aix5_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose) -{ - return ar_emul_aix_internal (after_bfd, file_name, verbose, - "aix5coff64-rs6000", FALSE); -} - -static bfd_boolean -ar_emul_aix_parse_arg (char *arg) -{ - if (strncmp (arg, "-X32_64", 6) == 0) - { - big_archive = TRUE; - X32 = TRUE; - X64 = TRUE; - } - else if (strncmp (arg, "-X32", 3) == 0) - { - big_archive = TRUE; - X32 = TRUE; - X64 = FALSE; - } - else if (strncmp (arg, "-X64", 3) == 0) - { - big_archive = TRUE; - X32 = FALSE; - X64 = TRUE; - } - else if (strncmp (arg, "-g", 2) == 0) - { - 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_default_create, - ar_emul_aix_parse_arg, -}; - -struct bin_emulation_xfer_struct bin_aix5_emulation = -{ - ar_emul_aix_usage, - ar_emul_aix5_append, - ar_emul_aix5_replace, - ar_emul_default_create, - ar_emul_aix_parse_arg, -}; diff --git a/binutils/emul_vanilla.c b/binutils/emul_vanilla.c deleted file mode 100644 index d6cfebda9..000000000 --- a/binutils/emul_vanilla.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Binutils emulation layer. - Copyright (C) 2002 Free Software Foundation, Inc. - Written by Tom Rix, Redhat. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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_create, - ar_emul_default_parse_arg, -}; diff --git a/binutils/filemode.c b/binutils/filemode.c deleted file mode 100644 index 8b438a9a5..000000000 --- a/binutils/filemode.c +++ /dev/null @@ -1,260 +0,0 @@ -/* filemode.c -- make a string describing file modes - Copyright 1985, 1990, 1991, 1994, 1995, 1997, 2003 - 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., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#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. */ - -#if 0 - -/* This is not used; only mode_string is used. */ - -void -filemodestring (struct stat *statp, char *str) -{ - mode_string ((unsigned long) statp->st_mode, str); -} - -#endif - -/* 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/ieee.c b/binutils/ieee.c deleted file mode 100644 index 1ced60368..000000000 --- a/binutils/ieee.c +++ /dev/null @@ -1,7396 +0,0 @@ -/* ieee.c -- Read and write IEEE-695 debugging information. - Copyright 1996, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file reads and writes IEEE-695 debugging information. */ - -#include -#include - -#include "bfd.h" -#include "ieee.h" -#include "bucomm.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. */ - -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_UNKNOWN, - IEEE_EXTERNAL, - IEEE_GLOBAL, - IEEE_STATIC, - IEEE_LOCAL, - IEEE_FUNCTION - } 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; - } - - 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, §ype) - || ! 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': - /* 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, *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, &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 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, &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 *basename, *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, &basename, &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 (basename, 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, *basename; - 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, &basename, &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 (basename, 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, - 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 *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, &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] == class[0] - && strncmp (it->name, 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) - || ! bfd_hash_table_init (&info.tags.root, ieee_name_type_newfunc)) - 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 (abfd, ".debug"); - if (s == NULL) - err = "bfd_make_section"; - if (err == NULL) - { - if (! bfd_set_section_flags (abfd, s, SEC_DEBUGGING | SEC_HAS_CONTENTS)) - err = "bfd_set_section_flags"; - } - 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; - unsigned int nindx; - - 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; - - nindx = info->name_indx; - ++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 (strcmp (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")) - 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 (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 (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))) - 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) -{ - struct ieee_handle *info = (struct ieee_handle *) p; - unsigned int targetindx, baseindx; - - targetindx = ieee_pop_type (info); - baseindx = ieee_pop_type (info); - - /* 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) - { - unsigned int nindx; - - /* 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 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 (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)) - 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)) - 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 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; - - virtual = context || voffset > 0; - - if (! ieee_change_buffer (info, - &info->type_stack->type.classdef->pmiscbuf) - || ! ieee_write_asn (info, nindx, 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 (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 (strcmp (info->pending_lineno_filename, info->lineno_filename) != 0) - { - if (strcmp (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 (strcmp (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 (strcmp (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/is-ranlib.c b/binutils/is-ranlib.c deleted file mode 100644 index 22ce3aa4e..000000000 --- a/binutils/is-ranlib.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Linked with ar.o to flag that this program is 'ranlib' (not 'ar'). */ - -int is_ranlib = 1; diff --git a/binutils/is-strip.c b/binutils/is-strip.c deleted file mode 100644 index 338245d08..000000000 --- a/binutils/is-strip.c +++ /dev/null @@ -1,4 +0,0 @@ -/* Linked with objcopy.o to flag that this program is 'strip' (not - 'objcopy'). */ - -int is_strip = 1; diff --git a/binutils/mac-binutils.r b/binutils/mac-binutils.r deleted file mode 100644 index 7b1a3035e..000000000 --- a/binutils/mac-binutils.r +++ /dev/null @@ -1,42 +0,0 @@ -/* Resources for GNU binutils. */ - -#include "SysTypes.r" - -/* Version resources. */ - -resource 'vers' (1) { - 0, - 0, - 0, - 0, - verUs, - VERSION_STRING, - VERSION_STRING " (C) 1986-95 FSF, Inc." -}; - -resource 'vers' (2, purgeable) { - 0, - 0, - 0, - 0, - verUs, - VERSION_STRING, - "binutils " VERSION_STRING " for MPW" -}; - -#ifdef WANT_CFRG - -#include "CodeFragmentTypes.r" - -resource 'cfrg' (0) { - { - kPowerPC, - kFullLib, - kNoVersionNum, kNoVersionNum, - 0,0, - kIsApp, kOnDiskFlat, kZeroOffset, kWholeFork, - PROG_NAME - } -}; - -#endif /* WANT_CFRG */ diff --git a/binutils/makefile.vms-in b/binutils/makefile.vms-in deleted file mode 100644 index a809d1b13..000000000 --- a/binutils/makefile.vms-in +++ /dev/null @@ -1,98 +0,0 @@ -# -# Makefile for binutils under openVMS (Alpha and Vax) -# -# For use with gnu-make for vms -# -# Created by Klaus K"ampf, kkaempf@rmi.de -# -# - -# Distribution version, filled in by configure.com -VERSION=@VERSION@ - -ifeq ($(ARCH),ALPHA) -TARGET=""vms-alpha"" -else -TARGET=""vms-vax"" -endif - -ifeq ($(CC),gcc) -CFLAGS=/include=([],[-.include],[-.bfd])$(DEFS) -DEFS=/define=("TARGET=$(TARGET)") -LIBS=,gnu_cc_library:libgcc/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj -else -CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)\ -/warnings=disable=(missingreturn,implicitfunc,longextern) -DEFS=/define=("TARGET=$(TARGET)","const=","unlink=remove") -LIBS=,sys$$library:vaxcrtl.olb/lib -endif - -BFDLIB = [-.bfd]libbfd.olb/lib -BFDLIB_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 - -WRITE_DEBUG_OBJS = $(DEBUG_OBJS),wrstabs.obj - -BULIBS = []bucomm.obj,version.obj,filemode.obj - -ADDL_DEPS = $(BULIBS),$(BFDLIB_DEP),$(LIBIBERTY_DEP) -ADDL_LIBS = $(BULIBS),$(BFDLIB),$(LIBIBERTY) - -SIZEOBJS = $(ADDL_DEPS),size.obj - -STRINGSOBJS = $(ADDL_DEPS),strings.obj - -NMOBJS = $(ADDL_DEPS),nm.obj - -OBJDUMPOBJS = $(ADDL_DEPS),objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(OPCODES_DEP) - -all: config.h size.exe strings.exe objdump.exe nm.exe - -size.exe: $(SIZEOBJS) - link/exe=$@ size.obj,$(ADDL_LIBS)$(LIBS) - -strings.exe: $(STRINGSOBJS) - link/exe=$@ strings.obj,$(ADDL_LIBS)$(LIBS) - -nm.exe: $(NMOBJS) - link/exe=$@ nm.obj,$(ADDL_LIBS)$(LIBS) - -objdump.exe: $(OBJDUMPOBJS) - link/exe=$@ objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(BFDLIB),$(OPCODES),$(ADDL_LIBS)$(LIBS) - - -version.obj: version.c - $(CC) $(CFLAGS)/define=(VERSION="""$(VERSION)""") $< - -config.h: - $$ @configure - $(MAKE) -f makefile.vms "CC=$(CC)" - -[-.bfd]libbfd.olb: - $(CD) [-.bfd] - $(MAKE) -f makefile.vms "CC=$(CC)" - $(CD) [-.binutils] - -[-.libiberty]libiberty.olb: - $(CD) [-.libiberty] - $(MAKE) -f makefile.vms "CC=$(CC)" - $(CD) [-.binutils] - -[-.opcodes]libopcodes.olb: - $(CD) [-.opcodes] - $(MAKE) -f makefile.vms "CC=$(CC)" - $(CD) [-.binutils] - -clean: - $$ purge - $(RM) *.obj; - $(RM) *.exe; - -distclean: clean - $(RM) config.h; - $(RM) makefile.vms; diff --git a/binutils/maybe-ranlib.c b/binutils/maybe-ranlib.c deleted file mode 100644 index dcaded3d0..000000000 --- a/binutils/maybe-ranlib.c +++ /dev/null @@ -1,4 +0,0 @@ -/* 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/maybe-strip.c b/binutils/maybe-strip.c deleted file mode 100644 index cfcc1ba05..000000000 --- a/binutils/maybe-strip.c +++ /dev/null @@ -1,4 +0,0 @@ -/* 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/mpw-config.in b/binutils/mpw-config.in deleted file mode 100644 index 21a067ddd..000000000 --- a/binutils/mpw-config.in +++ /dev/null @@ -1,27 +0,0 @@ -# Configuration fragment for binutils. - -Set target_arch `echo {target_canonical} | sed -e 's/-.*-.*//'` - -# (should canonicalize arch name) */ - -Set archname ARCH_{target_arch} - -Set underscore 0 - -If "{target_canonical}" =~ /sh-hitachi-hms/ - Set underscore 1 -End If - -Echo '# From mpw-config.in' > "{o}"mk.tmp -Echo "ARCHDEFS = -d" {archname} >> "{o}"mk.tmp -Echo "UNDERSCORE = " {underscore} >> "{o}"mk.tmp -Echo "BUILD_NLMCONV = " >> "{o}"mk.tmp -Echo "BUILD_SRCONV = " >> "{o}"mk.tmp -Echo "SYSINFO_PROG = " >> "{o}"mk.tmp -Echo "BUILD_DLLTOOL = " >> "{o}"mk.tmp -Echo '# End from mpw-config.in' >> "{o}"mk.tmp - -Echo '/* config.h. Generated by mpw-configure. */' > "{o}"config.new -Echo '#include "mpw.h"' >> "{o}"config.new - -MoveIfChange "{o}"config.new "{o}"config.h diff --git a/binutils/mpw-make.sed b/binutils/mpw-make.sed deleted file mode 100644 index 03abffe18..000000000 --- a/binutils/mpw-make.sed +++ /dev/null @@ -1,115 +0,0 @@ -# Sed commands to finish translating the binutils Unix makefile into MPW syntax. - -# Add a rule. -/^#### .*/a\ -\ -"{o}"underscore.c.o \\Option-f "{o}"underscore.c\ - -# Comment out any alias settings. -/^host_alias =/s/^/#/ -/^target_alias =/s/^/#/ - -# Whack out unused host define bits. -/HDEFINES/s/@HDEFINES@// - -# Don't build specialized tools. -/BUILD_NLMCONV/s/@BUILD_NLMCONV@// -/BUILD_SRCONV/s/@BUILD_SRCONV@// -/BUILD_DLLTOOL/s/@BUILD_DLLTOOL@// - -/UNDERSCORE/s/@UNDERSCORE@/{UNDERSCORE}/ - -# Don't need this. -/@HLDFLAGS@/s/@HLDFLAGS@// - -# Point at the libraries directly. -/@BFDLIB@/s/@BFDLIB@/::bfd:libbfd.o/ -/@OPCODES@/s/@OPCODES@/::opcodes:libopcodes.o/ - -# Whack out target makefile fragment. -/target_makefile_fragment/s/target_makefile_fragment@// - -# Fix and add to the include paths. -/^INCLUDES = .*$/s/$/ -i "{INCDIR}":mpw: -i ::extra-include:/ -/BFDDIR/s/-i {BFDDIR} /-i "{BFDDIR}": / -/INCDIR/s/-i {INCDIR} /-i "{INCDIR}": / - -# Use byacc instead of bison (for now anyway). -/BISON/s/^BISON =.*$/BISON = byacc/ -#/BISONFLAGS/s/^BISONFLAGS =.*$/BISONFLAGS = / - -# Embed the version in symbolic doublequotes that will expand to -# the right thing for each compiler. -/VERSION/s/'"{VERSION}"'/{dq}{VERSION}{dq}/ - -# '+' is a special char to MPW, don't use it ever. -/c++filt/s/c++filt/cplusfilt/ - -# All of the binutils use the same Rez file, change names to refer to it. -/^{[A-Z]*_PROG}/s/$/ "{s}"mac-binutils.r/ -/{[A-Z]*_PROG}\.r/s/{[A-Z]*_PROG}\.r/mac-binutils.r/ - -# There are auto-generated references to BFD .h files that are not -# in the objdir (like bfd.h) but are in the source dir. -/::bfd:lib/s/::bfd:lib\([a-z]*\)\.h/{BFDDIR}:lib\1.h/g - -# Fix the locations of generated files. -/config/s/"{s}"config\.h/"{o}"config.h/g -/config/s/^config\.h/"{o}"config\.h/ -/underscore/s/"{s}"underscore\.c/"{o}"underscore.c/g -/underscore/s/^underscore\.c/"{o}"underscore\.c/ - -# Fix paths to generated source files. -/lex.yy.c/s/"{s}"lex\.yy\.c/"{o}"lex.yy.c/g -/lex.yy.c/s/^lex\.yy\.c/"{o}"lex.yy.c/ -/arlex.c/s/"{s}"arlex\.c/"{o}"arlex.c/g -/arlex.c/s/^arlex\.c/"{o}"arlex.c/ -/y.tab.c/s/"{s}"y\.tab\.c/"{o}"y.tab.c/g -/y.tab.c/s/^y\.tab\.c/"{o}"y.tab.c/ -/arparse.c/s/"{s}"arparse\.c/"{o}"arparse.c/g -/arparse.c/s/^arparse\.c/"{o}"arparse.c/ -/y.tab.h/s/"{s}"y\.tab\.h/"{o}"y.tab.h/g -/y.tab.h/s/^y\.tab\.h/"{o}"y.tab.h/ -/arparse.h/s/"{s}"arparse\.h/"{o}"arparse.h/g -/arparse.h/s/^arparse\.h/"{o}"arparse.h/ - -/"{s}"{INCDIR}/s/"{s}"{INCDIR}/"{INCDIR}"/g - -# The generated lexer may include an ifdef for older Mac compilers that -# needs to work with newer compilers also. -/lex.yy.c/s/Rename -y \([^ ]*\) \([^ ]*\)$/sed -e 's,ifdef macintosh,if defined(macintosh) || defined(__MWERKS__),' \1 > \2/ - -# Fix an over-eagerness. -/echo.*WARNING.*This file/s/'.*'/' '/ - -# Add a "stamps" target. -$a\ -stamps \\Option-f stamp-under\ - -/^install \\Option-f /,/^$/c\ -install \\Option-f all install-only\ -\ -install-only \\Option-f\ - NewFolderRecursive "{bindir}"\ - # Need to copy all the tools\ - For prog in {PROGS}\ - Set progname `echo {prog} | sed -e 's/.new//'`\ - Duplicate -y :{prog} "{bindir}"{progname}\ - End For\ - - -/true/s/ ; @true$// - -# dot files are trouble, remove them and their actions. -/^\.dep/,/^$/d - -# Remove un-useful targets. -/^Makefile \\Option-f/,/^$/d -/^"{o}"config.h \\Option-f/,/^$/d -/^config.status \\Option-f/,/^$/d - -# Don't try to make the demangler's man page, it's useless. -/^{DEMANGLER_PROG}\.1 \\Option-f/,/^$/d -# Don't depend on it either. -/{DEMANGLER_PROG}/s/ {DEMANGLER_PROG}\.1// - diff --git a/binutils/nlmconv.c b/binutils/nlmconv.c deleted file mode 100644 index 5a644e446..000000000 --- a/binutils/nlmconv.c +++ /dev/null @@ -1,2128 +0,0 @@ -/* nlmconv.c -- NLM conversion program - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Ian Lance Taylor . - - 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 "bfd.h" -#include "libiberty.h" -#include "bucomm.h" -#include "safe-ctype.h" - -#include "ansidecl.h" -#include -#include -#include -#include -#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 - -/* 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 localtime -extern struct tm *localtime (); -#endif - -#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 *); - -#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; - 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); - - 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 (strcmp (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 = ©right_hdr_struct; - memset ((void *) ©right_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); - } - 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 (outbfd, NLM_UNINITIALIZED_DATA_NAME); - if (bss_sec == NULL - || ! bfd_set_section_flags (outbfd, bss_sec, SEC_ALLOC) - || ! 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 (outbfd, ".nlmsections"); - if (secsec == NULL) - bfd_fatal (_("make .nlmsections section")); - if (! bfd_set_section_flags (outbfd, secsec, SEC_HAS_CONTENTS)) - bfd_fatal (_("set .nlmsections flags")); - -#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_before_reloc (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_before_reloc (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++) - { - register 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; - - new = xmalloc (strlen (bfd_asymbol_name (sym)) + 1); - new[0] = outlead; - strcpy (new + 1, bfd_asymbol_name (sym) + 1); - sym->name = new; - } - } - } - else - { - char *new; - - new = xmalloc (strlen (bfd_asymbol_name (sym)) + 2); - new[0] = outlead; - strcpy (new + 1, bfd_asymbol_name (sym)); - sym->name = new; - } - } - - /* 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->section = bss_sec; - size = sym->value; - sym->value = bss_sec->_raw_size; - bss_sec->_raw_size += size; - align = 1 << bss_sec->alignment_power; - bss_sec->_raw_size = (bss_sec->_raw_size + align - 1) &~ (align - 1); - 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) - { - register 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))) - { - register 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_before_reloc (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 (outbfd, ".nlmcustom"); - if (custom_section == NULL - || ! bfd_set_section_size (outbfd, custom_section, custom_size) - || ! bfd_set_section_flags (outbfd, custom_section, - SEC_HAS_CONTENTS)) - 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 (outbfd, ".nlmhelp"); - if (help_section == NULL - || ! bfd_set_section_size (outbfd, help_section, help_size) - || ! bfd_set_section_flags (outbfd, help_section, - SEC_HAS_CONTENTS)) - bfd_fatal (_("help section")); - strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); - } - } - 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 (outbfd, ".nlmmessages"); - if (message_section == NULL - || ! bfd_set_section_size (outbfd, message_section, message_size) - || ! bfd_set_section_flags (outbfd, message_section, - SEC_HAS_CONTENTS)) - bfd_fatal (_("message section")); - strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); - } - } - 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 (outbfd, ".nlmmodules"); - if (module_section == NULL - || ! bfd_set_section_size (outbfd, module_section, module_size) - || ! bfd_set_section_flags (outbfd, module_section, - SEC_HAS_CONTENTS)) - 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 (outbfd, ".nlmrpc"); - if (rpc_section == NULL - || ! bfd_set_section_size (outbfd, rpc_section, rpc_size) - || ! bfd_set_section_flags (outbfd, rpc_section, - SEC_HAS_CONTENTS)) - bfd_fatal (_("rpc section")); - strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); - } - } - 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 (outbfd, ".nlmshared"); - if (shared_section == NULL - || ! bfd_set_section_size (outbfd, shared_section, - shared_size) - || ! bfd_set_section_flags (outbfd, shared_section, - SEC_HAS_CONTENTS)) - bfd_fatal (_("shared section")); - strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); - } - } - } - - /* Check whether a version was given. */ - if (strncmp (version_hdr->stamp, "VeRsIoN#", 8) != 0) - non_fatal (_("warning: No version number given")); - - /* At least for now, always create an extended header, because that - is what NLMLINK does. */ - strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); - - strncpy (nlm_cygnus_ext_header (outbfd)->stamp, "CyGnUsEx", 8); - - /* 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; - strncpy (version_hdr->stamp, "VeRsIoN#", 8); - } - -#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 (map_file != NULL) - non_fatal (_("warning: MAP and FULLMAP are 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 (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); - } - len = strlen (output_file); - if (len > NLM_MODULE_NAME_SIZE - 2) - len = NLM_MODULE_NAME_SIZE - 2; - nlm_fixed_header (outbfd)->moduleName[0] = len; - - strncpy (nlm_fixed_header (outbfd)->moduleName + 1, output_file, - NLM_MODULE_NAME_SIZE - 2); - nlm_fixed_header (outbfd)->moduleName[NLM_MODULE_NAME_SIZE - 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= Set the input binary file format\n\ - -O --output-target= Set the output binary file format\n\ - -T --header-file= Read for NLM header information\n\ - -l --linker= Use 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\ -")); - if (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_before_reloc (insec); - - /* FIXME: Why are these necessary? */ - insec->_cooked_size = insec->_raw_size; - insec->reloc_done = TRUE; - - 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; - register arelent **relocs; - register 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, - register 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; - register 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) - { - register 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 (inbfd, ".stubs"); - if (stub_sec == (asection *) NULL - || ! bfd_set_section_flags (inbfd, stub_sec, - (SEC_CODE - | SEC_RELOC - | SEC_ALLOC - | SEC_LOAD)) - || ! 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 (inbfd, ".got"); - if (got_sec == (asection *) NULL - || ! bfd_set_section_flags (inbfd, got_sec, - (SEC_DATA - | SEC_RELOC - | SEC_ALLOC - | SEC_LOAD - | SEC_HAS_CONTENTS)) - || ! 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 = (asymbol *) xmalloc (sizeof (asymbol)); - *newsym = *sym; - newname = (char *) 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, - register arelent ***relocs_ptr, - long *reloc_count_ptr, char *contents, - bfd_size_type contents_size ATTRIBUTE_UNUSED) -{ - reloc_howto_type *toc_howto; - long reloc_count; - register arelent **relocs; - register 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_after_reloc (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) -{ - 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 + 5) * 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; - 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/nlmconv.h b/binutils/nlmconv.h deleted file mode 100644 index 35c84ec0f..000000000 --- a/binutils/nlmconv.h +++ /dev/null @@ -1,84 +0,0 @@ -/* nlmconv.h -- header file for NLM conversion program - Copyright 1993, 2002, 2003 Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Ian Lance Taylor . - - 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/nlmheader.y b/binutils/nlmheader.y deleted file mode 100644 index 64101dbf3..000000000 --- a/binutils/nlmheader.y +++ /dev/null @@ -1,960 +0,0 @@ -%{/* nlmheader.y - parse NLM header specification keywords. - Copyright 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003 - Free Software Foundation, Inc. - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Ian Lance Taylor . - - This bison file parses the commands recognized by the NetWare NLM - linker, except for lists of object files. It stores the - information in global variables. - - This implementation is based on the description in the NetWare Tool - Maker Specification manual, edition 1.0. */ - -#include "ansidecl.h" -#include -#include "safe-ctype.h" -#include "bfd.h" -#include "bucomm.h" -#include "nlm/common.h" -#include "nlm/internal.h" -#include "nlmconv.h" - -/* Information is stored in the structures pointed to by these - variables. */ - -Nlm_Internal_Fixed_Header *fixed_hdr; -Nlm_Internal_Variable_Header *var_hdr; -Nlm_Internal_Version_Header *version_hdr; -Nlm_Internal_Copyright_Header *copyright_hdr; -Nlm_Internal_Extended_Header *extended_hdr; - -/* Procedure named by CHECK. */ -char *check_procedure; -/* File named by CUSTOM. */ -char *custom_file; -/* Whether to generate debugging information (DEBUG). */ -bfd_boolean debug_info; -/* Procedure named by EXIT. */ -char *exit_procedure; -/* Exported symbols (EXPORT). */ -struct string_list *export_symbols; -/* List of files from INPUT. */ -struct string_list *input_files; -/* Map file name (MAP, FULLMAP). */ -char *map_file; -/* Whether a full map has been requested (FULLMAP). */ -bfd_boolean full_map; -/* File named by HELP. */ -char *help_file; -/* Imported symbols (IMPORT). */ -struct string_list *import_symbols; -/* File named by MESSAGES. */ -char *message_file; -/* Autoload module list (MODULE). */ -struct string_list *modules; -/* File named by OUTPUT. */ -char *output_file; -/* File named by SHARELIB. */ -char *sharelib_file; -/* Start procedure name (START). */ -char *start_procedure; -/* VERBOSE. */ -bfd_boolean verbose; -/* RPC description file (XDCDATA). */ -char *rpc_file; - -/* The number of serious errors that have occurred. */ -int parse_errors; - -/* The current symbol prefix when reading a list of import or export - symbols. */ -static char *symbol_prefix; - -/* Parser error message handler. */ -#define yyerror(msg) nlmheader_error (msg); - -/* Local functions. */ -static int yylex (void); -static void nlmlex_file_push (const char *); -static bfd_boolean nlmlex_file_open (const char *); -static int nlmlex_buf_init (void); -static char nlmlex_buf_add (int); -static long nlmlex_get_number (const char *); -static void nlmheader_identify (void); -static void nlmheader_warn (const char *, int); -static void nlmheader_error (const char *); -static struct string_list * string_list_cons (char *, struct string_list *); -static struct string_list * string_list_append (struct string_list *, - struct string_list *); -static struct string_list * string_list_append1 (struct string_list *, - char *); -static char *xstrdup (const char *); - -%} - -%union -{ - char *string; - struct string_list *list; -}; - -/* The reserved words. */ - -%token CHECK CODESTART COPYRIGHT CUSTOM DATE DEBUG 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 -%token QUOTED_STRING - -/* Typed non-terminals. */ -%type symbol_list_opt symbol_list string_list -%type 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 - { - 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; -}; - -struct keyword_tokens_struct keyword_tokens[] = -{ - { "CHECK", CHECK }, - { "CODESTART", CODESTART }, - { "COPYRIGHT", COPYRIGHT }, - { "CUSTOM", CUSTOM }, - { "DATE", DATE }, - { "DEBUG", DEBUG }, - { "DESCRIPTION", DESCRIPTION }, - { "EXIT", EXIT }, - { "EXPORT", EXPORT }, - { "FLAG_ON", FLAG_ON }, - { "FLAG_OFF", FLAG_OFF }, - { "FULLMAP", FULLMAP }, - { "HELP", HELP }, - { "IMPORT", IMPORT }, - { "INPUT", INPUT }, - { "MAP", MAP }, - { "MESSAGES", MESSAGES }, - { "MODULE", MODULE }, - { "MULTIPLE", MULTIPLE }, - { "OS_DOMAIN", OS_DOMAIN }, - { "OUTPUT", OUTPUT }, - { "PSEUDOPREEMPTION", PSEUDOPREEMPTION }, - { "REENTRANT", REENTRANT }, - { "SCREENNAME", SCREENNAME }, - { "SHARELIB", SHARELIB }, - { "STACK", STACK }, - { "STACKSIZE", STACK }, - { "START", START }, - { "SYNCHRONIZE", SYNCHRONIZE }, - { "THREADNAME", THREADNAME }, - { "TYPE", TYPE }, - { "VERBOSE", VERBOSE }, - { "VERSION", VERSIONK }, - { "XDCDATA", XDCDATA } -}; - -#define KEYWORD_COUNT (sizeof (keyword_tokens) / sizeof (keyword_tokens[0])) - -/* The lexer accumulates strings in these variables. */ -static char *lex_buf; -static int lex_size; -static int lex_pos; - -/* Start accumulating strings into the buffer. */ -#define BUF_INIT() \ - ((void) (lex_buf != NULL ? lex_pos = 0 : nlmlex_buf_init ())) - -static int -nlmlex_buf_init (void) -{ - lex_size = 10; - lex_buf = xmalloc (lex_size + 1); - lex_pos = 0; - return 0; -} - -/* Finish a string in the buffer. */ -#define BUF_FINISH() ((void) (lex_buf[lex_pos] = '\0')) - -/* Accumulate a character into the buffer. */ -#define BUF_ADD(c) \ - ((void) (lex_pos < lex_size \ - ? lex_buf[lex_pos++] = (c) \ - : nlmlex_buf_add (c))) - -static char -nlmlex_buf_add (int c) -{ - if (lex_pos >= lex_size) - { - lex_size *= 2; - lex_buf = xrealloc (lex_buf, lex_size + 1); - } - - return lex_buf[lex_pos++] = c; -} - -/* The lexer proper. This is called by the bison generated parsing - code. */ - -static int -yylex (void) -{ - int c; - -tail_recurse: - - c = getc (current.file); - - /* Commas are treated as whitespace characters. */ - while (ISSPACE (c) || c == ',') - { - current.state = IN_LINE; - if (c == '\n') - { - ++current.lineno; - current.state = BEGINNING_OF_LINE; - } - c = getc (current.file); - } - - /* At the end of the file we either pop to the previous file or - finish up. */ - if (c == EOF) - { - fclose (current.file); - free (current.name); - if (current.next == NULL) - return 0; - else - { - struct input *next; - - next = current.next; - current = *next; - free (next); - goto tail_recurse; - } - } - - /* A comment character always means to drop everything until the - next newline. */ - if (c == COMMENT_CHAR) - { - do - { - c = getc (current.file); - } - while (c != '\n'); - ++current.lineno; - current.state = BEGINNING_OF_LINE; - goto tail_recurse; - } - - /* An '@' introduces an include file. */ - if (c == '@') - { - do - { - c = getc (current.file); - if (c == '\n') - ++current.lineno; - } - while (ISSPACE (c)); - BUF_INIT (); - while (! ISSPACE (c) && c != EOF) - { - BUF_ADD (c); - c = getc (current.file); - } - BUF_FINISH (); - - ungetc (c, current.file); - - nlmlex_file_push (lex_buf); - goto tail_recurse; - } - - /* A non-space character at the start of a line must be the start of - a keyword. */ - if (current.state == BEGINNING_OF_LINE) - { - BUF_INIT (); - while (ISALNUM (c) || c == '_') - { - BUF_ADD (TOUPPER (c)); - c = getc (current.file); - } - BUF_FINISH (); - - if (c != EOF && ! ISSPACE (c) && c != ',') - { - nlmheader_identify (); - fprintf (stderr, _("%s:%d: illegal character in keyword: %c\n"), - current.name, current.lineno, c); - } - else - { - unsigned int i; - - for (i = 0; i < KEYWORD_COUNT; i++) - { - if (lex_buf[0] == keyword_tokens[i].keyword[0] - && strcmp (lex_buf, keyword_tokens[i].keyword) == 0) - { - /* Pushing back the final whitespace avoids worrying - about \n here. */ - ungetc (c, current.file); - current.state = IN_LINE; - return keyword_tokens[i].token; - } - } - - nlmheader_identify (); - fprintf (stderr, _("%s:%d: unrecognized keyword: %s\n"), - current.name, current.lineno, lex_buf); - } - - ++parse_errors; - /* Treat the rest of this line as a comment. */ - ungetc (COMMENT_CHAR, current.file); - goto tail_recurse; - } - - /* Parentheses just represent themselves. */ - if (c == '(' || c == ')') - return c; - - /* Handle quoted strings. */ - if (c == '"' || c == '\'') - { - int quote; - int start_lineno; - - quote = c; - start_lineno = current.lineno; - - c = getc (current.file); - BUF_INIT (); - while (c != quote && c != EOF) - { - BUF_ADD (c); - if (c == '\n') - ++current.lineno; - c = getc (current.file); - } - BUF_FINISH (); - - if (c == EOF) - { - nlmheader_identify (); - fprintf (stderr, _("%s:%d: end of file in quoted string\n"), - current.name, start_lineno); - ++parse_errors; - } - - /* FIXME: Possible memory leak. */ - yylval.string = xstrdup (lex_buf); - return QUOTED_STRING; - } - - /* Gather a generic argument. */ - BUF_INIT (); - while (! ISSPACE (c) - && c != ',' - && c != COMMENT_CHAR - && c != '(' - && c != ')') - { - BUF_ADD (c); - c = getc (current.file); - } - BUF_FINISH (); - - ungetc (c, current.file); - - /* FIXME: Possible memory leak. */ - yylval.string = xstrdup (lex_buf); - return STRING; -} - -/* Get a number from a string. */ - -static long -nlmlex_get_number (const char *s) -{ - long ret; - char *send; - - ret = strtol (s, &send, 10); - if (*send != '\0') - nlmheader_warn (_("bad number"), -1); - return ret; -} - -/* Prefix the nlmconv warnings with a note as to where they come from. - We don't use program_name on every warning, because then some - versions of the emacs next-error function can't recognize the line - number. */ - -static void -nlmheader_identify (void) -{ - static int done; - - if (! done) - { - fprintf (stderr, _("%s: problems in NLM command language input:\n"), - program_name); - done = 1; - } -} - -/* Issue a warning. */ - -static void -nlmheader_warn (const char *s, int imax) -{ - nlmheader_identify (); - fprintf (stderr, "%s:%d: %s", current.name, current.lineno, s); - if (imax != -1) - fprintf (stderr, " (max %d)", imax); - fprintf (stderr, "\n"); -} - -/* Report an error. */ - -static void -nlmheader_error (const char *s) -{ - nlmheader_warn (s, -1); - ++parse_errors; -} - -/* Add a string to a string list. */ - -static struct string_list * -string_list_cons (char *s, struct string_list *l) -{ - struct string_list *ret; - - ret = (struct string_list *) xmalloc (sizeof (struct string_list)); - ret->next = l; - ret->string = s; - return ret; -} - -/* Append a string list to another string list. */ - -static struct string_list * -string_list_append (struct string_list *l1, struct string_list *l2) -{ - register struct string_list **pp; - - for (pp = &l1; *pp != NULL; pp = &(*pp)->next) - ; - *pp = l2; - return l1; -} - -/* Append a string to a string list. */ - -static struct string_list * -string_list_append1 (struct string_list *l, char *s) -{ - struct string_list *n; - register struct string_list **pp; - - n = (struct string_list *) xmalloc (sizeof (struct string_list)); - n->next = NULL; - n->string = s; - for (pp = &l; *pp != NULL; pp = &(*pp)->next) - ; - *pp = n; - return l; -} - -/* Duplicate a string in memory. */ - -static char * -xstrdup (const char *s) -{ - unsigned long len; - char *ret; - - len = strlen (s); - ret = xmalloc (len + 1); - strcpy (ret, s); - return ret; -} diff --git a/binutils/nm.c b/binutils/nm.c deleted file mode 100644 index bac7d388c..000000000 --- a/binutils/nm.c +++ /dev/null @@ -1,1605 +0,0 @@ -/* nm.c -- Describe symbol table of a rel file. - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "bfd.h" -#include "progress.h" -#include "bucomm.h" -#include "budemang.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" - -/* 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) - -static void usage (FILE *, int); -static void set_print_radix (char *); -static void set_output_format (char *); -static void display_archive (bfd *); -static bfd_boolean display_file (char *); -static void display_rel_file (bfd *, bfd *); -static long filter_symbols (bfd *, bfd_boolean, void *, long, unsigned int); -static long sort_symbols_by_size - (bfd *, bfd_boolean, void *, long, unsigned int, struct size_sym **); -static void print_symbols - (bfd *, bfd_boolean, void *, long, unsigned int, bfd *); -static void print_size_symbols - (bfd *, bfd_boolean, struct size_sym *, long, bfd *); -static void print_symname (const char *, const char *, bfd *); -static void print_symbol (bfd *, asymbol *, bfd_vma ssize, bfd *); -static void print_symdef_entry (bfd *); - -/* The sorting functions. */ -static int numeric_forward (const void *, const void *); -static int numeric_reverse (const void *, const void *); -static int non_numeric_forward (const void *, const void *); -static int non_numeric_reverse (const void *, const void *); -static int size_forward1 (const void *, const void *); -static int size_forward2 (const void *, const void *); - -/* 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 *); -static void get_relocs (bfd *, asection *, void *); -static const char * get_symbol_type (unsigned int); - -/* 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 line_numbers = 0; /* Print line numbers for 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. */ -#ifndef BFD64 -static char value_format[] = "%08lx"; -#else -#if BFD_HOST_64BIT_LONG -static char value_format[] = "%016lx"; -#else -/* We don't use value_format for this case. */ -#endif -#endif -#ifdef BFD64 -static int print_width = 16; -#else -static int print_width = 8; -#endif -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; - -/* Used to cache the line numbers for a BFD. */ -static bfd *lineno_cache_bfd; -static bfd *lineno_cache_rel_bfd; - -#define OPTION_TARGET 200 - -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, &no_sort, 1}, - {"numeric-sort", no_argument, &sort_numerically, 1}, - {"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, &sort_by_size, 1}, - {"stats", no_argument, &show_stats, 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\ - -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")); - list_supported_targets (program_name, stream); - if (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; -#ifndef BFD64 - value_format[4] = *radix; -#else -#if BFD_HOST_64BIT_LONG - value_format[5] = *radix; -#else - /* This case requires special handling for octal and decimal - printing. */ -#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]; -} - -int main (int, char **); - -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); - - START_PROGRESS (program_name, 0); - - 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': - sort_numerically = 1; - break; - case 'p': - no_sort = 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 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; -} - -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, _(": %d"), type); - else if (type >= STT_LOOS && type <= STT_HIOS) - sprintf (buff, _(": %d"), type); - else - sprintf (buff, _(": %d"), type); - return buff; - } -} - -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)) - { - char buf[30]; - - bfd_sprintf_vma (arfile, buf, (bfd_vma) -1); - print_width = strlen (buf); - (*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); - if (file == NULL) - { - bfd_nonfatal (filename); - return FALSE; - } - - if (bfd_check_format (file, bfd_archive)) - { - display_archive (file); - } - else if (bfd_check_format_matches (file, bfd_object, &matching)) - { - char buf[30]; - - bfd_sprintf_vma (file, buf, (bfd_vma) -1); - print_width = strlen (buf); - (*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; -} - -/* 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 -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 -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 (*(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 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, 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, - 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; -} - -/* 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) - bfd_fatal (bfd_get_filename (abfd)); - - if (symcount == 0) - { - non_fatal (_("%s: no symbols"), bfd_get_filename (abfd)); - return; - } - - /* 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); -} - -/* 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 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, 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) - keep = ((sym->flags & BSF_GLOBAL) != 0 - || (sym->flags & BSF_WEAK) != 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) - { - memcpy (to, from, size); - to += size; - } - } - - return (to - (bfd_byte *) minisyms) / size; -} - -/* Print symbol name NAME, read from ABFD, with printf format FORMAT, - demangling it if requested. */ - -static void -print_symname (const char *format, const char *name, bfd *abfd) -{ - if (do_demangle && *name) - { - char *res = demangle (abfd, name); - - printf (format, res); - free (res); - return; - } - - printf (format, name); -} - -/* Print the symbols. If ARCHIVE_BFD is non-NULL, it is the archive - containing ABFD. */ - -static void -print_symbols (bfd *abfd, bfd_boolean 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, dynamic, from, store); - if (sym == NULL) - bfd_fatal (bfd_get_filename (abfd)); - - print_symbol (abfd, sym, (bfd_vma) 0, archive_bfd); - } -} - -/* Print the symbols when sorting by size. */ - -static void -print_size_symbols (bfd *abfd, bfd_boolean 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; - bfd_vma ssize; - - sym = bfd_minisymbol_to_symbol (abfd, dynamic, from->minisym, store); - if (sym == NULL) - bfd_fatal (bfd_get_filename (abfd)); - - /* For elf we have already computed the correct symbol size. */ - if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) - ssize = from->size; - else - ssize = from->size - bfd_section_vma (abfd, bfd_get_section (sym)); - - print_symbol (abfd, sym, ssize, archive_bfd); - } -} - -/* 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 info; - - seccount = bfd_count_sections (abfd); - - secs = (asection **) xmalloc (seccount * sizeof *secs); - relocs = (arelent ***) xmalloc (seccount * sizeof *relocs); - relcount = (long *) xmalloc (seccount * sizeof *relcount); - - info.secs = secs; - info.relocs = relocs; - info.relcount = relcount; - info.syms = syms; - bfd_map_over_sections (abfd, get_relocs, (void *) &info); - 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_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'); -} - -/* 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 == 8) - 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 == 8) - 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) -{ -#if ! defined (BFD64) || BFD_HOST_64BIT_LONG - printf (value_format, 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 -} - -/* 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 == 16) - 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 == 8) - 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 == 8) - 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)); - } -} - -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)); - } - } -} - -/* 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; -} diff --git a/binutils/not-ranlib.c b/binutils/not-ranlib.c deleted file mode 100644 index 6e61331b7..000000000 --- a/binutils/not-ranlib.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Linked with ar.o to flag that this program is 'ar' (not 'ranlib'). */ - -int is_ranlib = 0; diff --git a/binutils/not-strip.c b/binutils/not-strip.c deleted file mode 100644 index 854a6697a..000000000 --- a/binutils/not-strip.c +++ /dev/null @@ -1,4 +0,0 @@ -/* Linked with objcopy.o to flag that this program is 'objcopy' (not - 'strip'). */ - -int is_strip = 0; diff --git a/binutils/objcopy.c b/binutils/objcopy.c deleted file mode 100644 index 96233986c..000000000 --- a/binutils/objcopy.c +++ /dev/null @@ -1,3065 +0,0 @@ -/* objcopy.c -- copy object file from input to output, optionally massaging it. - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "bfd.h" -#include "progress.h" -#include "bucomm.h" -#include "getopt.h" -#include "libiberty.h" -#include "budbg.h" -#include "filenames.h" -#include "fnmatch.h" -#include "elf-bfd.h" -#include - -/* A list of symbols to explicitly strip out, or to keep. A linked - list is good enough for a small number from the command line, but - this will slow things down a lot if many symbols are being - deleted. */ - -struct symlist -{ - const char *name; - struct symlist *next; -}; - -/* 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; - -#define RETURN_NONFATAL(s) {bfd_nonfatal (s); status = 1; return;} - -static asymbol **isympp = NULL; /* Input symbols. */ -static asymbol **osympp = NULL; /* Output symbols that survive stripping. */ - -/* If `copy_byte' >= 0, copy only that byte of every `interleave' bytes. */ -static int copy_byte = -1; -static int interleave = 4; - -static bfd_boolean verbose; /* Print file and target names. */ -static bfd_boolean preserve_dates; /* Preserve input file timestamp. */ -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_ALL /* Strip all symbols. */ - }; - -/* Which symbols to remove. */ -static enum strip_action strip_symbols; - -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; - -/* What kind of change to perform. */ -enum change_action -{ - CHANGE_IGNORE, - CHANGE_MODIFY, - CHANGE_SET -}; - -/* Structure used to hold lists of sections and actions to take. */ -struct section_list -{ - struct section_list * next; /* Next section to change. */ - const char * name; /* Section name. */ - bfd_boolean used; /* Whether this entry was used. */ - bfd_boolean remove; /* Whether to remove this section. */ - bfd_boolean copy; /* Whether to copy this section. */ - enum change_action change_vma;/* Whether to change or set VMA. */ - bfd_vma vma_val; /* Amount to change by or set to. */ - enum change_action change_lma;/* Whether to change or set LMA. */ - bfd_vma lma_val; /* Amount to change by or set to. */ - bfd_boolean set_flags; /* Whether to set the section flags. */ - 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 alternate machine code? */ -static int 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 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; - -/* List of symbols to strip, keep, localize, keep-global, weaken, - or redefine. */ -static struct symlist *strip_specific_list = NULL; -static struct symlist *keep_specific_list = NULL; -static struct symlist *localize_specific_list = NULL; -static struct symlist *keepglobal_specific_list = NULL; -static struct symlist *weaken_specific_list = 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; - -/* Prefix symbols/sections. */ -static char *prefix_symbols_string = 0; -static char *prefix_sections_string = 0; -static char *prefix_alloc_sections_string = 0; - -/* 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_DEBUGGING, - 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_KEEP_SYMBOLS, - OPTION_LOCALIZE_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_READONLY_TEXT, - OPTION_WRITABLE_TEXT, - OPTION_PURE, - OPTION_IMPURE - }; - -/* Options to handle if running as "strip". */ - -static struct option strip_options[] = -{ - {"discard-all", no_argument, 0, 'x'}, - {"discard-locals", no_argument, 0, 'X'}, - {"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-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-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}, - {"debugging", no_argument, 0, OPTION_DEBUGGING}, - {"discard-all", no_argument, 0, 'x'}, - {"discard-locals", no_argument, 0, 'X'}, - {"format", required_argument, 0, 'F'}, /* Obsolete */ - {"gap-fill", required_argument, 0, OPTION_GAP_FILL}, - {"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", required_argument, 0, 'i'}, - {"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-symbol", required_argument, 0, 'L'}, - {"localize-symbols", required_argument, 0, OPTION_LOCALIZE_SYMBOLS}, - {"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}, - {"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-unneeded", no_argument, 0, OPTION_STRIP_UNNEEDED}, - {"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}, - {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; - -/* Defined in bfd/binary.c. Used to set architecture and machine of input - binary files. */ -extern enum bfd_architecture bfd_external_binary_architecture; -extern unsigned long bfd_external_machine; - -/* Forward declarations. */ -static void setup_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 Assume input file is in format \n\ - -O --output-target Create an output file in format \n\ - -B --binary-architecture Set arch of output file, when input is binary\n\ - -F --target Set both input and output format to \n\ - --debugging Convert debugging information, if possible\n\ - -p --preserve-dates Copy modified/access timestamps to the output\n\ - -j --only-section Only copy section into the output\n\ - --add-gnu-debuglink= Add section .gnu_debuglink linking to \n\ - -R --remove-section Remove section 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 Do not copy symbol \n\ - --only-keep-debug Strip everything but the debug information\n\ - -K --keep-symbol Only copy symbol \n\ - -L --localize-symbol Force symbol to be marked as a local\n\ - -G --keep-global-symbol Localize all symbols except \n\ - -W --weaken-symbol Force symbol to be marked as a weak\n\ - --weaken Force all global symbols to be marked as weak\n\ - -w --wildcard Permit wildcard in symbol comparasion\n\ - -x --discard-all Remove all non-global symbols\n\ - -X --discard-locals Remove any compiler-generated symbols\n\ - -i --interleave Only copy one out of every bytes\n\ - -b --byte Select byte in every interleaved block\n\ - --gap-fill Fill gaps between sections with \n\ - --pad-to Pad the last section up to address \n\ - --set-start Set the start address to \n\ - {--change-start|--adjust-start} \n\ - Add to the start address\n\ - {--change-addresses|--adjust-vma} \n\ - Add to LMA, VMA and start addresses\n\ - {--change-section-address|--adjust-section-vma} {=|+|-}\n\ - Change LMA and VMA of section by \n\ - --change-section-lma {=|+|-}\n\ - Change the LMA of section by \n\ - --change-section-vma {=|+|-}\n\ - Change the VMA of section by \n\ - {--[no-]change-warnings|--[no-]adjust-warnings}\n\ - Warn if a named section does not exist\n\ - --set-section-flags =\n\ - Set section 's properties to \n\ - --add-section = Add section found in to output\n\ - --rename-section =[,] Rename section to \n\ - --change-leading-char Force output format's leading character style\n\ - --remove-leading-char Remove leading character from global symbols\n\ - --redefine-sym = Redefine symbol name to \n\ - --redefine-syms --redefine-sym for all symbol pairs \n\ - listed in \n\ - --srec-len Restrict the length of generated Srecords\n\ - --srec-forceS3 Restrict the type of generated Srecords to S3\n\ - --strip-symbols -N for all symbols listed in \n\ - --keep-symbols -K for all symbols listed in \n\ - --localize-symbols -L for all symbols listed in \n\ - --keep-global-symbols -G for all symbols listed in \n\ - --weaken-symbols -W for all symbols listed in \n\ - --alt-machine-code 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 Add to start of every symbol name\n\ - --prefix-sections Add to start of every section name\n\ - --prefix-alloc-sections \n\ - Add 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\ -")); - list_supported_targets (program_name, stream); - if (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 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= Assume input file is in format \n\ - -O --output-target= Create an output file in format \n\ - -F --target= Set both input and output format to \n\ - -p --preserve-dates Copy modified/access timestamps to the output\n\ - -R --remove-section= Remove section 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= Do not copy symbol \n\ - -K --keep-symbol= Only copy symbol \n\ - -w --wildcard Permit wildcard in symbol comparasion\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 Place stripped output into \n\ -")); - - list_supported_targets (program_name, stream); - if (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_SHARED); - PARSE_FLAG ("contents", SEC_HAS_CONTENTS); -#undef PARSE_FLAG - else - { - char *copy; - - copy = 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"); - } - - s = snext; - } - while (s != NULL); - - return ret; -} - -/* Find and optionally add an entry in the change_sections list. */ - -static struct section_list * -find_section_list (const char *name, bfd_boolean add) -{ - struct section_list *p; - - for (p = change_sections; p != NULL; p = p->next) - if (strcmp (p->name, name) == 0) - return p; - - if (! add) - return NULL; - - p = xmalloc (sizeof (struct section_list)); - p->name = name; - p->used = FALSE; - p->remove = FALSE; - p->copy = FALSE; - p->change_vma = CHANGE_IGNORE; - p->change_lma = CHANGE_IGNORE; - p->vma_val = 0; - p->lma_val = 0; - p->set_flags = FALSE; - p->flags = 0; - - p->next = change_sections; - change_sections = p; - - return p; -} - -/* Add a symbol to strip_specific_list. */ - -static void -add_specific_symbol (const char *name, struct symlist **list) -{ - struct symlist *tmp_list; - - tmp_list = xmalloc (sizeof (struct symlist)); - tmp_list->name = name; - tmp_list->next = *list; - *list = tmp_list; -} - -/* 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, struct symlist **list) -{ - off_t size; - FILE * f; - char * line; - char * buffer; - unsigned int line_count; - - size = get_file_size (filename); - if (size == 0) - return; - - buffer = 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 (_("Ignoring rubbish found on line %d of %s"), - line_count, filename); - } - - * name_end = '\0'; - - if (name_end > name) - add_specific_symbol (name, list); - - /* 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 bfd_boolean -is_specified_symbol (const char *name, struct symlist *list) -{ - struct symlist *tmp_list; - - if (wildcard) - { - for (tmp_list = list; tmp_list; tmp_list = tmp_list->next) - if (*(tmp_list->name) != '!') - { - if (!fnmatch (tmp_list->name, name, 0)) - return TRUE; - } - else - { - if (fnmatch (tmp_list->name + 1, name, 0)) - return TRUE; - } - } - else - { - for (tmp_list = list; tmp_list; tmp_list = tmp_list->next) - if (strcmp (name, tmp_list->name) == 0) - return TRUE; - } - - return FALSE; -} - -/* See if a section is being removed. */ - -static bfd_boolean -is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec) -{ - if (sections_removed || sections_copied) - { - struct section_list *p; - - p = find_section_list (bfd_get_section_name (abfd, sec), FALSE); - - if (sections_removed && p != NULL && p->remove) - return TRUE; - if (sections_copied && (p == NULL || ! p->copy)) - 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) - return TRUE; - - if (strip_symbols == STRIP_NONDEBUG) - return FALSE; - } - - 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 & (HAS_RELOC | EXEC_P | DYNAMIC)) - == HAS_RELOC; - - for (; src_count < symcount; src_count++) - { - asymbol *sym = from[src_count]; - flagword flags = sym->flags; - char *name = (char *) bfd_asymbol_name (sym); - int keep; - 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 = 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 = 0; - 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 = 1; - else if (relocatable /* Relocatable file. */ - && (flags & (BSF_GLOBAL | BSF_WEAK)) != 0) - keep = 1; - 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 = 1; - 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_get_section (sym)->comdat) - /* COMDAT sections store special information in local - symbols, so we cannot risk stripping any of them. */ - keep = 1; - 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_list)) - keep = 0; - if (!keep && is_specified_symbol (name, keep_specific_list)) - keep = 1; - if (keep && is_strip_section (abfd, bfd_get_section (sym))) - keep = 0; - - if (keep && (flags & BSF_GLOBAL) != 0 - && (weaken || is_specified_symbol (name, weaken_specific_list))) - { - sym->flags &=~ BSF_GLOBAL; - sym->flags |= BSF_WEAK; - } - if (keep && !undefined && (flags & (BSF_GLOBAL | BSF_WEAK)) - && (is_specified_symbol (name, localize_specific_list) - || (keepglobal_specific_list != NULL - && ! is_specified_symbol (name, keepglobal_specific_list)))) - { - sym->flags &= ~(BSF_GLOBAL | BSF_WEAK); - sym->flags |= BSF_LOCAL; - } - - if (keep) - 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 = 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 = xmalloc (bufsize); - - 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 = xrealloc (buf, bufsize); - } - 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 = xrealloc (buf, bufsize); - } - 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: garbage at end of line %d"), filename, lineno); - comment: - if (len != 0 && (outsym_off == 0 || outsym_off == len)) - fatal (_("%s: missing new symbol name at line %d"), 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: premature end of file at line %d"), filename, lineno); - - free (buf); -} - -/* Copy object file IBFD onto OBFD. - Returns TRUE upon success, FALSE otherwise. */ - -static bfd_boolean -copy_object (bfd *ibfd, bfd *obfd) -{ - 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 (bfd_get_filename (obfd)); - return FALSE; - } - - if (verbose) - printf (_("copy from %s(%s) to %s(%s)\n"), - bfd_get_filename (ibfd), bfd_get_target (ibfd), - bfd_get_filename (obfd), bfd_get_target (obfd)); - - 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 (!bfd_set_start_address (obfd, start) - || !bfd_set_file_flags (obfd, flags)) - { - bfd_nonfatal (bfd_get_filename (ibfd)); - return FALSE; - } - } - - /* Copy architecture of input file to output file. */ - iarch = bfd_get_arch (ibfd); - imach = bfd_get_mach (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) - fatal (_("Unable to recognise the format of the input file %s"), - bfd_get_filename (ibfd)); - else - { - non_fatal (_("Warning: 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 (bfd_get_filename (ibfd)); - return FALSE; - } - - if (isympp) - free (isympp); - - if (osympp != isympp) - free (osympp); - - /* 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 (add_sections != NULL) - { - struct section_add *padd; - struct section_list *pset; - - for (padd = add_sections; padd != NULL; padd = padd->next) - { - flagword flags; - - padd->section = bfd_make_section (obfd, padd->name); - if (padd->section == NULL) - { - non_fatal (_("can't create section `%s': %s"), - padd->name, bfd_errmsg (bfd_get_error ())); - return FALSE; - } - - if (! bfd_set_section_size (obfd, padd->section, padd->size)) - { - bfd_nonfatal (bfd_get_filename (obfd)); - return FALSE; - } - - pset = find_section_list (padd->name, FALSE); - if (pset != NULL) - pset->used = TRUE; - - if (pset != NULL && pset->set_flags) - flags = pset->flags | SEC_HAS_CONTENTS; - else - flags = SEC_HAS_CONTENTS | SEC_READONLY | SEC_DATA; - - if (! bfd_set_section_flags (obfd, padd->section, flags)) - { - bfd_nonfatal (bfd_get_filename (obfd)); - return FALSE; - } - - if (pset != NULL) - { - if (pset->change_vma != CHANGE_IGNORE) - if (! bfd_set_section_vma (obfd, padd->section, - pset->vma_val)) - { - bfd_nonfatal (bfd_get_filename (obfd)); - return FALSE; - } - - if (pset->change_lma != CHANGE_IGNORE) - { - padd->section->lma = pset->lma_val; - - if (! bfd_set_section_alignment - (obfd, padd->section, - bfd_section_alignment (obfd, padd->section))) - { - bfd_nonfatal (bfd_get_filename (obfd)); - return FALSE; - } - } - } - } - } - - if (gnu_debuglink_filename != NULL) - { - gnu_debuglink_section = bfd_create_gnu_debuglink_section - (obfd, gnu_debuglink_filename); - - if (gnu_debuglink_section == NULL) - { - bfd_nonfatal (gnu_debuglink_filename); - return FALSE; - } - } - - if (bfd_count_sections (obfd) == 0) - { - non_fatal (_("there are no sections to be copied!")); - return FALSE; - } - - if (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 = xmalloc (c * sizeof (asection *)); - set = osections; - bfd_map_over_sections (obfd, get_sections, &set); - - qsort (osections, c, sizeof (asection *), compare_section_lma); - - gaps = 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))) - { - non_fatal (_("Can't fill gap after %s: %s"), - bfd_get_section_name (obfd, osections[i]), - bfd_errmsg (bfd_get_error ())); - 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)) - { - non_fatal (_("Can't add padding to %s: %s"), - bfd_get_section_name (obfd, osections[c - 1]), - bfd_errmsg (bfd_get_error ())); - 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; - symsize = bfd_get_symtab_upper_bound (ibfd); - if (symsize < 0) - { - bfd_nonfatal (bfd_get_filename (ibfd)); - return FALSE; - } - - osympp = isympp = xmalloc (symsize); - symcount = bfd_canonicalize_symtab (ibfd, isympp); - if (symcount < 0) - { - bfd_nonfatal (bfd_get_filename (ibfd)); - return FALSE; - } - - if (convert_debugging) - dhandle = read_debugging_info (ibfd, isympp, symcount); - - if (strip_symbols == STRIP_DEBUG - || strip_symbols == STRIP_ALL - || strip_symbols == STRIP_UNNEEDED - || strip_symbols == STRIP_NONDEBUG - || discard_locals != LOCALS_UNDEF - || strip_specific_list != NULL - || keep_specific_list != NULL - || localize_specific_list != NULL - || keepglobal_specific_list != NULL - || weaken_specific_list != NULL - || 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 = 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 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 (bfd_get_filename (obfd)); - return FALSE; - } - } - } - - if (gnu_debuglink_filename != NULL) - { - if (! bfd_fill_in_gnu_debuglink_section - (obfd, gnu_debuglink_section, gnu_debuglink_filename)) - { - bfd_nonfatal (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 = 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 (bfd_get_filename (obfd)); - return FALSE; - } - - left -= now; - off += now; - } - } - } - } - - /* 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_get_flavour (ibfd) == bfd_target_elf_flavour - && strip_symbols == STRIP_NONDEBUG) - /* Do not copy the private data when creating an ELF format - debug info file. We do not want the program headers. */ - ; - else if (! bfd_copy_private_bfd_data (ibfd, obfd)) - { - non_fatal (_("%s: error copying private BFD data: %s"), - bfd_get_filename (obfd), - bfd_errmsg (bfd_get_error ())); - 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 - && ! bfd_alt_mach_code (obfd, use_alt_mach_code)) - non_fatal (_("unknown alternate machine code, ignored")); - - return TRUE; -} - -#undef MKDIR -#if defined (_WIN32) && !defined (__CYGWIN32__) -#define MKDIR(DIR, MODE) mkdir (DIR) -#else -#define MKDIR(DIR, MODE) mkdir (DIR, MODE) -#endif - -/* Read each archive element in turn from IBFD, copy the - contents to temp file, and keep the temp file handle. */ - -static void -copy_archive (bfd *ibfd, bfd *obfd, const char *output_target) -{ - struct name_list - { - struct name_list *next; - const char *name; - bfd *obfd; - } *list, *l; - bfd **ptr = &obfd->archive_head; - bfd *this_element; - char *dir = make_tempname (bfd_get_filename (obfd)); - - /* Make a temp directory to hold the contents. */ - if (MKDIR (dir, 0700) != 0) - fatal (_("cannot mkdir %s for archive copying (error: %s)"), - dir, strerror (errno)); - - obfd->has_armap = ibfd->has_armap; - - list = NULL; - - this_element = bfd_openr_next_archived_file (ibfd, NULL); - - if (!bfd_set_format (obfd, bfd_get_format (ibfd))) - RETURN_NONFATAL (bfd_get_filename (obfd)); - - while (!status && this_element != NULL) - { - char *output_name; - bfd *output_bfd; - bfd *last_element; - struct stat buf; - int stat_status = 0; - bfd_boolean delete = TRUE; - - /* 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_tempname (output_name); - if (MKDIR (output_name, 0700) != 0) - fatal (_("cannot mkdir %s for archive copying (error: %s)"), - output_name, strerror (errno)); - - l = 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); - } - - output_bfd = bfd_openw (output_name, output_target); - 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 = xmalloc (sizeof (struct name_list)); - l->name = output_name; - l->next = list; - list = l; - - if (output_bfd == NULL) - RETURN_NONFATAL (output_name); - - if (bfd_check_format (this_element, bfd_object)) - delete = ! copy_object (this_element, output_bfd); - - if (!bfd_close (output_bfd)) - { - bfd_nonfatal (bfd_get_filename (output_bfd)); - /* Error in new object file. Don't change archive. */ - status = 1; - } - - if (delete) - { - 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->next; - - last_element = this_element; - - this_element = bfd_openr_next_archived_file (ibfd, last_element); - - bfd_close (last_element); - } - } - *ptr = NULL; - - if (!bfd_close (obfd)) - RETURN_NONFATAL (bfd_get_filename (obfd)); - - if (!bfd_close (ibfd)) - RETURN_NONFATAL (bfd_get_filename (ibfd)); - - /* 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); -} - -/* The top-level control. */ - -static void -copy_file (const char *input_filename, const char *output_filename, - const char *input_target, const char *output_target) -{ - bfd *ibfd; - char **obj_matching; - char **core_matching; - - if (get_file_size (input_filename) < 1) - { - 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) - RETURN_NONFATAL (input_filename); - - if (bfd_check_format (ibfd, bfd_archive)) - { - 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); - - obfd = bfd_openw (output_filename, output_target); - if (obfd == NULL) - RETURN_NONFATAL (output_filename); - - copy_archive (ibfd, obfd, output_target); - } - else if (bfd_check_format_matches (ibfd, bfd_object, &obj_matching)) - { - bfd *obfd; - bfd_boolean delete; - 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) - RETURN_NONFATAL (output_filename); - - delete = ! copy_object (ibfd, obfd); - - if (!bfd_close (obfd)) - RETURN_NONFATAL (output_filename); - - if (!bfd_close (ibfd)) - RETURN_NONFATAL (input_filename); - - if (delete) - { - unlink (output_filename); - status = 1; - } - } - 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 (input_filename); - - 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 * rename; - - /* Check for conflicts first. */ - for (rename = section_rename_list; rename != NULL; rename = rename->next) - if (strcmp (rename->old_name, old_name) == 0) - { - /* Silently ignore duplicate definitions. */ - if (strcmp (rename->new_name, new_name) == 0 - && rename->flags == flags) - return; - - fatal (_("Multiple renames of section %s"), old_name); - } - - rename = xmalloc (sizeof (* rename)); - - rename->old_name = old_name; - rename->new_name = new_name; - rename->flags = flags; - rename->next = section_rename_list; - - section_rename_list = rename; -} - -/* 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 * rename; - - /* Default to using the flags of the input section. */ - * returned_flags = bfd_get_section_flags (ibfd, isection); - - for (rename = section_rename_list; rename != NULL; rename = rename->next) - if (strcmp (rename->old_name, old_name) == 0) - { - if (rename->flags != (flagword) -1) - * returned_flags = rename->flags; - - return rename->new_name; - } - - return old_name; -} - -/* 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 = 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; - - if (is_strip_section (ibfd, isection)) - return; - - p = find_section_list (bfd_section_name (ibfd, isection), FALSE); - if (p != NULL) - p->used = TRUE; - - /* 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 = xmalloc (strlen (prefix) + strlen (name) + 1); - strcpy (n, prefix); - strcat (n, name); - name = n; - } - - osection = bfd_make_section_anyway (obfd, name); - - if (osection == NULL) - { - err = _("making"); - goto loser; - } - - size = bfd_section_size (ibfd, isection); - if (copy_byte >= 0) - size = (size + interleave - 1) / interleave; - if (! bfd_set_section_size (obfd, osection, size)) - { - err = _("size"); - goto loser; - } - - vma = bfd_section_vma (ibfd, isection); - if (p != NULL && p->change_vma == CHANGE_MODIFY) - vma += p->vma_val; - else if (p != NULL && p->change_vma == CHANGE_SET) - vma = p->vma_val; - else - vma += change_section_address; - - if (! bfd_set_section_vma (obfd, osection, vma)) - { - err = _("vma"); - goto loser; - } - - lma = isection->lma; - if ((p != NULL) && p->change_lma != CHANGE_IGNORE) - { - if (p->change_lma == CHANGE_MODIFY) - lma += p->lma_val; - else if (p->change_lma == CHANGE_SET) - lma = p->lma_val; - else - abort (); - } - 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 = _("alignment"); - goto loser; - } - - if (p != NULL && p->set_flags) - flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC)); - else if (strip_symbols == STRIP_NONDEBUG && (flags & SEC_ALLOC) != 0) - { - flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD); - if (obfd->xvec->flavour == bfd_target_elf_flavour) - elf_section_type (osection) = SHT_NOBITS; - } - - if (!bfd_set_section_flags (obfd, osection, flags)) - { - err = _("flags"); - 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; - - /* Allow the BFD backend to copy any private data it understands - from the input section to the output section. */ - if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour - && strip_symbols == STRIP_NONDEBUG) - /* Do not copy the private data when creating an ELF format - debug info file. We do not want the program headers. */ - ; - else if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection)) - { - err = _("private data"); - goto loser; - } - - /* All went well. */ - return; - -loser: - non_fatal (_("%s: section `%s': error in %s: %s"), - bfd_get_filename (ibfd), - bfd_section_name (ibfd, isection), - err, bfd_errmsg (bfd_get_error ())); - status = 1; -} - -/* Copy the data of input section ISECTION of IBFD - to an output section with the same name in OBFD. - If stripping then don't copy any relocation info. */ - -static void -copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg) -{ - bfd *obfd = obfdarg; - struct section_list *p; - arelent **relpp; - long relcount; - sec_ptr osection; - bfd_size_type size; - long relsize; - flagword flags; - - /* If we have already failed earlier on, - do not keep on generating complaints now. */ - if (status != 0) - return; - - if (is_strip_section (ibfd, isection)) - return; - - flags = bfd_get_section_flags (ibfd, isection); - if ((flags & SEC_GROUP) != 0) - return; - - osection = isection->output_section; - size = bfd_get_section_size_before_reloc (isection); - - if (size == 0 || osection == 0) - return; - - p = find_section_list (bfd_get_section_name (ibfd, isection), FALSE); - - /* Core files do not need to be relocated. */ - if (bfd_get_format (obfd) == bfd_core) - 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 - RETURN_NONFATAL (bfd_get_filename (ibfd)); - } - } - - if (relsize == 0) - bfd_set_reloc (obfd, osection, NULL, 0); - else - { - relpp = xmalloc (relsize); - relcount = bfd_canonicalize_reloc (ibfd, isection, relpp, isympp); - if (relcount < 0) - RETURN_NONFATAL (bfd_get_filename (ibfd)); - - 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 = xmalloc (relsize); - for (i = 0; i < relcount; i++) - if (is_specified_symbol (bfd_asymbol_name (*relpp[i]->sym_ptr_ptr), - keep_specific_list)) - 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) - free (relpp); - } - - isection->_cooked_size = isection->_raw_size; - isection->reloc_done = TRUE; - - if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS - && bfd_get_section_flags (obfd, osection) & SEC_HAS_CONTENTS) - { - void *memhunk = xmalloc (size); - - if (!bfd_get_section_contents (ibfd, isection, memhunk, 0, size)) - RETURN_NONFATAL (bfd_get_filename (ibfd)); - - if (copy_byte >= 0) - { - /* Keep only every `copy_byte'th byte in MEMHUNK. */ - char *from = (char *) memhunk + copy_byte; - char *to = memhunk; - char *end = (char *) memhunk + size; - - for (; from < end; from += interleave) - *to++ = *from; - - size = (size + interleave - 1 - copy_byte) / interleave; - osection->lma /= interleave; - } - - if (!bfd_set_section_contents (obfd, osection, memhunk, 0, size)) - RETURN_NONFATAL (bfd_get_filename (obfd)); - - free (memhunk); - } - else if (p != NULL && p->set_flags && (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)) - RETURN_NONFATAL (bfd_get_filename (obfd)); - 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 = 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 = arg1; - const asection *const *sec2 = 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 ((*sec1)->_raw_size > (*sec2)->_raw_size) - return 1; - else if ((*sec1)->_raw_size < (*sec2)->_raw_size) - 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 = 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 = 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; - - if (! write_stabs_in_sections_debugging_info (obfd, dhandle, &syms, - &symsize, &strings, - &stringsize)) - return FALSE; - - stabsec = bfd_make_section (obfd, ".stab"); - stabstrsec = bfd_make_section (obfd, ".stabstr"); - 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_set_section_flags (obfd, stabsec, - (SEC_HAS_CONTENTS - | SEC_READONLY - | SEC_DEBUGGING)) - || ! bfd_set_section_flags (obfd, stabstrsec, - (SEC_HAS_CONTENTS - | SEC_READONLY - | SEC_DEBUGGING))) - { - non_fatal (_("%s: can't create debugging section: %s"), - bfd_get_filename (obfd), - bfd_errmsg (bfd_get_error ())); - 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)) - { - non_fatal (_("%s: can't set debugging section contents: %s"), - bfd_get_filename (obfd), - bfd_errmsg (bfd_get_error ())); - return FALSE; - } - - return TRUE; - } - - non_fatal (_("%s: don't know how to write debugging information for %s"), - bfd_get_filename (obfd), bfd_get_target (obfd)); - return FALSE; -} - -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; - struct section_list *p; - 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': - p = find_section_list (optarg, TRUE); - p->remove = TRUE; - 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_UNNEEDED: - strip_symbols = STRIP_UNNEEDED; - break; - case 'K': - add_specific_symbol (optarg, &keep_specific_list); - break; - case 'N': - add_specific_symbol (optarg, &strip_specific_list); - break; - case 'o': - output_file = optarg; - break; - case 'p': - preserve_dates = 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_ONLY_KEEP_DEBUG: - strip_symbols = STRIP_NONDEBUG; - 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 is to strip all symbols. */ - if (strip_symbols == STRIP_UNDEF - && discard_locals == LOCALS_UNDEF - && strip_specific_list == NULL) - 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) - 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) - tmpname = output_file; - else - tmpname = make_tempname (argv[i]); - status = 0; - - copy_file (argv[i], tmpname, input_target, output_target); - if (status == 0) - { - if (preserve_dates) - set_times (tmpname, &statbuf); - if (output_file == NULL) - smart_rename (tmpname, argv[i], preserve_dates); - status = hold_status; - } - else - unlink (tmpname); - if (output_file == NULL) - free (tmpname); - } - - return 0; -} - -static int -copy_main (int argc, char *argv[]) -{ - char * binary_architecture = NULL; - char *input_filename = NULL; - char *output_filename = NULL; - 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 section_list *p; - struct stat statbuf; - - 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': - binary_architecture = optarg; - break; - - case 'i': - interleave = atoi (optarg); - if (interleave < 1) - fatal (_("interleave 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': - p = find_section_list (optarg, TRUE); - if (p->remove) - fatal (_("%s both copied and removed"), optarg); - p->copy = TRUE; - sections_copied = TRUE; - break; - - case 'R': - p = find_section_list (optarg, TRUE); - if (p->copy) - fatal (_("%s both copied and removed"), optarg); - p->remove = TRUE; - sections_removed = TRUE; - break; - - case 'S': - strip_symbols = STRIP_ALL; - break; - - case 'g': - strip_symbols = STRIP_DEBUG; - break; - - case OPTION_STRIP_UNNEEDED: - strip_symbols = STRIP_UNNEEDED; - break; - - case OPTION_ONLY_KEEP_DEBUG: - strip_symbols = STRIP_NONDEBUG; - break; - - case OPTION_ADD_GNU_DEBUGLINK: - gnu_debuglink_filename = optarg; - break; - - case 'K': - add_specific_symbol (optarg, &keep_specific_list); - break; - - case 'N': - add_specific_symbol (optarg, &strip_specific_list); - break; - - case 'L': - add_specific_symbol (optarg, &localize_specific_list); - break; - - case 'G': - add_specific_symbol (optarg, &keepglobal_specific_list); - break; - - case 'W': - add_specific_symbol (optarg, &weaken_specific_list); - break; - - case 'p': - preserve_dates = TRUE; - 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; - off_t size; - struct section_add *pa; - int len; - char *name; - FILE *f; - - s = strchr (optarg, '='); - - if (s == NULL) - fatal (_("bad format for %s"), "--add-section"); - - size = get_file_size (s + 1); - if (size < 1) - break; - - pa = xmalloc (sizeof (struct section_add)); - - len = s - optarg; - name = xmalloc (len + 1); - strncpy (name, optarg, len); - name[len] = '\0'; - pa->name = name; - - pa->filename = s + 1; - pa->size = size; - pa->contents = xmalloc (size); - - f = fopen (pa->filename, FOPEN_RB); - - if (f == NULL) - fatal (_("cannot open: %s: %s"), - pa->filename, strerror (errno)); - - if (fread (pa->contents, 1, pa->size, f) == 0 - || ferror (f)) - fatal (_("%s: fread failed"), pa->filename); - - 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: - { - const char *s; - int len; - char *name; - char *option = NULL; - bfd_vma val; - enum change_action what = CHANGE_IGNORE; - - switch (c) - { - case OPTION_CHANGE_SECTION_ADDRESS: - option = "--change-section-address"; - break; - case OPTION_CHANGE_SECTION_LMA: - option = "--change-section-lma"; - break; - case OPTION_CHANGE_SECTION_VMA: - option = "--change-section-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); - } - } - - len = s - optarg; - name = xmalloc (len + 1); - strncpy (name, optarg, len); - name[len] = '\0'; - - p = find_section_list (name, TRUE); - - val = parse_vma (s + 1, option); - - switch (*s) - { - case '=': what = CHANGE_SET; break; - case '-': val = - val; /* Drop through. */ - case '+': what = CHANGE_MODIFY; break; - } - - switch (c) - { - case OPTION_CHANGE_SECTION_ADDRESS: - p->change_vma = what; - p->vma_val = val; - /* Drop through. */ - - case OPTION_CHANGE_SECTION_LMA: - p->change_lma = what; - p->lma_val = val; - break; - - case OPTION_CHANGE_SECTION_VMA: - p->change_vma = what; - 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_DEBUGGING: - convert_debugging = TRUE; - 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 = xmalloc (len + 1); - strncpy (source, optarg, len); - source[len] = '\0'; - - nextarg = s + 1; - len = strlen (nextarg); - target = 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: - { - 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 = xmalloc (len + 1); - strncpy (name, optarg, len); - name[len] = '\0'; - - p = find_section_list (name, TRUE); - - p->set_flags = TRUE; - 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 = 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 = 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_list); - break; - - case OPTION_KEEP_SYMBOLS: - add_specific_symbols (optarg, &keep_specific_list); - break; - - case OPTION_LOCALIZE_SYMBOLS: - add_specific_symbols (optarg, &localize_specific_list); - break; - - case OPTION_KEEPGLOBAL_SYMBOLS: - add_specific_symbols (optarg, &keepglobal_specific_list); - break; - - case OPTION_WEAKEN_SYMBOLS: - add_specific_symbols (optarg, &weaken_specific_list); - break; - - case OPTION_ALT_MACH_CODE: - use_alt_mach_code = atoi (optarg); - if (use_alt_mach_code <= 0) - fatal (_("alternate machine code index must be positive")); - 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 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 (copy_byte >= interleave) - fatal (_("byte number must be less than interleave")); - - if (optind == argc || optind + 2 < argc) - copy_usage (stderr, 1); - - input_filename = argv[optind]; - if (optind + 1 < argc) - output_filename = argv[optind + 1]; - - /* 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; - - if (binary_architecture != NULL) - { - if (input_target && strcmp (input_target, "binary") == 0) - { - const bfd_arch_info_type * temp_arch_info; - - temp_arch_info = bfd_scan_arch (binary_architecture); - - if (temp_arch_info != NULL) - { - bfd_external_binary_architecture = temp_arch_info->arch; - bfd_external_machine = temp_arch_info->mach; - } - else - fatal (_("architecture %s unknown"), binary_architecture); - } - else - { - non_fatal (_("Warning: input target 'binary' required for binary architecture parameter.")); - non_fatal (_(" Argument %s ignored"), binary_architecture); - } - } - - 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 || strcmp (input_filename, output_filename) == 0) - { - char *tmpname = make_tempname (input_filename); - - copy_file (input_filename, tmpname, input_target, output_target); - if (status == 0) - { - if (preserve_dates) - set_times (tmpname, &statbuf); - smart_rename (tmpname, input_filename, preserve_dates); - } - else - unlink (tmpname); - } - else - { - copy_file (input_filename, output_filename, input_target, output_target); - - if (status == 0 && preserve_dates) - set_times (output_filename, &statbuf); - } - - if (change_warn) - { - for (p = change_sections; p != NULL; p = p->next) - { - if (! p->used) - { - if (p->change_vma != CHANGE_IGNORE) - { - char buff [20]; - - sprintf_vma (buff, p->vma_val); - - /* xgettext:c-format */ - non_fatal (_("%s %s%c0x%s never used"), - "--change-section-vma", - p->name, - p->change_vma == CHANGE_SET ? '=' : '+', - buff); - } - - if (p->change_lma != CHANGE_IGNORE) - { - char buff [20]; - - sprintf_vma (buff, p->lma_val); - - /* xgettext:c-format */ - non_fatal (_("%s %s%c0x%s never used"), - "--change-section-lma", - p->name, - p->change_lma == CHANGE_SET ? '=' : '+', - 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); - - 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); - } - - if (is_strip) - strip_main (argc, argv); - else - copy_main (argc, argv); - - END_PROGRESS (program_name); - - return status; -} diff --git a/binutils/objdump.c b/binutils/objdump.c deleted file mode 100644 index f67aacb88..000000000 --- a/binutils/objdump.c +++ /dev/null @@ -1,2924 +0,0 @@ -/* objdump.c -- dump information about an object file. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 "bfd.h" -#include "bfdver.h" -#include "progress.h" -#include "bucomm.h" -#include "budemang.h" -#include "getopt.h" -#include "safe-ctype.h" -#include "dis-asm.h" -#include "libiberty.h" -#include "demangle.h" -#include "debug.h" -#include "budbg.h" - -/* Internal headers for the ELF .stab-dump code - sorry. */ -#define BYTES_IN_WORD 32 -#include "aout/aout64.h" - -#ifdef NEED_DECLARATION_FPRINTF -/* This is needed by init_disassemble_info(). */ -extern int fprintf (FILE *, const char *, ...); -#endif - -/* 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 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_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 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 bfd_vma adjust_section_vma = 0; /* --adjust-vma */ -static int file_start_context = 0; /* --file-start-context */ - -/* Pointer to an array of section names provided by - one or more "-j secname" command line options. */ -static char **only; -/* The total number of slots in the only[] array. */ -static size_t only_size = 0; -/* The number of occupied slots in the only[] array. */ -static size_t only_used = 0; - -/* 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; -}; - -/* 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; - -/* 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 void -usage (FILE *stream, int status) -{ - fprintf (stream, _("Usage: %s \n"), program_name); - fprintf (stream, _(" Display information from object .\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\ - -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\ -")); - if (status != 2) - { - 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\ - -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")); - list_supported_targets (program_name, stream); - list_supported_architectures (program_name, stream); - - disassembler_usage (stream); - } - if (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_ADJUST_VMA - }; - -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'}, - {"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-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'}, - {"include", required_argument, NULL, 'I'}, - {"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'}, - {0, no_argument, 0, 0} -}; - -static void -nonfatal (const char *msg) -{ - bfd_nonfatal (msg); - exit_status = 1; -} - -static void -dump_section_header (bfd *abfd ATTRIBUTE_UNUSED, asection *section, - void *ignored ATTRIBUTE_UNUSED) -{ - char *comma = ""; - unsigned int opb = bfd_octets_per_byte (abfd); - - 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"); - PF (SEC_BLOCK, "BLOCK"); - PF (SEC_CLINK, "CLINK"); - PF (SEC_SMALL_DATA, "SMALL_DATA"); - PF (SEC_SHARED, "SHARED"); - PF (SEC_ARCH_BIT_0, "ARCH_BIT_0"); - PF (SEC_THREAD_LOCAL, "THREAD_LOCAL"); - - if ((section->flags & SEC_LINK_ONCE) != 0) - { - const char *ls; - - 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); - - if (section->comdat != NULL) - printf (" (COMDAT %s %ld)", section->comdat->name, - section->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")); - if (abfd->flags & HAS_LOAD_PAGE) - printf (_(" Pg")); - 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 = 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)); - dynsymcount = 0; - return NULL; - } - - bfd_fatal (bfd_get_filename (abfd)); - } - if (storage) - sy = 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)) - 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 *info, - bfd_boolean skip_zeroes) -{ - char buf[30]; - char *p; - struct objdump_disasm_info *aux; - - aux = (struct objdump_disasm_info *) info->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; - } - (*info->fprintf_func) (info->stream, "%s", p); -} - -/* Print the name of a symbol. */ - -static void -objdump_print_symname (bfd *abfd, struct disassemble_info *info, - asymbol *sym) -{ - char *alloc; - const char *name; - - alloc = NULL; - name = bfd_asymbol_name (sym); - if (do_demangle && name[0] != '\0') - { - /* Demangle the name. */ - alloc = demangle (abfd, name); - name = alloc; - } - - if (info != NULL) - (*info->fprintf_func) (info->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 *info, - 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 = sorted_symcount; - long thisplace; - struct objdump_disasm_info *aux; - bfd *abfd; - asection *sec; - unsigned int opb; - - if (sorted_symcount < 1) - return NULL; - - aux = (struct objdump_disasm_info *) info->application_data; - abfd = aux->abfd; - sec = aux->sec; - opb = bfd_octets_per_byte (abfd); - - /* Perform a binary search looking for the closest symbol to the - required value. We are searching the range (min, max]. */ - while (min + 1 < max) - { - asymbol *sym; - - thisplace = (max + min) / 2; - sym = sorted_syms[thisplace]; - - if (bfd_asymbol_value (sym) > vma) - max = 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; - - /* 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. */ - if (sorted_syms[thisplace]->section != sec - && (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)))) - { - long i; - - for (i = thisplace + 1; i < sorted_symcount; i++) - { - if (bfd_asymbol_value (sorted_syms[i]) - != bfd_asymbol_value (sorted_syms[thisplace])) - break; - } - - --i; - - for (; i >= 0; i--) - { - if (sorted_syms[i]->section == sec - && (i == 0 - || sorted_syms[i - 1]->section != sec - || (bfd_asymbol_value (sorted_syms[i]) - != bfd_asymbol_value (sorted_syms[i - 1])))) - { - thisplace = i; - break; - } - } - - if (sorted_syms[thisplace]->section != sec) - { - /* 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) - { - thisplace = i; - break; - } - } - } - - if (sorted_syms[thisplace]->section != sec - && (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))))) - /* There is no suitable symbol. */ - return NULL; - } - - /* Give the target a chance to reject the symbol. */ - while (! info->symbol_is_valid (sorted_syms [thisplace], info)) - { - ++ thisplace; - if (thisplace >= sorted_symcount - || bfd_asymbol_value (sorted_syms [thisplace]) > vma) - 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 *info, - bfd_boolean skip_zeroes) -{ - objdump_print_value (vma, info, skip_zeroes); - - if (sym == NULL) - { - bfd_vma secaddr; - - (*info->fprintf_func) (info->stream, " <%s", - bfd_get_section_name (abfd, sec)); - secaddr = bfd_get_section_vma (abfd, sec); - if (vma < secaddr) - { - (*info->fprintf_func) (info->stream, "-0x"); - objdump_print_value (secaddr - vma, info, TRUE); - } - else if (vma > secaddr) - { - (*info->fprintf_func) (info->stream, "+0x"); - objdump_print_value (vma - secaddr, info, TRUE); - } - (*info->fprintf_func) (info->stream, ">"); - } - else - { - (*info->fprintf_func) (info->stream, " <"); - objdump_print_symname (abfd, info, sym); - if (bfd_asymbol_value (sym) > vma) - { - (*info->fprintf_func) (info->stream, "-0x"); - objdump_print_value (bfd_asymbol_value (sym) - vma, info, TRUE); - } - else if (vma > bfd_asymbol_value (sym)) - { - (*info->fprintf_func) (info->stream, "+0x"); - objdump_print_value (vma - bfd_asymbol_value (sym), info, TRUE); - } - (*info->fprintf_func) (info->stream, ">"); - } -} - -/* 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 *info, - bfd_boolean skip_zeroes) -{ - struct objdump_disasm_info *aux; - asymbol *sym; - - if (sorted_symcount < 1) - { - (*info->fprintf_func) (info->stream, "0x"); - objdump_print_value (vma, info, skip_zeroes); - return; - } - - aux = (struct objdump_disasm_info *) info->application_data; - sym = find_symbol_for_address (vma, info, NULL); - objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, info, - 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 *info) -{ - objdump_print_addr (vma, info, ! prefix_addresses); -} - -/* Determine of the given address has a symbol associated with it. */ - -static int -objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * info) -{ - asymbol * sym; - - sym = find_symbol_for_address (vma, info, 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; - -/* 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; - unsigned int line; - FILE *f; -}; - -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) - -/* 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; - FILE *f; - - f = fopen (modname, "r"); - if (f == NULL) - return NULL; - - if (print_files != NULL && print_files->f != NULL) - { - fclose (print_files->f); - print_files->f = NULL; - } - - p = xmalloc (sizeof (struct print_file_list)); - p->filename = origname; - p->modname = modname; - p->line = 0; - p->f = f; - p->next = print_files; - print_files = p; - return p; -} - -/* If the 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; - - if (filename == NULL) - return NULL; - - 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 = strrchr (filename, '/'); -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have a mixed forward/back slash case. */ - char *backslash = strrchr (filename, '\\'); - if (fname == NULL || (backslash != NULL && backslash > fname)) - fname = backslash; - if (fname == NULL && filename[0] != '\0' && filename[1] == ':') - fname = filename + 1; - } -#endif - if (fname == NULL) - fname = filename; - else - ++fname; - - /* 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; -} - -/* Skip ahead to a given line in a file, optionally printing each - line. */ - -static void -skip_to_line (struct print_file_list *p, unsigned int line, - bfd_boolean show) -{ - while (p->line < line) - { - char buf[100]; - - if (fgets (buf, sizeof buf, p->f) == NULL) - { - fclose (p->f); - p->f = NULL; - break; - } - - if (show) - printf ("%s", buf); - - if (strchr (buf, '\n') != NULL) - ++p->line; - } -} - -/* 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 line; - - if (! with_line_numbers && ! with_source_code) - return; - - if (! bfd_find_nearest_line (abfd, section, syms, addr_offset, &filename, - &functionname, &line)) - return; - - if (filename != NULL && *filename == '\0') - filename = NULL; - if (functionname != NULL && *functionname == '\0') - functionname = NULL; - - if (with_line_numbers) - { - if (functionname != NULL - && (prev_functionname == NULL - || strcmp (functionname, prev_functionname) != 0)) - printf ("%s():\n", functionname); - if (line > 0 && line != prev_line) - printf ("%s:%u\n", filename == NULL ? "???" : filename, line); - } - - if (with_source_code - && filename != NULL - && line > 0) - { - struct print_file_list **pp, *p; - - for (pp = &print_files; *pp != NULL; pp = &(*pp)->next) - if (strcmp ((*pp)->filename, filename) == 0) - break; - p = *pp; - - if (p != NULL) - { - if (p != print_files) - { - int l; - - /* We have reencountered a file name which we saw - earlier. This implies that either we are dumping out - code from an included file, or the same file was - linked in more than once. There are two common cases - of an included file: inline functions in a header - file, and a bison or flex skeleton file. In the - former case we want to just start printing (but we - back up a few lines to give context); in the latter - case we want to continue from where we left off. I - can't think of a good way to distinguish the cases, - so I used a heuristic based on the file name. */ - if (strcmp (p->filename + strlen (p->filename) - 2, ".h") != 0) - l = p->line; - else - { - l = line - SHOW_PRECEDING_CONTEXT_LINES; - if (l < 0) - l = 0; - } - - if (p->f == NULL) - { - p->f = fopen (p->modname, "r"); - p->line = 0; - } - if (p->f != NULL) - skip_to_line (p, l, FALSE); - - if (print_files->f != NULL) - { - fclose (print_files->f); - print_files->f = NULL; - } - } - - if (p->f != NULL) - { - skip_to_line (p, line, TRUE); - *pp = p->next; - p->next = print_files; - print_files = p; - } - } - else - { - p = update_source_path (filename); - - if (p != NULL) - { - int l; - - if (file_start_context) - l = 0; - else - l = line - SHOW_PRECEDING_CONTEXT_LINES; - if (l < 0) - l = 0; - skip_to_line (p, l, FALSE); - if (p->f != NULL) - skip_to_line (p, line, TRUE); - } - } - } - - if (functionname != NULL - && (prev_functionname == NULL - || strcmp (functionname, prev_functionname) != 0)) - { - if (prev_functionname != NULL) - free (prev_functionname); - prev_functionname = xmalloc (strlen (functionname) + 1); - strcpy (prev_functionname, functionname); - } - - if (line > 0 && line != prev_line) - prev_line = line; -} - -/* Pseudo FILE object for strings. */ -typedef struct -{ - char *buffer; - size_t size; - char *current; -} SFILE; - -/* sprintf to a "stream". */ - -static int -objdump_sprintf (SFILE *f, const char *format, ...) -{ - char *buf; - size_t n; - va_list args; - - va_start (args, format); - - vasprintf (&buf, format, args); - - if (buf == NULL) - { - va_end (args); - fatal (_("Out of virtual memory")); - } - - n = strlen (buf); - - while ((size_t) ((f->buffer + f->size) - f->current) < n + 1) - { - size_t curroff; - - curroff = f->current - f->buffer; - f->size *= 2; - f->buffer = xrealloc (f->buffer, f->size); - f->current = f->buffer + curroff; - } - - memcpy (f->current, buf, n); - f->current += n; - f->current[0] = '\0'; - - free (buf); - - va_end (args); - return n; -} - -/* Returns TRUE if the specified section should be dumped. */ - -static bfd_boolean -process_section_p (asection * section) -{ - size_t i; - - if (only == NULL) - return TRUE; - - for (i = 0; i < only_used; i++) - if (strcmp (only [i], section->name) == 0) - return TRUE; - - return FALSE; -} - - -/* The number of zeroes we want to see before we start skipping them. - The number is arbitrarily chosen. */ - -#ifndef SKIP_ZEROES -#define SKIP_ZEROES (8) -#endif - -/* 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. */ - -#ifndef SKIP_ZEROES_AT_END -#define SKIP_ZEROES_AT_END (3) -#endif - -/* Disassemble some data in memory between given values. */ - -static void -disassemble_bytes (struct disassemble_info * info, - 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; - bfd_boolean done_dot; - int skip_addr_chars; - bfd_vma addr_offset; - int opb = info->octets_per_byte; - - aux = (struct objdump_disasm_info *) info->application_data; - section = aux->sec; - - 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]; - char *s; - - bfd_sprintf_vma - (aux->abfd, buf, - (section->vma - + bfd_section_size (section->owner, section) / opb)); - s = buf; - while (s[0] == '0' && s[1] == '0' && s[2] == '0' && s[3] == '0' - && s[4] == '0') - { - skip_addr_chars += 4; - s += 4; - } - } - - info->insn_info_valid = 0; - - done_dot = FALSE; - addr_offset = start_offset; - while (addr_offset < stop_offset) - { - bfd_vma z; - int octets = 0; - bfd_boolean need_nl = FALSE; - - /* 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 - && (info->insn_info_valid == 0 - || info->branch_delay_insns == 0) - && (z - addr_offset * opb >= SKIP_ZEROES - || (z == stop_offset * opb && - z - addr_offset * opb < SKIP_ZEROES_AT_END))) - { - printf ("\t...\n"); - - /* 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; - } - else - { - char buf[50]; - SFILE sfile; - int bpc = 0; - int pb = 0; - - done_dot = FALSE; - - if (with_line_numbers || with_source_code) - /* The line number tables will refer to unadjusted - section VMAs, so we must undo any VMA modifications - when calling show_line. */ - show_line (aux->abfd, section, addr_offset - adjust_section_vma); - - 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, info); - aux->require_sec = FALSE; - putchar (' '); - } - - if (insns) - { - sfile.size = 120; - sfile.buffer = xmalloc (sfile.size); - sfile.current = sfile.buffer; - info->fprintf_func = (fprintf_ftype) objdump_sprintf; - info->stream = (FILE *) &sfile; - info->bytes_per_line = 0; - info->bytes_per_chunk = 0; - -#ifdef DISASSEMBLER_NEEDS_RELOCS - /* FIXME: This is wrong. It tests the number of octets - in the last instruction, not the current one. */ - if (*relppp < relppend - && (**relppp)->address >= rel_offset + addr_offset - && ((**relppp)->address - < rel_offset + addr_offset + octets / opb)) - info->flags = INSN_HAS_RELOC; - else -#endif - info->flags = 0; - - octets = (*disassemble_fn) (section->vma + addr_offset, info); - info->fprintf_func = (fprintf_ftype) fprintf; - info->stream = stdout; - if (info->bytes_per_line != 0) - octets_per_line = info->bytes_per_line; - if (octets < 0) - { - if (sfile.current != sfile.buffer) - printf ("%s\n", sfile.buffer); - free (sfile.buffer); - 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 (info->bytes_per_chunk) - bpc = info->bytes_per_chunk; - else - bpc = 1; - - for (j = addr_offset * opb; j < addr_offset * opb + pb; j += bpc) - { - int k; - if (bpc > 1 && info->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 - { - printf ("%s", sfile.buffer); - free (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 && info->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, - info, TRUE); - - printf (": %s\t", q->howto->name); - - 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, info, *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) - { - printf ("+0x"); - objdump_print_value (q->addend, info, TRUE); - } - - printf ("\n"); - need_nl = FALSE; - } - ++(*relppp); - } - - if (need_nl) - printf ("\n"); - - addr_offset += octets / opb; - } -} - -static void -disassemble_section (bfd *abfd, asection *section, void *info) -{ - struct disassemble_info * pinfo = (struct disassemble_info *) info; - 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 == NULL - && (section->flags & SEC_CODE) == 0) - return; - - if (! process_section_p (section)) - return; - - datasize = bfd_get_section_size_before_reloc (section); - if (datasize == 0) - 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 -#ifndef DISASSEMBLER_NEEDS_RELOCS - && dump_reloc_info -#endif - ) - { - 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 = 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 = 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; - - if (start_address == (bfd_vma) -1 - || start_address < pinfo->buffer_vma) - addr_offset = 0; - else - addr_offset = start_address - pinfo->buffer_vma; - - if (stop_address == (bfd_vma) -1) - stop_offset = datasize / opb; - else - { - if (stop_address < pinfo->buffer_vma) - stop_offset = 0; - else - stop_offset = stop_address - pinfo->buffer_vma; - if (stop_offset > pinfo->buffer_length / opb) - stop_offset = pinfo->buffer_length / opb; - } - - /* 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 (_("Disassembly of section %s:\n"), section->name); - - /* Find the nearest symbol forwards from our current position. */ - paux->require_sec = TRUE; - sym = find_symbol_for_address (section->vma + addr_offset, info, &place); - paux->require_sec = FALSE; - - /* 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; - - 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; - } - else - { - pinfo->symbols = NULL; - pinfo->num_symbols = 0; - } - - 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 = 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 - || 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; - - print_files = NULL; - prev_functionname = NULL; - prev_line = -1; - - /* We make a copy of syms to sort. We don't want to sort syms - because that will screw up the relocs. */ - sorted_syms = xmalloc (symcount * sizeof (asymbol *)); - memcpy (sorted_syms, syms, symcount * sizeof (asymbol *)); - - sorted_symcount = remove_useless_symbols (sorted_syms, 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; - - 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 *info = bfd_scan_arch (machine); - - if (info == NULL) - fatal (_("Can't use supplied machine %s"), machine); - - abfd->arch_info = info; - } - - if (endian != BFD_ENDIAN_UNKNOWN) - { - struct bfd_target *xvec; - - xvec = 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); - - 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 = 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); - } - } - - bfd_map_over_sections (abfd, disassemble_section, & disasm_info); - - if (aux.dynrelbuf != NULL) - free (aux.dynrelbuf); - free (sorted_syms); -} - -/* 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 = 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 ())); - free (contents); - exit_status = 1; - 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 = 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"); - 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); - -#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); -} - - -/* 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; - - printf (_("Contents of section %s:\n"), section->name); - - data = xmalloc (datasize); - - bfd_get_section_contents (abfd, section, data, 0, datasize); - - /* 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; - } - - 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; - long count; - - if (dynamic) - { - current = dynsyms; - max = dynsymcount; - printf ("DYNAMIC SYMBOL TABLE:\n"); - } - else - { - current = syms; - max = symcount; - printf ("SYMBOL TABLE:\n"); - } - - if (max == 0) - printf (_("no symbols\n")); - - for (count = 0; count < max; count++) - { - bfd *cur_bfd; - - if (*current == NULL) - printf (_("no information for the %ld'th symbol"), count); - - else if ((cur_bfd = bfd_asymbol_bfd (*current)) == NULL) - printf (_("could not determine the type of the %ld'th symbol"), - count); - - else - { - 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 = demangle (cur_bfd, name); - (*current)->name = alloc; - bfd_print_symbol (cur_bfd, stdout, *current, - bfd_print_symbol_all); - (*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; - - /* 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; - - for (p = relpp; relcount && *p != NULL; p++, relcount--) - { - arelent *q = *p; - const char *filename, *functionname; - unsigned int line; - const char *sym_name; - const char *section_name; - - 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 (abfd, sec, syms, q->address, - &filename, &functionname, &line)) - { - 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 (line > 0 - && (line != last_line - || (filename != NULL - && last_filename != NULL - && strcmp (filename, last_filename) != 0))) - { - printf ("%s:%u\n", filename == NULL ? "???" : filename, line); - last_line = line; - 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; - } - - if (sym_name) - { - bfd_printf_vma (abfd, q->address); - if (q->howto->name) - printf (" %-16s ", q->howto->name); - else - printf (" %-16d ", q->howto->type); - objdump_print_symname (abfd, NULL, *q->sym_ptr_ptr); - } - else - { - if (section_name == NULL) - section_name = "*unknown*"; - bfd_printf_vma (abfd, q->address); - printf (" %-16s [%s]", - q->howto->name, - section_name); - } - - if (q->addend) - { - printf ("+0x"); - bfd_printf_vma (abfd, q->addend); - } - - printf ("\n"); - } -} - -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 = 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 = 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 = 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 *dummy ATTRIBUTE_UNUSED) -{ - section->vma += adjust_section_vma; - 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_map_over_sections (abfd, adjust_addresses, NULL); - - if (! dump_debugging_tags) - 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_debugging_tags) - putchar ('\n'); - if (dump_section_headers) - dump_headers (abfd); - - if (dump_symtab || dump_reloc_info || disassemble || dump_debugging) - syms = slurp_symtab (abfd); - if (dump_dynamic_symtab || dump_dynamic_reloc_info) - dynsyms = slurp_dynamic_symtab (abfd); - - if (dump_symtab) - dump_symbols (abfd, FALSE); - if (dump_dynamic_symtab) - dump_symbols (abfd, TRUE); - 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); - if (dhandle != NULL) - { - if (! print_debugging_info (stdout, dhandle, abfd, syms, demangle, - dump_debugging_tags ? TRUE : FALSE)) - { - non_fatal (_("%s: printing debugging information failed"), - bfd_get_filename (abfd)); - exit_status = 1; - } - } - } - - if (syms) - { - free (syms); - syms = NULL; - } - - if (dynsyms) - { - free (dynsyms); - dynsyms = NULL; - } -} - -static void -display_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_file (char *filename, char *target) -{ - bfd *file; - bfd *arfile = NULL; - - if (get_file_size (filename) < 1) - return; - - file = bfd_openr (filename, target); - if (file == NULL) - { - nonfatal (filename); - return; - } - - /* If the file is an archive, process all of its elements. */ - if (bfd_check_format (file, bfd_archive)) - { - bfd *last_arfile = NULL; - - printf (_("In 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_bfd (arfile); - - if (last_arfile != NULL) - bfd_close (last_arfile); - last_arfile = arfile; - } - - if (last_arfile != NULL) - bfd_close (last_arfile); - } - else - display_bfd (file); - - 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); - - bfd_init (); - set_default_bfd_target (); - - while ((c = getopt_long (argc, argv, "pib:m:M:VvCdDlfaHhrRtTxsSI:j:wE:zgeG", - 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, NULL); - else - disassembler_options = optarg; - break; - case 'j': - if (only_used == only_size) - { - only_size += 8; - only = xrealloc (only, only_size * sizeof (char *)); - } - only [only_used++] = optarg; - 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"); - break; - case OPTION_STOP_ADDRESS: - stop_address = parse_vma (optarg, "--stop-address"); - break; - case 'E': - if (strcmp (optarg, "B") == 0) - endian = BFD_ENDIAN_BIG; - else if (strcmp (optarg, "L") == 0) - endian = BFD_ENDIAN_LITTLE; - else - { - non_fatal (_("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); - 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 '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 '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); - } - - END_PROGRESS (program_name); - - return exit_status; -} diff --git a/binutils/po/.cvsignore b/binutils/po/.cvsignore deleted file mode 100644 index becd1537d..000000000 --- a/binutils/po/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.gmo diff --git a/binutils/po/Make-in b/binutils/po/Make-in deleted file mode 100644 index 6176dbf78..000000000 --- a/binutils/po/Make-in +++ /dev/null @@ -1,253 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper -# -# This file file 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@ - -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=$(srcdir)/`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_ \ - --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-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 - -dvi 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/po/POTFILES.in b/binutils/po/POTFILES.in deleted file mode 100644 index 9e9e6a596..000000000 --- a/binutils/po/POTFILES.in +++ /dev/null @@ -1,60 +0,0 @@ -addr2line.c -ar.c -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.c -debug.h -dlltool.c -dlltool.h -dllwrap.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 -nlmconv.c -nlmconv.h -nm.c -not-ranlib.c -not-strip.c -objcopy.c -objdump.c -prdbg.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 -sysdump.c -version.c -windres.c -windres.h -winduni.c -winduni.h -wrstabs.c diff --git a/binutils/po/binutils.pot b/binutils/po/binutils.pot deleted file mode 100644 index 73c60b3e0..000000000 --- a/binutils/po/binutils.pot +++ /dev/null @@ -1,4574 +0,0 @@ -# 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 , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2003-07-11 13:56+0930\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: addr2line.c:74 -#, c-format -msgid "Usage: %s [option(s)] [addr(s)]\n" -msgstr "" - -#: addr2line.c:75 -msgid " Convert addresses into line number/file name pairs.\n" -msgstr "" - -#: addr2line.c:76 -msgid "" -" If no addresses are specified on the command line, they will be read from " -"stdin\n" -msgstr "" - -#: addr2line.c:77 -msgid "" -" The options are:\n" -" -b --target= Set the binary file format\n" -" -e --exe= 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 "" - -#: 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 "" - -#: addr2line.c:245 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "" - -#: addr2line.c:317 nm.c:433 objdump.c:2693 -#, c-format -msgid "unknown demangling style `%s'" -msgstr "" - -#: ar.c:238 -#, c-format -msgid "no entry %s in archive\n" -msgstr "" - -#: ar.c:255 -#, c-format -msgid "" -"Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] " -"[count] archive-file file...\n" -msgstr "" - -#: ar.c:258 -#, c-format -msgid " %s -M [\n" -"\n" -msgstr "" - -#: ar.c:857 ar.c:925 -#, c-format -msgid "%s is not a valid archive" -msgstr "" - -#: ar.c:893 -#, c-format -msgid "stat returns negative size for %s" -msgstr "" - -#: ar.c:1020 -#, c-format -msgid "%s is not an archive" -msgstr "" - -#: ar.c:1027 -#, c-format -msgid "creating %s" -msgstr "" - -#: ar.c:1233 -#, c-format -msgid "No member named `%s'\n" -msgstr "" - -#: ar.c:1285 -#, c-format -msgid "no entry %s in archive %s!" -msgstr "" - -#: ar.c:1422 -#, c-format -msgid "%s: no archive map to update" -msgstr "" - -#: arsup.c:86 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "" - -#: arsup.c:117 -#, c-format -msgid "Can't open file %s\n" -msgstr "" - -#: arsup.c:172 -#, c-format -msgid "%s: Can't open output archive %s\n" -msgstr "" - -#: arsup.c:189 -#, c-format -msgid "%s: Can't open input archive %s\n" -msgstr "" - -#: arsup.c:198 -#, c-format -msgid "%s: file %s is not an archive\n" -msgstr "" - -#: arsup.c:241 -#, c-format -msgid "%s: no output archive specified yet\n" -msgstr "" - -#: 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 "" - -#: arsup.c:273 arsup.c:385 arsup.c:411 -#, c-format -msgid "%s: can't open file %s\n" -msgstr "" - -#: arsup.c:328 arsup.c:407 arsup.c:489 -#, c-format -msgid "%s: can't find module file %s\n" -msgstr "" - -#: arsup.c:439 -#, c-format -msgid "Current open archive is %s\n" -msgstr "" - -#: arsup.c:464 -#, 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:52 -#, c-format -msgid " emulation options: \n" -msgstr "" - -#: bucomm.c:113 -#, c-format -msgid "can't set BFD default target to `%s': %s" -msgstr "" - -#: bucomm.c:125 -#, c-format -msgid "%s: Matching formats:" -msgstr "" - -#: 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 -#, c-format -msgid "BFD header file version %s\n" -msgstr "" - -#: bucomm.c:467 -#, c-format -msgid "%s: bad number: %s" -msgstr "" - -#: coffdump.c:107 -#, c-format -msgid "#lines %d " -msgstr "" - -#: coffdump.c:471 sysdump.c:767 -#, c-format -msgid "Usage: %s [option(s)] in-file\n" -msgstr "" - -#: coffdump.c:472 -msgid " Print a human readable interpretation of a SYSROFF object file\n" -msgstr "" - -#: coffdump.c:473 -msgid "" -" The options are:\n" -" -h --help Display this information\n" -" -v --version Display the program's version\n" -"\n" -msgstr "" - -#: coffdump.c:541 srconv.c:2052 sysdump.c:831 -msgid "no input file specified" -msgstr "" - -#: debug.c:654 -msgid "debug_add_to_current_namespace: no current file" -msgstr "" - -#: debug.c:737 -msgid "debug_start_source: no debug_set_filename call" -msgstr "" - -#: debug.c:796 -msgid "debug_record_function: no debug_set_filename call" -msgstr "" - -#: debug.c:852 -msgid "debug_record_parameter: no current function" -msgstr "" - -#: debug.c:886 -msgid "debug_end_function: no current function" -msgstr "" - -#: debug.c:892 -msgid "debug_end_function: some blocks were not closed" -msgstr "" - -#: debug.c:922 -msgid "debug_start_block: no current block" -msgstr "" - -#: debug.c:960 -msgid "debug_end_block: no current block" -msgstr "" - -#: debug.c:967 -msgid "debug_end_block: attempt to close top level block" -msgstr "" - -#: debug.c:993 -msgid "debug_record_line: no current unit" -msgstr "" - -#. FIXME -#: debug.c:1047 -msgid "debug_start_common_block: not implemented" -msgstr "" - -#. FIXME -#: debug.c:1059 -msgid "debug_end_common_block: not implemented" -msgstr "" - -#. FIXME. -#: debug.c:1153 -msgid "debug_record_label: not implemented" -msgstr "" - -#: debug.c:1179 -msgid "debug_record_variable: no current file" -msgstr "" - -#: debug.c:1762 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "" - -#: debug.c:1963 -msgid "debug_name_type: no current file" -msgstr "" - -#: debug.c:2011 -msgid "debug_tag_type: no current file" -msgstr "" - -#: debug.c:2019 -msgid "debug_tag_type: extra tag attempted" -msgstr "" - -#: debug.c:2058 -#, c-format -msgid "Warning: changing type size from %d to %d\n" -msgstr "" - -#: debug.c:2082 -msgid "debug_find_named_type: no current compilation unit" -msgstr "" - -#: debug.c:2189 -#, c-format -msgid "debug_get_real_type: circular debug information for %s\n" -msgstr "" - -#: debug.c:2650 -msgid "debug_write_type: illegal type encountered" -msgstr "" - -#: dlltool.c:812 dlltool.c:837 dlltool.c:863 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "" - -#: dlltool.c:900 -#, c-format -msgid "Can't open def file: %s" -msgstr "" - -#: dlltool.c:905 -#, c-format -msgid "Processing def file: %s" -msgstr "" - -#: dlltool.c:909 -msgid "Processed def file" -msgstr "" - -#: dlltool.c:935 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "" - -#: dlltool.c:974 -#, c-format -msgid "NAME: %s base: %x" -msgstr "" - -#: dlltool.c:977 dlltool.c:996 -msgid "Can't have LIBRARY and NAME" -msgstr "" - -#: dlltool.c:993 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "" - -#: dlltool.c:1251 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "" - -#: 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 -#, c-format -msgid "%s exited with status %d" -msgstr "" - -#: dlltool.c:1294 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "" - -#: dlltool.c:1423 -#, c-format -msgid "Excluding symbol: %s" -msgstr "" - -#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015 -#, c-format -msgid "%s: no symbols" -msgstr "" - -#. 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 -#, c-format -msgid "Unable to open object file: %s" -msgstr "" - -#: dlltool.c:1570 -#, c-format -msgid "Scanning object file %s" -msgstr "" - -#: dlltool.c:1585 -#, c-format -msgid "Cannot produce mcore-elf dll from archive file: %s" -msgstr "" - -#: dlltool.c:1677 -msgid "Adding exports to output file" -msgstr "" - -#: dlltool.c:1724 -msgid "Added exports to output file" -msgstr "" - -#: dlltool.c:1848 -#, c-format -msgid "Generating export file: %s" -msgstr "" - -#: dlltool.c:1853 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "" - -#: dlltool.c:1856 -#, c-format -msgid "Opened temporary file: %s" -msgstr "" - -#: dlltool.c:2086 -msgid "Generated exports file" -msgstr "" - -#: dlltool.c:2378 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "" - -#: dlltool.c:2381 -#, c-format -msgid "Creating stub file: %s" -msgstr "" - -#: dlltool.c:2766 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "" - -#: dlltool.c:2825 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "" - -#: dlltool.c:2892 -#, c-format -msgid "Can't open .lib file: %s" -msgstr "" - -#: dlltool.c:2895 -#, c-format -msgid "Creating library file: %s" -msgstr "" - -#: dlltool.c:2951 -#, c-format -msgid "cannot delete %s: %s" -msgstr "" - -#: dlltool.c:2955 -msgid "Created lib file" -msgstr "" - -#: dlltool.c:3062 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "" - -#: dlltool.c:3068 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "" - -#: dlltool.c:3191 -msgid "Processing definitions" -msgstr "" - -#: dlltool.c:3223 -msgid "Processed definitions" -msgstr "" - -#. xgetext:c-format -#: dlltool.c:3234 dllwrap.c:495 -#, c-format -msgid "Usage %s \n" -msgstr "" - -#. xgetext:c-format -#: dlltool.c:3236 -#, c-format -msgid "" -" -m --machine Create as DLL for . [default: %s]\n" -msgstr "" - -#: dlltool.c:3237 -msgid "" -" possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, " -"ppc, thumb\n" -msgstr "" - -#: dlltool.c:3238 -msgid " -e --output-exp Generate an export file.\n" -msgstr "" - -#: dlltool.c:3239 -msgid " -l --output-lib Generate an interface library.\n" -msgstr "" - -#: dlltool.c:3240 -msgid " -a --add-indirect Add dll indirects to export file.\n" -msgstr "" - -#: dlltool.c:3241 -msgid "" -" -D --dllname Name of input dll to put into interface lib.\n" -msgstr "" - -#: dlltool.c:3242 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr "" - -#: dlltool.c:3243 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr "" - -#: dlltool.c:3244 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr "" - -#: dlltool.c:3245 -msgid " --no-export-all-symbols Only export listed symbols\n" -msgstr "" - -#: dlltool.c:3246 -msgid " --exclude-symbols Don't export \n" -msgstr "" - -#: dlltool.c:3247 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr "" - -#: dlltool.c:3248 -msgid " -b --base-file Read linker generated base file.\n" -msgstr "" - -#: dlltool.c:3249 -msgid " -x --no-idata4 Don't generate idata$4 section.\n" -msgstr "" - -#: dlltool.c:3250 -msgid " -c --no-idata5 Don't generate idata$5 section.\n" -msgstr "" - -#: dlltool.c:3251 -msgid "" -" -U --add-underscore Add underscores to symbols in interface " -"library.\n" -msgstr "" - -#: dlltool.c:3252 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr "" - -#: dlltool.c:3253 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr "" - -#: dlltool.c:3254 -msgid " -S --as Use for assembler.\n" -msgstr "" - -#: dlltool.c:3255 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr "" - -#: dlltool.c:3256 -msgid "" -" -C --compat-implib Create backward compatible import library.\n" -msgstr "" - -#: dlltool.c:3257 -msgid "" -" -n --no-delete Keep temp files (repeat for extra " -"preservation).\n" -msgstr "" - -#: dlltool.c:3258 -msgid " -v --verbose Be verbose.\n" -msgstr "" - -#: dlltool.c:3259 -msgid " -V --version Display the program version.\n" -msgstr "" - -#: dlltool.c:3260 -msgid " -h --help Display this information.\n" -msgstr "" - -#: dlltool.c:3262 -msgid "" -" -M --mcore-elf Process mcore-elf object files into .\n" -msgstr "" - -#: dlltool.c:3263 -msgid " -L --linker Use as the linker.\n" -msgstr "" - -#: dlltool.c:3264 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr "" - -#: dlltool.c:3418 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "" - -#: dlltool.c:3450 -#, c-format -msgid "Machine '%s' not supported" -msgstr "" - -#: dlltool.c:3553 dllwrap.c:214 -#, c-format -msgid "Tried file: %s" -msgstr "" - -#: dlltool.c:3560 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 "" - -#: dllwrap.c:341 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "" - -#: dllwrap.c:496 -msgid " Generic options:\n" -msgstr "" - -#: dllwrap.c:497 -msgid " --quiet, -q Work quietly\n" -msgstr "" - -#: dllwrap.c:498 -msgid " --verbose, -v Verbose\n" -msgstr "" - -#: dllwrap.c:499 -msgid " --version Print dllwrap version\n" -msgstr "" - -#: dllwrap.c:500 -msgid " --implib Synonym for --output-lib\n" -msgstr "" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr "" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr "" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr "" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr "" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr "" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr "" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr "" - -#: dllwrap.c:508 -msgid " --dry-run Show what needs to be run\n" -msgstr "" - -#: dllwrap.c:509 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr "" - -#: dllwrap.c:510 -msgid " Options passed to DLLTOOL:\n" -msgstr "" - -#: dllwrap.c:511 -msgid " --machine \n" -msgstr "" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr "" - -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr "" - -#: dllwrap.c:514 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr "" - -#: dllwrap.c:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr "" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr "" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr "" - -#: dllwrap.c:518 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr "" - -#: dllwrap.c:519 -msgid " --no-export-all-symbols Only export .drectve symbols\n" -msgstr "" - -#: dllwrap.c:520 -msgid " --exclude-symbols Exclude from .def\n" -msgstr "" - -#: dllwrap.c:521 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr "" - -#: dllwrap.c:522 -msgid " --base-file Read linker generated base file\n" -msgstr "" - -#: dllwrap.c:523 -msgid " --no-idata4 Don't generate idata$4 section\n" -msgstr "" - -#: dllwrap.c:524 -msgid " --no-idata5 Don't generate idata$5 section\n" -msgstr "" - -#: dllwrap.c:525 -msgid " -U Add underscores to .lib\n" -msgstr "" - -#: dllwrap.c:526 -msgid " -k Kill @ from exported names\n" -msgstr "" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr "" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr "" - -#: dllwrap.c:529 -msgid " --nodelete Keep temp files.\n" -msgstr "" - -#: dllwrap.c:530 -msgid " Rest are passed unmodified to the language driver\n" -msgstr "" - -#: dllwrap.c:802 -msgid "Must provide at least one of -o or --dllname options" -msgstr "" - -#: dllwrap.c:830 -msgid "" -"no export definition file provided.\n" -"Creating one, but that may not be what you want" -msgstr "" - -#: dllwrap.c:992 -#, c-format -msgid "DLLTOOL name : %s\n" -msgstr "" - -#: dllwrap.c:993 -#, c-format -msgid "DLLTOOL options : %s\n" -msgstr "" - -#: dllwrap.c:994 -#, c-format -msgid "DRIVER name : %s\n" -msgstr "" - -#: dllwrap.c:995 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "" - -#: emul_aix.c:58 -#, c-format -msgid " [-g] - 32 bit small archive\n" -msgstr "" - -#: 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 -msgid " [-X32_64] - accepts 32 and 64 bit objects\n" -msgstr "" - -#: ieee.c:326 -msgid "unexpected end of debugging information" -msgstr "" - -#: ieee.c:421 -msgid "invalid number" -msgstr "" - -#: ieee.c:480 -msgid "invalid string length" -msgstr "" - -#: ieee.c:537 ieee.c:578 -msgid "expression stack overflow" -msgstr "" - -#: ieee.c:557 -msgid "unsupported IEEE expression operator" -msgstr "" - -#: ieee.c:572 -msgid "unknown section" -msgstr "" - -#: ieee.c:593 -msgid "expression stack underflow" -msgstr "" - -#: ieee.c:607 -msgid "expression stack mismatch" -msgstr "" - -#: ieee.c:646 -msgid "unknown builtin type" -msgstr "" - -#: ieee.c:791 -msgid "BCD float type not supported" -msgstr "" - -#: ieee.c:937 -msgid "unexpected number" -msgstr "" - -#: ieee.c:944 -msgid "unexpected record type" -msgstr "" - -#: ieee.c:977 -msgid "blocks left on stack at end" -msgstr "" - -#: ieee.c:1242 -msgid "unknown BB type" -msgstr "" - -#: ieee.c:1251 -msgid "stack overflow" -msgstr "" - -#: ieee.c:1276 -msgid "stack underflow" -msgstr "" - -#: ieee.c:1390 ieee.c:1462 ieee.c:2161 -msgid "illegal variable index" -msgstr "" - -#: ieee.c:1440 -msgid "illegal type index" -msgstr "" - -#: ieee.c:1450 ieee.c:1487 -msgid "unknown TY code" -msgstr "" - -#: ieee.c:1469 -msgid "undefined variable in TY" -msgstr "" - -#. Pascal file name. FIXME. -#: ieee.c:1880 -msgid "Pascal file name not supported" -msgstr "" - -#: ieee.c:1928 -msgid "unsupported qualifier" -msgstr "" - -#: ieee.c:2199 -msgid "undefined variable in ATN" -msgstr "" - -#: ieee.c:2242 -msgid "unknown ATN type" -msgstr "" - -#. 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 -msgid "unexpected string in C++ misc" -msgstr "" - -#: ieee.c:2464 -msgid "bad misc record" -msgstr "" - -#: ieee.c:2507 -msgid "unrecognized C++ misc record" -msgstr "" - -#: ieee.c:2624 -msgid "undefined C++ object" -msgstr "" - -#: ieee.c:2658 -msgid "unrecognized C++ object spec" -msgstr "" - -#: ieee.c:2694 -msgid "unsupported C++ object type" -msgstr "" - -#: ieee.c:2704 -msgid "C++ base class not defined" -msgstr "" - -#: ieee.c:2716 ieee.c:2821 -msgid "C++ object has no fields" -msgstr "" - -#: ieee.c:2735 -msgid "C++ base class not found in container" -msgstr "" - -#: ieee.c:2842 -msgid "C++ data member not found in container" -msgstr "" - -#: ieee.c:2883 ieee.c:3033 -msgid "unknown C++ visibility" -msgstr "" - -#: ieee.c:2917 -msgid "bad C++ field bit pos or size" -msgstr "" - -#: ieee.c:3009 -msgid "bad type for C++ method function" -msgstr "" - -#: ieee.c:3019 -msgid "no type information for C++ method function" -msgstr "" - -#: ieee.c:3058 -msgid "C++ static virtual method" -msgstr "" - -#: ieee.c:3153 -msgid "unrecognized C++ object overhead spec" -msgstr "" - -#: ieee.c:3192 -msgid "undefined C++ vtable" -msgstr "" - -#: ieee.c:3263 -msgid "C++ default values not in a function" -msgstr "" - -#: ieee.c:3303 -msgid "unrecognized C++ default type" -msgstr "" - -#: ieee.c:3334 -msgid "reference parameter is not a pointer" -msgstr "" - -#: ieee.c:3419 -msgid "unrecognized C++ reference type" -msgstr "" - -#: ieee.c:3501 -msgid "C++ reference not found" -msgstr "" - -#: ieee.c:3509 -msgid "C++ reference is not pointer" -msgstr "" - -#: ieee.c:3538 ieee.c:3546 -msgid "missing required ASN" -msgstr "" - -#: ieee.c:3576 ieee.c:3584 -msgid "missing required ATN65" -msgstr "" - -#: ieee.c:3598 -msgid "bad ATN65 record" -msgstr "" - -#: ieee.c:4286 -msgid "IEEE numeric overflow: 0x" -msgstr "" - -#: ieee.c:4332 -#, c-format -msgid "IEEE string length overflow: %u\n" -msgstr "" - -#: ieee.c:5382 -#, c-format -msgid "IEEE unsupported integer type size %u\n" -msgstr "" - -#: ieee.c:5418 -#, c-format -msgid "IEEE unsupported float type size %u\n" -msgstr "" - -#: ieee.c:5454 -#, c-format -msgid "IEEE unsupported complex type size %u\n" -msgstr "" - -#: nlmconv.c:282 srconv.c:2043 -msgid "input and output files must be different" -msgstr "" - -#: nlmconv.c:329 -msgid "input file named both on command line and with INPUT" -msgstr "" - -#: nlmconv.c:338 -msgid "no input file" -msgstr "" - -#: nlmconv.c:368 -msgid "no name for output file" -msgstr "" - -#: nlmconv.c:382 -msgid "warning: input and output formats are not compatible" -msgstr "" - -#: nlmconv.c:411 -msgid "make .bss section" -msgstr "" - -#: nlmconv.c:420 -msgid "make .nlmsections section" -msgstr "" - -#: nlmconv.c:422 -msgid "set .nlmsections flags" -msgstr "" - -#: nlmconv.c:450 -msgid "set .bss vma" -msgstr "" - -#: nlmconv.c:457 -msgid "set .data size" -msgstr "" - -#: nlmconv.c:637 -#, c-format -msgid "warning: symbol %s imported but not in import list" -msgstr "" - -#: nlmconv.c:657 -msgid "set start address" -msgstr "" - -#: nlmconv.c:706 -#, c-format -msgid "warning: START procedure %s not defined" -msgstr "" - -#: nlmconv.c:708 -#, c-format -msgid "warning: EXIT procedure %s not defined" -msgstr "" - -#: nlmconv.c:710 -#, c-format -msgid "warning: CHECK procedure %s not defined" -msgstr "" - -#: nlmconv.c:731 nlmconv.c:920 -msgid "custom section" -msgstr "" - -#: nlmconv.c:752 nlmconv.c:949 -msgid "help section" -msgstr "" - -#: nlmconv.c:774 nlmconv.c:967 -msgid "message section" -msgstr "" - -#: nlmconv.c:790 nlmconv.c:1000 -msgid "module section" -msgstr "" - -#: nlmconv.c:810 nlmconv.c:1016 -msgid "rpc section" -msgstr "" - -#. There is no place to record this information. -#: nlmconv.c:846 -#, c-format -msgid "%s: warning: shared libraries can not have uninitialized data" -msgstr "" - -#: nlmconv.c:867 nlmconv.c:1035 -msgid "shared section" -msgstr "" - -#: nlmconv.c:875 -msgid "warning: No version number given" -msgstr "" - -#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030 -#, c-format -msgid "%s: read: %s" -msgstr "" - -#: nlmconv.c:937 -msgid "warning: MAP and FULLMAP are not supported; try ld -M" -msgstr "" - -#: nlmconv.c:1109 -#, c-format -msgid "Usage: %s [option(s)] [in-file [out-file]]\n" -msgstr "" - -#: nlmconv.c:1110 -msgid " Convert an object file into a NetWare Loadable Module\n" -msgstr "" - -#: nlmconv.c:1111 -msgid "" -" The options are:\n" -" -I --input-target= Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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:1153 -#, c-format -msgid "support not compiled in for %s" -msgstr "" - -#: nlmconv.c:1193 -msgid "make section" -msgstr "" - -#: nlmconv.c:1207 -msgid "set section size" -msgstr "" - -#: nlmconv.c:1213 -msgid "set section alignment" -msgstr "" - -#: nlmconv.c:1217 -msgid "set section flags" -msgstr "" - -#: nlmconv.c:1228 -msgid "set .nlmsections size" -msgstr "" - -#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 -msgid "set .nlmsection contents" -msgstr "" - -#: nlmconv.c:1839 -msgid "stub section sizes" -msgstr "" - -#: nlmconv.c:1888 -msgid "writing stub" -msgstr "" - -#: nlmconv.c:1977 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "" - -#: nlmconv.c:2041 -#, c-format -msgid "overflow when adjusting relocation against %s" -msgstr "" - -#: nlmconv.c:2158 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "" - -#: nlmconv.c:2173 -#, c-format -msgid "Execution of %s failed" -msgstr "" - -#: nm.c:283 size.c:85 strings.c:657 -#, c-format -msgid "Usage: %s [option(s)] [file(s)]\n" -msgstr "" - -#: nm.c:284 -msgid " List symbols in [file(s)] (a.out by default).\n" -msgstr "" - -#: 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 "" - -#: nm.c:319 objdump.c:250 -#, c-format -msgid "Report bugs to %s.\n" -msgstr "" - -#: nm.c:352 -#, c-format -msgid "%s: invalid radix" -msgstr "" - -#: nm.c:377 -#, c-format -msgid "%s: invalid output format" -msgstr "" - -#: nm.c:494 -msgid "Only -X 32_64 is supported" -msgstr "" - -#: nm.c:514 -msgid "Using the --size-sort and --undefined-only options together" -msgstr "" - -#: nm.c:515 -msgid "will produce no output, since undefined symbols have no size." -msgstr "" - -#: nm.c:543 -#, c-format -msgid "data size %ld" -msgstr "" - -#: nm.c:568 readelf.c:5809 readelf.c:5845 -#, c-format -msgid ": %d" -msgstr "" - -#: nm.c:570 readelf.c:5811 readelf.c:5857 -#, c-format -msgid ": %d" -msgstr "" - -#: nm.c:572 readelf.c:5813 readelf.c:5860 -#, c-format -msgid ": %d" -msgstr "" - -#: nm.c:1376 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s:\n" -"\n" -msgstr "" - -#: nm.c:1378 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" - -#: 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 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s[%s]:\n" -"\n" -msgstr "" - -#: nm.c:1436 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" - -#: nm.c:1658 -msgid "" -"\n" -"Archive index:\n" -msgstr "" - -#: objcopy.c:414 srconv.c:1952 -#, c-format -msgid "Usage: %s [option(s)] in-file [out-file]\n" -msgstr "" - -#: objcopy.c:415 -msgid " Copies a binary file, possibly transforming it in the process\n" -msgstr "" - -#: objcopy.c:416 objcopy.c:495 -msgid " The options are:\n" -msgstr "" - -#: objcopy.c:417 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format " -"\n" -" -B --binary-architecture Set arch of output file, when input is " -"binary\n" -" -F --target Set both input and output format to " -"\n" -" --debugging Convert debugging information, if " -"possible\n" -" -p --preserve-dates Copy modified/access timestamps to the " -"output\n" -" -j --only-section Only copy section into the output\n" -" --add-gnu-debuglink= Add section .gnu_debuglink linking to " -"\n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a " -"local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every " -"bytes\n" -" -b --byte Select byte in every interleaved " -"block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address " -"\n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start " -"addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by " -"\n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by " -"\n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by " -"\n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to " -"\n" -" --add-section = Add section found in to " -"output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character " -"style\n" -" --remove-leading-char Remove leading character from global " -"symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --redefine-syms --redefine-sym for all symbol pairs \n" -" listed in \n" -" --srec-len Restrict the length of generated " -"Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords " -"to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code Use alternate machine code for output\n" -" --prefix-symbols Add to start of every symbol " -"name\n" -" --prefix-sections Add to start of every section " -"name\n" -" --prefix-alloc-sections \n" -" Add 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:493 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "" - -#: objcopy.c:494 -msgid " Removes symbols and sections from files\n" -msgstr "" - -#: objcopy.c:496 -msgid "" -" -I --input-target= Assume input file is in format \n" -" -O --output-target= Create an output file in format " -"\n" -" -F --target= Set both input and output format to " -"\n" -" -p --preserve-dates Copy modified/access timestamps to the " -"output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" - -#: objcopy.c:567 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "" - -#: objcopy.c:568 -#, c-format -msgid "supported flags: %s" -msgstr "" - -#: objcopy.c:645 objcopy.c:2526 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "" - -#: objcopy.c:652 objcopy.c:2544 -#, c-format -msgid "cannot open: %s: %s" -msgstr "" - -#: objcopy.c:655 objcopy.c:2548 -#, c-format -msgid "%s: fread failed" -msgstr "" - -#: objcopy.c:728 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "" - -#: objcopy.c:979 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "" - -#: objcopy.c:983 -#, c-format -msgid "%s: Symbol \"%s\" is target of more than one redefinition" -msgstr "" - -#: objcopy.c:1010 -#, c-format -msgid "couldn't open symbol redefinition file %s (error: %s)" -msgstr "" - -#: objcopy.c:1088 -#, c-format -msgid "%s: garbage at end of line %d" -msgstr "" - -#: objcopy.c:1091 -#, c-format -msgid "%s: missing new symbol name at line %d" -msgstr "" - -#: objcopy.c:1101 -#, c-format -msgid "%s: premature end of file at line %d" -msgstr "" - -#: objcopy.c:1147 -msgid "Unable to change endianness of input file(s)" -msgstr "" - -#: objcopy.c:1155 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "" - -#: objcopy.c:1182 -#, 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:1304 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "" - -#: objcopy.c:1329 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "" - -#: objcopy.c:1485 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "" - -#: objcopy.c:1498 -msgid "unknown alternate machine code, ignored" -msgstr "" - -#: objcopy.c:1531 objcopy.c:1561 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "" - -#: objcopy.c:1749 -#, c-format -msgid "Multiple renames of section %s" -msgstr "" - -#: objcopy.c:1840 -msgid "making" -msgstr "" - -#: objcopy.c:1849 -msgid "size" -msgstr "" - -#: objcopy.c:1863 -msgid "vma" -msgstr "" - -#: objcopy.c:1888 -msgid "alignment" -msgstr "" - -#: objcopy.c:1896 -msgid "flags" -msgstr "" - -#: objcopy.c:1918 -msgid "private data" -msgstr "" - -#: objcopy.c:1926 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "" - -#: objcopy.c:2199 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "" - -#: objcopy.c:2214 -#, c-format -msgid "%s: can't set debugging section contents: %s" -msgstr "" - -#: objcopy.c:2223 -#, c-format -msgid "%s: don't know how to write debugging information for %s" -msgstr "" - -#: objcopy.c:2346 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "" - -#: objcopy.c:2400 -msgid "byte number must be non-negative" -msgstr "" - -#: objcopy.c:2410 -msgid "interleave must be positive" -msgstr "" - -#: objcopy.c:2430 objcopy.c:2438 -#, c-format -msgid "%s both copied and removed" -msgstr "" - -#: 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 "" - -#: objcopy.c:2662 -#, c-format -msgid "Warning: truncating gap-fill from 0x%s to 0x%x" -msgstr "" - -#: objcopy.c:2818 -msgid "alternate machine code index must be positive" -msgstr "" - -#: objcopy.c:2856 -msgid "byte number must be less than interleave" -msgstr "" - -#: objcopy.c:2883 -#, c-format -msgid "architecture %s unknown" -msgstr "" - -#: objcopy.c:2887 -msgid "" -"Warning: input target 'binary' required for binary architecture parameter." -msgstr "" - -#: 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 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "" - -#: objdump.c:197 -#, c-format -msgid "Usage: %s \n" -msgstr "" - -#: objdump.c:198 -msgid " Display information from object .\n" -msgstr "" - -#: objdump.c:199 -msgid " At least one of the following switches must be given:\n" -msgstr "" - -#: 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 "" - -#: objdump.c:222 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" - -#: 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 "" - -#: objdump.c:391 -msgid "Sections:\n" -msgstr "" - -#: objdump.c:394 objdump.c:398 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "" - -#: objdump.c:400 -msgid "" -"Idx Name Size VMA LMA File off " -"Algn" -msgstr "" - -#: objdump.c:404 -msgid " Flags" -msgstr "" - -#: objdump.c:406 -msgid " Pg" -msgstr "" - -#: objdump.c:451 -#, c-format -msgid "%s: not a dynamic object" -msgstr "" - -#: objdump.c:1144 -msgid "Out of virtual memory" -msgstr "" - -#: objdump.c:1574 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "" - -#: objdump.c:1592 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "" - -#: objdump.c:1682 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "" - -#: objdump.c:1847 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" - -#: objdump.c:1854 -#, c-format -msgid "%s has no %s section" -msgstr "" - -#: objdump.c:1868 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "" - -#: objdump.c:1880 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "" - -#: objdump.c:1923 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" - -#: objdump.c:2021 -#, c-format -msgid "architecture: %s, " -msgstr "" - -#: objdump.c:2024 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "" - -#: objdump.c:2038 -msgid "" -"\n" -"start address 0x" -msgstr "" - -#: objdump.c:2071 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" - -#: objdump.c:2111 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "" - -#: objdump.c:2190 -#, c-format -msgid "In archive %s:\n" -msgstr "" - -#: objdump.c:2249 -#, c-format -msgid "Contents of section %s:\n" -msgstr "" - -#: objdump.c:2369 -msgid "no symbols\n" -msgstr "" - -#: objdump.c:2718 -msgid "unrecognized -E option" -msgstr "" - -#: objdump.c:2729 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "" - -#: rdcoff.c:206 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "" - -#: rdcoff.c:424 rdcoff.c:532 rdcoff.c:731 -#, c-format -msgid "bfd_coff_get_syment failed: %s" -msgstr "" - -#: rdcoff.c:440 rdcoff.c:751 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "" - -#: rdcoff.c:818 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "" - -#: rdcoff.c:868 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "" - -#: rddbg.c:91 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "" - -#: rddbg.c:415 -msgid "Last stabs entries before error:\n" -msgstr "" - -#: readelf.c:455 -#, c-format -msgid "%s: Error: " -msgstr "" - -#: readelf.c:466 -#, c-format -msgid "%s: Warning: " -msgstr "" - -#: readelf.c:488 -#, c-format -msgid "Unable to seek to 0x%x for %s\n" -msgstr "" - -#: readelf.c:499 -#, c-format -msgid "Out of memory allocating 0x%x bytes for %s\n" -msgstr "" - -#: readelf.c:507 -#, c-format -msgid "Unable to read in 0x%x bytes of %s\n" -msgstr "" - -#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "" - -#: readelf.c:924 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "" - -#: 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 -msgid "out of memory parsing relocs" -msgstr "" - -#: 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 -#, c-format -msgid "" -msgstr "" - -#: 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 -#, c-format -msgid ": %lx" -msgstr "" - -#: readelf.c:1779 -msgid "NONE (None)" -msgstr "" - -#: readelf.c:1780 -msgid "REL (Relocatable file)" -msgstr "" - -#: readelf.c:1781 -msgid "EXEC (Executable file)" -msgstr "" - -#: readelf.c:1782 -msgid "DYN (Shared object file)" -msgstr "" - -#: readelf.c:1783 -msgid "CORE (Core file)" -msgstr "" - -#: 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 -#, c-format -msgid ": %x" -msgstr "" - -#: readelf.c:1804 -msgid "None" -msgstr "" - -#: readelf.c:2616 -msgid "Usage: readelf elf-file(s)\n" -msgstr "" - -#: readelf.c:2617 -msgid " Display information about the contents of ELF format files\n" -msgstr "" - -#: 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= Dump the contents of section \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 "" - -#: readelf.c:2640 -msgid "" -" -i --instruction-dump=\n" -" Disassemble the contents of section \n" -msgstr "" - -#: 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 "" - -#: readelf.c:2666 readelf.c:10765 -msgid "Out of memory allocating dump request table." -msgstr "" - -#: readelf.c:2830 readelf.c:2906 -#, c-format -msgid "Unrecognized debug option '%s'\n" -msgstr "" - -#: readelf.c:2940 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "" - -#: readelf.c:2953 -msgid "Nothing to do.\n" -msgstr "" - -#: readelf.c:2966 readelf.c:2983 readelf.c:5366 -msgid "none" -msgstr "" - -#: readelf.c:2970 readelf.c:2987 readelf.c:3018 -#, c-format -msgid "" -msgstr "" - -#: 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 -msgid "Not an ELF file - it has the wrong magic bytes at the start\n" -msgstr "" - -#: readelf.c:3042 -msgid "ELF Header:\n" -msgstr "" - -#: readelf.c:3043 -msgid " Magic: " -msgstr "" - -#: readelf.c:3047 -#, c-format -msgid " Class: %s\n" -msgstr "" - -#: readelf.c:3049 -#, c-format -msgid " Data: %s\n" -msgstr "" - -#: readelf.c:3051 -#, c-format -msgid " Version: %d %s\n" -msgstr "" - -#: readelf.c:3058 -#, c-format -msgid " OS/ABI: %s\n" -msgstr "" - -#: readelf.c:3060 -#, c-format -msgid " ABI Version: %d\n" -msgstr "" - -#: readelf.c:3062 -#, c-format -msgid " Type: %s\n" -msgstr "" - -#: readelf.c:3064 -#, c-format -msgid " Machine: %s\n" -msgstr "" - -#: readelf.c:3066 -#, c-format -msgid " Version: 0x%lx\n" -msgstr "" - -#: readelf.c:3069 -msgid " Entry point address: " -msgstr "" - -#: readelf.c:3071 -msgid "" -"\n" -" Start of program headers: " -msgstr "" - -#: readelf.c:3073 -msgid "" -" (bytes into file)\n" -" Start of section headers: " -msgstr "" - -#: readelf.c:3075 -msgid " (bytes into file)\n" -msgstr "" - -#: readelf.c:3077 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr "" - -#: readelf.c:3080 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr "" - -#: readelf.c:3082 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr "" - -#: readelf.c:3084 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr "" - -#: readelf.c:3086 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr "" - -#: readelf.c:3088 -#, c-format -msgid " Number of section headers: %ld" -msgstr "" - -#: readelf.c:3093 -#, c-format -msgid " Section header string table index: %ld" -msgstr "" - -#: readelf.c:3127 readelf.c:3163 -msgid "program headers" -msgstr "" - -#: 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 "" - -#: readelf.c:3231 -msgid "" -"\n" -"There are no program headers in this file.\n" -msgstr "" - -#: readelf.c:3237 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" - -#: readelf.c:3238 -msgid "Entry point " -msgstr "" - -#: readelf.c:3240 -#, c-format -msgid "" -"\n" -"There are %d program headers, starting at offset " -msgstr "" - -#: 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 -msgid "more than one dynamic segment\n" -msgstr "" - -#: readelf.c:3368 -msgid "Unable to find program interpreter name\n" -msgstr "" - -#: readelf.c:3375 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" - -#: readelf.c:3387 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" - -#: readelf.c:3388 -msgid " Segment Sections...\n" -msgstr "" - -#: readelf.c:3437 -msgid "Cannot interpret virtual addresses without program headers.\n" -msgstr "" - -#: readelf.c:3453 -#, c-format -msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n" -msgstr "" - -#: readelf.c:3471 readelf.c:3517 -msgid "section headers" -msgstr "" - -#: readelf.c:3565 readelf.c:3632 -msgid "symbols" -msgstr "" - -#: readelf.c:3576 readelf.c:3643 -msgid "symtab shndx" -msgstr "" - -#: readelf.c:3745 -msgid "" -"\n" -"There are no sections in this file.\n" -msgstr "" - -#: readelf.c:3751 -#, c-format -msgid "There are %d section headers, starting at offset 0x%lx:\n" -msgstr "" - -#: readelf.c:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070 -msgid "string table" -msgstr "" - -#: readelf.c:3793 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "" - -#: readelf.c:3805 -msgid "File contains multiple dynamic string tables\n" -msgstr "" - -#: readelf.c:3811 -msgid "dynamic strings" -msgstr "" - -#: readelf.c:3817 -msgid "File contains multiple symtab shndx tables\n" -msgstr "" - -#: 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 -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:4031 -#, c-format -msgid "" -"\n" -"'%s' relocation section at offset 0x%lx contains %ld bytes:\n" -msgstr "" - -#: readelf.c:4043 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" - -#: readelf.c:4070 -msgid "" -"\n" -"Relocation section " -msgstr "" - -#: readelf.c:4075 readelf.c:4496 readelf.c:4510 -#, c-format -msgid "'%s'" -msgstr "" - -#: readelf.c:4077 readelf.c:4512 -#, c-format -msgid " at offset 0x%lx contains %lu entries:\n" -msgstr "" - -#: readelf.c:4115 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" - -#: readelf.c:4299 -msgid "unwind table" -msgstr "" - -#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "" - -#: readelf.c:4370 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "" - -#: readelf.c:4415 readelf.c:4440 -msgid "" -"\n" -"There are no unwind sections in this file.\n" -msgstr "" - -#: readelf.c:4491 -msgid "" -"\n" -"Could not find unwind info section for " -msgstr "" - -#: readelf.c:4503 -msgid "unwind info" -msgstr "" - -#: readelf.c:4505 -msgid "" -"\n" -"Unwind section " -msgstr "" - -#: readelf.c:4699 readelf.c:4742 -msgid "dynamic segment" -msgstr "" - -#: readelf.c:4820 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" - -#: readelf.c:4854 -msgid "Unable to seek to end of file!" -msgstr "" - -#: readelf.c:4865 -msgid "Unable to determine the number of symbols to load\n" -msgstr "" - -#: readelf.c:4895 -msgid "Unable to seek to end of file\n" -msgstr "" - -#: readelf.c:4901 -msgid "Unable to determine the length of the dynamic string table\n" -msgstr "" - -#: readelf.c:4906 -msgid "dynamic string table" -msgstr "" - -#: readelf.c:4941 -msgid "symbol information" -msgstr "" - -#: readelf.c:4965 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%lx contains %ld entries:\n" -msgstr "" - -#: readelf.c:4968 -msgid " Tag Type Name/Value\n" -msgstr "" - -#: readelf.c:5004 -msgid "Auxiliary library" -msgstr "" - -#: readelf.c:5008 -msgid "Filter library" -msgstr "" - -#: readelf.c:5012 -msgid "Configuration file" -msgstr "" - -#: readelf.c:5016 -msgid "Dependency audit library" -msgstr "" - -#: readelf.c:5020 -msgid "Audit library" -msgstr "" - -#: readelf.c:5038 readelf.c:5066 readelf.c:5094 -msgid "Flags:" -msgstr "" - -#: readelf.c:5041 readelf.c:5069 readelf.c:5096 -msgid " None\n" -msgstr "" - -#: readelf.c:5217 -#, c-format -msgid "Shared library: [%s]" -msgstr "" - -#: readelf.c:5220 -msgid " program interpreter" -msgstr "" - -#: 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 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "" - -#: readelf.c:5412 -#, c-format -msgid "" -"\n" -"Version definition section '%s' contains %ld entries:\n" -msgstr "" - -#: 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 -msgid "version definition section" -msgstr "" - -#: readelf.c:5450 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr "" - -#: readelf.c:5453 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr "" - -#: readelf.c:5464 -#, c-format -msgid "Name: %s\n" -msgstr "" - -#: readelf.c:5466 -#, c-format -msgid "Name index: %ld\n" -msgstr "" - -#: readelf.c:5481 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr "" - -#: readelf.c:5484 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr "" - -#: readelf.c:5503 -#, c-format -msgid "" -"\n" -"Version needs section '%s' contains %ld entries:\n" -msgstr "" - -#: readelf.c:5506 -msgid " Addr: 0x" -msgstr "" - -#: readelf.c:5508 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr "" - -#: readelf.c:5514 -msgid "version need section" -msgstr "" - -#: readelf.c:5536 -#, c-format -msgid " %#06x: Version: %d" -msgstr "" - -#: readelf.c:5539 -#, c-format -msgid " File: %s" -msgstr "" - -#: readelf.c:5541 -#, c-format -msgid " File: %lx" -msgstr "" - -#: readelf.c:5543 -#, c-format -msgid " Cnt: %d\n" -msgstr "" - -#: readelf.c:5561 -#, c-format -msgid " %#06x: Name: %s" -msgstr "" - -#: readelf.c:5564 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr "" - -#: readelf.c:5567 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr "" - -#: readelf.c:5603 -msgid "version string table" -msgstr "" - -#: readelf.c:5607 -#, c-format -msgid "" -"\n" -"Version symbols section '%s' contains %d entries:\n" -msgstr "" - -#: readelf.c:5610 -msgid " Addr: " -msgstr "" - -#: readelf.c:5622 -msgid "version symbol data" -msgstr "" - -#: readelf.c:5649 -msgid " 0 (*local*) " -msgstr "" - -#: readelf.c:5653 -msgid " 1 (*global*) " -msgstr "" - -#: readelf.c:5689 readelf.c:6129 -msgid "version need" -msgstr "" - -#: readelf.c:5699 -msgid "version need aux (2)" -msgstr "" - -#: readelf.c:5741 readelf.c:6192 -msgid "version def" -msgstr "" - -#: readelf.c:5760 readelf.c:6207 -msgid "version def aux" -msgstr "" - -#: readelf.c:5791 -msgid "" -"\n" -"No version information found in this file.\n" -msgstr "" - -#: readelf.c:5923 -msgid "Unable to read in dynamic data\n" -msgstr "" - -#: readelf.c:5967 -msgid "Unable to seek to start of dynamic information" -msgstr "" - -#: readelf.c:5973 -msgid "Failed to read in number of buckets\n" -msgstr "" - -#: readelf.c:5979 -msgid "Failed to read in number of chains\n" -msgstr "" - -#: readelf.c:5999 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" - -#: 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 -#, c-format -msgid "" -"\n" -"Symbol table '%s' contains %lu entries:\n" -msgstr "" - -#: 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 -msgid "version data" -msgstr "" - -#: readelf.c:6142 -msgid "version need aux (3)" -msgstr "" - -#: readelf.c:6167 -msgid "bad dynamic symbol" -msgstr "" - -#: readelf.c:6230 -msgid "" -"\n" -"Dynamic symbol information is not available for displaying symbols.\n" -msgstr "" - -#: readelf.c:6242 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length (total of %d buckets):\n" -msgstr "" - -#: readelf.c:6244 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr "" - -#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090 -msgid "Out of memory" -msgstr "" - -#: readelf.c:6317 -#, c-format -msgid "" -"\n" -"Dynamic info segment at offset 0x%lx contains %d entries:\n" -msgstr "" - -#: readelf.c:6320 -msgid " Num: Name BoundTo Flags\n" -msgstr "" - -#: readelf.c:6373 -#, c-format -msgid "" -"\n" -"Assembly dump of section %s\n" -msgstr "" - -#: readelf.c:6396 -#, c-format -msgid "" -"\n" -"Section '%s' has no data to dump.\n" -msgstr "" - -#: readelf.c:6401 -#, c-format -msgid "" -"\n" -"Hex dump of section '%s':\n" -msgstr "" - -#: readelf.c:6406 -msgid "section data" -msgstr "" - -#: readelf.c:6555 -msgid "badly formed extended line op encountered!\n" -msgstr "" - -#: readelf.c:6562 -#, c-format -msgid " Extended opcode %d: " -msgstr "" - -#: readelf.c:6567 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" - -#: readelf.c:6573 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "" - -#: readelf.c:6578 -msgid " define new File Table entry\n" -msgstr "" - -#: readelf.c:6579 readelf.c:6726 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr "" - -#: readelf.c:6581 -#, c-format -msgid " %d\t" -msgstr "" - -#: readelf.c:6584 readelf.c:6586 readelf.c:6588 readelf.c:6738 readelf.c:6740 -#: readelf.c:6742 -#, c-format -msgid "%lu\t" -msgstr "" - -#: readelf.c:6589 -#, c-format -msgid "" -"%s\n" -"\n" -msgstr "" - -#: readelf.c:6593 -#, c-format -msgid "UNKNOWN: length %d\n" -msgstr "" - -#: readelf.c:6621 -#, c-format -msgid "" -"\n" -"Dump of debug contents of section %s:\n" -"\n" -msgstr "" - -#: readelf.c:6649 -msgid "The line info appears to be corrupt - the section is too small\n" -msgstr "" - -#: readelf.c:6658 -msgid "Only DWARF version 2 and 3 line info is currently supported.\n" -msgstr "" - -#: readelf.c:6679 -#, c-format -msgid " Length: %ld\n" -msgstr "" - -#: 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 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr "" - -#: readelf.c:6684 -#, c-format -msgid " Line Base: %d\n" -msgstr "" - -#: readelf.c:6685 -#, c-format -msgid " Line Range: %d\n" -msgstr "" - -#: readelf.c:6686 -#, c-format -msgid " Opcode Base: %d\n" -msgstr "" - -#: readelf.c:6695 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" - -#: readelf.c:6698 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr "" - -#: readelf.c:6704 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" - -#: readelf.c:6707 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" - -#: readelf.c:6711 -#, c-format -msgid " %s\n" -msgstr "" - -#: readelf.c:6722 -msgid "" -"\n" -" The File Name Table is empty.\n" -msgstr "" - -#: readelf.c:6725 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" - -#: readelf.c:6733 -#, c-format -msgid " %d\t" -msgstr "" - -#: readelf.c:6744 -#, c-format -msgid "%s\n" -msgstr "" - -#. Now display the statements. -#: readelf.c:6752 -msgid "" -"\n" -" Line Number Statements:\n" -msgstr "" - -#: readelf.c:6768 -#, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr "" - -#: readelf.c:6772 -#, c-format -msgid " and Line by %d to %d\n" -msgstr "" - -#: readelf.c:6783 -msgid " Copy\n" -msgstr "" - -#: readelf.c:6790 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr "" - -#: readelf.c:6798 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr "" - -#: readelf.c:6805 -#, c-format -msgid " Set File Name to entry %d in the File Name Table\n" -msgstr "" - -#: readelf.c:6813 -#, c-format -msgid " Set column to %d\n" -msgstr "" - -#: readelf.c:6820 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr "" - -#: readelf.c:6825 -msgid " Set basic block\n" -msgstr "" - -#: readelf.c:6833 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr "" - -#: readelf.c:6841 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr "" - -#: readelf.c:6846 -msgid " Set prologue_end to true\n" -msgstr "" - -#: readelf.c:6850 -msgid " Set epilogue_begin to true\n" -msgstr "" - -#: readelf.c:6856 -#, c-format -msgid " Set ISA to %d\n" -msgstr "" - -#: readelf.c:6860 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr "" - -#: readelf.c:6891 readelf.c:7371 readelf.c:7443 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" - -#: readelf.c:6931 -msgid "Only DWARF 2 and 3 pubnames are currently supported\n" -msgstr "" - -#: readelf.c:6938 -#, c-format -msgid " Length: %ld\n" -msgstr "" - -#: readelf.c:6940 -#, c-format -msgid " Version: %d\n" -msgstr "" - -#: readelf.c:6942 -#, c-format -msgid " Offset into .debug_info section: %ld\n" -msgstr "" - -#: readelf.c:6944 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr "" - -#: readelf.c:6947 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" - -#: readelf.c:7042 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "" - -#: readelf.c:7156 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "" - -#: readelf.c:7193 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "" - -#: 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 -#, c-format -msgid " DW_MACINFO_define - lineno : %d macro : %s\n" -msgstr "" - -#: readelf.c:7413 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr "" - -#: readelf.c:7424 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr "" - -#: 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 -msgid "no children" -msgstr "" - -#: readelf.c:7465 -#, c-format -msgid " %-18s %s\n" -msgstr "" - -#: readelf.c:7486 -#, c-format -msgid " %lu byte block: " -msgstr "" - -#: readelf.c:7814 -msgid "(User defined location op)" -msgstr "" - -#: readelf.c:7816 -msgid "(Unknown location op)" -msgstr "" - -#: readelf.c:7855 -msgid "debug_loc section data" -msgstr "" - -#: readelf.c:7887 -msgid "" -"\n" -"The .debug_loc section is empty.\n" -msgstr "" - -#: readelf.c:7891 -msgid "" -"Contents of the .debug_loc section:\n" -"\n" -msgstr "" - -#: readelf.c:7892 -msgid "" -"\n" -" Offset Begin End Expression\n" -msgstr "" - -#: readelf.c:7968 -msgid "debug_str section data" -msgstr "" - -#: readelf.c:7987 -msgid "" -msgstr "" - -#: readelf.c:7990 -msgid "" -msgstr "" - -#: readelf.c:8009 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" - -#: readelf.c:8013 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" - -#: readelf.c:8088 -msgid "Internal error: DWARF version is not 2 or 3.\n" -msgstr "" - -#: readelf.c:8203 -#, c-format -msgid " (indirect string, offset: 0x%lx): %s" -msgstr "" - -#: readelf.c:8212 -#, c-format -msgid "Unrecognized form: %d\n" -msgstr "" - -#: readelf.c:8226 -msgid "(not inlined)" -msgstr "" - -#: readelf.c:8229 -msgid "(inlined)" -msgstr "" - -#: readelf.c:8232 -msgid "(declared as inline but ignored)" -msgstr "" - -#: readelf.c:8235 -msgid "(declared as inline and inlined)" -msgstr "" - -#: readelf.c:8238 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr "" - -#: readelf.c:8419 readelf.c:8646 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" - -#: readelf.c:8535 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr "" - -#: readelf.c:8536 -#, c-format -msgid " Length: %ld\n" -msgstr "" - -#: readelf.c:8537 -#, c-format -msgid " Version: %d\n" -msgstr "" - -#: 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 -msgid "Only version 2 and 3 DWARF debug information is currently supported.\n" -msgstr "" - -#: readelf.c:8563 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr "" - -#: readelf.c:8569 -msgid "debug_abbrev section data" -msgstr "" - -#: readelf.c:8606 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "" - -#: readelf.c:8611 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr "" - -#: readelf.c:8691 -msgid "Only DWARF 2 and 3 aranges are currently supported.\n" -msgstr "" - -#: readelf.c:8695 -#, c-format -msgid " Length: %ld\n" -msgstr "" - -#: readelf.c:8696 -#, c-format -msgid " Version: %d\n" -msgstr "" - -#: 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 -#, c-format -msgid "The section %s contains:\n" -msgstr "" - -#: readelf.c:9538 -#, c-format -msgid "Displaying the debug contents of section %s is not yet supported.\n" -msgstr "" - -#: readelf.c:9634 -#, c-format -msgid "" -"\n" -"Section '%s' has no debugging data.\n" -msgstr "" - -#: readelf.c:9639 readelf.c:9701 -msgid "debug section data" -msgstr "" - -#: readelf.c:9655 -#, c-format -msgid "Unrecognized debug section: %s\n" -msgstr "" - -#: readelf.c:9729 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "" - -#: readelf.c:9806 readelf.c:10170 -msgid "liblist" -msgstr "" - -#: readelf.c:9891 -msgid "options" -msgstr "" - -#: readelf.c:9922 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" - -#: readelf.c:10083 -msgid "conflict list found without a dynamic symbol table" -msgstr "" - -#: readelf.c:10101 readelf.c:10117 -msgid "conflict" -msgstr "" - -#: readelf.c:10127 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" - -#: readelf.c:10129 -msgid " Num: Index Value Name" -msgstr "" - -#: readelf.c:10178 -msgid "liblist string table" -msgstr "" - -#: readelf.c:10187 -#, c-format -msgid "" -"\n" -"Library list section '%s' contains %lu entries:\n" -msgstr "" - -#: readelf.c:10236 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "" - -#: readelf.c:10237 -msgid "NT_FPREGSET (floating point registers)" -msgstr "" - -#: readelf.c:10238 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "" - -#: readelf.c:10239 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "" - -#: readelf.c:10240 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "" - -#: readelf.c:10241 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "" - -#: readelf.c:10242 -msgid "NT_FPREGS (floating point registers)" -msgstr "" - -#: readelf.c:10243 -msgid "NT_PSINFO (psinfo structure)" -msgstr "" - -#: readelf.c:10244 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "" - -#: readelf.c:10245 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "" - -#: readelf.c:10246 -msgid "NT_WIN32PSTATUS (win32_pstatus structure)" -msgstr "" - -#: readelf.c:10248 readelf.c:10272 -#, c-format -msgid "Unknown note type: (0x%08x)" -msgstr "" - -#. NetBSD core "procinfo" structure. -#: readelf.c:10262 -msgid "NetBSD procinfo structure" -msgstr "" - -#: readelf.c:10289 readelf.c:10303 -msgid "PT_GETREGS (reg structure)" -msgstr "" - -#: readelf.c:10291 readelf.c:10305 -msgid "PT_GETFPREGS (fpreg structure)" -msgstr "" - -#: readelf.c:10311 -#, c-format -msgid "PT_FIRSTMACH+%d" -msgstr "" - -#: readelf.c:10365 -msgid "notes" -msgstr "" - -#: readelf.c:10371 -#, c-format -msgid "" -"\n" -"Notes at offset 0x%08lx with length 0x%08lx:\n" -msgstr "" - -#: readelf.c:10373 -msgid " Owner\t\tData size\tDescription\n" -msgstr "" - -#: readelf.c:10392 -#, c-format -msgid "corrupt note found at offset %x into core notes\n" -msgstr "" - -#: readelf.c:10394 -#, c-format -msgid " type: %x, namesize: %08lx, descsize: %08lx\n" -msgstr "" - -#: readelf.c:10476 -msgid "No note segments present in the core file.\n" -msgstr "" - -#: 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 "" - -#: readelf.c:10606 -#, c-format -msgid "Cannot stat input file %s.\n" -msgstr "" - -#: readelf.c:10613 -#, c-format -msgid "Input file %s not found.\n" -msgstr "" - -#: readelf.c:10619 -#, c-format -msgid "%s: Failed to read file header\n" -msgstr "" - -#: readelf.c:10633 -#, c-format -msgid "" -"\n" -"File: %s\n" -msgstr "" - -#: rename.c:132 -#, c-format -msgid "%s: cannot set time: %s" -msgstr "" - -#. We have to clean up here. -#: rename.c:171 rename.c:204 -#, c-format -msgid "%s: rename: %s" -msgstr "" - -#: rename.c:212 -#, 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 "" - -#: resbin.c:183 resbin.c:189 -msgid "resource ID" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: 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 "" - -#: resbin.c:1037 -#, c-format -msgid "unexpected version type %d" -msgstr "" - -#: 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 "" - -#: resbin.c:1060 -#, c-format -msgid "unexpected fixed version info version %lu" -msgstr "" - -#: 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 "" - -#: resbin.c:1161 -#, c-format -msgid "unexpected version string length %d < %d" -msgstr "" - -#: 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 "" - -#: rescoff.c:128 -msgid "filename required for COFF input" -msgstr "" - -#: rescoff.c:145 -#, c-format -msgid "%s: no resource section" -msgstr "" - -#: rescoff.c:152 -msgid "can't read resource section" -msgstr "" - -#: rescoff.c:178 -#, c-format -msgid "%s: %s: address out of bounds" -msgstr "" - -#: 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 "" - -#: rescoff.c:738 -msgid "can't get BFD_RELOC_RVA relocation type" -msgstr "" - -#: resrc.c:240 resrc.c:312 -#, c-format -msgid "can't open temporary file `%s': %s" -msgstr "" - -#: 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 -#, c-format -msgid "can't execute `%s': %s" -msgstr "" - -#: resrc.c:317 -#, c-format -msgid "Using temporary file `%s' to read preprocessor output\n" -msgstr "" - -#: resrc.c:324 -#, c-format -msgid "can't popen `%s': %s" -msgstr "" - -#: resrc.c:326 -msgid "Using popen to read preprocessor output\n" -msgstr "" - -#: resrc.c:369 -#, c-format -msgid "Tried `%s'\n" -msgstr "" - -#: resrc.c:380 -#, c-format -msgid "Using `%s'\n" -msgstr "" - -#: resrc.c:542 -#, c-format -msgid "%s:%d: %s\n" -msgstr "" - -#: resrc.c:551 -#, c-format -msgid "%s: unexpected EOF" -msgstr "" - -#: resrc.c:608 -#, c-format -msgid "%s: read of %lu returned %lu" -msgstr "" - -#: resrc.c:650 resrc.c:905 resrc.c:1178 resrc.c:1332 -#, c-format -msgid "stat failed on bitmap file `%s': %s" -msgstr "" - -#: resrc.c:703 -#, c-format -msgid "cursor file `%s' does not contain cursor data" -msgstr "" - -#: resrc.c:735 resrc.c:1049 -#, c-format -msgid "%s: fseek to %lu failed: %s" -msgstr "" - -#: resrc.c:873 -msgid "help ID requires DIALOGEX" -msgstr "" - -#: resrc.c:875 -msgid "control data requires DIALOGEX" -msgstr "" - -#: resrc.c:1018 -#, c-format -msgid "icon file `%s' does not contain icon data" -msgstr "" - -#: resrc.c:1537 -#, c-format -msgid "can't open `%s' for output: %s" -msgstr "" - -#: size.c:86 -msgid " Displays the sizes of sections inside binary files\n" -msgstr "" - -#: size.c:87 -msgid " If no input file(s) are specified, a.out is assumed\n" -msgstr "" - -#: 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= Set the binary file format\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:1953 -msgid "Convert a COFF object file into a SYSROFF object file\n" -msgstr "" - -#: 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 "" - -#: srconv.c:2099 -#, c-format -msgid "unable to open output file %s" -msgstr "" - -#: stabs.c:346 stabs.c:1755 -msgid "numeric overflow" -msgstr "" - -#: stabs.c:357 -#, c-format -msgid "Bad stab: %s\n" -msgstr "" - -#: stabs.c:367 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "" - -#: stabs.c:488 -msgid "N_LBRAC not within function\n" -msgstr "" - -#: stabs.c:527 -msgid "Too many N_RBRACs\n" -msgstr "" - -#: stabs.c:773 -msgid "unknown C++ encoded name" -msgstr "" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1293 -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:1847 -msgid "missing index type" -msgstr "" - -#: stabs.c:2174 -msgid "unknown virtual character for baseclass" -msgstr "" - -#: stabs.c:2192 -msgid "unknown visibility character for baseclass" -msgstr "" - -#: stabs.c:2384 -msgid "unnamed $vb type" -msgstr "" - -#: stabs.c:2390 -msgid "unrecognized C++ abbreviation" -msgstr "" - -#: stabs.c:2470 -msgid "unknown visibility character for field" -msgstr "" - -#: stabs.c:2726 -msgid "const/volatile indicator missing" -msgstr "" - -#: stabs.c:2967 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "" - -#: stabs.c:3281 -msgid "Undefined N_EXCL" -msgstr "" - -#: stabs.c:3369 -#, c-format -msgid "Type file number %d out of range\n" -msgstr "" - -#: stabs.c:3374 -#, c-format -msgid "Type index number %d out of range\n" -msgstr "" - -#: stabs.c:3461 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "" - -#: stabs.c:3762 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "" - -#: stabs.c:3859 -msgid "no argument types in mangled string\n" -msgstr "" - -#: strings.c:208 -#, c-format -msgid "invalid number %s" -msgstr "" - -#: strings.c:647 -#, c-format -msgid "invalid integer argument %s" -msgstr "" - -#: strings.c:658 -msgid " Display printable strings in [file(s)] (stdin by default)\n" -msgstr "" - -#: 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" -" - 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= 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:768 -msgid "Print a human readable interpretation of a SYSROFF object file\n" -msgstr "" - -#: sysdump.c:769 -msgid "" -" The options are:\n" -" -h --help Display this information\n" -" -v --version Print the program's version number\n" -msgstr "" - -#: sysdump.c:836 -#, c-format -msgid "cannot open input file %s" -msgstr "" - -#: version.c:36 -msgid "Copyright 2002 Free Software Foundation, Inc.\n" -msgstr "" - -#: 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 "" - -#: windres.c:205 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "" - -#: windres.c:384 -msgid ": expected to be a directory\n" -msgstr "" - -#: windres.c:396 -msgid ": expected to be a leaf\n" -msgstr "" - -#: windres.c:405 -#, c-format -msgid "%s: warning: " -msgstr "" - -#: windres.c:407 -msgid ": duplicate value\n" -msgstr "" - -#: windres.c:569 -#, c-format -msgid "unknown format type `%s'" -msgstr "" - -#: windres.c:570 -#, c-format -msgid "%s: supported formats:" -msgstr "" - -#. Otherwise, we give up. -#: windres.c:655 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "" - -#: windres.c:669 -#, c-format -msgid "Usage: %s [option(s)] [input-file] [output-file]\n" -msgstr "" - -#: windres.c:671 -msgid "" -" The options are:\n" -" -i --input= Name input file\n" -" -o --output= Name output file\n" -" -J --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" -I --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -U --undefine Undefine SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" -l --language= 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:687 -msgid " --yydebug Turn on parser debugging\n" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: windres.c:833 -msgid "invalid option -f\n" -msgstr "" - -#: windres.c:838 -msgid "No filename following the -fo option.\n" -msgstr "" - -#: windres.c:896 -msgid "" -"Option -I is deprecated for setting the input format, please use -J " -"instead.\n" -msgstr "" - -#: windres.c:1014 -msgid "no resources" -msgstr "" - -#: wrstabs.c:395 wrstabs.c:2055 -#, c-format -msgid "string_hash_lookup failed: %s" -msgstr "" - -#: wrstabs.c:695 -#, c-format -msgid "stab_int_type: bad size %u" -msgstr "" - -#: wrstabs.c:1495 -#, c-format -msgid "%s: warning: unknown size for field `%s' in struct" -msgstr "" diff --git a/binutils/po/da.po b/binutils/po/da.po deleted file mode 100644 index 67dc5de32..000000000 --- a/binutils/po/da.po +++ /dev/null @@ -1,4800 +0,0 @@ -# Danish messages for binutils. -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# Keld Simonsen , 2002-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-03-08 19:55+0100\n" -"Last-Translator: Keld Simonsen \n" -"Language-Team: Danish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: addr2line.c:74 -#, c-format -msgid "Usage: %s [option(s)] [addr(s)]\n" -msgstr "Brug: %s inddatafil(er)\n" - -#: addr2line.c:75 -msgid " Convert addresses into line number/file name pairs.\n" -msgstr " Konvertér adresser til linjenummer/filnavns-par.\n" - -#: addr2line.c:76 -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:77 -msgid "" -" The options are:\n" -" -b --target= Set the binary file format\n" -" -e --exe= 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 "" - -#: 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 "" -"Rapportere fejl til %s\n" -"Rapporter fejl i oversættelsen til dansk@klid.dk\n" - -#: addr2line.c:248 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: kan ikke få fat på adresserne i arkivet" - -#: addr2line.c:320 nm.c:395 objdump.c:2782 -#, c-format -msgid "unknown demangling style `%s'" -msgstr "ukendt afkodningsstil \"%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 "" - -#: ar.c:258 -#, c-format -msgid " %s -M [\n" -"\n" -msgstr "" -"\n" -"\n" -"\n" - -#: ar.c:857 ar.c:925 -#, c-format -msgid "%s is not a valid archive" -msgstr "%s er ikke et gyldigt arkiv" - -#: ar.c:893 -#, c-format -msgid "stat returns negative size for %s" -msgstr "stat returnerer negativ størrelse på %s" - -#: ar.c:1020 -#, c-format -msgid "%s is not an archive" -msgstr "%s er ikke et arkiv" - -#: ar.c:1027 -#, c-format -msgid "creating %s" -msgstr "opretter %s" - -#: ar.c:1233 -#, c-format -msgid "No member named `%s'\n" -msgstr "Intet medlem hedder \"%s\"\n" - -#: ar.c:1285 -#, c-format -msgid "no entry %s in archive %s!" -msgstr "ingen %s i arkiv %s!" - -# archive map virker være vad indekset kaldes i kildekodeen -#: ar.c:1422 -#, c-format -msgid "%s: no archive map to update" -msgstr "%s: intet indeks at opdatere" - -#: arsup.c:86 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "Ingen %s i arkivet.\n" - -#: arsup.c:117 -#, c-format -msgid "Can't open file %s\n" -msgstr "Kan ikke åbne fil %s\n" - -#: arsup.c:172 -#, c-format -msgid "%s: Can't open output archive %s\n" -msgstr "%s: Kan ikke åbne uddataarkivet %s\n" - -#: arsup.c:189 -#, c-format -msgid "%s: Can't open input archive %s\n" -msgstr "%s: Kan ikke åbne inddataarkivet %s\n" - -#: arsup.c:198 -#, c-format -msgid "%s: file %s is not an archive\n" -msgstr "%s: fil %s er ikke et arkiv\n" - -#: arsup.c:241 -#, c-format -msgid "%s: no output archive specified yet\n" -msgstr "%s: intet uddataarkiv angivet endnu\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: intet åbent uddataarkiv\n" - -#: arsup.c:273 arsup.c:385 arsup.c:411 -#, c-format -msgid "%s: can't open file %s\n" -msgstr "%s: kan ikke åbne fil %s\n" - -# module file er detsamme som member -#: arsup.c:328 arsup.c:407 arsup.c:489 -#, c-format -msgid "%s: can't find module file %s\n" -msgstr "%s: kan ikke finde medlem %s\n" - -#: arsup.c:439 -#, c-format -msgid "Current open archive is %s\n" -msgstr "Det aktuelle åbne arkiv er %s\n" - -# BUGG: dubbelt blanksteg -#: arsup.c:464 -#, c-format -msgid "%s: no open archive\n" -msgstr "%s: intet åbent arkiv\n" - -#: binemul.c:39 -#, 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:106 -#, 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:118 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: Passende format:" - -#: bucomm.c:135 -msgid "Supported targets:" -msgstr "Mål som håndteres:" - -#: bucomm.c:137 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: mål som håndteres:" - -#: bucomm.c:153 -msgid "Supported architectures:" -msgstr "Arkitekturer som håndteres:" - -#: bucomm.c:155 -#, c-format -msgid "%s: supported architectures:" -msgstr "%s: arkitekturer som håndteres:" - -#: bucomm.c:262 -#, c-format -msgid "%s: bad number: %s" -msgstr "%s: fejlagtigt tal: %s" - -#: coffdump.c:107 -#, c-format -msgid "#lines %d " -msgstr "#linjer %d " - -#: coffdump.c:471 sysdump.c:767 -#, c-format -msgid "Usage: %s [option(s)] in-file\n" -msgstr "Brug: %s [flag] inddatafil\n" - -#: coffdump.c:472 -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:473 -msgid "" -" The options are:\n" -" -h --help Display this information\n" -" -v --version Display the program's version\n" -"\n" -msgstr "" - -#: coffdump.c:541 srconv.c:2052 sysdump.c:831 -msgid "no input file specified" -msgstr "ingen inddatafil angaves" - -#: debug.c:653 -msgid "debug_add_to_current_namespace: no current file" -msgstr "debug_add_to_current_namespace: ingen aktuel fil" - -#: debug.c:736 -msgid "debug_start_source: no debug_set_filename call" -msgstr "debug_start_source: intet kald til debug_set_filename" - -#: debug.c:795 -msgid "debug_record_function: no debug_set_filename call" -msgstr "debug_record_function: intet kald til debug_set_filename" - -#: debug.c:851 -msgid "debug_record_parameter: no current function" -msgstr "debug_record_parameter: ingen aktuel funktion" - -#: debug.c:885 -msgid "debug_end_function: no current function" -msgstr "debug_end_function: ingen aktuel funktion" - -#: debug.c:891 -msgid "debug_end_function: some blocks were not closed" -msgstr "debug_end_function: nogen blokke afsluttedes ikke" - -#: debug.c:921 -msgid "debug_start_block: no current block" -msgstr "debug_start_block: ingen aktuel blok" - -#: debug.c:959 -msgid "debug_end_block: no current block" -msgstr "debug_end_block: ingen aktuel blok" - -#: debug.c:966 -msgid "debug_end_block: attempt to close top level block" -msgstr "debug_end_block: forsøg gjordes på at afslutte øverste blok" - -#: debug.c:992 -msgid "debug_record_line: no current unit" -msgstr "debug_record_line: ingen aktuel oversættelsesenhed" - -#. FIXME -#: debug.c:1046 -msgid "debug_start_common_block: not implemented" -msgstr "debug_start_common_block: ikke implementeret" - -#. FIXME -#: debug.c:1058 -msgid "debug_end_common_block: not implemented" -msgstr "debug_end_common_block: ikke implementeret" - -# BUGG: Kolon mangler antagligen -#. FIXME. -#: debug.c:1152 -msgid "debug_record_label: not implemented" -msgstr "debug_record_label: ikke implementeret" - -#: debug.c:1178 -msgid "debug_record_variable: no current file" -msgstr "debug_record_variable: ingen aktuel fil" - -#: debug.c:1194 -msgid "debug_record_variable: no current block" -msgstr "debug_record_variable: ingen aktuel blok" - -#: debug.c:1763 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "debug_make_undefined_type: slagsen kan ikke håndteres" - -#: debug.c:1964 -msgid "debug_name_type: no current file" -msgstr "debug_name_type: ingen aktuel fil" - -#: debug.c:2012 -msgid "debug_tag_type: no current file" -msgstr "debug_tag_type: ingen aktuel fil" - -#: debug.c:2020 -msgid "debug_tag_type: extra tag attempted" -msgstr "debug_tag_type: forsøg gjordes på at sætte et ekstra mærke" - -#: debug.c:2059 -#, 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:2083 -msgid "debug_find_named_type: no current compilation unit" -msgstr "debug_find_named_type: ingen aktuel oversættelsesenhed" - -#: debug.c:2190 -#, 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:2650 -msgid "debug_write_type: illegal type encountered" -msgstr "debug_write_type: mødte en ugyldig type" - -#: dlltool.c:735 dlltool.c:760 dlltool.c:786 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "Intern fejl: Ukendt maskintype: %d" - -#: dlltool.c:823 -#, c-format -msgid "Can't open def file: %s" -msgstr "Kan ikke åbne def-fil: %s" - -#: dlltool.c:828 -#, c-format -msgid "Processing def file: %s" -msgstr "Behandler def-fil: %s" - -#: dlltool.c:832 -msgid "Processed def file" -msgstr "Def-filen er behandlet" - -#: dlltool.c:858 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "Syntaktisk fejl i def-fil %s:%d" - -#: dlltool.c:897 -#, c-format -msgid "NAME: %s base: %x" -msgstr "NAME: %s bas: %x" - -#: dlltool.c:900 dlltool.c:919 -msgid "Can't have LIBRARY and NAME" -msgstr "Kan ikke have både LIBRARY og NAME" - -#: dlltool.c:916 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "LIBRARY: %s bas: %x" - -#: dlltool.c:1174 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "wait: %s" - -#: dlltool.c:1179 dllwrap.c:430 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "subprocessen fik fatalt signal %d" - -#: dlltool.c:1185 dllwrap.c:437 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s afsluttede med status %d" - -#: dlltool.c:1217 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "Suger ind info fra sektion %s i %s" - -#: dlltool.c:1341 -#, c-format -msgid "Excluding symbol: %s" -msgstr "Undtager symbol: %s" - -#: 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: ingen symboler" - -#. FIXME: we ought to read in and block out the base relocations -#: dlltool.c:1474 -#, c-format -msgid "Done reading %s" -msgstr "Færdig med at læse %s" - -#: dlltool.c:1485 -#, c-format -msgid "Unable to open object file: %s" -msgstr "Kan ikke åbne objektfil: %s" - -#: dlltool.c:1488 -#, c-format -msgid "Scanning object file %s" -msgstr "Aflæser objektfil %s" - -#: dlltool.c:1503 -#, 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:1595 -msgid "Adding exports to output file" -msgstr "Tilføjer eksportering til uddatafilen" - -#: dlltool.c:1640 -msgid "Added exports to output file" -msgstr "Tilføjede eksportering til uddatafilen" - -#: dlltool.c:1764 -#, c-format -msgid "Generating export file: %s" -msgstr "Genererer eksportfil: %s" - -#: dlltool.c:1769 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "Kan ikke åbne temporær assemblerfil: %s" - -#: dlltool.c:1772 -#, c-format -msgid "Opened temporary file: %s" -msgstr "Åbnede temporær fil: %s" - -#: dlltool.c:1996 -msgid "Generated exports file" -msgstr "Genererede eksportfil" - -#: dlltool.c:2258 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "bfd_open mislykkedes at åbne stubfil: %s" - -#: dlltool.c:2261 -#, c-format -msgid "Creating stub file: %s" -msgstr "Opretter stubfil: %s" - -#: dlltool.c:2650 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "mislykkedes at åbne temporær hovedfil: %s" - -#: dlltool.c:2709 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "mislykkedes at åbne temporær halefil: %s" - -#: dlltool.c:2777 -#, c-format -msgid "Can't open .lib file: %s" -msgstr "Kan ikke åbne .lib-fil: %s" - -#: dlltool.c:2780 -#, c-format -msgid "Creating library file: %s" -msgstr "Opretter biblioteksfil: %s" - -#: dlltool.c:2839 -#, c-format -msgid "cannot delete %s: %s" -msgstr "kan ikke slette %s: %s" - -#: dlltool.c:2843 -msgid "Created lib file" -msgstr "Oprettede biblioteksfilen" - -#: dlltool.c:2948 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "Advarsel, ignorerer duplikeret EXPORT %s %d,%d" - -#: dlltool.c:2954 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "Fejl, duplikeret EXPORT med ordningstal: %s" - -#: dlltool.c:3081 -msgid "Processing definitions" -msgstr "Behandler definitioner" - -#: dlltool.c:3119 -msgid "Processed definitions" -msgstr "Definitionerne er behandlede" - -# BUGG: Kolon fattas -#. xgetext:c-format -#: dlltool.c:3130 dllwrap.c:495 -#, c-format -msgid "Usage %s \n" -msgstr "Brug: %s \n" - -#. xgetext:c-format -#: dlltool.c:3132 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine Opret som DLL for . [forvalgt: %s]\n" - -#: dlltool.c:3133 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " mulige : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -#: dlltool.c:3134 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp Generer en eksportfil.\n" - -#: dlltool.c:3135 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib Generere et grænsesnitsbibliotek.\n" - -#: dlltool.c:3136 -msgid " -a --add-indirect Add dll indirects to export file.\n" -msgstr " -a --add-indirect Tilføj inddirekte dll til eksportfilen.\n" - -#: dlltool.c:3137 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname Navn på inddata-dll at indsætte i grænsesnitsbiblioteket.\n" - -#: dlltool.c:3138 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def Navn på .def-fil at læse ind.\n" - -#: dlltool.c:3139 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def Navn på .def-fil at oprette.\n" - -#: dlltool.c:3140 -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:3141 -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:3142 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols Eksportér ikke symboler i \n" - -#: dlltool.c:3143 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr "" - -#: dlltool.c:3144 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file Læs den lænker-genererede basefil.\n" - -#: dlltool.c:3145 -msgid " -x --no-idata4 Don't generate idata$4 section.\n" -msgstr " -x --no-idata4 Generér ingen idata$4-sektion.\n" - -#: dlltool.c:3146 -msgid " -c --no-idata5 Don't generate idata$5 section.\n" -msgstr " -c --no-idata5 Generér ingen idata$5-sektion.\n" - -#: dlltool.c:3147 -msgid " -U --add-underscore Add underscores to symbols in interface library.\n" -msgstr " -U --add-underscore Sæt dit understreg på symboler i grænsesnitsbiblioteket.\n" - -#: dlltool.c:3148 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at Fjern @ fra eksporterede navne.\n" - -#: dlltool.c:3149 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias Tilføj aliaser uden @.\n" - -#: dlltool.c:3150 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as Brug som assembler.\n" - -#: dlltool.c:3151 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags Send til assembleren.\n" - -#: dlltool.c:3152 -msgid " -C --compat-implib Create backward compatible import library.\n" -msgstr " -C --compat-implib Opret bagudkompatibelt importbibliotek.\n" - -#: dlltool.c:3153 -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:3154 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose Beskriv udførligt\n" - -#: dlltool.c:3155 -msgid " -V --version Display the program version.\n" -msgstr " -V --version Vis versionsinformation om programmet.\n" - -#: dlltool.c:3156 -msgid " -h --help Display this information.\n" -msgstr " -h --help Vis denne information.\n" - -#: dlltool.c:3158 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf Behandl mcore-elf-objektfiler til .\n" - -#: dlltool.c:3159 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker Brug som lænker.\n" - -# Justeringen bliver fejl hér for flaget er for lang. -#: dlltool.c:3160 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags Send til lænkeren.\n" - -#: dlltool.c:3310 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "Kan ikke åbne basefilen: %s" - -#: dlltool.c:3339 -#, c-format -msgid "Machine '%s' not supported" -msgstr "Maskine \"%s\" håndteres ikke" - -#: dlltool.c:3442 dllwrap.c:214 -#, c-format -msgid "Tried file: %s" -msgstr "Prøvede fil: %s" - -#: dlltool.c:3449 dllwrap.c:221 -#, c-format -msgid "Using file: %s" -msgstr "Bruger fil: %s" - -#: dllwrap.c:308 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "Beholder temporær basefil %s" - -#: dllwrap.c:310 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "Fjerner temporær basefil %s" - -#: dllwrap.c:324 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "Beholder temporær eksportfil %s" - -#: dllwrap.c:326 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "Fjerner temporær eksportfil %s" - -#: dllwrap.c:339 -#, c-format -msgid "Keeping temporary def file %s" -msgstr "Beholder temporær def-fil %s" - -#: dllwrap.c:341 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "Fjerner temporær def-fil %s" - -#: dllwrap.c:496 -msgid " Generic options:\n" -msgstr " Generelle flag:\n" - -#: dllwrap.c:497 -msgid " --quiet, -q Work quietly\n" -msgstr " --quiet, -q Arbejd stille\n" - -#: dllwrap.c:498 -msgid " --verbose, -v Verbose\n" -msgstr " --verbose, -v Udførlig\n" - -#: dllwrap.c:499 -msgid " --version Print dllwrap version\n" -msgstr " --version Vis versionsinformation for dllwrap\n" - -#: dllwrap.c:500 -msgid " --implib Synonym for --output-lib\n" -msgstr " --implib Synonym for --output-lib\n" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr " Flag for %s:\n" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name Forvalgt til \"gcc\"\n" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags Forbigå forvalgte flag for ld\n" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name Forvalgt til \"dlltool\"\n" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry Giv alternativ indgangspunkt i DLL'en\n" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr " --image-base Giv billedets baseadresse\n" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target i386-cygwin32 eller i386-mingw32\n" - -#: dllwrap.c:508 -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:509 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr " --mno-cygwin Opret Mingw-DLL\n" - -#: dllwrap.c:510 -msgid " Options passed to DLLTOOL:\n" -msgstr " Flag som sendes til DLLTOOL:\n" - -#: dllwrap.c:511 -msgid " --machine \n" -msgstr " --machine \n" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp Generér eksportfil.\n" - -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib Generér inddatabibliotek.\n" - -#: dllwrap.c:514 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr " --add-indirect Tilføj indirekte dll til eksportfilen.\n" - -#: dllwrap.c:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname Navn på inddata-dll som skal indsættes i uddatabiblioteket.\n" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr " --def Navngiv .def-inddatafilen\n" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr " --output-def Navngiv .def-uddatafilen\n" - -#: dllwrap.c:518 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols Eksporter alle symboler til .def\n" - -#: dllwrap.c:519 -msgid " --no-export-all-symbols Only export .drectve symbols\n" -msgstr " --no-export-all-symbols Eksporter kun .drectve-symboler\n" - -#: dllwrap.c:520 -msgid " --exclude-symbols Exclude from .def\n" -msgstr " --exclude-symbols Undtag symbolerne i fra .def\n" - -#: dllwrap.c:521 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes Bortse fra forvalgte undtagne symboler\n" - -#: dllwrap.c:522 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file Læs lænkergenereret basefil\n" - -#: dllwrap.c:523 -msgid " --no-idata4 Don't generate idata$4 section\n" -msgstr " --no-idata4 Generér ingen idata$4-sektion\n" - -#: dllwrap.c:524 -msgid " --no-idata5 Don't generate idata$5 section\n" -msgstr " --no-idata5 Generér ingen idata$5-sektion\n" - -#: dllwrap.c:525 -msgid " -U Add underscores to .lib\n" -msgstr " -U Sæt understregninger i .lib\n" - -#: dllwrap.c:526 -msgid " -k Kill @ from exported names\n" -msgstr " -k Fjern @ fra eksporterede navne\n" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias Tilføj aliaser uden @\n" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr " --as Brug som assembler\n" - -#: dllwrap.c:529 -msgid " --nodelete Keep temp files.\n" -msgstr " --nodelete Behold temporære filer.\n" - -#: dllwrap.c:530 -msgid " Rest are passed unmodified to the language driver\n" -msgstr " Øvrige flag sendes uændrede til programeringsprogsenheden\n" - -#: dllwrap.c:802 -msgid "Must provide at least one of -o or --dllname options" -msgstr "Angiv mindst et af flagene -o eller --dllname" - -#: dllwrap.c:830 -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:992 -#, 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:993 -#, 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:994 -#, 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:995 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "ENHED flag : %s\n" - -#: emul_aix.c:52 -#, c-format -msgid " [-g] - 32 bit small archive\n" -msgstr "" - -#: emul_aix.c:53 -msgid " [-X32] - ignores 64 bit objects\n" -msgstr "" - -#: emul_aix.c:54 -msgid " [-X64] - ignores 32 bit objects\n" -msgstr "" - -#: emul_aix.c:55 -msgid " [-X32_64] - accepts 32 and 64 bit objects\n" -msgstr "" - -#: ieee.c:317 -msgid "unexpected end of debugging information" -msgstr "uventet slut på fejlsøgningsinformationen" - -#: ieee.c:412 -msgid "invalid number" -msgstr "ugyldigt tal" - -#: ieee.c:471 -msgid "invalid string length" -msgstr "ugyldig strenglængde" - -#: ieee.c:528 ieee.c:569 -msgid "expression stack overflow" -msgstr "overløb i udtryksstakken" - -#: ieee.c:548 -msgid "unsupported IEEE expression operator" -msgstr "IEEE-udtryksoperator som ikke understøttes" - -#: ieee.c:563 -msgid "unknown section" -msgstr "ukendt sektion" - -#: ieee.c:584 -msgid "expression stack underflow" -msgstr "underløb i udtryksstakken" - -#: ieee.c:598 -msgid "expression stack mismatch" -msgstr "fejlbalanceret udtryksstak" - -#: ieee.c:637 -msgid "unknown builtin type" -msgstr "ukendt indbygget type" - -#: ieee.c:782 -msgid "BCD float type not supported" -msgstr "flydendetalstype BCD understøttes ikke" - -#: ieee.c:928 -msgid "unexpected number" -msgstr "uventet tal" - -#: ieee.c:935 -msgid "unexpected record type" -msgstr "uventet posttype" - -#: ieee.c:968 -msgid "blocks left on stack at end" -msgstr "block stadig på stakken ved slutningen" - -#: ieee.c:1233 -msgid "unknown BB type" -msgstr "ukendt BB-type" - -#: ieee.c:1242 -msgid "stack overflow" -msgstr "overløb i stakken" - -#: ieee.c:1267 -msgid "stack underflow" -msgstr "underløb i stakken" - -#: ieee.c:1381 ieee.c:1453 ieee.c:2152 -msgid "illegal variable index" -msgstr "ikke tilladt variabelindeks" - -#: ieee.c:1431 -msgid "illegal type index" -msgstr "ikke tilladt typeindeks" - -#: ieee.c:1441 ieee.c:1478 -msgid "unknown TY code" -msgstr "ukendt TY-kode" - -#: ieee.c:1460 -msgid "undefined variable in TY" -msgstr "udefineret variabel i TY" - -#. Pascal file name. FIXME. -#: ieee.c:1871 -msgid "Pascal file name not supported" -msgstr "Pascal-filnavn understøttes ikke" - -# BUGG: qualif>i Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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:1151 -#, c-format -msgid "support not compiled in for %s" -msgstr "ikke oversat med understøttelse for %s" - -#: nlmconv.c:1191 -msgid "make section" -msgstr "opret sektion" - -#: nlmconv.c:1205 -msgid "set section size" -msgstr "sæt sektionsstørrelse" - -#: nlmconv.c:1211 -msgid "set section alignment" -msgstr "" - -#: nlmconv.c:1215 -msgid "set section flags" -msgstr "sæt sektionsflag" - -#: nlmconv.c:1226 -msgid "set .nlmsections size" -msgstr "sæt .nlmsektions størrelse" - -#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336 -msgid "set .nlmsection contents" -msgstr "sæt .nlmsektions indhold" - -#: nlmconv.c:1837 -msgid "stub section sizes" -msgstr "sektionsstørrelser for stub" - -#: nlmconv.c:1886 -msgid "writing stub" -msgstr "skriver stub" - -#: nlmconv.c:1975 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "uløst PC-relativ relokering mod %s" - -#: nlmconv.c:2039 -#, c-format -msgid "overflow when adjusting relocation against %s" -msgstr "overløb ved justeringen af relokering mod %s" - -#: nlmconv.c:2156 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "%s: udførsel af %s mislykkedes: " - -#: nlmconv.c:2171 -#, c-format -msgid "Execution of %s failed" -msgstr "Eksekvering af %s mislykkedes" - -#: nm.c:246 size.c:85 strings.c:650 -#, c-format -msgid "Usage: %s [option(s)] [file(s)]\n" -msgstr "Brug: %s [flag] [inddatafiler]\n" - -#: nm.c:247 -msgid " List symbols in [file(s)] (a.out by default).\n" -msgstr " List symboler i FILerne (eller a.out).\n" - -#: nm.c:248 -#, 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' 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 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" -"\n" - -#: nm.c:281 objdump.c:217 -#, 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" - -#: nm.c:314 -#, c-format -msgid "%s: invalid radix" -msgstr "%s: ugyldig talbase" - -#: nm.c:339 -#, c-format -msgid "%s: invalid output format" -msgstr "%s: ugyldigt uddataformat" - -#: nm.c:456 -msgid "Only -X 32_64 is supported" -msgstr "Kun -X 32_64 understøttes" - -#: nm.c:498 -#, c-format -msgid "data size %ld" -msgstr "datastørrelse %ld" - -#: nm.c:523 readelf.c:5306 readelf.c:5342 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:525 readelf.c:5308 readelf.c:5354 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:527 readelf.c:5310 readelf.c:5357 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:1339 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"Udefinerede symboler fra %s:\n" -"\n" - -#: nm.c:1341 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"Symboler fra %s:\n" -"\n" - -#: nm.c:1343 nm.c:1401 -msgid "" -"Name Value Class Type Size Line Section\n" -"\n" -msgstr "" -"Navn Værdi Klasse Type Størr. Linje Sektion\n" -"\n" - -#: nm.c:1346 nm.c:1404 -msgid "" -"Name Value Class Type Size Line Section\n" -"\n" -msgstr "" -"Navn Værdi Klasse Type Størr. Linje Sektion\n" -"\n" - -#: nm.c:1397 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"Udefinerede symboler fra %s[%s]:\n" -"\n" - -#: nm.c:1399 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"Symboler fra %s[%s]:\n" -"\n" - -#: nm.c:1614 -msgid "" -"\n" -"Archive index:\n" -msgstr "" -"\n" -"Arkivindeks:\n" - -#: objcopy.c:363 srconv.c:1952 -#, c-format -msgid "Usage: %s [option(s)] in-file [out-file]\n" -msgstr "Brug: %s [flag] inddatafil [uddatafil]\n" - -#: objcopy.c:364 -msgid " Copies a binary file, possibly transforming it in the process\n" -msgstr "" - -#: objcopy.c:365 objcopy.c:435 -msgid " The options are:\n" -msgstr " Flagene er:\n" - -#: objcopy.c:366 -#, fuzzy -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code 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 Antag inddatafilens format er \n" -" -O --output-target Opret uddatafilen i formatet \n" -" -B --binary-architecture Vælg arkitektur for udfil når inddata er binær\n" -" -F --target Sætt både in- og udformatet til \n" -" --debugging Konvertere fejlsøgningsinfo, om muligt\n" -" -p --preserve-dates Kopiér ændrings/adgangtider til uddatan\n" -" -j --only-section Kopiér kun sektion til uddatan\n" -" -R --remove-section Fjern sektion 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 Kopiér ikke symbol \n" -" -K --keep-symbol Kopiér kun symbol \n" -" -L --localize-symbol Markere symbol som lokal\n" -" -G --keep-global-symbol Gør alle symboler lokale, forutom \n" -" -W --weaken-symbol Markere symbol 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 Kopiér kun en af hvert byte\n" -" -b --byte Vælg ud 'e byten i hvert intervall\n" -" --gap-fill Fyll luckor mellem sektionerne med \n" -" --pad-to Fyll ud efter sidste sektionen frem til \n" -" --set-start Sætt startadressen til \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} {=|+|-}\n" -" Ændra LMA og VMA på sektion med \n" -" --change-section-lma {=|+|-}\n" -" Ændra LMA på sektion med \n" -" --change-section-vma {=|+|-}\n" -" Ændra VMA på sektion med \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Advar (inte/[no-]) om en sektion ikke findes\n" -" --set-section-flags =\n" -" Sætt sektion s attribut til \n" -" --add-section = Tilføj sektion i til uddatan\n" -" --rename-section =[,] Skift navn på sektion til \n" -" --change-leading-char Ændra til udformatets type af inledningstegn\n" -" --remove-leading-char Fjern inledningstegn fra globale symboler\n" -" --redefine-sym = Definere om ssymbolet med navn til \n" -" --srec-len Begrænsa længden på genererede S-poster\n" -" --srec-forceS3 Begrænsa typen af genererede S-poster til S3\n" -" --strip-symbols -N for alle symboler som listes i \n" -" --keep-symbols -K for alle symboler som listes i \n" -" --localize-symbols -L for alle symboler som listes i \n" -" --keep-global-symbols -G for alle symboler som listes i \n" -" --weaken-symbols -W for alle symboler som listes i \n" -" --alt-machine-code 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" - -#: objcopy.c:433 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "Brug: %s inddatafiler\n" - -#: objcopy.c:434 -msgid " Removes symbols and sections from files\n" -msgstr " Fjern symboler og afsnit fra filer\n" - -#: objcopy.c:436 -#, fuzzy -msgid "" -" -I --input-target= Assume input file is in format \n" -" -O --output-target= Create an output file in format \n" -" -F --target= Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target Antag inddatafilens format er \n" -" -O --output-target Opret uddatafilen i formatet \n" -" -F --target Sæt både in- og udformatet til \n" -" -p --preserve-dates Kopiér ændrings/adgangtider til uddata\n" -" -R --remove-section Fjern sektion 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 Kopiér ikke symbol \n" -" -K --keep-symbol Kopiér kun symbol \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 gem den udrensede uddata i \n" - -#: objcopy.c:506 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "ukendt sektionsflag \"%s\"" - -#: objcopy.c:507 -#, c-format -msgid "supported flags: %s" -msgstr "flag som håndteres: %s" - -#: objcopy.c:584 objcopy.c:2243 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "kan ikke tage status: %s: %s" - -#: objcopy.c:591 objcopy.c:2261 -#, c-format -msgid "cannot open: %s: %s" -msgstr "kan ikke åbne: %s: %s" - -#: objcopy.c:594 objcopy.c:2265 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread mislykkedes" - -#: objcopy.c:667 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "Ignorerer snavs fundet på linje %d i %s" - -#: objcopy.c:888 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: Flere omdefineringer af symbol \"%s\"" - -#: objcopy.c:893 -#, 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:945 -msgid "Unable to change endianness of input file(s)" -msgstr "Kan ikke ændre endian-type på inddatafilerne" - -#: objcopy.c:953 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "kopierer fra %s(%s) til %s(%s)\n" - -#: objcopy.c:977 -#, c-format -msgid "Warning: Output file cannot represent architecture %s" -msgstr "Advarsel: Uddatafilen kan ikke repræsentere arkitektur %s" - -#: objcopy.c:1004 -#, c-format -msgid "can't create section `%s': %s" -msgstr "kan ikke oprette sektion \"%s\": %s" - -#: objcopy.c:1090 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "Kan ikke fylde hullet efter %s: %s" - -#: objcopy.c:1115 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "Kan ikke fylde ud efter %s: %s" - -#: objcopy.c:1254 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: fejl ved kopiering af privat BFD-data: %s" - -#: objcopy.c:1267 -msgid "unknown alternate machine code, ignored" -msgstr "ukendt alternativ maskinkode, ignoreret" - -#: objcopy.c:1300 objcopy.c:1330 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "kan ikke oprette katalog %s for arkivkopiering (fejl: %s)" - -#: objcopy.c:1497 -#, c-format -msgid "Multiple renames of section %s" -msgstr "Flere navneskift på sektion %s" - -#: objcopy.c:1581 -msgid "making" -msgstr "fremstilling" - -#: objcopy.c:1590 -msgid "size" -msgstr "størrelse" - -#: objcopy.c:1604 -msgid "vma" -msgstr "vma" - -#: objcopy.c:1630 -msgid "alignment" -msgstr "justering" - -#: objcopy.c:1638 -msgid "flags" -msgstr "flag" - -#: objcopy.c:1655 -msgid "private data" -msgstr "privat data" - -#: objcopy.c:1663 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: sektion \"%s\": fejl på %s: %s" - -#: objcopy.c:1946 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: kan ikke oprette fejlsøgningssektion: %s" - -#: objcopy.c:1961 -#, c-format -msgid "%s: can't set debugging section contents: %s" -msgstr "%s: kan ikke sætte indeholdet i fejlsøgningssektionen: %s" - -#: objcopy.c:1970 -#, c-format -msgid "%s: don't know how to write debugging information for %s" -msgstr "%s: véd ikke hvordan man skriver fejlsøgningsinformation for %s" - -#: objcopy.c:2078 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: kan ikke tage status: %s" - -#: objcopy.c:2129 -msgid "byte number must be non-negative" -msgstr "byte-nr må ikke være negativt" - -#: objcopy.c:2139 -msgid "interleave must be positive" -msgstr "intervalstørrelsen skal være positiv" - -#: objcopy.c:2159 objcopy.c:2167 -#, c-format -msgid "%s both copied and removed" -msgstr "%s både kopieret og fjernet" - -#: 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 "fejlagtigt format på %s" - -#: objcopy.c:2379 -#, 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:2531 -msgid "alternate machine code index must be positive" -msgstr "indeks for alternativ maskinkode skal være positivt" - -#: objcopy.c:2550 -msgid "byte number must be less than interleave" -msgstr "byte-nr skal være mindre end antal byte i intervallet" - -#: objcopy.c:2577 -#, c-format -msgid "architecture %s unknown" -msgstr "arkitektur %s er ukendt" - -#: objcopy.c:2581 -msgid "Warning: input target 'binary' required for binary architecture parameter." -msgstr "Advarsel: inddata skal have formatet 'binary' for binærarkitektursparametre." - -#: objcopy.c:2582 -#, c-format -msgid " Argument %s ignored" -msgstr " Argument %s ignoreres" - -#: objcopy.c:2588 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "Kan ikke tage status: %s: %s" - -#: objcopy.c:2628 objcopy.c:2642 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s %s%c0x%s bruges aldrig" - -#: objdump.c:165 -#, c-format -msgid "Usage: %s \n" -msgstr "Brug: %s \n" - -#: objdump.c:166 -msgid " Display information from object .\n" -msgstr " Vis information fra .\n" - -#: objdump.c:167 -msgid " At least one of the following switches must be given:\n" -msgstr " Mindst et af følgende flag skal angives:\n" - -#: objdump.c:168 -#, 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, --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:190 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" -"\n" -" Følgende flag er frivillige:\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=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:358 -msgid "Sections:\n" -msgstr "Sektioner:\n" - -#: objdump.c:361 objdump.c:365 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Navn Størrelse VMA LMA Filoffs Just" - -#: objdump.c:367 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Navn Størrelse VMA LMA Filoffs Just" - -#: objdump.c:371 -msgid " Flags" -msgstr " Flag" - -#: objdump.c:419 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: ikke et dynamisk objekt" - -#: objdump.c:433 -#, c-format -msgid "%s: No dynamic symbols" -msgstr "%s: Ingen dynamiske symboler" - -#: objdump.c:1114 -msgid "Out of virtual memory" -msgstr "Slut på virtuel hukommelse" - -#: objdump.c:1543 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "Kan ikke bruge den opgivne maskine %s" - -#: objdump.c:1561 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "Kan ikke disassemblere for arkitektur %s\n" - -#: objdump.c:1643 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "Disassemblering af sektion %s:\n" - -#: objdump.c:1818 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" -"Der findes ingen %s-sektion\n" -"\n" - -#: objdump.c:1825 -#, c-format -msgid "%s has no %s section" -msgstr "%s har ingen %s-sektion" - -#: objdump.c:1839 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "Læsning af %s-sektionen i %s mislykkedes: %s" - -#: objdump.c:1851 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "Læsning af %s-sektionen i %s mislykkedes: %s\n" - -#: objdump.c:1894 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" -"Indhold i %s-sektionen:\n" -"\n" - -#: objdump.c:1994 -#, c-format -msgid "architecture: %s, " -msgstr "arkitektur: %s, " - -#: objdump.c:1997 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "flag 0x%08x:\n" - -#: objdump.c:2010 -msgid "" -"\n" -"start address 0x" -msgstr "" -"\n" -"startadresse 0x" - -#: objdump.c:2042 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" -"\n" -"%s: filformat %s\n" - -#: objdump.c:2084 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: udskrift af fejlsøgningsinformationen mislykkedes" - -#: objdump.c:2161 -#, c-format -msgid "In archive %s:\n" -msgstr "I arkiv %s:\n" - -#: objdump.c:2213 -#, c-format -msgid "Contents of section %s:\n" -msgstr "Indhold i %s-sektionen:\n" - -#: objdump.c:2718 -#, c-format -msgid "BFD header file version %s\n" -msgstr "BFD-hovedfil version %s\n" - -#: objdump.c:2807 -msgid "unrecognized -E option" -msgstr "ukendt -E-flag" - -#: objdump.c:2818 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "ukendt --endian-type \"%s\"" - -#: rdcoff.c:204 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "parse_coff_type: Fejlagtig typekode 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 mislykkedes: %s" - -#: rdcoff.c:438 rdcoff.c:749 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent mislykkedes: %s" - -#: rdcoff.c:816 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: .bf mangler indledende funktion" - -#: rdcoff.c:866 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "%ld: uventet .ef\n" - -#: rddbg.c:87 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "%s: ingen kendt fejlsøgningsinformation" - -#: rddbg.c:410 -msgid "Last stabs entries before error:\n" -msgstr "De sidste stabs-poster inden fejlen:\n" - -#: readelf.c:328 -#, c-format -msgid "%s: Error: " -msgstr "%s: Fejl: " - -#: readelf.c:339 -#, c-format -msgid "%s: Warning: " -msgstr "%s: Advarsel: " - -#: readelf.c:361 -#, c-format -msgid "Unable to seek to %x for %s\n" -msgstr "Kan ikke søge til %x for %s\n" - -#: readelf.c:372 -#, c-format -msgid "Out of memory allocating %d bytes for %s\n" -msgstr "Slut på hukommelse ved allokering af %d byte for %s\n" - -#: readelf.c:380 -#, c-format -msgid "Unable to read in %d bytes of %s\n" -msgstr "Kan ikke indlæse %d byte af %s\n" - -#: readelf.c:433 readelf.c:591 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "Størrelse på data som ikke kan behandles: %d\n" - -#: readelf.c:675 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "Ved ikke hvordan man relokaliserer på denne maskinarkitektur\n" - -#: readelf.c:697 readelf.c:726 readelf.c:772 readelf.c:799 -msgid "relocs" -msgstr "relokeringer" - -#: readelf.c:708 readelf.c:737 readelf.c:782 readelf.c:809 -msgid "out of memory parsing relocs" -msgstr "slut på hukommelse ved tolkning af relokeringer" - -#: readelf.c:861 -msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn + Tillæg\n" - -#: readelf.c:863 -msgid " Offset Info Type Sym.Value Sym. Name + Addend\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn + Tillæg\n" - -#: readelf.c:868 -msgid " Offset Info Type Sym. Value Symbol's Name\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn\n" - -#: readelf.c:870 -msgid " Offset Info Type Sym.Value Sym. Name\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn\n" - -#: readelf.c:878 -msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn + Tillæg\n" - -#: readelf.c:880 -msgid " Offset Info Type Sym. Value Sym. Name + Addend\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn+ Tillæg\n" - -#: readelf.c:885 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn\n" - -#: readelf.c:887 -msgid " Offset Info Type Sym. Value Sym. Name\n" -msgstr " Offset Info Type Symbolværdi Symbolnavn\n" - -#: readelf.c:1134 readelf.c:1136 readelf.c:1184 readelf.c:1186 readelf.c:1195 -#: readelf.c:1197 -#, c-format -msgid "unrecognized: %-7lx" -msgstr "ukendt: %-7lx" - -#: readelf.c:1158 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:1423 -#, c-format -msgid "Processor Specific: %lx" -msgstr "processorspecifik: %lx" - -#: readelf.c:1442 -#, c-format -msgid "Operating System specific: %lx" -msgstr "Operativsystemsspecifik: %lx" - -#: readelf.c:1445 readelf.c:2086 -#, c-format -msgid ": %lx" -msgstr ": %lx" - -#: readelf.c:1459 -msgid "NONE (None)" -msgstr "NONE (ingen)" - -#: readelf.c:1460 -msgid "REL (Relocatable file)" -msgstr "REL (relokérbar fil)" - -#: readelf.c:1461 -msgid "EXEC (Executable file)" -msgstr "EXEC (eksekverbar fil)" - -#: readelf.c:1462 -msgid "DYN (Shared object file)" -msgstr "DYN (delt objektfil)" - -#: readelf.c:1463 -msgid "CORE (Core file)" -msgstr "CORE (hukommelsesfil)" - -#: readelf.c:1467 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "processorspecifik: (%x)" - -#: readelf.c:1469 -#, c-format -msgid "OS Specific: (%x)" -msgstr "OS-specifikt: (%x)" - -#: readelf.c:1471 readelf.c:1573 readelf.c:2238 -#, c-format -msgid ": %x" -msgstr ": %x" - -#: readelf.c:1484 -msgid "None" -msgstr "Ingen" - -#: readelf.c:2278 -msgid "Usage: readelf elf-file(s)\n" -msgstr "Brug: readelf elf-filer\n" - -#: readelf.c:2279 -msgid " Display information about the contents of ELF format files\n" -msgstr "" - -#: 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= Dump the contents of section \n" -" -w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" -" Display the contents of DWARF2 debug sections\n" -msgstr "" - -#: readelf.c:2301 -msgid "" -" -i --instruction-dump=\n" -" Disassemble the contents of section \n" -msgstr "" -" -i --instruction-dump=\n" -" Disassemblér indeholdet i sektion \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 "Slut på hukommelse ved allokering af tabel for ønskede udskrifter." - -#: readelf.c:2491 -#, c-format -msgid "Unrecognized debug option '%s'\n" -msgstr "Ukendt fejlsøgningsargument \"%s\"\n" - -#: readelf.c:2519 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "Ugyldigt flag \"-%c\"\n" - -#: readelf.c:2532 -msgid "Nothing to do.\n" -msgstr "Intet at gøre.\n" - -#: readelf.c:2545 readelf.c:2562 readelf.c:4867 -msgid "none" -msgstr "ingen" - -#: readelf.c:2549 readelf.c:2566 readelf.c:2594 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:2563 -msgid "2's complement, little endian" -msgstr "2-komplement, little endian" - -#: readelf.c:2564 -msgid "2's complement, big endian" -msgstr "2-komplement, big endian" - -#: readelf.c:2591 -msgid "Standalone App" -msgstr "Selvstændig app." - -#: readelf.c:2609 -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:2617 -msgid "ELF Header:\n" -msgstr "ELF-hoved:\n" - -#: readelf.c:2618 -msgid " Magic: " -msgstr " Magi: " - -#: readelf.c:2622 -#, c-format -msgid " Class: %s\n" -msgstr " Klasse: %s\n" - -#: readelf.c:2624 -#, c-format -msgid " Data: %s\n" -msgstr " Data: %s\n" - -#: readelf.c:2626 -#, c-format -msgid " Version: %d %s\n" -msgstr " Version: %d %s\n" - -#: readelf.c:2633 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -#: readelf.c:2635 -#, c-format -msgid " ABI Version: %d\n" -msgstr " ABI-version: %d\n" - -#: readelf.c:2637 -#, c-format -msgid " Type: %s\n" -msgstr " Type: %s\n" - -#: readelf.c:2639 -#, c-format -msgid " Machine: %s\n" -msgstr " Maskine: %s\n" - -#: readelf.c:2641 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " Version: 0x%lx\n" - -#: readelf.c:2644 -msgid " Entry point address: " -msgstr " Indgangsodresse: " - -#: readelf.c:2646 -msgid "" -"\n" -" Start of program headers: " -msgstr "" -"\n" -" Start for programhoveder: " - -#: readelf.c:2648 -msgid "" -" (bytes into file)\n" -" Start of section headers: " -msgstr "" -" (byte inde i filen)\n" -" Start for sektionshoveder: " - -#: readelf.c:2650 -msgid " (bytes into file)\n" -msgstr " (byte inde i filen)\n" - -#: readelf.c:2652 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " Flag: 0x%lx%s\n" - -#: readelf.c:2655 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " Dette hoveds størrelse: %ld (byte)\n" - -#: readelf.c:2657 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " Programhovedernes størrelse: %ld (byte)\n" - -#: readelf.c:2659 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " Antal programhoveder: %ld\n" - -#: readelf.c:2661 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " Sektionshovedernes størrelse: %ld (byte)\n" - -#: readelf.c:2663 -#, c-format -msgid " Number of section headers: %ld" -msgstr " Antal sektionshoveder: %ld" - -#: readelf.c:2668 -#, c-format -msgid " Section header string table index: %ld" -msgstr " Sektionshovedets strengtabelsindeks: %ld" - -#: readelf.c:2702 readelf.c:2738 -msgid "program headers" -msgstr "programhoveder" - -#: readelf.c:2772 -msgid "" -"\n" -"There are no program headers in this file.\n" -msgstr "" -"\n" -"Der findes ingen programhoveder i denne fil.\n" - -#: readelf.c:2778 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" -"\n" -"Elf-filtype er %s\n" - -#: readelf.c:2779 -msgid "Entry point " -msgstr "Indgangspunkt " - -#: readelf.c:2781 -#, c-format -msgid "" -"\n" -"There are %d program headers, starting at offset " -msgstr "" -"\n" -"Der findes %d programhoveder, med begyndelse på offset " - -#: 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 "Slut på hukommelse\n" - -# BUGG: plural-s -#: readelf.c:2810 readelf.c:2812 -msgid "" -"\n" -"Program Headers:\n" -msgstr "" -"\n" -"Programhoveder:\n" - -#: readelf.c:2816 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Type Offset VirtAdr FysAdr FilSt HukommelseSt Flg Just\n" - -#: readelf.c:2819 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Type Offset VirtAdr FysAdr FilStrl HukommelseSt Flg Just\n" - -#: readelf.c:2823 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " Type Offset VirtAdr FysAdr\n" - -#: readelf.c:2825 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " FilStrl HukommelseStrl Flag Just\n" - -#: readelf.c:2925 -msgid "more than one dynamic segment\n" -msgstr "mere end et dynamisk segment\n" - -#: readelf.c:2933 -msgid "Unable to find program interpreter name\n" -msgstr "Kan ikke finde navnet på programtolken\n" - -#: readelf.c:2940 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" -"\n" -" [Anmoder programtolkere: %s]" - -#: readelf.c:2958 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" -"\n" -" Sektion til segment-afbildning:\n" - -#: readelf.c:2959 -msgid " Segment Sections...\n" -msgstr " Segmentsektioner...\n" - -#: readelf.c:3010 readelf.c:3056 -msgid "section headers" -msgstr "sektionshoveder" - -#: readelf.c:3104 readelf.c:3171 -msgid "symbols" -msgstr "symboler" - -#: readelf.c:3115 readelf.c:3182 -msgid "symtab shndx" -msgstr "symtab shndx" - -#: readelf.c:3284 -msgid "" -"\n" -"There are no sections in this file.\n" -msgstr "" -"\n" -"Der findes ingen sektioner i denne fil.\n" - -#: readelf.c:3290 -#, 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:3307 readelf.c:3621 readelf.c:3968 readelf.c:5565 -msgid "string table" -msgstr "strengtabel" - -#: readelf.c:3328 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "Filen indeholder flere tabeller med dynamiske symboler\n" - -#: readelf.c:3340 -msgid "File contains multiple dynamic string tables\n" -msgstr "Filen indeholder flere dynamiske strengtabeller\n" - -#: readelf.c:3346 -msgid "dynamic strings" -msgstr "dynamiske strenge" - -#: readelf.c:3352 -msgid "File contains multiple symtab shndx tables\n" -msgstr "Filen indeholder flere symtab-shndx-tabeller\n" - -# BUGG: plural-s -#: readelf.c:3390 -msgid "" -"\n" -"Section Headers:\n" -msgstr "" -"\n" -"Sektionshoveder:\n" - -# BUGG: plural-s -#: readelf.c:3392 -msgid "" -"\n" -"Section Header:\n" -msgstr "" -"\n" -"Sektionshoved:\n" - -#: readelf.c:3396 -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:3399 -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:3402 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [Nr] Navn Type Adresse Offset\n" - -#: readelf.c:3403 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " Størrelse Poststørrelse Flag Lænk Info Just\n" - -#: 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 "" -"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:3559 -#, c-format -msgid "" -"\n" -"Relocation section at offset 0x%lx contains %ld bytes:\n" -msgstr "" -"\n" -"Relokeringssektionen på offset 0x%lx indeholder %ld byte:\n" - -#: readelf.c:3566 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" -"\n" -"Der findes ingen dynamiske relokeringer i denne fil.\n" - -#: readelf.c:3593 -msgid "" -"\n" -"Relocation section " -msgstr "" -"\n" -"Relokeringssektion " - -#: readelf.c:3598 readelf.c:4031 readelf.c:4045 -#, c-format -msgid "'%s'" -msgstr "" - -#: readelf.c:3600 readelf.c:4047 -#, c-format -msgid " at offset 0x%lx contains %lu entries:\n" -msgstr " på offset 0x%lx indeholder %lu poster:\n" - -#: readelf.c:3638 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" -"\n" -"Der findes ingen relokeringer i denne fil.\n" - -#: readelf.c:3834 -msgid "unwind table" -msgstr "tilbagerulningstabel" - -#: readelf.c:3885 readelf.c:3897 readelf.c:7890 readelf.c:7901 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "Hopper over uventet symboltype %u\n" - -#: readelf.c:3905 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "Hopper over uventet relokeringstype %s\n" - -#: readelf.c:3950 readelf.c:3975 -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:4026 -msgid "" -"\n" -"Could not find unwind info section for " -msgstr "" -"\n" -"Kunne ikke finde tilbagerulningssektion til " - -#: readelf.c:4038 -msgid "unwind info" -msgstr "tilbagerulningsinfo" - -#: readelf.c:4040 -msgid "" -"\n" -"Unwind section " -msgstr "" -"\n" -"Tilbagerulningssektion " - -#: readelf.c:4213 readelf.c:4256 -msgid "dynamic segment" -msgstr "dynamisk segment" - -#: readelf.c:4334 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" -"\n" -"Der findes intet dynamisk segment i denne fil.\n" - -#: readelf.c:4368 -msgid "Unable to seek to end of file!" -msgstr "Kan ikke søge til slutningen af filen!" - -#: readelf.c:4379 -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:4409 -msgid "Unable to seek to end of file\n" -msgstr "Kan ikke søge til slutningen af filen\n" - -#: readelf.c:4415 -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:4420 -msgid "dynamic string table" -msgstr "dynamisk strengtabel" - -#: readelf.c:4454 -msgid "symbol information" -msgstr "symbolinformation" - -#: readelf.c:4478 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%x contains %ld entries:\n" -msgstr "" -"\n" -"Dynamisk segment på offset 0x%x indeholder %ld poster:\n" - -#: readelf.c:4481 -msgid " Tag Type Name/Value\n" -msgstr " Mærke Type Navn/Værdi\n" - -#: readelf.c:4517 -msgid "Auxiliary library" -msgstr "Eksternt bibliotek" - -#: readelf.c:4521 -msgid "Filter library" -msgstr "Filterbibliotek" - -#: readelf.c:4525 -msgid "Configuration file" -msgstr "Konfigurationsfil" - -#: readelf.c:4529 -msgid "Dependency audit library" -msgstr "Afhængighedskontrolsbibliotek" - -#: readelf.c:4533 -msgid "Audit library" -msgstr "Kontrolbibliotek" - -#: readelf.c:4551 readelf.c:4577 readelf.c:4603 -msgid "Flags:" -msgstr "Flag:" - -#: readelf.c:4553 readelf.c:4579 readelf.c:4605 -msgid " None\n" -msgstr " Ingen\n" - -#: readelf.c:4724 -#, c-format -msgid "Shared library: [%s]" -msgstr "Delt bibliotek: [%s]" - -#: readelf.c:4727 -msgid " program interpreter" -msgstr " Programfortolker" - -#: readelf.c:4731 -#, c-format -msgid "Library soname: [%s]" -msgstr "Bibliotekets so-navn: [%s]" - -#: readelf.c:4735 -#, c-format -msgid "Library rpath: [%s]" -msgstr "Bibliotekets rpath: [%s]" - -#: readelf.c:4739 -#, c-format -msgid "Library runpath: [%s]" -msgstr "Bibliotekets runpath: [%s]" - -#: readelf.c:4802 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "Unødvendigt objekt: [%s]\n" - -#: readelf.c:4913 -#, c-format -msgid "" -"\n" -"Version definition section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"Versiondefinitionssektion \"%s\" indeholder %ld poster:\n" - -#: readelf.c:4916 -msgid " Addr: 0x" -msgstr " Adr: 0x" - -#: readelf.c:4918 readelf.c:5113 -#, c-format -msgid " Offset: %#08lx Link: %lx (%s)\n" -msgstr " Offset: %#08lx Lænk: %lx (%s)\n" - -#: readelf.c:4925 -msgid "version definition section" -msgstr "versiondefinitionssektion" - -#: readelf.c:4951 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: Rev: %d Flag: %s" - -#: readelf.c:4954 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " Indeks: %d Ant: %d " - -#: readelf.c:4965 -#, c-format -msgid "Name: %s\n" -msgstr "Navn: %s\n" - -#: readelf.c:4967 -#, c-format -msgid "Name index: %ld\n" -msgstr "Navneindeks: %ld\n" - -#: readelf.c:4982 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: Forælder %d: %s\n" - -#: readelf.c:4985 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: Forælder %d, navneindeks: %ld\n" - -#: readelf.c:5004 -#, c-format -msgid "" -"\n" -"Version needs section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"Versionbehovssektion \"%s\" indeholder %ld poster:\n" - -#: readelf.c:5007 -msgid " Addr: 0x" -msgstr " Adr: 0x" - -#: readelf.c:5009 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr " Offset: %#08lx Lænke til sektion: %ld (%s)\n" - -#: readelf.c:5015 -msgid "version need section" -msgstr "versionsbehovssektion" - -#: readelf.c:5037 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: Version: %d" - -#: readelf.c:5040 -#, c-format -msgid " File: %s" -msgstr " Fil: %s" - -#: readelf.c:5042 -#, c-format -msgid " File: %lx" -msgstr " Fil: %lx" - -#: readelf.c:5044 -#, c-format -msgid " Cnt: %d\n" -msgstr " Ant: %d\n" - -#: readelf.c:5062 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: Navn: %s" - -#: readelf.c:5065 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: Navneindeks: %lx" - -#: readelf.c:5068 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " Flag: %s Version: %d\n" - -#: readelf.c:5104 -msgid "version string table" -msgstr "versionsstrengtabel" - -#: readelf.c:5108 -#, c-format -msgid "" -"\n" -"Version symbols section '%s' contains %d entries:\n" -msgstr "" -"\n" -"Versionsymbolssektion \"%s\" indeholder %d poster:\n" - -#: readelf.c:5111 -msgid " Addr: " -msgstr " Adr: " - -#: readelf.c:5121 -msgid "version symbol data" -msgstr "versionsymbolsdata" - -#: readelf.c:5148 -msgid " 0 (*local*) " -msgstr " 0 (*lokal*) " - -#: readelf.c:5152 -msgid " 1 (*global*) " -msgstr " 1 (*global*) " - -#: readelf.c:5187 readelf.c:5622 -msgid "version need" -msgstr "versionsbehov" - -#: readelf.c:5197 -msgid "version need aux (2)" -msgstr "ydre versionsbehov (2)" - -#: readelf.c:5238 readelf.c:5684 -msgid "version def" -msgstr "versionsdef." - -#: readelf.c:5257 readelf.c:5699 -msgid "version def aux" -msgstr "ydre versionsdef." - -#: readelf.c:5288 -msgid "" -"\n" -"No version information found in this file.\n" -msgstr "" -"\n" -"Der fandtes ingen versionsinformation i denne fil.\n" - -#: readelf.c:5420 -msgid "Unable to read in dynamic data\n" -msgstr "Kan ikke indlæse de dynamiske data\n" - -#: readelf.c:5462 -msgid "Unable to seek to start of dynamic information" -msgstr "Kan ikke søge til begyndelsen af den dynamiske information" - -#: readelf.c:5468 -msgid "Failed to read in number of buckets\n" -msgstr "Mislykkedes at indlæse antal spande\n" - -#: readelf.c:5474 -msgid "Failed to read in number of chains\n" -msgstr "Mislykkedes at indlæse antal kæder\n" - -#: readelf.c:5494 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" -"\n" -"Symboltabel for filbilleder:\n" - -#: readelf.c:5496 -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:5498 -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:5543 -#, c-format -msgid "" -"\n" -"Symbol table '%s' contains %lu entries:\n" -msgstr "" -"\n" -"Symboltabel \"%s\" indeholder %lu poster:\n" - -#: readelf.c:5547 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Nr: Værdi Strl Type Bind Synl Idx Navn\n" - -#: readelf.c:5549 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Nr: Værdi Strl Type Bind Synl Idx Navn\n" - -#: readelf.c:5595 -msgid "version data" -msgstr "versionsdata" - -#: readelf.c:5635 -msgid "version need aux (3)" -msgstr "ydre versionsbehov (3)" - -#: readelf.c:5660 -msgid "bad dynamic symbol" -msgstr "fejlagtigt dynamisk symbol" - -#: readelf.c:5722 -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:5734 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length (total of %d buckets):\n" -msgstr "" -"\n" -"Histogram over spandenes listelængde (totalt %d spande):\n" - -#: readelf.c:5736 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr " Længde Nummer %% af alle Dækning\n" - -#: readelf.c:5741 readelf.c:5760 readelf.c:9146 readelf.c:9338 -msgid "Out of memory" -msgstr "Slut på hukommelse" - -#: readelf.c:5809 -#, 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:5812 -msgid " Num: Name BoundTo Flags\n" -msgstr " Nr: Navn Bind til Flag\n" - -#: readelf.c:5864 -#, c-format -msgid "" -"\n" -"Assembly dump of section %s\n" -msgstr "" -"\n" -"Disassembleringsudskrift af sektion %s\n" - -#: readelf.c:5887 -#, 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:5892 -#, c-format -msgid "" -"\n" -"Hex dump of section '%s':\n" -msgstr "" -"\n" -"Hex.udskrift af sektion \"%s\":\n" - -#: readelf.c:5897 -msgid "section data" -msgstr "sektionsdata" - -#: readelf.c:6046 -msgid "badly formed extended line op encountered!\n" -msgstr "fejlagtigt udformet udvidet linje-op mødtes!\n" - -#: readelf.c:6053 -#, c-format -msgid " Extended opcode %d: " -msgstr " Udvidet op-kode %d: " - -#: readelf.c:6058 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" -"Slut på sekvensen\n" -"\n" - -#: readelf.c:6064 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "sæt Adresse til 0x%lx\n" - -#: readelf.c:6069 -msgid " define new File Table entry\n" -msgstr " definer ny filtabelspost\n" - -#: readelf.c:6070 readelf.c:6199 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " Post\tKatalog\tTid\tStrl.\tNavn\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 "UKENDT: længde %d\n" - -#: readelf.c:6110 -#, c-format -msgid "" -"\n" -"Dump of debug contents of section %s:\n" -"\n" -msgstr "" -"\n" -"Udskrift af fejlsøgningsindhold i sektion %s:\n" -"\n" - -#: readelf.c:6122 -msgid "64-bit DWARF line info is not supported yet.\n" -msgstr "64-bit DWARF-linjeinformation understøttes ikke endnu.\n" - -#: readelf.c:6129 -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" - -#: readelf.c:6137 -msgid "Only DWARF version 2 line info is currently supported.\n" -msgstr "Kun DWARF version 2's linjeinfo understøttes i øjeblikket.\n" - -#: readelf.c:6152 -#, c-format -msgid " Length: %ld\n" -msgstr " Længde: %ld\n" - -#: readelf.c:6153 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " DWARF version: %d\n" - -#: readelf.c:6154 -#, c-format -msgid " Prologue Length: %d\n" -msgstr " Prologlængde: %d\n" - -#: readelf.c:6155 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " Min.-instruktionslængde: %d\n" - -# BUG: Ska det ikke være `' på engelsk? -#: readelf.c:6156 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " initialværdi på \"is_stmt\": %d\n" - -#: readelf.c:6157 -#, c-format -msgid " Line Base: %d\n" -msgstr " linjebase: %d\n" - -#: readelf.c:6158 -#, c-format -msgid " Line Range: %d\n" -msgstr " linjeområde: %d\n" - -#: readelf.c:6159 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " op-kodebase: %d\n" - -#: readelf.c:6168 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" -"\n" -" Op-koder:\n" - -#: readelf.c:6171 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " Op-kode %d har %d argumenter\n" - -#: readelf.c:6177 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" -"\n" -" Katalogtabellen er tom.\n" - -#: readelf.c:6180 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" -"\n" -" Katalogtabellen:\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" -" Filnavnstabellen er tom.\n" - -#: readelf.c:6198 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" -"\n" -" Filnavnstabellen:\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" -" Linjenummersætninger:\n" - -#: readelf.c:6241 -#, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " Særlig op-kode %d: øg adressen med %d til 0x%lx" - -#: readelf.c:6245 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " og linjenumret med %d til %d\n" - -#: readelf.c:6256 -msgid " Copy\n" -msgstr " Kopiér\n" - -#: readelf.c:6263 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " Øg PC med %d til %lx\n" - -#: readelf.c:6271 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " Øg linjenumret med %d til %d\n" - -#: readelf.c:6278 -#, 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" - -#: readelf.c:6286 -#, c-format -msgid " Set column to %d\n" -msgstr " Sæt kolonnen til %d\n" - -#: readelf.c:6293 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " Sæt is_stmt til %d\n" - -#: readelf.c:6298 -msgid " Set basic block\n" -msgstr " Sæt baseblokken\n" - -#: readelf.c:6306 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr " Øg PC med konstant %d til 0x%lx\n" - -#: readelf.c:6314 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " Øg PC med fastlængdeantal %d til 0x%lx\n" - -#: readelf.c:6319 -msgid " Set prologue_end to true\n" -msgstr " Sæt prologue_end til sand\n" - -#: readelf.c:6323 -msgid " Set epilogue_begin to true\n" -msgstr " Sæt epilogue_begin til sand\n" - -#: readelf.c:6329 -#, c-format -msgid " Set ISA to %d\n" -msgstr " Sæt ISA til %d\n" - -#: readelf.c:6333 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr " Ukendt op-kode %d med operand: " - -#: readelf.c:6365 readelf.c:6827 readelf.c:6899 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" -"%s-sektionens indhold:\n" -"\n" - -#: readelf.c:6384 -msgid "64-bit DWARF pubnames are not supported yet.\n" -msgstr "64-bit DWARF-offentlige navne understøttes ikke endnu.\n" - -#: readelf.c:6394 -msgid "Only DWARF 2 pubnames are currently supported\n" -msgstr "Kun DWARF 2 pub.-navn understøttes i øjeblikket\n" - -#: readelf.c:6401 -#, c-format -msgid " Length: %ld\n" -msgstr " Længde: %ld\n" - -#: readelf.c:6403 -#, c-format -msgid " Version: %d\n" -msgstr " Version: %d\n" - -#: readelf.c:6405 -#, c-format -msgid " Offset into .debug_info section: %ld\n" -msgstr " Offset i .debug_info-sektionen: %ld\n" - -#: readelf.c:6407 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr " Strl. på omr. i .debug_info-sekt.: %ld\n" - -#: readelf.c:6410 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" -"\n" -" Offset\tNavn\n" - -#: readelf.c:6501 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "Ukendt TAG-værdi: %lx" - -#: readelf.c:6612 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "Ukendt AT-værdi: %lx" - -#: readelf.c:6649 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "Ukendt FORM-værdi: %lx" - -#: readelf.c:6848 -#, c-format -msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" -msgstr " DW_MACINFO_start_file - linje: %d filnr: %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 - linje : %d makro : %s\n" - -#: readelf.c:6869 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_undef - linje : %d makro : %s\n" - -#: readelf.c:6880 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr " DW_MACINFO_vendor_ext - konstant : %d streng : %s\n" - -#: readelf.c:6908 -msgid " Number TAG\n" -msgstr " Nummer TAG\n" - -#: readelf.c:6914 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -#: readelf.c:6917 -msgid "has children" -msgstr "har børn" - -#: readelf.c:6917 -msgid "no children" -msgstr "ingen børn" - -#: readelf.c:6921 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -#: readelf.c:6942 -#, c-format -msgid " %lu byte block: " -msgstr " %lu byte-blok: " - -#: readelf.c:7265 -msgid "(User defined location op)" -msgstr "(Brugerdefineret plads-op)" - -#: readelf.c:7267 -msgid "(Unknown location op)" -msgstr "(Ukendt plads-op)" - -#: readelf.c:7305 -msgid "debug_loc section data" -msgstr "debug_loc sektionsdata" - -#: readelf.c:7336 -msgid "" -"\n" -"The .debug_loc section is empty.\n" -msgstr "" -"\n" -".debug_loc-sektionen er tom.\n" - -#: readelf.c:7339 -msgid "" -"Contents of the .debug_loc section:\n" -"\n" -msgstr "" -"Indhold i .debug_loc-sektionen:\n" -"\n" - -#: readelf.c:7340 -msgid "" -"\n" -" Offset Begin End Expression\n" -msgstr "" - -#: readelf.c:7412 -msgid "debug_str section data" -msgstr "debug_str sektionsdata" - -#: readelf.c:7431 -msgid "" -msgstr "" - -#: readelf.c:7434 -msgid "" -msgstr "" - -#: readelf.c:7454 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" -"\n" -".debug_str-sektionen er tom.\n" - -#: readelf.c:7458 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" -"Indhold i .debug_str-sektionen:\n" -"\n" - -#: readelf.c:7629 -#, c-format -msgid " (indirect string, offset: 0x%lx): " -msgstr " (indirekte streng, offset: 0x%lx): " - -#: readelf.c:7638 -#, c-format -msgid "Unrecognized form: %d\n" -msgstr "Ukendt formular: %d\n" - -#: readelf.c:7651 -msgid "(not inlined)" -msgstr "(ikke inlined)" - -#: readelf.c:7652 -msgid "(inlined)" -msgstr "(inlined)" - -#: readelf.c:7653 -msgid "(declared as inline but ignored)" -msgstr "(deklareret som inline, men ignoreret)" - -#: readelf.c:7654 -msgid "(declared as inline and inlined)" -msgstr "(deklareret som inline og inlined)" - -#: readelf.c:7655 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (ukendt inlineattributværdi: %lx)" - -#: readelf.c:7826 readelf.c:8029 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" -"Sektion %s indeholder:\n" -"\n" - -#: readelf.c:7850 -msgid "64-bit DWARF debug info is not supported yet.\n" -msgstr "64-bit DWARF-fejlsøgningsinfo understøttes ikke endnu.\n" - -#: readelf.c:7919 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " Oversættelsesenhed @ %lx:\n" - -#: readelf.c:7920 -#, c-format -msgid " Length: %ld\n" -msgstr " Længde: %ld\n" - -#: readelf.c:7921 -#, c-format -msgid " Version: %d\n" -msgstr " Version: %d\n" - -#: readelf.c:7922 -#, c-format -msgid " Abbrev Offset: %ld\n" -msgstr " Fork.-offset: %ld\n" - -#: readelf.c:7923 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Pegerstørrelse: %d\n" - -#: readelf.c:7927 -msgid "Only version 2 DWARF debug information is currently supported.\n" -msgstr "Kun version 2 af DWARF fejlsøgningsinformation understøttes i øjeblikket.\n" - -#: readelf.c:7948 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr "Kan ikke finde nogen .debug_abbrev-sektion!\n" - -#: readelf.c:7954 -msgid "debug_abbrev section data" -msgstr "debug_abbrev sektionsdata" - -#: readelf.c:7991 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "Kan ikke finde post %lu i forkortelsestabellen\n" - -#: readelf.c:7996 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%lx>: Fork.-nummer: %lu (%s)\n" - -#: readelf.c:8050 -msgid "64-bit DWARF aranges are not supported yet.\n" -msgstr "64-bit DWARF-a-intervaller understøttes ikke endnu.\n" - -#: readelf.c:8056 -msgid "Only DWARF 2 aranges are currently supported.\n" -msgstr "Kun DWARF2's a-intervaller understøttes i øjeblikket.\n" - -#: readelf.c:8060 -#, c-format -msgid " Length: %ld\n" -msgstr " Længde: %ld\n" - -#: readelf.c:8061 -#, c-format -msgid " Version: %d\n" -msgstr " Version: %d\n" - -#: readelf.c:8062 -#, c-format -msgid " Offset into .debug_info: %lx\n" -msgstr " Offset i .debug_info: %lx\n" - -#: readelf.c:8063 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Pegerstørrelse: %d\n" - -#: readelf.c:8064 -#, c-format -msgid " Segment Size: %d\n" -msgstr " Segmentstørrelse: %d\n" - -#: readelf.c:8066 -msgid "" -"\n" -" Address Length\n" -msgstr "" -"\n" -" Adresselængde\n" - -#: readelf.c:8248 -#, c-format -msgid "The section %s contains:\n" -msgstr "Sektion %s indeholder:\n" - -#: readelf.c:8271 -msgid "64-bit DWARF format frames are not supported yet.\n" -msgstr "64-bit DWARF-formatskabeloner understøttes ikke endnu.\n" - -#: readelf.c:8820 -#, 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" - -#: readelf.c:8886 -#, c-format -msgid "" -"\n" -"Section '%s' has no debugging data.\n" -msgstr "" -"\n" -"Sektion \"%s\" indeholder ingen fejlsøgningsdata.\n" - -#: readelf.c:8891 readelf.c:8953 -msgid "debug section data" -msgstr "fejlsøgningssektionsdata" - -#: readelf.c:8907 -#, c-format -msgid "Unrecognized debug section: %s\n" -msgstr "Ukendt fejlsøgningssektion: %s\n" - -#: readelf.c:8981 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "Nogen sektioner blev ikke skrevet ud da de ikke eksisterer!\n" - -#: readelf.c:9054 readelf.c:9418 -msgid "liblist" -msgstr "biblioteksliste" - -#: readelf.c:9139 -msgid "options" -msgstr "flag" - -#: readelf.c:9170 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" -"\n" -"Sektion \"%s\" indeholder %d poster:\n" - -# BUGG: Fejl i originalet? -#: readelf.c:9331 -#, fuzzy -msgid "conflict list found without a dynamic symbol table" -msgstr "konfliktliste uden tabel" - -#: readelf.c:9349 readelf.c:9365 -msgid "conflict" -msgstr "konflikt" - -#: readelf.c:9375 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" -"\n" -"Sektion \".conflict\" indeholder %ld poster:\n" - -#: readelf.c:9377 -msgid " Num: Index Value Name" -msgstr " Num: Indeks Værdi Navn" - -#: readelf.c:9426 -#, fuzzy -msgid "liblist string table" -msgstr "strengtabel" - -#: readelf.c:9435 -#, fuzzy, c-format -msgid "" -"\n" -"Library list section '%s' contains %lu entries:\n" -msgstr "" -"\n" -"Versionbehovssektion \"%s\" indeholder %ld poster:\n" - -#: readelf.c:9484 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (prstatus-struktur)" - -#: readelf.c:9485 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (flydendetalsregister)" - -#: readelf.c:9486 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (prpsinfo-struktur)" - -#: readelf.c:9487 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (task-struktur)" - -#: readelf.c:9488 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (user_xfpregs-struktur)" - -#: readelf.c:9489 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (pstatus-struktur)" - -#: readelf.c:9490 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (flydendetalsregister)" - -#: readelf.c:9491 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (psinfo-struktur)" - -#: readelf.c:9492 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (lwpstatus_t-struktur)" - -#: readelf.c:9493 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (lwpsinfo_t-struktur)" - -# BUG: Stavfejl i originalet (str>uc Set the binary file format\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:1953 -#, fuzzy -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: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 "" - -#: srconv.c:2099 -#, c-format -msgid "unable to open output file %s" -msgstr "kan ikke åbne uddatafil %s" - -#: stabs.c:343 stabs.c:1759 -msgid "numeric overflow" -msgstr "numerisk overløb" - -# FIXME -#: stabs.c:354 -#, c-format -msgid "Bad stab: %s\n" -msgstr "Fejlagtig stab: %s\n" - -#: stabs.c:364 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "Advarsel: %s: %s\n" - -#: stabs.c:485 -msgid "N_LBRAC not within function\n" -msgstr "N_LBRAC ikke inde i funktion\n" - -#: stabs.c:524 -msgid "Too many N_RBRACs\n" -msgstr "For mange N_RBRAC's\n" - -#: stabs.c:769 -msgid "unknown C++ encoded name" -msgstr "ukendt C++-kodet navn" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1296 -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:1851 -msgid "missing index type" -msgstr "manglende indekstype" - -#: stabs.c:2178 -msgid "unknown virtual character for baseclass" -msgstr "ukendt virtuelt tegn for baseklasse" - -# FIXME -#: stabs.c:2196 -msgid "unknown visibility character for baseclass" -msgstr "ukendt synlighedskarakter for baseklasse" - -#: stabs.c:2388 -msgid "unnamed $vb type" -msgstr "$vb-type uden navn" - -#: stabs.c:2394 -msgid "unrecognized C++ abbreviation" -msgstr "ukendt C++-forkortelse" - -# FIXME -#: stabs.c:2474 -msgid "unknown visibility character for field" -msgstr "ukendt synlighedskarakter for felt" - -#: stabs.c:2730 -msgid "const/volatile indicator missing" -msgstr "const/volatile-indikator mangler" - -#: stabs.c:2970 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "Ingen kodning af \"%s\"\n" - -#: stabs.c:3283 -msgid "Undefined N_EXCL" -msgstr "Udefineret N_EXCL" - -#: stabs.c:3371 -#, c-format -msgid "Type file number %d out of range\n" -msgstr "Typens filnummer %d uden for sit interval\n" - -#: stabs.c:3376 -#, c-format -msgid "Type index number %d out of range\n" -msgstr "Typens indeksnummer %d uden for sit interval\n" - -#: stabs.c:3463 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "Ukendt XCOFF-type %d\n" - -#: stabs.c:3762 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "fejlagtigt kodet navn \"%s\"\n" - -#: stabs.c:3858 -msgid "no argument types in mangled string\n" -msgstr "ingen argumenttype i kodet streng\n" - -#: strings.c:200 -#, c-format -msgid "invalid number %s" -msgstr "ugyldigt tal %s" - -#: strings.c:640 -#, c-format -msgid "invalid integer argument %s" -msgstr "ugyldigt heltalsargument %s" - -#: strings.c:651 -msgid " Display printable strings in [file(s)] (stdin by default)\n" -msgstr "" - -#: 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" -" - 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= 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 -#, fuzzy -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:769 -msgid "" -" The options are:\n" -" -h --help Display this information\n" -" -v --version Print the program's version number\n" -msgstr "" - -#: sysdump.c:836 -#, c-format -msgid "cannot open input file %s" -msgstr "kan ikke åbne inddatafil %s" - -#: version.c:35 -msgid "Copyright 2002 Free Software Foundation, Inc.\n" -msgstr "Copyright 2002 Free Software Foundation, Inc.\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 "" -"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" - -#: windres.c:239 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "kan ikke åbne %s \"%s\": %s" - -#: windres.c:418 -msgid ": expected to be a directory\n" -msgstr ": forventedes at være et katalog\n" - -#: windres.c:430 -msgid ": expected to be a leaf\n" -msgstr ": forventedes at være et blad\n" - -#: windres.c:439 -#, c-format -msgid "%s: warning: " -msgstr "%s: advarsel: " - -#: windres.c:441 -msgid ": duplicate value\n" -msgstr ": dublet af værdi\n" - -#: windres.c:602 -#, c-format -msgid "unknown format type `%s'" -msgstr "ukendt formattype \"%s\"" - -#: windres.c:603 -#, c-format -msgid "%s: supported formats:" -msgstr "%s: formater som håndteres:" - -#. Otherwise, we give up. -#: windres.c:688 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "kan ikke bestemme \"%s\"'s filtype; brug flag -I" - -#: windres.c:702 -#, fuzzy, c-format -msgid "Usage: %s [option(s)] [input-file] [output-file]\n" -msgstr "Brug: %s [flag] [in-fil] [ud-fil]\n" - -#: windres.c:704 -#, fuzzy -msgid "" -" The options are:\n" -" -i --input= Name input file\n" -" -o --output= Name output file\n" -" -I --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" --language= 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:719 -msgid " --yydebug Turn on parser debugging\n" -msgstr " --yydebug Aktivér tolkens fejlsøgning\n" - -#: windres.c:722 -msgid "" -" -h --help Print this help message\n" -" -V --version Print version information\n" -msgstr "" -" -h --help Vis denne hjælpetekst\n" -" -V --version Vis versionsinformation\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 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:988 -msgid "no resources" -msgstr "ingen resurser" - -#: wrstabs.c:366 wrstabs.c:2026 -#, c-format -msgid "string_hash_lookup failed: %s" -msgstr "string_hash_lookup mislykkedes: %s" - -#: wrstabs.c:666 -#, c-format -msgid "stab_int_type: bad size %u" -msgstr "stab_int_type: fejlagtig størrelse %u" - -#: wrstabs.c:1466 -#, c-format -msgid "%s: warning: unknown size for field `%s' in struct" -msgstr "%s: advarsel: ukendt størrelsen på felt \"%s\" i strukturen" diff --git a/binutils/po/es.po b/binutils/po/es.po deleted file mode 100644 index bdc03cba8..000000000 --- a/binutils/po/es.po +++ /dev/null @@ -1,5176 +0,0 @@ -# Mensajes en español para binutils 2.14rel030712. -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. -# Cristian Othón Martínez Vera , 2002, 2003. -# -msgid "" -msgstr "" -"Project-Id-Version: binutils 2.14rel030712\n" -"POT-Creation-Date: 2003-07-11 13:56+0930\n" -"PO-Revision-Date: 2003-07-14 18:41-0500\n" -"Last-Translator: Cristian Othón Martínez Vera \n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: addr2line.c:74 -#, c-format -msgid "Usage: %s [option(s)] [addr(s)]\n" -msgstr "Modo de empleo: %s [opcion(es)] [direccion(es)]\n" - -#: addr2line.c:75 -msgid " Convert addresses into line number/file name pairs.\n" -msgstr " Convierte direcciones en pares de nombre número/fila.\n" - -#: addr2line.c:76 -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:77 -msgid "" -" The options are:\n" -" -b --target= Set the binary file format\n" -" -e --exe= 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 "" -" Las opciones son:\n" -" -b --target= Establece el formato del fichero binario\n" -" -e --exe= Establece el nombre del fichero de entrada\n" -" (por omisión es a.out)\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: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 "Reportar bichos a %s\n" - -#: addr2line.c:245 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: no se pueden obtener las direcciones del archivo" - -#: addr2line.c:317 nm.c:433 objdump.c:2693 -#, 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:255 -#, c-format -msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" -msgstr "Modo de empleo: %s [opciones emulación] [-]{dmpqrstx}[abcfilNoPsSuvV] [nombre-miembro] [cuenta] fichero-archivo fichero...\n" - -#: ar.c:258 -#, c-format -msgid " %s -M []\n" - -#: ar.c:259 -msgid " commands:\n" -msgstr " órdenes:\n" - -#: ar.c:260 -msgid " d - delete file(s) from the archive\n" -msgstr " d - borra fichero(s) del archivo\n" - -#: ar.c:261 -msgid " m[ab] - move file(s) in the archive\n" -msgstr " m[ab] - mueve fichero(s) en el archivo\n" - -#: ar.c:262 -msgid " p - print file(s) found in the archive\n" -msgstr " p - muestra fichero(s) encontrados en el archivo\n" - -#: ar.c:263 -msgid " q[f] - quick append file(s) to the archive\n" -msgstr " q[f] - agrega rápidamente fichero(s) al archivo\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] - reemplaza fichero(s) existente(s) o inserta fichero(s) nuevo(s) en el archivo\n" - -#: ar.c:265 -msgid " t - display contents of archive\n" -msgstr " t - muestra los contenidos del archivo\n" - -#: ar.c:266 -msgid " x[o] - extract file(s) from the archive\n" -msgstr " x[o] - extrae fichero(s) del archivo\n" - -#: ar.c:267 -msgid " command specific modifiers:\n" -msgstr " modificadores específicos de la orden:\n" - -#: ar.c:268 -msgid " [a] - put file(s) after [member-name]\n" -msgstr " [a] - coloca fichero(s) despúes de [nombre-miembro]\n" - -#: ar.c:269 -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:270 -msgid " [N] - use instance [count] of name\n" -msgstr " [N] - usa la instancia [cuenta] del nombre\n" - -#: ar.c:271 -msgid " [f] - truncate inserted file names\n" -msgstr " [f] - trunca los nombres de fichero insertados\n" - -#: ar.c:272 -msgid " [P] - use full path names when matching\n" -msgstr " [P] - utiliza nombres completos de ruta cuando se buscan coincidencias\n" - -#: ar.c:273 -msgid " [o] - preserve original dates\n" -msgstr " [o] - conserva las fechas originales\n" - -#: ar.c:274 -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:275 -msgid " generic modifiers:\n" -msgstr " modificadores genéricos:\n" - -#: ar.c:276 -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:277 -msgid " [s] - create an archive index (cf. ranlib)\n" -msgstr " [s] - crea un índice del archivo (cf. ranlib)\n" - -#: ar.c:278 -msgid " [S] - do not build a symbol table\n" -msgstr " [S] - no construye una tabla de símbolos\n" - -#: ar.c:279 -msgid " [v] - be verbose\n" -msgstr " [v] - detallado\n" - -#: ar.c:280 -msgid " [V] - display the version number\n" -msgstr " [V] - muestra el número de versión\n" - -#: ar.c:287 -#, c-format -msgid "Usage: %s [options] archive\n" -msgstr "Modo de empleo: %s [opciones] archivo\n" - -#: ar.c:288 -msgid " Generate an index to speed access to archives\n" -msgstr " Generar un índice para acelerar el acceso a los archivos\n" - -#: ar.c:289 -msgid "" -" The options are:\n" -" -h --help Print this help message\n" -" -V --version Print version information\n" -msgstr "" -" Las opciones son:\n" -" -h --help Muestra este mensaje de ayuda\n" -" -V --version Muestra la información de versión\n" - -#: ar.c:512 -msgid "two different operation options specified" -msgstr "se especificaron dos opciones de operación diferentes" - -#: ar.c:587 -#, c-format -msgid "illegal option -- %c" -msgstr "opción ilegal -- %c" - -#: ar.c:619 -msgid "no operation specified" -msgstr "no se especificó una operación" - -#: ar.c:622 -msgid "`u' is only meaningful with the `r' option." -msgstr "`u' sólo tiene significado con la opción `r'." - -#: ar.c:632 -msgid "`N' is only meaningful with the `x' and `d' options." -msgstr "`N' sólo tiene significado con las opciones `x' y `d'." - -#: ar.c:635 -msgid "Value for `N' must be positive." -msgstr "El valor para `N' debe ser positivo." - -#: ar.c:718 -#, c-format -msgid "internal error -- this option not implemented" -msgstr "error interno -- esta opción no está implementada" - -#: ar.c:837 ar.c:888 ar.c:1333 objcopy.c:1579 -#, c-format -msgid "internal stat error on %s" -msgstr "error interno de stat en %s" - -#: ar.c:841 -#, c-format -msgid "" -"\n" -"\n" -"\n" -msgstr "" -"\n" -"\n" -"\n" - -#: ar.c:857 ar.c:925 -#, c-format -msgid "%s is not a valid archive" -msgstr "%s no es un archivo válido" - -#: ar.c:893 -#, c-format -msgid "stat returns negative size for %s" -msgstr "stat devuelve un valor negativo para %s" - -#: ar.c:1020 -#, c-format -msgid "%s is not an archive" -msgstr "%s no es un archivo" - -#: ar.c:1027 -#, c-format -msgid "creating %s" -msgstr "creando %s" - -#: ar.c:1233 -#, c-format -msgid "No member named `%s'\n" -msgstr "No hay un miembro llamado `%s'\n" - -#: ar.c:1285 -#, c-format -msgid "no entry %s in archive %s!" -msgstr "¡no hay una entrada %s en el archivo %s!" - -#: ar.c:1422 -#, c-format -msgid "%s: no archive map to update" -msgstr "%s: no hay un mapa de archivo para actualizar" - -#: arsup.c:86 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "No hay una entrada %s en el archivo.\n" - -#: arsup.c:117 -#, c-format -msgid "Can't open file %s\n" -msgstr "No se puede abrir el fichero %s\n" - -#: arsup.c:172 -#, 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:189 -#, 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:198 -#, c-format -msgid "%s: file %s is not an archive\n" -msgstr "%s: el fichero %s no es un archivo\n" - -#: arsup.c:241 -#, 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:262 arsup.c:301 arsup.c:343 arsup.c:364 arsup.c:430 -#, c-format -msgid "%s: no open output archive\n" -msgstr "%s: no hay un archivo de salida abierto\n" - -#: arsup.c:273 arsup.c:385 arsup.c:411 -#, c-format -msgid "%s: can't open file %s\n" -msgstr "%s: no se puede abrir el fichero %s\n" - -#: arsup.c:328 arsup.c:407 arsup.c:489 -#, 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:439 -#, c-format -msgid "Current open archive is %s\n" -msgstr "El archivo actualmente abierto es %s\n" - -#: arsup.c:464 -#, 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:52 -#, c-format -msgid " emulation options: \n" -msgstr " opciones de emulación:\n" - -#: bucomm.c:113 -#, c-format -msgid "can't set BFD default target to `%s': %s" -msgstr "no se puede establecer el objetivo BFD por omisión a `%s': %s" - -#: bucomm.c:125 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: Formatos coincidentes:" - -#: bucomm.c:142 -msgid "Supported targets:" -msgstr "Objetivos con soporte:" - -#: bucomm.c:144 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: objetivos con soporte:" - -#: bucomm.c:162 -msgid "Supported architectures:" -msgstr "Arquitecturas con soporte:" - -#: bucomm.c:164 -#, c-format -msgid "%s: supported architectures:" -msgstr "%s: arquitecturas con soporte:" - -#: bucomm.c:360 -#, c-format -msgid "BFD header file version %s\n" -msgstr "encabezado del fichero BFD versión %s\n" - -#: bucomm.c:467 -#, c-format -msgid "%s: bad number: %s" -msgstr "%s: número erróneo: %s" - -#: coffdump.c:107 -#, c-format -msgid "#lines %d " -msgstr "#líneas %d " - -#: coffdump.c:471 sysdump.c:767 -#, c-format -msgid "Usage: %s [option(s)] in-file\n" -msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada\n" - -#: coffdump.c:472 -msgid " Print a human readable interpretation of a SYSROFF object file\n" -msgstr " Muestra una interpretación legible por humanos de un fichero objeto SYSROFF\n" - -#: coffdump.c:473 -msgid "" -" The options are:\n" -" -h --help Display this information\n" -" -v --version Display the program's version\n" -"\n" -msgstr "" -" Las opciones son:\n" -" -h --help Muestra esta información\n" -" -v --version Muestra la versión del programa\n" -"\n" - -#: coffdump.c:541 srconv.c:2052 sysdump.c:831 -msgid "no input file specified" -msgstr "no se especificó un fichero de entrada" - -#: debug.c:654 -msgid "debug_add_to_current_namespace: no current file" -msgstr "debug_add_to_current_namespace: no hay un fichero actual" - -#: debug.c:737 -msgid "debug_start_source: no debug_set_filename call" -msgstr "debug_start_source: no hay una llamada debug_set_filename" - -#: debug.c:796 -msgid "debug_record_function: no debug_set_filename call" -msgstr "debug_record_function: no hay una llamada debug_set_filename" - -#: debug.c:852 -msgid "debug_record_parameter: no current function" -msgstr "debug_record_parameter: no hay una función actual" - -#: debug.c:886 -msgid "debug_end_function: no current function" -msgstr "debug_end_function: no hay una función actual" - -#: debug.c:892 -msgid "debug_end_function: some blocks were not closed" -msgstr "debug_end_function: algunos bloques no fueron cerrados" - -#: debug.c:922 -msgid "debug_start_block: no current block" -msgstr "debug_start_block: no hay un bloque actual" - -#: debug.c:960 -msgid "debug_end_block: no current block" -msgstr "debug_end_block: no hay un bloque actual" - -#: debug.c:967 -msgid "debug_end_block: attempt to close top level block" -msgstr "debug_end_block: intento de cerrar el bloque del nivel principal" - -#: debug.c:993 -msgid "debug_record_line: no current unit" -msgstr "debug_record_line: no hay una unidad actual" - -#. FIXME -#: debug.c:1047 -msgid "debug_start_common_block: not implemented" -msgstr "debug_start_common_block: no está implementado" - -#. FIXME -#: debug.c:1059 -msgid "debug_end_common_block: not implemented" -msgstr "debug_end_common_block: no está implementado" - -#. FIXME. -#: debug.c:1153 -msgid "debug_record_label: not implemented" -msgstr "debug_record_label: no está implementado" - -#: debug.c:1179 -msgid "debug_record_variable: no current file" -msgstr "debug_record_variable: no hay un fichero actual" - -#: debug.c:1762 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "debug_make_undefined_type: género sin soporte" - -#: debug.c:1963 -msgid "debug_name_type: no current file" -msgstr "debug_name_type: no hay fichero actual" - -#: debug.c:2011 -msgid "debug_tag_type: no current file" -msgstr "debug_tag_type: no hay fichero actual" - -#: debug.c:2019 -msgid "debug_tag_type: extra tag attempted" -msgstr "debug_tag_type: se intentó una marca extra" - -#: debug.c:2058 -#, 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:2082 -msgid "debug_find_named_type: no current compilation unit" -msgstr "debug_find_named_type: no hay una unidad de compilación actual" - -#: debug.c:2189 -#, 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:2650 -msgid "debug_write_type: illegal type encountered" -msgstr "debug_write_type: se encontró un tipo ilegal" - -#: dlltool.c:812 dlltool.c:837 dlltool.c:863 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "Error interno: Tipo de máquina desconocido: %d" - -#: dlltool.c:900 -#, c-format -msgid "Can't open def file: %s" -msgstr "No se puede abrir el fichero def: %s" - -#: dlltool.c:905 -#, c-format -msgid "Processing def file: %s" -msgstr "Procesando el fichero def: %s" - -#: dlltool.c:909 -msgid "Processed def file" -msgstr "Fichero def procesado" - -#: dlltool.c:935 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "Error sintáctico en el fichero def %s:%d" - -#: dlltool.c:974 -#, c-format -msgid "NAME: %s base: %x" -msgstr "NOMBRE: %s base: %x" - -#: dlltool.c:977 dlltool.c:996 -msgid "Can't have LIBRARY and NAME" -msgstr "No se puede tener BIBLIOTECA y NOMBRE" - -#: dlltool.c:993 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "BIBLIOTECA: %s base %x" - -#: dlltool.c:1251 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "espera: %s" - -#: dlltool.c:1256 dllwrap.c:430 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "el subproceso recibió la señal fatal %d" - -#: dlltool.c:1262 dllwrap.c:437 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s terminó con estado %d" - -#: dlltool.c:1294 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "Succionando la información de la sección %s en %s" - -#: dlltool.c:1423 -#, c-format -msgid "Excluding symbol: %s" -msgstr "Excluyendo el símbolo: %s" - -#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015 -#, 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:1556 -#, c-format -msgid "Done reading %s" -msgstr "%s leído" - -#: dlltool.c:1567 -#, c-format -msgid "Unable to open object file: %s" -msgstr "No se puede abrir el fichero objeto: %s" - -#: dlltool.c:1570 -#, c-format -msgid "Scanning object file %s" -msgstr "Revisando el fichero objeto %s" - -#: dlltool.c:1585 -#, 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:1677 -msgid "Adding exports to output file" -msgstr "Agregando exportaciones al fichero de salida" - -#: dlltool.c:1724 -msgid "Added exports to output file" -msgstr "Exportaciones agregadas al fichero de salida" - -#: dlltool.c:1848 -#, c-format -msgid "Generating export file: %s" -msgstr "Generando el fichero de exportación: %s" - -#: dlltool.c:1853 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "No se puede abrir el fichero temporal de ensamblador: %s" - -#: dlltool.c:1856 -#, c-format -msgid "Opened temporary file: %s" -msgstr "Se abrió el fichero temporal: %s" - -#: dlltool.c:2086 -msgid "Generated exports file" -msgstr "Fichero de exportación generado" - -#: dlltool.c:2378 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "falló bfd_open al abrirl el fichero de cabos: %s" - -#: dlltool.c:2381 -#, c-format -msgid "Creating stub file: %s" -msgstr "Creando el ficheor de cabos: %s" - -#: dlltool.c:2766 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "falló la apertura del inicio del fichero temporal: %s" - -#: dlltool.c:2825 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "falló la apertura del final del fichero temporal: %s" - -#: dlltool.c:2892 -#, c-format -msgid "Can't open .lib file: %s" -msgstr "No se puede abrir el fichero .lib: %s" - -#: dlltool.c:2895 -#, c-format -msgid "Creating library file: %s" -msgstr "Creando el fichero de biblioteca: %s" - -#: dlltool.c:2951 -#, c-format -msgid "cannot delete %s: %s" -msgstr "no se puede borrar %s: %s" - -#: dlltool.c:2955 -msgid "Created lib file" -msgstr "Fichero de biblioteca creado" - -#: dlltool.c:3062 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "Aviso, ignorando las EXPORTaciones duplicadas %s %d,%d" - -#: dlltool.c:3068 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "Error, EXPORTaciones duplicadas con ordinales: %s" - -#: dlltool.c:3191 -msgid "Processing definitions" -msgstr "Procesando definiciones" - -#: dlltool.c:3223 -msgid "Processed definitions" -msgstr "Definiciones procesadas" - -#. xgetext:c-format -#: dlltool.c:3234 dllwrap.c:495 -#, c-format -msgid "Usage %s \n" -msgstr "Modo de empleo %s \n" - -#. xgetext:c-format -#: dlltool.c:3236 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine Crear una DLL para la . [por omisión: %s]\n" - -#: dlltool.c:3237 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " posible: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -#: dlltool.c:3238 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp Generar un fichero de exportación.\n" - -#: dlltool.c:3239 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib Generar un fichero de interfaz.\n" - -#: dlltool.c:3240 -msgid " -a --add-indirect Add dll indirects to export file.\n" -msgstr " -a --add-indirect Agregar indirecciones dll al fichero de exportación.\n" - -#: dlltool.c:3241 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname Nombre de la dll de entrada a colocar en la biblioteca de interfaz.\n" - -#: dlltool.c:3242 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def Nombre del fichero .def para leer.\n" - -#: dlltool.c:3243 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def Nombre del fichero .def para crear.\n" - -#: dlltool.c:3244 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols Exportar todos los símbolos a un .def\n" - -#: dlltool.c:3245 -msgid " --no-export-all-symbols Only export listed symbols\n" -msgstr " --no-export-all-symbols Sólo exportar los símbolos enlistados\n" - -#: dlltool.c:3246 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols No exportar la a\n" - -#: dlltool.c:3247 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr " --no-default-excludes Limpiar los símbolos excluídos por omisión\n" - -#: dlltool.c:3248 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file Leer el fichero base generado por el enlazador.\n" - -#: dlltool.c:3249 -msgid " -x --no-idata4 Don't generate idata$4 section.\n" -msgstr " -x --no-idata4 No generar la sección idata$4.\n" - -#: dlltool.c:3250 -msgid " -c --no-idata5 Don't generate idata$5 section.\n" -msgstr " -c --no-idata5 No generar la sección idata$5.\n" - -#: dlltool.c:3251 -msgid " -U --add-underscore Add underscores to symbols in interface library.\n" -msgstr " -U --add-underscore Agregar subrayado a los símbolos en la biblioteca de interfaz.\n" - -#: dlltool.c:3252 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at Eliminar @ de los nombres exportados.\n" - -#: dlltool.c:3253 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias Agregar aliases sin @.\n" - -#: dlltool.c:3254 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as Usar para ensamblador.\n" - -#: dlltool.c:3255 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags Pasar al ensamblador.\n" - -#: dlltool.c:3256 -msgid " -C --compat-implib Create backward compatible import library.\n" -msgstr " -C --compat-implib Crear biblioteca de importación compatible hacia atrás.\n" - -#: dlltool.c:3257 -msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" -msgstr " -n --no-delete Conservar los ficheros temporales (repetir para conservación extra).\n" - -#: dlltool.c:3258 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose Detallado.\n" - -#: dlltool.c:3259 -msgid " -V --version Display the program version.\n" -msgstr " -V --version Muestra la versión del programa.\n" - -#: dlltool.c:3260 -msgid " -h --help Display this information.\n" -msgstr " -h --help Muestra esta información.\n" - -#: dlltool.c:3262 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf Procesa los ficheros objeto mcore-elf hacia .\n" - -#: dlltool.c:3263 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker Usa como el enlazador.\n" - -#: dlltool.c:3264 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags Pasa al enlazador.\n" - -#: dlltool.c:3418 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "No se puede abrir el fichero-base: %s" - -#: dlltool.c:3450 -#, c-format -msgid "Machine '%s' not supported" -msgstr "La máquina '%s' no tiene soporte" - -#: dlltool.c:3553 dllwrap.c:214 -#, c-format -msgid "Tried file: %s" -msgstr "Fichero intentado: %s" - -#: dlltool.c:3560 dllwrap.c:221 -#, c-format -msgid "Using file: %s" -msgstr "Usando el fichero: %s" - -#: dllwrap.c:308 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "Conservando el fichero base temporal %s" - -#: dllwrap.c:310 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "Borrando el fichero base temporal %s" - -#: dllwrap.c:324 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "Conservando el fichero exp temporal %s" - -#: dllwrap.c:326 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "Borrando el fichero exp temporal %s" - -#: dllwrap.c:339 -#, c-format -msgid "Keeping temporary def file %s" -msgstr "Conservando el fichero def temporal %s" - -#: dllwrap.c:341 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "Borrando el fichero def temporal %s" - -#: dllwrap.c:496 -msgid " Generic options:\n" -msgstr " Opciones genéricas:\n" - -#: dllwrap.c:497 -msgid " --quiet, -q Work quietly\n" -msgstr " --quiet, -q Trabajar silenciosamente\n" - -#: dllwrap.c:498 -msgid " --verbose, -v Verbose\n" -msgstr " --verbose, -v Con detalle\n" - -#: dllwrap.c:499 -msgid " --version Print dllwrap version\n" -msgstr " --version Muestra la versión de dllwrap\n" - -#: dllwrap.c:500 -msgid " --implib Synonym for --output-lib\n" -msgstr " --impllib Sinónimo para --output-lib\n" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr " Opciones para %s:\n" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name Por omisión es \"gcc\"\n" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags Cambia las opciones por omisión de ld\n" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name Por omisión es \"dlltool\"\n" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry Especifica un punto de entrada alternativo para la DLL\n" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr " --image-base Especifica la dirección de la imagen base\n" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target i386-cygwin32 ó i386-mingw32\n" - -#: dllwrap.c:508 -msgid " --dry-run Show what needs to be run\n" -msgstr " --dry-run Muestra lo que se necesita ejecutar\n" - -#: dllwrap.c:509 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr " --mno-cygwin Crea una DLL Mingw\n" - -#: dllwrap.c:510 -msgid " Options passed to DLLTOOL:\n" -msgstr " Opciones pasadas a DLLTOOL:\n" - -#: dllwrap.c:511 -msgid " --machine \n" -msgstr " --machine \n" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp Genera un fichero de exportación.\n" - -# ¿No será acaso una biblioteca de salida? cfuga -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib Genera una biblioteca de entrada.\n" - -#: dllwrap.c:514 -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:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname Nombre del fichero dll de entrada a colocar en la biblioteca de salida.\n" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr " --def Nombre del fichero .def de entrada\n" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr " --output-def Nombre del fichero .def de salida\n" - -#: dllwrap.c:518 -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:519 -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:520 -msgid " --exclude-symbols Exclude from .def\n" -msgstr " --exclude-symbols Excluye la a del .def\n" - -#: dllwrap.c:521 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes Elimina los símbolos excluídos por omisión\n" - -#: dllwrap.c:522 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file Lee el fichero base generado por el enlazador\n" - -#: dllwrap.c:523 -msgid " --no-idata4 Don't generate idata$4 section\n" -msgstr " --no-idata4 No genera la sección idata$4\n" - -#: dllwrap.c:524 -msgid " --no-idata5 Don't generate idata$5 section\n" -msgstr " --no-idata5 No genera la sección idata$5\n" - -#: dllwrap.c:525 -msgid " -U Add underscores to .lib\n" -msgstr " -U Agrega subrayados a .lib\n" - -#: dllwrap.c:526 -msgid " -k Kill @ from exported names\n" -msgstr " -k Elimina @ de los nombres exportados\n" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias Agrega aliases sin @\n" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr " --as Usa como ensamblador\n" - -#: dllwrap.c:529 -msgid " --nodelete Keep temp files.\n" -msgstr " --nodelete Conserva los ficheros temporales.\n" - -#: dllwrap.c:530 -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:802 -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:830 -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" -"Creando uno, pero tal vez eso no es lo que quiere" - -#: dllwrap.c:992 -#, c-format -msgid "DLLTOOL name : %s\n" -msgstr "nombre DLLTOOL : %s\n" - -#: dllwrap.c:993 -#, c-format -msgid "DLLTOOL options : %s\n" -msgstr "opciones DLLTOOL: %s\n" - -#: dllwrap.c:994 -#, c-format -msgid "DRIVER name : %s\n" -msgstr "nombre DRIVER : %s\n" - -#: dllwrap.c:995 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "opciones DRIVER : %s\n" - -#: emul_aix.c:58 -#, c-format -msgid " [-g] - 32 bit small archive\n" -msgstr " [-g] - archivo small de 32 bit\n" - -#: emul_aix.c:59 -msgid " [-X32] - ignores 64 bit objects\n" -msgstr " [-X32] - ignora los objetos de 64 bit\n" - -#: emul_aix.c:60 -msgid " [-X64] - ignores 32 bit objects\n" -msgstr " [-X64] - ignora los objetos de 32 bit\n" - -#: emul_aix.c:61 -msgid " [-X32_64] - accepts 32 and 64 bit objects\n" -msgstr " [-X32_64] -acepta objetos de 32 y 64 bit\n" - -#: ieee.c:326 -msgid "unexpected end of debugging information" -msgstr "fin inesperado de la información de depuración" - -#: ieee.c:421 -msgid "invalid number" -msgstr "número inválido" - -#: ieee.c:480 -msgid "invalid string length" -msgstr "longitud de cadena inválida" - -#: ieee.c:537 ieee.c:578 -msgid "expression stack overflow" -msgstr "desbordamiento de la pila de expresión" - -#: ieee.c:557 -msgid "unsupported IEEE expression operator" -msgstr "operador de expresión IEEE sin soporte" - -#: ieee.c:572 -msgid "unknown section" -msgstr "sección desconocida" - -#: ieee.c:593 -msgid "expression stack underflow" -msgstr "desbordamiento por debajo de la pila de expresión" - -#: ieee.c:607 -msgid "expression stack mismatch" -msgstr "no hay coincidencia en la pila de expresión" - -#: ieee.c:646 -msgid "unknown builtin type" -msgstr "tipo interno desconocido" - -#: ieee.c:791 -msgid "BCD float type not supported" -msgstr "tipo de coma flotante BCD sin soporte" - -#: ieee.c:937 -msgid "unexpected number" -msgstr "número inesperado" - -#: ieee.c:944 -msgid "unexpected record type" -msgstr "tipo de grabación inesperado" - -#: ieee.c:977 -msgid "blocks left on stack at end" -msgstr "se dejaron bloques en la pila al final" - -#: ieee.c:1242 -msgid "unknown BB type" -msgstr "typo BB desconocido" - -#: ieee.c:1251 -msgid "stack overflow" -msgstr "desbordamiento de la pila" - -#: ieee.c:1276 -msgid "stack underflow" -msgstr "desbordamiento de la pila por debajo" - -#: ieee.c:1390 ieee.c:1462 ieee.c:2161 -msgid "illegal variable index" -msgstr "índice de variable ilegal" - -#: ieee.c:1440 -msgid "illegal type index" -msgstr "índice de tipo ilegal" - -#: ieee.c:1450 ieee.c:1487 -msgid "unknown TY code" -msgstr "código TY desconocido" - -#: ieee.c:1469 -msgid "undefined variable in TY" -msgstr "variable indefinida en TY" - -#. Pascal file name. FIXME. -#: ieee.c:1880 -msgid "Pascal file name not supported" -msgstr "El nombre de fichero Pascal no tiene soporte" - -#: ieee.c:1928 -msgid "unsupported qualifier" -msgstr "calificador sin soporte" - -#: ieee.c:2199 -msgid "undefined variable in ATN" -msgstr "variable indefinida en ATN" - -#: ieee.c:2242 -msgid "unknown ATN type" -msgstr "tipo ATN desconocido" - -#. Reserved for FORTRAN common. -#: ieee.c:2364 -msgid "unsupported ATN11" -msgstr "ATN11 sin soporte" - -#. We have no way to record this information. FIXME. -#: ieee.c:2391 -msgid "unsupported ATN12" -msgstr "ATN12 sin soporte" - -#: ieee.c:2451 -msgid "unexpected string in C++ misc" -msgstr "cadena inesperada en misc de C++" - -#: ieee.c:2464 -msgid "bad misc record" -msgstr "grabación misc errónea" - -#: ieee.c:2507 -msgid "unrecognized C++ misc record" -msgstr "grabación misc de C++ no reconocida" - -#: ieee.c:2624 -msgid "undefined C++ object" -msgstr "objeto C++ no definido" - -#: ieee.c:2658 -msgid "unrecognized C++ object spec" -msgstr "especificación de objeto C++ no reconocida" - -#: ieee.c:2694 -msgid "unsupported C++ object type" -msgstr "tipo de objeto C++ sin soporte" - -#: ieee.c:2704 -msgid "C++ base class not defined" -msgstr "no está definida la clase base de C++" - -#: ieee.c:2716 ieee.c:2821 -msgid "C++ object has no fields" -msgstr "el objeto C++ no tiene campos" - -#: ieee.c:2735 -msgid "C++ base class not found in container" -msgstr "no se encuentra la clase base C++ en el contenedor" - -#: ieee.c:2842 -msgid "C++ data member not found in container" -msgstr "no se encuentra los datos miembros C++ en el contenedor" - -#: ieee.c:2883 ieee.c:3033 -msgid "unknown C++ visibility" -msgstr "visibilidad C++ desconocida" - -#: ieee.c:2917 -msgid "bad C++ field bit pos or size" -msgstr "posición o tamaño erróneo del campo de bit C++" - -#: ieee.c:3009 -msgid "bad type for C++ method function" -msgstr "tipo erróneo para la función del método C++" - -#: ieee.c:3019 -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:3058 -msgid "C++ static virtual method" -msgstr "método virtual static de C++" - -#: ieee.c:3153 -msgid "unrecognized C++ object overhead spec" -msgstr "especificación de adelanto de objeto C++ no reconocida" - -#: ieee.c:3192 -msgid "undefined C++ vtable" -msgstr "vtable C++ no definida" - -#: ieee.c:3263 -msgid "C++ default values not in a function" -msgstr "valores C++ por omisión no están en una función" - -#: ieee.c:3303 -msgid "unrecognized C++ default type" -msgstr "tipo por omisión de C++ no reconocido" - -#: ieee.c:3334 -msgid "reference parameter is not a pointer" -msgstr "el parámetro de referencia no es un apuntador" - -#: ieee.c:3419 -msgid "unrecognized C++ reference type" -msgstr "tipo de referencia de C++ no reconocido" - -#: ieee.c:3501 -msgid "C++ reference not found" -msgstr "no se encontró la referencia C++" - -#: ieee.c:3509 -msgid "C++ reference is not pointer" -msgstr "la referencia C++ no es un apuntador" - -#: ieee.c:3538 ieee.c:3546 -msgid "missing required ASN" -msgstr "falta el ASN requerido" - -#: ieee.c:3576 ieee.c:3584 -msgid "missing required ATN65" -msgstr "falta el ATN65 requerido" - -#: ieee.c:3598 -msgid "bad ATN65 record" -msgstr "registro ATN65 erróneo" - -#: ieee.c:4286 -msgid "IEEE numeric overflow: 0x" -msgstr "desbordamiento numérico IEEE: 0x" - -#: ieee.c:4332 -#, c-format -msgid "IEEE string length overflow: %u\n" -msgstr "desbordamiento de longitud de cadena IEEE: %u\n" - -#: ieee.c:5382 -#, c-format -msgid "IEEE unsupported integer type size %u\n" -msgstr "tamaño de tipo entero IEEE %u sin soporte\n" - -#: ieee.c:5418 -#, c-format -msgid "IEEE unsupported float type size %u\n" -msgstr "tamaño de tipo coma flotante IEEE %u sin soporte\n" - -#: ieee.c:5454 -#, c-format -msgid "IEEE unsupported complex type size %u\n" -msgstr "tamaño de tipo complejo IEEE %u sin soporte\n" - -#: nlmconv.c:282 srconv.c:2043 -msgid "input and output files must be different" -msgstr "los ficheros de entrada y salida deben ser diferentes" - -#: nlmconv.c:329 -msgid "input file named both on command line and with INPUT" -msgstr "fichero de entrada nombrado en la línea de comandos y con INPUT" - -#: nlmconv.c:338 -msgid "no input file" -msgstr "no hay fichero de entrada" - -#: nlmconv.c:368 -msgid "no name for output file" -msgstr "no hay nombre para el fichero de salida" - -#: nlmconv.c:382 -msgid "warning: input and output formats are not compatible" -msgstr "aviso: los formatos de entrada y salida no son compatibles" - -#: nlmconv.c:411 -msgid "make .bss section" -msgstr "hacer sección .bss" - -#: nlmconv.c:420 -msgid "make .nlmsections section" -msgstr "hacer sección .nlmsections" - -#: nlmconv.c:422 -msgid "set .nlmsections flags" -msgstr "establecer opciones .nlmsections" - -#: nlmconv.c:450 -msgid "set .bss vma" -msgstr "establecer vma .bss" - -#: nlmconv.c:457 -msgid "set .data size" -msgstr "establecer tamaño de .data" - -#: nlmconv.c:637 -#, 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:657 -msgid "set start address" -msgstr "establecer la dirección de inicio" - -#: nlmconv.c:706 -#, c-format -msgid "warning: START procedure %s not defined" -msgstr "aviso: el procedimiento START %s no está definido" - -#: nlmconv.c:708 -#, c-format -msgid "warning: EXIT procedure %s not defined" -msgstr "aviso: el procedimiento EXIT %s no está definido" - -#: nlmconv.c:710 -#, c-format -msgid "warning: CHECK procedure %s not defined" -msgstr "aviso: el procedimiento CHECK %s no está definido" - -#: nlmconv.c:731 nlmconv.c:920 -msgid "custom section" -msgstr "sección a la medida" - -#: nlmconv.c:752 nlmconv.c:949 -msgid "help section" -msgstr "sección de ayuda" - -#: nlmconv.c:774 nlmconv.c:967 -msgid "message section" -msgstr "sección de mensajes" - -#: nlmconv.c:790 nlmconv.c:1000 -msgid "module section" -msgstr "sección de módulos" - -#: nlmconv.c:810 nlmconv.c:1016 -msgid "rpc section" -msgstr "sección de rpc" - -#. 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: aviso: las bibliotecas compartidas no pueden tener datos sin iniciar" - -#: nlmconv.c:867 nlmconv.c:1035 -msgid "shared section" -msgstr "sección compartida" - -#: nlmconv.c:875 -msgid "warning: No version number given" -msgstr "aviso: No se dió un número de versión" - -#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030 -#, c-format -msgid "%s: read: %s" -msgstr "%s: leído: %s" - -#: nlmconv.c:937 -msgid "warning: MAP and FULLMAP are not supported; try ld -M" -msgstr "aviso: MAP y FULLMAP no tienen soporte; pruebe ld -M" - -#: nlmconv.c:1109 -#, 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:1110 -msgid " Convert an object file into a NetWare Loadable Module\n" -msgstr "Convertir un fichero objeto en un Módulo Cargable de NetWare (NLM)\n" - -#: nlmconv.c:1111 -msgid "" -" The options are:\n" -" -I --input-target= Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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 "" -" Las opciones son:\n" -" -I --input-target= Establece el formato del fichero binario de entrada\n" -" -O --output-target= Establece el formato del fichero binario de salida\n" -" -T --header-file= Lee el para la información del encabezado NLM\n" -" -l --linker= Usa el para cualquier enlazado\n" -" -d --debug Muestra en salida estándar la línea de comando del enlazador\n" -" -h --help Muestra esta información\n" -" -v --version Muestra la versión del programa\n" - -#: nlmconv.c:1153 -#, c-format -msgid "support not compiled in for %s" -msgstr "soporte no compilado para %s" - -#: nlmconv.c:1193 -msgid "make section" -msgstr "sección make" - -#: nlmconv.c:1207 -msgid "set section size" -msgstr "establecer el tamaño de la sección" - -#: nlmconv.c:1213 -msgid "set section alignment" -msgstr "establecer la alineación de la sección" - -#: nlmconv.c:1217 -msgid "set section flags" -msgstr "establecer las opciones de la sección" - -#: nlmconv.c:1228 -msgid "set .nlmsections size" -msgstr "establecer el tamaño de .nlmsections" - -#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 -msgid "set .nlmsection contents" -msgstr "establecer el contenido de .nlmsection" - -#: nlmconv.c:1839 -msgid "stub section sizes" -msgstr "tamaños de la sección de cabos" - -#: nlmconv.c:1888 -msgid "writing stub" -msgstr "escribiendo cabo" - -#: nlmconv.c:1977 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "reubicación relativa PC contra %s sin resolver" - -#: nlmconv.c:2041 -#, c-format -msgid "overflow when adjusting relocation against %s" -msgstr "desbordamiento al ajustar la reubicación contra %s" - -#: nlmconv.c:2158 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "%s: falló la ejecución de %s: " - -#: nlmconv.c:2173 -#, c-format -msgid "Execution of %s failed" -msgstr "Falló la ejecución de %s" - -#: nm.c:283 size.c:85 strings.c:657 -#, c-format -msgid "Usage: %s [option(s)] [file(s)]\n" -msgstr "Modo de empleo: %s [opcion(es)] [fichero(s)]\n" - -#: nm.c:284 -msgid " List symbols in [file(s)] (a.out by default).\n" -msgstr "Lista de símbolos en [fichero(s)] (a.out por omisión).\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 "" -"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 omisión), `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 (ignorado)\n" -" -f, --format=FORMATO Usa el formato de salida FORMATO. FORMATO puede ser\n" -" `bsd', `sysv' o `posix'. Por omisión 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" -" -S, --print-size Muestra el tamaño de los símbolos definidos\n" -" -s, --print-armap Incluye el índice de los símbolos de miembros\n" -" del archivo\n" -" --size-sort Ordena los símbolos por tamaño\n" -" -t, --radix=RADICAL Utiliza el RADICAL para mostrar los valores de\n" -" los símbolos\n" -" --target=NOMBREBFD Especifica el formato de objeto objetivo como\n" -" NOMBREBFD\n" -" -u, --undefined-only Muestra sólo los símbolos indefinidos\n" -" -X 32_64 (ignorado)\n" -" -h, --help Muestra esta información\n" -" -V, --version Muestra el número de versión de este programa\n" -"\n" - -#: nm.c:319 objdump.c:250 -#, c-format -msgid "Report bugs to %s.\n" -msgstr "Reportar bichos a %s.\n" - -#: nm.c:352 -#, c-format -msgid "%s: invalid radix" -msgstr "%s: radical inválido" - -#: nm.c:377 -#, c-format -msgid "%s: invalid output format" -msgstr "%s: formato de salida inválido" - -#: nm.c:494 -msgid "Only -X 32_64 is supported" -msgstr "Solamente -X 32_64 tiene soporte" - -#: nm.c:514 -msgid "Using the --size-sort and --undefined-only options together" -msgstr "Al usar juntas las opciones --size-sort y --undefined-only" - -#: nm.c:515 -msgid "will produce no output, since undefined symbols have no size." -msgstr "no se producirá salida, porque los símbolos indefinidos no tienen tamaño." - -#: nm.c:543 -#, c-format -msgid "data size %ld" -msgstr "tamaño de datos %ld" - -#: nm.c:568 readelf.c:5809 readelf.c:5845 -#, c-format -msgid ": %d" -msgstr " %d:" - -#: nm.c:570 readelf.c:5811 readelf.c:5857 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:572 readelf.c:5813 readelf.c:5860 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:1376 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"Símbolos indefinidos de %s:\n" -"\n" - -#: nm.c:1378 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"Símbolos de %s:\n" -"\n" - -#: nm.c:1380 nm.c:1438 -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:1383 nm.c:1441 -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:1434 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"Símbolos indefinidos de %s[%s]:\n" -"\n" - -#: nm.c:1436 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"Símbolos de %s[%s]:\n" -"\n" - -#: nm.c:1658 -msgid "" -"\n" -"Archive index:\n" -msgstr "" -"\n" -"Índice del archivo:\n" - -#: objcopy.c:414 srconv.c:1952 -#, 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:415 -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:416 objcopy.c:495 -msgid " The options are:\n" -msgstr " Las opciones son:\n" - -#: objcopy.c:417 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" --add-gnu-debuglink= Add section .gnu_debuglink linking to \n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --redefine-syms --redefine-sym for all symbol pairs \n" -" listed in \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code Use alternate machine code for output\n" -" --prefix-symbols Add to start of every symbol name\n" -" --prefix-sections Add to start of every section name\n" -" --prefix-alloc-sections \n" -" Add 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 Asume que el fichero de entrada está en\n" -" el formato \n" -" -O --output-target Crea un fichero de salida en el formato\n" -" \n" -" -B --binary-architecture Establece la arquitectura del fichero de\n" -" salida, cuando la entrada es binaria\n" -" -F --target Establece tanto el formato de salida como\n" -" el de entrada a \n" -" --debugging Convertir la información de depuración, si\n" -" es posible\n" -" -p --preserve-dates Copiar las marcas de tiempo de modificación y\n" -" acceso a la salida\n" -" -j --only-section Sólo copiar la sección en la salida\n" -" --add-gnu-debuglink= Agregar la sección de enlazado .gnu_debuglink\n" -" al ero\n" -" -R --remove-section Borrar la sección de la salida\n" -" -S --strip-all Borrar todos los símbolos y la información de\n" -" reubicación\n" -" -g --strip-debug Borrar todos los símbolos y secciones de\n" -" depuración\n" -" --strip-unneeded Borrar todos los símbolos innecesarios para\n" -" las reubicaciones\n" -" -N --strip-symbol No copiar el símbolo \n" -" -K --keep-symbol Sólo copiar el símbolo \n" -" -L --localize-symbol Forzar que el símbolo se marque como local\n" -" -G --keep-global-symbol Volver locales todos los símbolos excepto \n" -" -W --weaken-symbol Forzar que el símbolo se marque como débil\n" -" --weaken Forzar que todos los símbolos se marquen como débiles\n" -" -x --discard-all Borra todos los símbolos que no son globales\n" -" -X --discard-locals Borra cualquier símbolo generado por el compilador\n" -" -i --interleave Sólo copia uno de cada bytes\n" -" -b --byte Selecciona el byte en cada bloque espaciado\n" -" --gap-fill Rellena los huecos entre secciones con \n" -" --pad-to Rellena la última sección hasta la dirección \n" -" --set-start Establece la dirección de inicio en \n" -" {--change-start|--adjust-start} \n" -" Agrega a la dirección de inicio\n" -" {--change-addresses|--adjust-vma} \n" -" Agrega a las direcciones LMA, VMA y la de inicio\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Cambia el LMA y el VMA de la sección por \n" -" --change-section-lma {=|+|-}\n" -" Cambia el LMA de la sección por \n" -" --change-section-vma {=|+|-}\n" -" Cambia el VMA de la sección por \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Avisar si no existe una sección nombrada\n" -" --set-section-flags =\n" -" Establece las propiedades de la sección \n" -" a \n" -" --add-section =\n" -" Agrega la sección que se encuentra\n" -" en el a la salida\n" -" --rename-section =[,] Renombra la sección a \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 globales\n" -" --redefine-sym =\n" -" Redefine el nombre de símbolo a \n" -" --srec-len Restringe la longitud de los Srecords generados\n" -" --srec-forceS3 Restringe el tipo de los Srecords generados a S3\n" -" --strip-symbols -N para todos los símbolos enlistados en el \n" -" --keep-symbols -K para todos los símbolos enlistados en el \n" -" --localize-symbols -L para todos los símbolos enlistados en el \n" -" --keep-global-symbols -G para todos los símbolos enlistados en el ero\n" -" --weaken-symbols -W para todos los símbolos enlistados en el \n" -" --alt-machine-code <índice> Utiliza código máquina alternativo para la salida\n" -" --prefix-symbols Agrega al inicio de cada nombre de símbolo\n" -" --prefix-sections Agrega al inicio de cada nombre de sección\n" -" --prefix-alloc-sections \n" -" Agrega al inicio de cada nombre de\n" -" sección alojable\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 Enlista los formatos objeto y arquitecturas\n" -" que se soportan\n" - -#: objcopy.c:493 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "Modo de empleo: %s fichero(s)-entrada\n" - -#: objcopy.c:494 -msgid " Removes symbols and sections from files\n" -msgstr " Remueve símbolos y secciones de los ficheros\n" - -#: objcopy.c:496 -msgid "" -" -I --input-target= Assume input file is in format \n" -" -O --output-target= Create an output file in format \n" -" -F --target= Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target Asume que el fichero de entrada está en\n" -" el formato \n" -" -O --output-target Crea un fichero de salida en el formato\n" -" \n" -" -F --target Establece tanto el formato de salida como\n" -" el de entrada a \n" -" -p --preserve-dates Copiar las marcas de tiempo de modificación y\n" -" acceso a la salida\n" -" -R --remove-section Borra la sección de la salida\n" -" -s --strip-all Borra todos los símbolos y la información\n" -" de reubicación\n" -" -g -S --strip-debug Borra todos los símbolos y secciones de\n" -" depuración\n" -" --strip-unneeded Borra todos los símbolos innecesarios para\n" -" las reubicaciones\n" -" -N --strip-symbol No copia el símbolo \n" -" -K --keep-symbol Sólo copia el símbolo \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" -" -o Coloca la salida limpia en el \n" - -#: objcopy.c:567 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "opción de sección `%s' desconocida" - -#: objcopy.c:568 -#, c-format -msgid "supported flags: %s" -msgstr "opciones con soporte: %s" - -#: objcopy.c:645 objcopy.c:2526 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "no se puede obtener la información de stat: %s: %s" - -#: objcopy.c:652 objcopy.c:2544 -#, c-format -msgid "cannot open: %s: %s" -msgstr "no se puede abrir: %s: %s" - -#: objcopy.c:655 objcopy.c:2548 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread falló" - -#: objcopy.c:728 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "Ignorando la basura encontrada en la línea %d de %s" - -#: objcopy.c:979 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: Redefiniciones múltiples del símbolo \"%s\"" - -#: objcopy.c:983 -#, 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:1010 -#, 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:1088 -#, c-format -msgid "%s: garbage at end of line %d" -msgstr "%s: basura al final de la línea %d" - -#: objcopy.c:1091 -#, c-format -msgid "%s: missing new symbol name at line %d" -msgstr "%s: falta el nombre del símbolo nuevo en la línea %d" - -#: objcopy.c:1101 -#, c-format -msgid "%s: premature end of file at line %d" -msgstr "%s: fin de fichero prematuro en la línea %d" - -#: objcopy.c:1147 -msgid "Unable to change endianness of input file(s)" -msgstr "No se puede cambiar la endianez del (los) fichero(s) de entrada" - -#: objcopy.c:1155 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "copiar de %s(%s) a %s(%s)\n" - -#: objcopy.c:1182 -#, c-format -msgid "Warning: Output file cannot represent architecture %s" -msgstr "Aviso: El fichero de salida no puede representar a la arquitectura %s" - -#: objcopy.c:1211 -#, c-format -msgid "can't create section `%s': %s" -msgstr "no se puede crear la sección `%s' %s" - -#: objcopy.c:1304 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "No se puede llenar el espacio después de %s: %s" - -#: objcopy.c:1329 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "No se puede agregar relleno a %s: %s" - -#: objcopy.c:1485 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: error al copiar los datos privados BFD: %s" - -#: objcopy.c:1498 -msgid "unknown alternate machine code, ignored" -msgstr "código máquina alternativo desconocido, ignorado" - -#: objcopy.c:1531 objcopy.c:1561 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "no se puede crear el directorio %s para copiar el archivo (error: %s)" - -#: objcopy.c:1749 -#, c-format -msgid "Multiple renames of section %s" -msgstr "Renombrado múltiple de la sección %s" - -#: objcopy.c:1840 -msgid "making" -msgstr "haciendo" - -#: objcopy.c:1849 -msgid "size" -msgstr "tamaño" - -#: objcopy.c:1863 -msgid "vma" -msgstr "vma" - -#: objcopy.c:1888 -msgid "alignment" -msgstr "alineación" - -#: objcopy.c:1896 -msgid "flags" -msgstr "opciones" - -#: objcopy.c:1918 -msgid "private data" -msgstr "datos privados" - -#: objcopy.c:1926 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: sección `%s': error en %s: %s" - -#: objcopy.c:2199 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: no se puede crear la sección de depuración: %s" - -#: objcopy.c:2214 -#, c-format -msgid "%s: can't set debugging section contents: %s" -msgstr "%s: no se puede establecer el contenido de la sección de depuración: %s" - -#: objcopy.c:2223 -#, c-format -msgid "%s: don't know how to write debugging information for %s" -msgstr "%s: se ignora cómo escribir la información de depuración para %s" - -#: objcopy.c:2346 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: no se puede obtener la información de stat: %s" - -#: objcopy.c:2400 -msgid "byte number must be non-negative" -msgstr "el número de bytes no debe ser negativo" - -#: objcopy.c:2410 -msgid "interleave must be positive" -msgstr "el espacio debe ser positivo" - -#: objcopy.c:2430 objcopy.c:2438 -#, c-format -msgid "%s both copied and removed" -msgstr "%s copiado y borrado" - -#: 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 "formato erróneo para %s" - -#: objcopy.c:2662 -#, 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:2818 -msgid "alternate machine code index must be positive" -msgstr "el índice de código máquina alternativo debe ser positivo" - -#: objcopy.c:2856 -msgid "byte number must be less than interleave" -msgstr "el número de bytes debe ser menor al espacio" - -#: objcopy.c:2883 -#, c-format -msgid "architecture %s unknown" -msgstr "arquitectura %s desconocida" - -#: objcopy.c:2887 -msgid "Warning: input target 'binary' required for binary architecture parameter." -msgstr "Aviso: se requiere el objetivo de entrada 'binary' para el parámeto binario de arquitectura." - -#: objcopy.c:2888 -#, c-format -msgid " Argument %s ignored" -msgstr " Se ignora el argumento %s" - -#: objcopy.c:2894 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "No se puede obtener la información de stat: %s: %s" - -#: objcopy.c:2934 objcopy.c:2948 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s nunca se usa %s%c0x%s" - -#: objdump.c:197 -#, c-format -msgid "Usage: %s \n" -msgstr "Modo de empleo: %s \n" - -#: objdump.c:198 -msgid " Display information from object .\n" -msgstr "Muestra la información de objeto.\n" - -#: objdump.c:199 -msgid " At least one of the following switches must be given:\n" -msgstr "Por lo menos se requiere una de los siguientes opciones:\n" - -#: objdump.c: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 Muestra información de los encabezados del archivo\n" -" -f, --file-headers Muestra el contenido de todos los encabezados del\n" -" fichero\n" -" -p, --private-headers Muestra el contenido de los encabezados del fichero\n" -" 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 Intermezclar código fuente con el desensamblado\n" -" -s, --full-contents Muestra el contenido completo de todas las secciones\n" -" requeridas\n" -" -g, --debugging Muestra la información de depuración en el fichero\n" -" objeto\n" -" -G, --stabs Muestra (sin formato) cualquier información de STABS\n" -" 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 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" -" -v, --version Muestra el número de versión de este programa\n" -" -i, --info Enlista los formatos objeto y las arquitecturas\n" -" con soporte\n" -" -H, --help Muestra esta información\n" - -#: objdump.c:222 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" -"\n" -" Los siguientes interruptores son opcionales:\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=NOMBREBFD Especifica el formato objeto objetivo como NOMBREBFD\n" -" -m, --architecture=MÁQUINA Especifica la arquitectura objetivo como MÁQUINA\n" -" -j, --section=NOMBRE Sólo muestra la información de la sección NOMBRE\n" -" -M, --disassembler-options=OPT Pasa el texto OPT 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 (con -S)\n" -" -l, --line-numbers Incluye los números de línea y los nombres de fichero\n" -" en la salida\n" -" -C, --demangle[=ESTILO] Decodifica los nombres de símbolo obtenidos/procesados\n" -" El ESTILO, si se especifica, puede ser `auto', 'gnu',\n" -" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n" -" 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 >= DIR\n" -" --stop-address=DIR Sólo procesa los datos cuya dirección es <= DIR\n" -" --prefix-addresses Muestra las direcciones completas a lo largo del desensamblado\n" -" --[no-]show-raw-insn Muestra en hexadecimal a lo largo del desensamblado simbólico\n" -" --adjust-vma=DESPL Agrega el DESPLazamiento a todas las direcciones\n" -" mostradas de sección\n" -"\n" - -#: objdump.c:391 -msgid "Sections:\n" -msgstr "Secciones:\n" - -#: objdump.c:394 objdump.c:398 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Ind Nombre Tamaño VMA LMA Desp fich Alin" - -#: objdump.c:400 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Ind Nombre Tamaño VMA LMA Desp fich Alin" - -#: objdump.c:404 -msgid " Flags" -msgstr " Opciones" - -#: objdump.c:406 -msgid " Pg" -msgstr " Pg" - -#: objdump.c:451 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: no es un objeto dinámico" - -#: objdump.c:1144 -msgid "Out of virtual memory" -msgstr "Memoria agotada" - -#: objdump.c:1574 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "No se puede utilizar la máquina %s proporcionada" - -#: objdump.c:1592 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "No se puede desensamblar para la arquitectura %s\n" - -#: objdump.c:1682 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "Desensamblado de la sección %s:\n" - -#: objdump.c:1847 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" -"No está presente la sección %s\n" -"\n" - -#: objdump.c:1854 -#, c-format -msgid "%s has no %s section" -msgstr "%s no tiene una sección %s" - -#: objdump.c:1868 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "Falló al leer la sección %s de %s: %s" - -#: objdump.c:1880 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "Falló al leer la sección %s de %s: %s\n" - -#: objdump.c:1923 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" -"Contenido de la sección %s:\n" -"\n" - -#: objdump.c:2021 -#, c-format -msgid "architecture: %s, " -msgstr "arquitectura: %s, " - -#: objdump.c:2024 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "opciones 0x%08x:\n" - -#: objdump.c:2038 -msgid "" -"\n" -"start address 0x" -msgstr "" -"\n" -"dirección de inicio 0x" - -#: objdump.c:2071 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" -"\n" -"%s: formato del fichero %s\n" - -#: objdump.c:2111 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: falló al mostrar la información de depuración" - -#: objdump.c:2190 -#, c-format -msgid "In archive %s:\n" -msgstr "En el fichero %s:\n" - -#: objdump.c:2249 -#, c-format -msgid "Contents of section %s:\n" -msgstr "Contenido de la sección %s:\n" - -#: objdump.c:2369 -msgid "no symbols\n" -msgstr "no hay símbolos\n" - -#: objdump.c:2718 -msgid "unrecognized -E option" -msgstr "opción -E no reconocida" - -#: objdump.c:2729 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "tipo --endian `%s' no reconocido" - -#: rdcoff.c:206 -#, 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:424 rdcoff.c:532 rdcoff.c:731 -#, c-format -msgid "bfd_coff_get_syment failed: %s" -msgstr "bfd_coff_get_syment falló: %s" - -#: rdcoff.c:440 rdcoff.c:751 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent falló: %s" - -#: rdcoff.c:818 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: .bf sin una función precedente" - -#: rdcoff.c:868 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "%ld: .ef inesperado\n" - -#: rddbg.c:91 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "%s: no se reconoce la información de depuración" - -#: rddbg.c:415 -msgid "Last stabs entries before error:\n" -msgstr "Últimas entradas stabs antes del error:\n" - -#: readelf.c:455 -#, c-format -msgid "%s: Error: " -msgstr "%s: Error: " - -#: readelf.c:466 -#, c-format -msgid "%s: Warning: " -msgstr "%s: Aviso: " - -#: readelf.c:488 -#, c-format -msgid "Unable to seek to 0x%x for %s\n" -msgstr "No se puede buscar a 0x%x para %s\n" - -#: readelf.c:499 -#, c-format -msgid "Out of memory allocating 0x%x bytes for %s\n" -msgstr "Memoria agotada al asignar 0x%x bytes para %s\n" - -#: readelf.c:507 -#, c-format -msgid "Unable to read in 0x%x bytes of %s\n" -msgstr "No se pueden leer 0x%x bytes de %s\n" - -#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "Longitud de datos sin manejar: %d\n" - -#: readelf.c:924 -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:946 readelf.c:975 readelf.c:1021 readelf.c:1049 -msgid "relocs" -msgstr "reubicaciones" - -#: readelf.c:957 readelf.c:986 readelf.c:1031 readelf.c:1059 -msgid "out of memory parsing relocs" -msgstr "memoria agotada al decodificar reubicaciones" - -#: readelf.c:1112 -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:1114 -msgid " Offset Info Type Sym.Value Sym. Name + Addend\n" -msgstr " Desplaz Info Tipo Val.Símbolo Nom.Símbolo + Adend\n" - -#: readelf.c:1119 -msgid " Offset Info Type Sym. Value Symbol's Name\n" -msgstr " Desplaz Info Tipo Val. Símbolo Nombre Símbolo\n" - -#: readelf.c:1121 -msgid " Offset Info Type Sym.Value Sym. Name\n" -msgstr " Desplaz Info Tipo Val.Símbolo Nom. Símbolo\n" - -#: readelf.c:1129 -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:1131 -msgid " Offset Info Type Sym. Value Sym. Name + Addend\n" -msgstr " Desplaz Info Tipo Val. Símbolo Nom. Símbolo + Adend\n" - -#: readelf.c:1136 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Desplaz Info Tipo Valor Símbolo Nombre Símbolo\n" - -#: readelf.c:1138 -msgid " Offset Info Type Sym. Value Sym. Name\n" -msgstr " Desplaz Info Tipo Val. Símbolo Nom. Símbolo\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 "no reconocido: %-7lx" - -#: readelf.c:1466 -#, c-format -msgid "" -msgstr "<índice de la tabla de cadenas %3ld>" - -#: readelf.c:1743 -#, c-format -msgid "Processor Specific: %lx" -msgstr "Específico del Procesador: %lx" - -#: readelf.c:1762 -#, c-format -msgid "Operating System specific: %lx" -msgstr "específico del Sistema Operativo: %lx" - -#: readelf.c:1765 readelf.c:2417 -#, c-format -msgid ": %lx" -msgstr ": %lx" - -#: readelf.c:1779 -msgid "NONE (None)" -msgstr "NONE (Ninguno)" - -#: readelf.c:1780 -msgid "REL (Relocatable file)" -msgstr "REL (Fichero reubicable)" - -#: readelf.c:1781 -msgid "EXEC (Executable file)" -msgstr "EXEC (Fichero ejecutable)" - -#: readelf.c:1782 -msgid "DYN (Shared object file)" -msgstr "DYN (Fichero objeto compartido)" - -#: readelf.c:1783 -msgid "CORE (Core file)" -msgstr "CORE (Fichero núcleo)" - -#: readelf.c:1787 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "Específico del Procesado: (%x)" - -#: readelf.c:1789 -#, c-format -msgid "OS Specific: (%x)" -msgstr "Específico del SO: (%x)" - -#: readelf.c:1791 readelf.c:1898 readelf.c:2574 -#, c-format -msgid ": %x" -msgstr ": %x" - -#: readelf.c:1804 -msgid "None" -msgstr "Ninguno" - -#: readelf.c:2616 -msgid "Usage: readelf elf-file(s)\n" -msgstr "Modo de empleo: readelf fichero(s)-elf\n" - -#: readelf.c:2617 -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: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= Dump the contents of section \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 "" -" 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" -" -e --headers Equivalente a: -h -l -S\n" -" -s --syms Muestra la tabla de símbolos\n" -" --symbols Un alias para --syms\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 el segmento dinámico (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" -" -D --use-dynamic Usa la información de la sección dinámica cuando\n" -" muestra símbolos\n" -" -x --hex-dump= Vuelca el contenido de la sección \n" -" -w[liaprmfFso] ó\n" -" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" -" Muestra el contenido de las secciones de depuración\n" -" DWARF2\n" - -#: readelf.c:2640 -msgid "" -" -i --instruction-dump=\n" -" Disassemble the contents of section \n" -msgstr "" -" -i --instruction-dump=\n" -" Desensambla el contenido de la sección \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 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" -" -H --help Muestra esta información\n" -" -v --version Muestra el número de versión de readelf\n" - -#: readelf.c:2666 readelf.c:10765 -msgid "Out of memory allocating dump request table." -msgstr "Memoria agotada al asignar la tabla de petición de volcado." - -#: readelf.c:2830 readelf.c:2906 -#, c-format -msgid "Unrecognized debug option '%s'\n" -msgstr "Opción de depuración '%s' no reconocida\n" - -#: readelf.c:2940 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "Opción '-%c' inválida\n" - -#: readelf.c:2953 -msgid "Nothing to do.\n" -msgstr "Nada por hacer.\n" - -#: readelf.c:2966 readelf.c:2983 readelf.c:5366 -msgid "none" -msgstr "ninguno" - -#: readelf.c:2970 readelf.c:2987 readelf.c:3018 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:2984 -msgid "2's complement, little endian" -msgstr "complemento a 2, little endian" - -#: readelf.c:2985 -msgid "2's complement, big endian" -msgstr "complemento a 2, big endian" - -#: readelf.c:3015 -msgid "Standalone App" -msgstr "Aplicación por Sí Sola" - -#: readelf.c:3034 -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:3042 -msgid "ELF Header:\n" -msgstr "Encabezado ELF:\n" - -#: readelf.c:3043 -msgid " Magic: " -msgstr " Mágico: " - -#: readelf.c:3047 -#, c-format -msgid " Class: %s\n" -msgstr " Clase: %s\n" - -#: readelf.c:3049 -#, c-format -msgid " Data: %s\n" -msgstr " Datos: %s\n" - -#: readelf.c:3051 -#, c-format -msgid " Version: %d %s\n" -msgstr " Versión: %d %s\n" - -#: readelf.c:3058 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -#: readelf.c:3060 -#, c-format -msgid " ABI Version: %d\n" -msgstr " Versión ABI: %d\n" - -#: readelf.c:3062 -#, c-format -msgid " Type: %s\n" -msgstr " Tipo: %s\n" - -#: readelf.c:3064 -#, c-format -msgid " Machine: %s\n" -msgstr " Máquina: %s\n" - -#: readelf.c:3066 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " Versión: 0x%lx\n" - -#: readelf.c:3069 -msgid " Entry point address: " -msgstr " Dirección del punto de entrada: " - -#: readelf.c:3071 -msgid "" -"\n" -" Start of program headers: " -msgstr "" -"\n" -" Inicio de encabezados de programa: " - -#: readelf.c:3073 -msgid "" -" (bytes into file)\n" -" Start of section headers: " -msgstr "" -" (bytes en el fichero)\n" -" Inicio de encabezados de sección: " - -#: readelf.c:3075 -msgid " (bytes into file)\n" -msgstr " (bytes en el fichero)\n" - -#: readelf.c:3077 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " Opciones: 0x%lx%s\n" - -#: readelf.c:3080 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " Tamaño de este encabezado: %ld (bytes)\n" - -#: readelf.c:3082 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " Tamaño de encabezados de programa: %ld (bytes)\n" - -#: readelf.c:3084 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " Número de encabezados de programa: %ld\n" - -#: readelf.c:3086 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " Tamaño de encabezados de sección: %ld (bytes)\n" - -#: readelf.c:3088 -#, c-format -msgid " Number of section headers: %ld" -msgstr " Número de encabezados de sección: %ld" - -#: readelf.c:3093 -#, c-format -msgid " Section header string table index: %ld" -msgstr " Índice de tabla de cadenas de sección de encabezado: %ld" - -#: readelf.c:3127 readelf.c:3163 -msgid "program headers" -msgstr "encabezados de programa" - -#: 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 "Memoria agotada\n" - -#: readelf.c:3231 -msgid "" -"\n" -"There are no program headers in this file.\n" -msgstr "" -"\n" -"No hay encabezados de programa en este fichero.\n" - -#: readelf.c:3237 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" -"\n" -"El tipo del fichero elf es %s\n" - -#: readelf.c:3238 -msgid "Entry point " -msgstr "Punto de entrada " - -#: readelf.c:3240 -#, 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:3252 readelf.c:3254 -msgid "" -"\n" -"Program Headers:\n" -msgstr "" -"\n" -"Encabezados de Programa:\n" - -#: readelf.c:3258 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Tipo Desplaz DirVirt DirFísica TamFich TamMem Opt Alin\n" - -#: readelf.c:3261 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Tipo Desplaz DirVirt DirFísica TamFich TamMem Opt Alin\n" - -#: readelf.c:3265 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " Tipo Desplazamiento DirVirtual DirFísica\n" - -#: readelf.c:3267 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " TamFichero TamMemoria Opts Alineación\n" - -#: readelf.c:3360 -msgid "more than one dynamic segment\n" -msgstr "más de un segmento dinámico\n" - -#: readelf.c:3368 -msgid "Unable to find program interpreter name\n" -msgstr "No se puede encontrar el nombre del programa intérprete\n" - -#: readelf.c:3375 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" -"\n" -" [Solicitando el programa intérprete: %s]" - -#: readelf.c:3387 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" -"\n" -" mapeo de Sección a Segmento:\n" - -#: readelf.c:3388 -msgid " Segment Sections...\n" -msgstr " Segmento Secciones...\n" - -#: readelf.c:3437 -msgid "Cannot interpret virtual addresses without program headers.\n" -msgstr "No se pueden interpretar direcciones virtuales sin encabezados de programa.\n" - -#: readelf.c:3453 -#, 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:3471 readelf.c:3517 -msgid "section headers" -msgstr "encabezados de sección" - -#: readelf.c:3565 readelf.c:3632 -msgid "symbols" -msgstr "símbolos" - -# ¿Cómo se traduce esto? cfuga -#: 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" -"No hay secciones en este fichero.\n" - -#: readelf.c:3751 -#, 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:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070 -msgid "string table" -msgstr "tabla de cadenas" - -#: readelf.c:3793 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "El fichero contiene múltiples tablas dinámicas de símbolos\n" - -#: readelf.c:3805 -msgid "File contains multiple dynamic string tables\n" -msgstr "El fichero contiene múltiples tablas dinámicas de cadenas\n" - -#: readelf.c:3811 -msgid "dynamic strings" -msgstr "cadenas dinámicas" - -#: readelf.c:3817 -msgid "File contains multiple symtab shndx tables\n" -msgstr "El fichero contiene múltiples tablas symtab shndx\n" - -#: readelf.c:3855 -msgid "" -"\n" -"Section Headers:\n" -msgstr "" -"\n" -"Encabezados de Sección:\n" - -#: readelf.c:3857 -msgid "" -"\n" -"Section Header:\n" -msgstr "" -"\n" -"Encabezados de Sección:\n" - -#: readelf.c:3861 -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:3864 -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:3867 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [Nr] Nombre Tipo Dirección Despl\n" - -#: readelf.c:3868 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " Tamaño TamEnt Opts Enl Info Alin\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 "" -"Clave para Opciones:\n" -" W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n" -" I (info), L (orden enlazado), G (grupo), x (desconocido)\n" -" O (se requiere procesamiento extra del SO) o (específico del SO)\n" -" p (específico del procesador)\n" - -#: readelf.c:4031 -#, 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:4043 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" -"\n" -"No hay reubicaciones dinámicas en este fichero.\n" - -#: readelf.c:4070 -msgid "" -"\n" -"Relocation section " -msgstr "" -"\n" -"La sección de reubicación " - -#: 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 " en el desplazamiento 0x%lx contiene %lu entradas:\n" - -#: readelf.c:4115 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" -"\n" -"No hay reubicaciones en este fichero.\n" - -#: readelf.c:4299 -msgid "unwind table" -msgstr "tabla desenredada" - -#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "Saltando el tipo de símbolo %u inesperado\n" - -#: readelf.c:4370 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "Saltando el tipo de reubicación %s inesperado\n" - -#: readelf.c:4415 readelf.c:4440 -msgid "" -"\n" -"There are no unwind sections in this file.\n" -msgstr "" -"\n" -"No hay secciones de desenredo en este fichero.\n" - -#: readelf.c:4491 -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:4503 -msgid "unwind info" -msgstr "información de desenredo" - -#: readelf.c:4505 -msgid "" -"\n" -"Unwind section " -msgstr "" -"\n" -"Sección de desenredo " - -#: readelf.c:4699 readelf.c:4742 -msgid "dynamic segment" -msgstr "segmento dinámico" - -#: readelf.c:4820 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" -"\n" -"No hay segmento dinámico en este fichero.\n" - -#: readelf.c:4854 -msgid "Unable to seek to end of file!" -msgstr "¡No se puede alcanzar el final del fichero!" - -#: readelf.c:4865 -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:4895 -msgid "Unable to seek to end of file\n" -msgstr "No se puede alcanzar el final del fichero\n" - -#: readelf.c:4901 -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:4906 -msgid "dynamic string table" -msgstr "tabla de cadena dinámicas" - -#: readelf.c:4941 -msgid "symbol information" -msgstr "información del símbolo" - -#: readelf.c:4965 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%lx contains %ld entries:\n" -msgstr "" -"\n" -"El segmento dinámico en el desplazamiento 0x%lx contiene %ld entradas:\n" - -#: readelf.c:4968 -msgid " Tag Type Name/Value\n" -msgstr " Marca Tipo Nombre/Valor\n" - -#: readelf.c:5004 -msgid "Auxiliary library" -msgstr "Biblioteca auxiliar" - -#: readelf.c:5008 -msgid "Filter library" -msgstr "Biblioteca de filtro" - -#: readelf.c:5012 -msgid "Configuration file" -msgstr "Fichero de configuración" - -#: readelf.c:5016 -msgid "Dependency audit library" -msgstr "Biblioteca de auditoría de dependencias" - -#: readelf.c:5020 -msgid "Audit library" -msgstr "Biblioteca de auditoría" - -#: readelf.c:5038 readelf.c:5066 readelf.c:5094 -msgid "Flags:" -msgstr "Opciones:" - -#: readelf.c:5041 readelf.c:5069 readelf.c:5096 -msgid " None\n" -msgstr " Ninguna\n" - -#: readelf.c:5217 -#, c-format -msgid "Shared library: [%s]" -msgstr "Biblioteca compartida: [%s]" - -#: readelf.c:5220 -msgid " program interpreter" -msgstr " programa intérprete" - -#: readelf.c:5224 -#, c-format -msgid "Library soname: [%s]" -msgstr "Nombre-so de la biblioteca: [%s]" - -#: readelf.c:5228 -#, c-format -msgid "Library rpath: [%s]" -msgstr "Rpath de la biblioteca: [%s]" - -#: readelf.c:5232 -#, c-format -msgid "Library runpath: [%s]" -msgstr "Ruta de ejecución de la biblioteca: [%s]" - -#: readelf.c:5296 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "Objeto innecesario: [%s]\n" - -#: readelf.c:5412 -#, c-format -msgid "" -"\n" -"Version definition section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"La sección de definición de la versión '%s' contiene %ld entradas:\n" - -#: readelf.c:5415 -msgid " Addr: 0x" -msgstr " Dir: 0x" - -#: readelf.c:5417 readelf.c:5612 -#, c-format -msgid " Offset: %#08lx Link: %lx (%s)\n" -msgstr " Despl: %#08lx Enl: %lx (%s)\n" - -#: readelf.c:5424 -msgid "version definition section" -msgstr "sección de definición de versión" - -#: readelf.c:5450 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: Rev: %d Opts: %s" - -#: readelf.c:5453 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " Ind: %d Cnt: %d " - -#: readelf.c:5464 -#, c-format -msgid "Name: %s\n" -msgstr "Nombre: %s\n" - -#: readelf.c:5466 -#, c-format -msgid "Name index: %ld\n" -msgstr "Índice de nombres: %ld\n" - -#: readelf.c:5481 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: Padre %d: %s\n" - -#: readelf.c:5484 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: Padre %d, índice de nombres: %ld\n" - -#: readelf.c:5503 -#, c-format -msgid "" -"\n" -"Version needs section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"La sección de requerimientos de versión '%s' contiene %ld entradas:\n" - -#: readelf.c:5506 -msgid " Addr: 0x" -msgstr " Dir: 0x" - -#: readelf.c:5508 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr " Despl: %#08lx Enlace a sección: %ld (%s)\n" - -#: readelf.c:5514 -msgid "version need section" -msgstr "sección de versiones necesarias" - -#: readelf.c:5536 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: Versión: %d" - -#: readelf.c:5539 -#, c-format -msgid " File: %s" -msgstr " Fichero: %s" - -#: readelf.c:5541 -#, c-format -msgid " File: %lx" -msgstr " Fichero: %lx" - -#: readelf.c:5543 -#, c-format -msgid " Cnt: %d\n" -msgstr " Cnt: %d\n" - -#: readelf.c:5561 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: Nombre: %s" - -#: readelf.c:5564 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: Índice de nombres: %lx" - -#: readelf.c:5567 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " Opts: %s Versión: %d\n" - -#: readelf.c:5603 -msgid "version string table" -msgstr "versión de tabla de cadenas" - -#: readelf.c:5607 -#, 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:5610 -msgid " Addr: " -msgstr " Dir: " - -#: readelf.c:5622 -msgid "version symbol data" -msgstr "datos de símbolos de versión" - -#: readelf.c:5649 -msgid " 0 (*local*) " -msgstr " 0 (*local*) " - -#: readelf.c:5653 -msgid " 1 (*global*) " -msgstr " 1 (*global*) " - -#: readelf.c:5689 readelf.c:6129 -msgid "version need" -msgstr "la versión necesita" - -#: readelf.c:5699 -msgid "version need aux (2)" -msgstr "la versión necesita aux (2)" - -#: readelf.c:5741 readelf.c:6192 -msgid "version def" -msgstr "versión definida" - -#: readelf.c:5760 readelf.c:6207 -msgid "version def aux" -msgstr "versión definida auxiliar" - -#: readelf.c:5791 -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:5923 -msgid "Unable to read in dynamic data\n" -msgstr "No se pueden leer los datos dinámicos\n" - -#: readelf.c:5967 -msgid "Unable to seek to start of dynamic information" -msgstr "No se puede encontrar el inicio de la información dinámica" - -#: readelf.c:5973 -msgid "Failed to read in number of buckets\n" -msgstr "Falló la lectura en el número de cubos\n" - -#: readelf.c:5979 -msgid "Failed to read in number of chains\n" -msgstr "Falló la lectura en el número de cadenas\n" - -#: readelf.c:5999 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" -"\n" -"Tabla de símbolos por imagen:\n" - -#: readelf.c:6001 -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:6003 -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:6048 -#, 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:6052 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Num: Valor Tam Tipo Unión Vis Nombre Ind\n" - -#: readelf.c:6054 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Num: Valor Tam Tipo Unión Vis Nombre Ind\n" - -#: readelf.c:6101 -msgid "version data" -msgstr "datos de versión" - -#: readelf.c:6142 -msgid "version need aux (3)" -msgstr "la versión necesita aux (3)" - -#: readelf.c:6167 -msgid "bad dynamic symbol" -msgstr "símbolo dinámico erróneo" - -#: readelf.c:6230 -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:6242 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length (total of %d buckets):\n" -msgstr "" -"\n" -"Histograma para la longitud de lista de cubos (total de %d cubos):\n" - -#: readelf.c:6244 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr " Long Número %% del total Cobertura\n" - -#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090 -msgid "Out of memory" -msgstr "Memoria agotada" - -#: readelf.c:6317 -#, 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:6320 -msgid " Num: Name BoundTo Flags\n" -msgstr " Num: Nombre EnlaceA Opts\n" - -#: readelf.c:6373 -#, c-format -msgid "" -"\n" -"Assembly dump of section %s\n" -msgstr "" -"\n" -"Volcado ensamblador de la sección %s\n" - -#: readelf.c:6396 -#, 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:6401 -#, c-format -msgid "" -"\n" -"Hex dump of section '%s':\n" -msgstr "" -"\n" -"Volcado hexadecimal de la sección '%s':\n" - -#: readelf.c:6406 -msgid "section data" -msgstr "datos de sección" - -#: readelf.c:6555 -msgid "badly formed extended line op encountered!\n" -msgstr "¡se encontró un operador extendido de línea mal formado!\n" - -#: readelf.c:6562 -#, c-format -msgid " Extended opcode %d: " -msgstr " Código de operación extendido %d: " - -#: readelf.c:6567 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" -"Fin de la Secuencia\n" -"\n" - -#: readelf.c:6573 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "establecer la Dirección a 0x%lx\n" - -#: readelf.c:6578 -msgid " define new File Table entry\n" -msgstr " definir la nueva entrada en la Tabla de Ficheros\n" - -#: readelf.c:6579 readelf.c:6726 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " Entr\tDir\tHora\tTam\tNombre\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 "UNKNOWN: longitud %d\n" - -#: readelf.c:6621 -#, c-format -msgid "" -"\n" -"Dump of debug contents of section %s:\n" -"\n" -msgstr "" -"\n" -"Volcado del contenido de depuración de la sección %s:\n" -"\n" - -#: readelf.c:6649 -msgid "The line info appears to be corrupt - the section is too small\n" -msgstr "La información de línea parece estar corrupta - esta sección es demasiado pequeña\n" - -#: readelf.c:6658 -msgid "Only DWARF version 2 and 3 line info is currently supported.\n" -msgstr "Solamente la información de línea de DWARF versión 2 y 3 tiene soporte actualmente.\n" - -#: readelf.c:6679 -#, c-format -msgid " Length: %ld\n" -msgstr " Longitud: %ld\n" - -#: readelf.c:6680 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " Versión DWARF: %d\n" - -#: readelf.c:6681 -#, c-format -msgid " Prologue Length: %d\n" -msgstr " Longitud del Prólogo: %d\n" - -#: readelf.c:6682 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " Longitud Mínima Instrucción: %d\n" - -#: readelf.c:6683 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " Valor inicial de 'is_stmt': %d\n" - -#: readelf.c:6684 -#, c-format -msgid " Line Base: %d\n" -msgstr " Base Línea: %d\n" - -#: readelf.c:6685 -#, c-format -msgid " Line Range: %d\n" -msgstr " Rango Lìnea: %d\n" - -#: readelf.c:6686 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " Base de Código de Operación: %d\n" - -#: readelf.c:6695 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" -"\n" -" Códigos de operación:\n" - -#: readelf.c:6698 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " El código de operación %d tiene %d argumentos\n" - -#: readelf.c:6704 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" -"\n" -" La Tabla de Directorios está vacía.\n" - -#: readelf.c:6707 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" -"\n" -" La Tabla de Directorios:\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" -" La Tabla de Nombres de Fichero está vacía.\n" - -#: readelf.c:6725 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" -"\n" -" La Tabla de Nombres de Fichero:\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" -" Declaraciones de Número de Línea:\n" - -#: readelf.c:6768 -#, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " código de Operación especial %d: Dirección de avance por %d a 0x%lx" - -#: readelf.c:6772 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " y Línea por %d a %d\n" - -#: readelf.c:6783 -msgid " Copy\n" -msgstr " Copiar\n" - -#: readelf.c:6790 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " Avanzar el PC por %d para %lx\n" - -#: readelf.c:6798 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " Línea de Avance por %d para %d\n" - -#: readelf.c:6805 -#, c-format -msgid " Set File Name to entry %d in the File Name Table\n" -msgstr " Establecer el Nombre de Fichero para la entrada %d en la Tabla de Nombres de Fichero\n" - -#: readelf.c:6813 -#, c-format -msgid " Set column to %d\n" -msgstr " Establecer la columna a %d\n" - -#: readelf.c:6820 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " Establecer is_stmt a %d\n" - -#: readelf.c:6825 -msgid " Set basic block\n" -msgstr " Establecer el bloque básico\n" - -#: readelf.c:6833 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr " Avanzar el PC por la constante %d a 0x%lx\n" - -#: readelf.c:6841 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " Avanzar el PC por la cantidad de tamaño fijo %d a 0x%lx\n" - -#: readelf.c:6846 -msgid " Set prologue_end to true\n" -msgstr " Establecer prologue_end a true\n" - -#: readelf.c:6850 -msgid " Set epilogue_begin to true\n" -msgstr " Establecer epilogue_begin a true\n" - -#: readelf.c:6856 -#, c-format -msgid " Set ISA to %d\n" -msgstr " Establecer ISA a %d\n" - -#: readelf.c:6860 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr " Código de operación desconocido %d con los operandos: " - -#: readelf.c:6891 readelf.c:7371 readelf.c:7443 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" -"Contenido de la sección %s:\n" -"\n" - -#: readelf.c:6931 -msgid "Only DWARF 2 and 3 pubnames are currently supported\n" -msgstr "Actualmente sólo tienen soporte los nombres públicos DWARF 2 y 3\n" - -#: readelf.c:6938 -#, c-format -msgid " Length: %ld\n" -msgstr " Longitud: %ld\n" - -#: readelf.c:6940 -#, c-format -msgid " Version: %d\n" -msgstr " Versión: %d\n" - -#: readelf.c:6942 -#, c-format -msgid " Offset into .debug_info section: %ld\n" -msgstr " Desplazamiento en sección .debug_info: %ld\n" - -#: readelf.c:6944 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr " Tamaño de área en sección .debug_info: %ld\n" - -#: readelf.c:6947 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" -"\n" -" Desplazamiento\tNombre\n" - -#: readelf.c:7042 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "Valor TAG desconocido: %lx" - -#: readelf.c:7156 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "Valor AT desconocido: %lx" - -#: readelf.c:7193 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "Valor FORM desconocido: %lx" - -#: readelf.c:7392 -#, c-format -msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" -msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %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 - numlinea : %d macro : %s\n" - -#: readelf.c:7413 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n" - -#: readelf.c:7424 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n" - -#: readelf.c:7452 -msgid " Number TAG\n" -msgstr " Número TAG\n" - -#: readelf.c:7458 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -#: readelf.c:7461 -msgid "has children" -msgstr "tiene hijos" - -#: readelf.c:7461 -msgid "no children" -msgstr "sin hijos" - -#: readelf.c:7465 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -#: readelf.c:7486 -#, c-format -msgid " %lu byte block: " -msgstr " bloque de bytes %lu: " - -#: readelf.c:7814 -msgid "(User defined location op)" -msgstr "(Operador de ubicación definido por el usuario)" - -#: readelf.c:7816 -msgid "(Unknown location op)" -msgstr "(Operador de ubicación desconocido)" - -#: readelf.c:7855 -msgid "debug_loc section data" -msgstr "sección de datos debug_loc" - -#: readelf.c:7887 -msgid "" -"\n" -"The .debug_loc section is empty.\n" -msgstr "" -"\n" -"La sección .debug_loc está vacía.\n" - -#: readelf.c:7891 -msgid "" -"Contents of the .debug_loc section:\n" -"\n" -msgstr "" -"Contenido de la sección .debug_loc:\n" -"\n" - -#: readelf.c:7892 -msgid "" -"\n" -" Offset Begin End Expression\n" -msgstr "" -"\n" -" Desplaz Inicio Fin Expresión\n" - -#: readelf.c:7968 -msgid "debug_str section data" -msgstr "sección de datos debug_str" - -#: readelf.c:7987 -msgid "" -msgstr "" - -#: readelf.c:7990 -msgid "" -msgstr "" - -#: readelf.c:8009 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" -"\n" -"La sección .debug_str está vacía.\n" - -#: readelf.c:8013 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" -"Contenido de la sección .debug_str:\n" -"\n" - -#: readelf.c:8088 -msgid "Internal error: DWARF version is not 2 or 3.\n" -msgstr "Error interno: la versión DWARF no es 2 ó 3.\n" - -#: readelf.c:8203 -#, c-format -msgid " (indirect string, offset: 0x%lx): %s" -msgstr " (cadena indirecta, desplazamiento 0x%lx): %s" - -#: readelf.c:8212 -#, c-format -msgid "Unrecognized form: %d\n" -msgstr "Form no reconocido: %d\n" - -#: readelf.c:8226 -msgid "(not inlined)" -msgstr "(no es inlined)" - -#: readelf.c:8229 -msgid "(inlined)" -msgstr "(inlined)" - -#: readelf.c:8232 -msgid "(declared as inline but ignored)" -msgstr "(declarado como inline pero ignorado)" - -#: readelf.c:8235 -msgid "(declared as inline and inlined)" -msgstr "(declarado como inline y es inline)" - -#: readelf.c:8238 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (Valor desconocido de atributo inline: %lx)" - -#: readelf.c:8419 readelf.c:8646 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" -"La sección %s contiene:\n" -"\n" - -#: readelf.c:8535 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " Unidad de Compilación @ %lx:\n" - -#: readelf.c:8536 -#, c-format -msgid " Length: %ld\n" -msgstr " Longitud: %ld\n" - -#: readelf.c:8537 -#, c-format -msgid " Version: %d\n" -msgstr " Versión: %d\n" - -#: readelf.c:8538 -#, c-format -msgid " Abbrev Offset: %ld\n" -msgstr " Desplaz Abrev: %ld\n" - -#: readelf.c:8539 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Tamaño de Apuntador: %d\n" - -#: readelf.c:8543 -msgid "Only version 2 and 3 DWARF debug information is currently supported.\n" -msgstr "Sólo la información de depuración DWARF versión 2 y 3 tiene soporte actualmente.\n" - -#: readelf.c:8563 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr "¡No se puede localizar la sección .debug_abbrev!\n" - -#: readelf.c:8569 -msgid "debug_abbrev section data" -msgstr "sección de datos debug_abbrev" - -#: readelf.c:8606 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "No se puede localizar la entrada %lu en la tabla de abreviaciones\n" - -#: readelf.c:8611 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%lx>: Número de Abrev: %lu (%s)\n" - -#: readelf.c:8691 -msgid "Only DWARF 2 and 3 aranges are currently supported.\n" -msgstr "Sólo los rangos-a de DWARF 2 y 3 tienen soporte actualmente.\n" - -#: readelf.c:8695 -#, c-format -msgid " Length: %ld\n" -msgstr " Longitud: %ld\n" - -#: readelf.c:8696 -#, c-format -msgid " Version: %d\n" -msgstr " Versión: %d\n" - -#: readelf.c:8697 -#, c-format -msgid " Offset into .debug_info: %lx\n" -msgstr " Desplaz. en .debug_info: %lx\n" - -#: readelf.c:8698 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Tamaño del Apuntador: %d\n" - -#: readelf.c:8699 -#, c-format -msgid " Segment Size: %d\n" -msgstr " Tamaño del Segmento: %d\n" - -#: readelf.c:8701 -msgid "" -"\n" -" Address Length\n" -msgstr "" -"\n" -" Longitud de la Dirección\n" - -#: readelf.c:8903 -#, c-format -msgid "The section %s contains:\n" -msgstr "La sección %s contiene:\n" - -#: readelf.c:9538 -#, c-format -msgid "Displaying the debug contents of section %s is not yet supported.\n" -msgstr "Aún no tiene soporte el mostrar el contenido de depuración de la sección %s.\n" - -#: readelf.c:9634 -#, c-format -msgid "" -"\n" -"Section '%s' has no debugging data.\n" -msgstr "" -"\n" -"La sección '%s' no tiene datos de depuración.\n" - -#: readelf.c:9639 readelf.c:9701 -msgid "debug section data" -msgstr "sección de datos de depuración" - -#: readelf.c:9655 -#, c-format -msgid "Unrecognized debug section: %s\n" -msgstr "Sección de depuración no reconocida: %s\n" - -#: readelf.c:9729 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "¡Algunas secciones no se volcaron porque no existen!\n" - -#: readelf.c:9806 readelf.c:10170 -msgid "liblist" -msgstr "lista de bibliotecas" - -#: readelf.c:9891 -msgid "options" -msgstr "opciones" - -#: readelf.c:9922 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" -"\n" -"La sección '%s' contiene %d entradas:\n" - -#: readelf.c:10083 -msgid "conflict list found without a dynamic symbol table" -msgstr "se encontró una lista de conflictos sin una tabla de símbolos dinámicos" - -#: readelf.c:10101 readelf.c:10117 -msgid "conflict" -msgstr "tiene conflictos con" - -#: readelf.c:10127 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" -"\n" -"La sección '.conflict' contiene %ld entradas:\n" - -#: readelf.c:10129 -msgid " Num: Index Value Name" -msgstr " Num: Índice Valor Nombre" - -#: readelf.c:10178 -msgid "liblist string table" -msgstr "tabla de cadenas liblist" - -#: readelf.c:10187 -#, 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:10236 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (estructura prstatus)" - -#: readelf.c:10237 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (registros de coma flotante)" - -#: readelf.c:10238 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (estructura prpsinfo)" - -#: readelf.c:10239 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (estructura task)" - -#: readelf.c:10240 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (estructura user_xfpregs)" - -#: readelf.c:10241 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (estructura pstatus)" - -#: readelf.c:10242 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (registros de coma flotante)" - -#: readelf.c:10243 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (estructura psinfo)" - -#: readelf.c:10244 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (estructura lwpstatus_t)" - -#: readelf.c:10245 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (estructura lwpsinfo_t)" - -#: readelf.c:10246 -msgid "NT_WIN32PSTATUS (win32_pstatus structure)" -msgstr "NT_WIN32PSTATUS (estructura win32_pstatus)" - -#: readelf.c:10248 readelf.c:10272 -#, c-format -msgid "Unknown note type: (0x%08x)" -msgstr "Tipo de nota desconocido: (0x%08x)" - -#. NetBSD core "procinfo" structure. -#: readelf.c:10262 -msgid "NetBSD procinfo structure" -msgstr "estructura procinfo de NetBSD" - -#: readelf.c:10289 readelf.c:10303 -msgid "PT_GETREGS (reg structure)" -msgstr "PT_GETREGS (estructura reg)" - -#: readelf.c:10291 readelf.c:10305 -msgid "PT_GETFPREGS (fpreg structure)" -msgstr "PT_GETFPREGS (estructura fpreg)" - -#: readelf.c:10311 -#, c-format -msgid "PT_FIRSTMACH+%d" -msgstr "PT_FIRSTMACH+%d" - -#: readelf.c:10365 -msgid "notes" -msgstr "notas" - -#: readelf.c:10371 -#, 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:10373 -msgid " Owner\t\tData size\tDescription\n" -msgstr " Prop\t\tTamaño datos\tDescripción\n" - -#: readelf.c:10392 -#, c-format -msgid "corrupt note found at offset %x into core notes\n" -msgstr "se encontró una nota corrupta en el desplazamiento %x en las notas de núcleo\n" - -#: readelf.c:10394 -#, c-format -msgid " type: %x, namesize: %08lx, descsize: %08lx\n" -msgstr " tipo: %x, tamañonombre: %08lx, tamañodesc: %08lx\n" - -#: readelf.c:10476 -msgid "No note segments present in the core file.\n" -msgstr "No hay segmentos de notas presentes el el fichero core.\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 "" -"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:10606 -#, c-format -msgid "Cannot stat input file %s.\n" -msgstr "No se puede obtener la información stat del fichero de entrada %s.\n" - -#: readelf.c:10613 -#, c-format -msgid "Input file %s not found.\n" -msgstr "No se encuentra el fichero de entrada %s.\n" - -#: readelf.c:10619 -#, c-format -msgid "%s: Failed to read file header\n" -msgstr "%s: Falló al leer el encabezado del fichero\n" - -#: readelf.c:10633 -#, c-format -msgid "" -"\n" -"File: %s\n" -msgstr "" -"\n" -"Fichero: %s\n" - -#: rename.c:132 -#, 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:171 rename.c:204 -#, c-format -msgid "%s: rename: %s" -msgstr "%s: rename: %s" - -#: rename.c:212 -#, c-format -msgid "%s: simple_copy: %s" -msgstr "%s: simple_copy: %s" - -#: resbin.c:134 -#, c-format -msgid "%s: not enough binary data" -msgstr "%s: no hay suficientes datos binarios" - -#: resbin.c:153 -msgid "null terminated unicode string" -msgstr "cadena unicode terminada en null" - -#: resbin.c:183 resbin.c:189 -msgid "resource ID" -msgstr "ID de recurso" - -#: resbin.c:233 -msgid "cursor" -msgstr "cursor" - -#: resbin.c:267 resbin.c:274 -msgid "menu header" -msgstr "encabezado de menú" - -#: resbin.c:284 -msgid "menuex header" -msgstr "encabezado de menuex" - -#: resbin.c:288 -msgid "menuex offset" -msgstr "desplazamiento de menuex" - -#: resbin.c:295 -#, c-format -msgid "unsupported menu version %d" -msgstr "versión de menú %d sin soporte" - -#: resbin.c:323 resbin.c:338 resbin.c:404 -msgid "menuitem header" -msgstr "encabezado de elemento de menú" - -#: resbin.c:434 -msgid "menuitem" -msgstr "elemento de menú" - -#: resbin.c:475 resbin.c:503 -msgid "dialog header" -msgstr "encabezado de diálogo" - -#: resbin.c:493 -#, c-format -msgid "unexpected DIALOGEX version %d" -msgstr "versión DIALOGEX %d inesperada" - -#: resbin.c:538 -msgid "dialog font point size" -msgstr "tamaño de punto de la tipografía del diálogo" - -#: resbin.c:546 -msgid "dialogex font information" -msgstr "información de tipografía del dialogex" - -#: resbin.c:572 resbin.c:590 -msgid "dialog control" -msgstr "control del diálogo" - -#: resbin.c:582 -msgid "dialogex control" -msgstr "control del dialogex" - -#: resbin.c:611 -msgid "dialog control end" -msgstr "fin del control del diálogo" - -#: resbin.c:623 -msgid "dialog control data" -msgstr "datos de control del diálogo" - -#: resbin.c:666 -msgid "stringtable string length" -msgstr "longitud de la cadena stringtable" - -#: resbin.c:676 -msgid "stringtable string" -msgstr "cadena stringtable" - -#: resbin.c:709 -msgid "fontdir header" -msgstr "encabezado fontdir" - -#: resbin.c:722 -msgid "fontdir" -msgstr "fontdir" - -#: resbin.c:738 -msgid "fontdir device name" -msgstr "nombre de dispositivo fontdir" - -#: resbin.c:744 -msgid "fontdir face name" -msgstr "nombre de rostro fontdir" - -#: resbin.c:787 -msgid "accelerator" -msgstr "acelerador" - -#: resbin.c:851 -msgid "group cursor header" -msgstr "encabezado de grupo de cursores" - -#: resbin.c:855 -#, c-format -msgid "unexpected group cursor type %d" -msgstr "tipo de grupo de cursores %d inesperado" - -#: resbin.c:870 -msgid "group cursor" -msgstr "grupo de cursores" - -#: resbin.c:909 -msgid "group icon header" -msgstr "encabezado de grupo de iconos" - -#: resbin.c:913 -#, c-format -msgid "unexpected group icon type %d" -msgstr "tipo de grupo de iconos %d inesperado" - -#: resbin.c:928 -msgid "group icon" -msgstr "grupo de iconos" - -#: resbin.c:999 resbin.c:1218 -msgid "unexpected version string" -msgstr "cadena de versión inesperada" - -#: resbin.c:1033 -#, 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:1037 -#, c-format -msgid "unexpected version type %d" -msgstr "tipo de versión %d inesperada" - -#: resbin.c:1049 -#, c-format -msgid "unexpected fixed version information length %d" -msgstr "longitud de la información de versión fija %d inesperada" - -#: resbin.c:1052 -msgid "fixed version info" -msgstr "información de versión fija" - -#: resbin.c:1056 -#, c-format -msgid "unexpected fixed version signature %lu" -msgstr "firma de versión fija %lu inesperada" - -#: resbin.c:1060 -#, c-format -msgid "unexpected fixed version info version %lu" -msgstr "información de versión de versión fija %lu inesperada" - -#: resbin.c:1089 -msgid "version var info" -msgstr "información de versión variable" - -#: resbin.c:1106 -#, c-format -msgid "unexpected stringfileinfo value length %d" -msgstr "longitud del valor stringfileinfo %d inesperada" - -#: resbin.c:1116 -#, c-format -msgid "unexpected version stringtable value length %d" -msgstr "valor de longitud de versión stringtable %d inesperada" - -#: resbin.c:1150 -#, c-format -msgid "unexpected version string length %d != %d + %d" -msgstr "longitud de cadena de versión %d != %d + %d inesperada" - -#: resbin.c:1161 -#, c-format -msgid "unexpected version string length %d < %d" -msgstr "longitud de cadena de versión %d < %d inesperada" - -#: resbin.c:1178 -#, c-format -msgid "unexpected varfileinfo value length %d" -msgstr "longitud de valor varfileinfo %d inesperada" - -#: resbin.c:1197 -msgid "version varfileinfo" -msgstr "versión varfileinfo" - -#: resbin.c:1212 -#, c-format -msgid "unexpected version value length %d" -msgstr "longitud de valor de versión %d inesperada" - -#: rescoff.c:128 -msgid "filename required for COFF input" -msgstr "se requiere un nombre de fichero para la entrada COFF" - -#: rescoff.c:145 -#, c-format -msgid "%s: no resource section" -msgstr "%s: no hay sección de recursos" - -#: rescoff.c:152 -msgid "can't read resource section" -msgstr "no se puede leer la sección de recursos" - -#: rescoff.c:178 -#, c-format -msgid "%s: %s: address out of bounds" -msgstr "%s: %s: dirección fuera de los límites" - -#: rescoff.c:197 -msgid "directory" -msgstr "directorio" - -#: rescoff.c:225 -msgid "named directory entry" -msgstr "entrada nombrada de directorio" - -#: rescoff.c:234 -msgid "directory entry name" -msgstr "nombre de entrada de directorio" - -#: rescoff.c:254 -msgid "named subdirectory" -msgstr "subdirectorio nombrado" - -#: rescoff.c:262 -msgid "named resource" -msgstr "recurso nombrado" - -#: rescoff.c:277 -msgid "ID directory entry" -msgstr "entrada de ID de directorio" - -#: rescoff.c:294 -msgid "ID subdirectory" -msgstr "ID de subdirectorio" - -#: rescoff.c:302 -msgid "ID resource" -msgstr "ID de recurso" - -#: rescoff.c:328 -msgid "resource type unknown" -msgstr "tipo de recurso desconocido" - -#: rescoff.c:331 -msgid "data entry" -msgstr "entrada de datos" - -#: rescoff.c:339 -msgid "resource data" -msgstr "datos de recursos" - -#: rescoff.c:344 -msgid "resource data size" -msgstr "tamaño de datos de recursos" - -#: rescoff.c:439 -msgid "filename required for COFF output" -msgstr "se requiere un nombre de fichero para la salida COFF" - -#: rescoff.c:738 -msgid "can't get BFD_RELOC_RVA relocation type" -msgstr "no se puede obtener el tipo de reubicación BFD_RELOC_RVA" - -#: resrc.c:240 resrc.c:312 -#, c-format -msgid "can't open temporary file `%s': %s" -msgstr "no se puede abrir el fichero temporal `%s': %s" - -#: resrc.c:246 -#, c-format -msgid "can't redirect stdout: `%s': %s" -msgstr "no se puede redirigir la salida estándar: `%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 "no se puede ejecutar `%s': %s" - -#: resrc.c:317 -#, c-format -msgid "Using temporary file `%s' to read preprocessor output\n" -msgstr "Utilizando el fichero temporal `%s' para leer la salida del preprocesador\n" - -#: resrc.c:324 -#, c-format -msgid "can't popen `%s': %s" -msgstr "no se puede hacer popen de `%s': %s" - -#: resrc.c:326 -msgid "Using popen to read preprocessor output\n" -msgstr "Utilizando popen para leer la salida del preprocesador\n" - -#: resrc.c:369 -#, c-format -msgid "Tried `%s'\n" -msgstr "Se intentó `%s'\n" - -#: resrc.c:380 -#, c-format -msgid "Using `%s'\n" -msgstr "Utilizando `%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: fin de fichero inesperado" - -#: resrc.c:608 -#, c-format -msgid "%s: read of %lu returned %lu" -msgstr "%s: la lectura de %lu devolvió %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 falló en el fichero bitmap `%s': %s" - -#: resrc.c:703 -#, c-format -msgid "cursor file `%s' does not contain cursor data" -msgstr "el fichero de cursor `%s' no contiene datos de cursor" - -#: resrc.c:735 resrc.c:1049 -#, c-format -msgid "%s: fseek to %lu failed: %s" -msgstr "%s: falló fseek para %lu: %s" - -#: resrc.c:873 -msgid "help ID requires DIALOGEX" -msgstr "el ID de ayuda requiere DIALOGEX" - -#: resrc.c:875 -msgid "control data requires DIALOGEX" -msgstr "los datos de control requieren DIALOGEX" - -#: resrc.c:1018 -#, c-format -msgid "icon file `%s' does not contain icon data" -msgstr "el fichero de icono `%s' no contiene datos de icono" - -#: resrc.c:1537 -#, c-format -msgid "can't open `%s' for output: %s" -msgstr "no se puede abrir `%s' para salida: %s" - -#: size.c:86 -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:87 -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: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= Set the binary file format\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 output\n" -" (por omisión 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" -" --target= Establece el formato del fichero binario\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:1953 -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: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 "" -" Las opciones son:\n" -" -q --quick (Obsoleto - ignorado)\n" -" -n --noprescan No realizar una revisión para convertir comunes en definiciones\n" -" -d --debug Muestra información acerca de lo que se ha hecho\n" -" -h --help Muestra esta información\n" -" -v --version Muestra el número de versión del programa\n" - -#: srconv.c:2099 -#, c-format -msgid "unable to open output file %s" -msgstr "no se puede abrir el fichero de salida %s" - -#: stabs.c:346 stabs.c:1755 -msgid "numeric overflow" -msgstr "desbordamiento numérico" - -#: stabs.c:357 -#, c-format -msgid "Bad stab: %s\n" -msgstr "Stab erróneo: %s\n" - -#: stabs.c:367 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "Aviso: %s: %s\n" - -#: stabs.c:488 -msgid "N_LBRAC not within function\n" -msgstr "N_LBRAC no está dentro de una función\n" - -#: stabs.c:527 -msgid "Too many N_RBRACs\n" -msgstr "Demasiados N_RBRACs\n" - -#: stabs.c:773 -msgid "unknown C++ encoded name" -msgstr "nombre C++ codificado desconocido" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1293 -msgid "unrecognized cross reference type" -msgstr "tipo de referencia cruzada no reconocido" - -#. 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 "tipo de índice desconocido" - -#: stabs.c:2174 -msgid "unknown virtual character for baseclass" -msgstr "carácter virtual desconocido para la clase base" - -#: stabs.c:2192 -msgid "unknown visibility character for baseclass" -msgstr "carácter de visibilidad desconocido para la clase base" - -#: stabs.c:2384 -msgid "unnamed $vb type" -msgstr "tipo $vb sin nombre" - -#: stabs.c:2390 -msgid "unrecognized C++ abbreviation" -msgstr "abreviación C++ no reconocida" - -#: stabs.c:2470 -msgid "unknown visibility character for field" -msgstr "carácter de visibilidad desconocido para el campo" - -#: stabs.c:2726 -msgid "const/volatile indicator missing" -msgstr "falta el indicador const/volatile" - -#: stabs.c:2967 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "No hay desenredo para \"%s\"\n" - -#: stabs.c:3281 -msgid "Undefined N_EXCL" -msgstr "N_EXCL indefinido" - -#: stabs.c:3369 -#, 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:3374 -#, 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:3461 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "Tipo XCOFF %d no reconocido\n" - -#: stabs.c:3762 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "nombre desenredado erróneamente `%s'\n" - -#: stabs.c:3859 -msgid "no argument types in mangled string\n" -msgstr "no hay tipos de argumento en la cadena desenredada\n" - -#: strings.c:208 -#, c-format -msgid "invalid number %s" -msgstr "número %s inválido" - -#: strings.c:647 -#, c-format -msgid "invalid integer argument %s" -msgstr "argumento entero %s inválido" - -#: strings.c:658 -msgid " Display printable strings in [file(s)] (stdin by default)\n" -msgstr " Muestra las cadenas imprimibles en [fichero(s)] (por omisión entrada estándar)\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" -" - 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= 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 "" -" 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 e imprime cualquier secuencia terminada en\n" -" - NUL de por lo menos [número] caracteres (4 por omisión).\n" -" -t --radix={o,x,d} Muestra la ubicación de la cadena en base 8, 10 ó 16\n" -" -o Un alias para --radix=o\n" -" -T --target= Especifica el formato de fichero binario\n" -" -e --encoding={s,S,b,l,B,L} Selecciona el tamaño del carácter y la \"endianez\":\n" -" s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n" -" -h --help Muestra esta información\n" -" -v --version Muestra el número de versión del programa\n" - -#: sysdump.c:768 -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:769 -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:836 -#, c-format -msgid "cannot open input file %s" -msgstr "no se puede abrir el fichero de entrada %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 "" -"Este programa es software libre; se puede redistribuir bajo los términos de\n" -"la Licencia Pública General de GNU. Este programa no tiene ninguna garantía.\n" - -#: windres.c:205 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "no se puede abrir %s `%s': %s" - -#: windres.c:384 -msgid ": expected to be a directory\n" -msgstr ": se esperaba que fuera un directorio\n" - -#: windres.c:396 -msgid ": expected to be a leaf\n" -msgstr ": se esperaba que fuera una hoja\n" - -#: windres.c:405 -#, c-format -msgid "%s: warning: " -msgstr "%s: aviso: " - -#: windres.c:407 -msgid ": duplicate value\n" -msgstr ": valor duplicado\n" - -#: windres.c:569 -#, c-format -msgid "unknown format type `%s'" -msgstr "tipo de formato `%s' desconocido" - -#: windres.c:570 -#, c-format -msgid "%s: supported formats:" -msgstr "%s: formatos con soporte:" - -#. Otherwise, we give up. -#: windres.c:655 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "no se puede determinar el tipo del fichero `%s'; use la opción -I" - -#: windres.c:669 -#, 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:671 -msgid "" -" The options are:\n" -" -i --input= Name input file\n" -" -o --output= Name output file\n" -" -J --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" -I --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -U --undefine Undefine SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" -l --language= 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= Nombra el fichero de entrada\n" -" -o --output= Nombra el fichero de salida\n" -" -I --input-format= Especifica el formato de entrada\n" -" -O --output-format= Especifica el formato de salida\n" -" -F --target= Especifica el objetivo COFF\n" -" --preprocessor= Programa a utilizar para preprocesar el fichero rc\n" -" -I --include-dir= Incluye el directorio al preprocesar el fichero rc\n" -" -D --define [=val] Define un SIMbolo al preprocesar el fichero rc\n" -" -U --undefine No define el SIMbolo al preprocesar el fichero rc\n" -" -v --verbose Detallado - dice lo que está haciendo\n" -" -l --language= 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 omisión)\n" - -#: windres.c:687 -msgid " --yydebug Turn on parser debugging\n" -msgstr " --yydebug Activa el decodificador de depuración\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 "" -" Las opciones son:\n" -" -r Se ignora por compatibilidad con rc\n" -" -h --help Muestra este mensaje de ayuda\n" -" -V --version Muestra la información de versión\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 "" -"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 omisión rc.\n" -"Sin fichero de salida es la salida estándar, por omisión rc.\n" - -#: windres.c:833 -msgid "invalid option -f\n" -msgstr "opción -f inválida\n" - -#: windres.c:838 -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:896 -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:1014 -msgid "no resources" -msgstr "no hay recursos" - -#: wrstabs.c:395 wrstabs.c:2055 -#, c-format -msgid "string_hash_lookup failed: %s" -msgstr "string_hash_lookup falló: %s" - -#: wrstabs.c:695 -#, c-format -msgid "stab_int_type: bad size %u" -msgstr "stab_int_type: tipo %u erróneo" - -#: wrstabs.c:1495 -#, 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 "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 "" -#~ " -h --help Print this help message\n" -#~ " -V --version Print version information\n" -#~ msgstr "" -#~ " -h --help Muestra este mensaje de ayuda\n" -#~ " -V --version Muestra la información de versión\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 " Options are:\n" -#~ msgstr " Las opciones son:\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 or --hex-dump=\n" -#~ msgstr " -x ó --hex-dump=\n" - -#~ msgid " Dump the contents of section \n" -#~ msgstr " Vuelca el contenido de la sección \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 or --instruction-dump=\n" -#~ msgstr " -i ó --instruction-dump=\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 omisión es --format=berkeley\n" - -#~ msgid "default is --format=sysv\n" -#~ msgstr "por omisión 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/po/fr.po b/binutils/po/fr.po deleted file mode 100644 index 7ab562e51..000000000 --- a/binutils/po/fr.po +++ /dev/null @@ -1,5124 +0,0 @@ -# Messages français pour GNU concernant binutils. -# Copyright © 1996 Free Software Foundation, Inc. -# Michel Robitaille , traducteur depuis/since 1996. -# -msgid "" -msgstr "" -"Project-Id-Version: GNU binutils 2.14rel030712\n" -"POT-Creation-Date: 2003-07-11 13:56+0930\n" -"PO-Revision-Date: 2003-08-06 08:00-0500\n" -"Last-Translator: Michel Robitaille \n" -"Language-Team: French \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: addr2line.c:74 -#, c-format -msgid "Usage: %s [option(s)] [addr(s)]\n" -msgstr "Usage: %s [options] [adresses]\n" - -#: addr2line.c:75 -msgid " Convert addresses into line number/file name pairs.\n" -msgstr "Convertir les adresses en paires numéro de ligne/fichier.\n" - -#: addr2line.c:76 -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:77 -msgid "" -" The options are:\n" -" -b --target= Set the binary file format\n" -" -e --exe= 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 "" -"Les options sont:\n" -" -b --target= sélectionner le format du fichier binaire\n" -" -e --exe= sélectionner le nom du fichier d'entrée (par défaut est a.out)\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: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 "Rapporter toutes anomalies à %s\n" - -#: addr2line.c:245 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: ne peut obtenir l'adresse à partir de l'archive" - -#: addr2line.c:317 nm.c:433 objdump.c:2693 -#, c-format -msgid "unknown demangling style `%s'" -msgstr "style de 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:255 -#, c-format -msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" -msgstr "Usage: %s [options d'émulation] [-]{dmpqrstx}[abcfilNoPsSuvV] [nom-du-membre] [compteur] fichier-archive fichier...\n" - -#: ar.c:258 -#, c-format -msgid " %s -M [\n" -"\n" -msgstr "" -"\n" -"\n" -"\n" - -#: ar.c:857 ar.c:925 -#, c-format -msgid "%s is not a valid archive" -msgstr "%s n'est pas une archive valide" - -#: ar.c:893 -#, c-format -msgid "stat returns negative size for %s" -msgstr "stat() a retourné une taille négative for %s" - -#: ar.c:1020 -#, c-format -msgid "%s is not an archive" -msgstr "%s n'est pas une archive" - -#: ar.c:1027 -#, c-format -msgid "creating %s" -msgstr "création de %s" - -#: ar.c:1233 -#, c-format -msgid "No member named `%s'\n" -msgstr "Aucun membre ayant le nom « %s »\n" - -#: ar.c:1285 -#, c-format -msgid "no entry %s in archive %s!" -msgstr "aucune entrée %s dans l'archive %s!" - -#: ar.c:1422 -#, c-format -msgid "%s: no archive map to update" -msgstr "%s: aucune table d'archive à mettre à jour" - -#: arsup.c:86 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "Aucune entrée %s dans l'archive.\n" - -#: arsup.c:117 -#, c-format -msgid "Can't open file %s\n" -msgstr "Ne peut ouvrir le fichier %s\n" - -#: arsup.c:172 -#, c-format -msgid "%s: Can't open output archive %s\n" -msgstr "%s: ne peut ouvrir l'archive de sortie %s\n" - -#: arsup.c:189 -#, 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:198 -#, c-format -msgid "%s: file %s is not an archive\n" -msgstr "%s: le fichier %s n'est pas une archive\n" - -#: arsup.c:241 -#, 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:262 arsup.c:301 arsup.c:343 arsup.c:364 arsup.c:430 -#, c-format -msgid "%s: no open output archive\n" -msgstr "%s: aucun fichier d'archive de sortie ouvert\n" - -#: arsup.c:273 arsup.c:385 arsup.c:411 -#, c-format -msgid "%s: can't open file %s\n" -msgstr "%s: ne peut ouvrir le fichier %s\n" - -#: arsup.c:328 arsup.c:407 arsup.c:489 -#, c-format -msgid "%s: can't find module file %s\n" -msgstr "%s: ne peut trouver le fichier module %s\n" - -#: arsup.c:439 -#, c-format -msgid "Current open archive is %s\n" -msgstr "L'archive actuellement ouverte est %s\n" - -#: arsup.c:464 -#, 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:52 -#, c-format -msgid " emulation options: \n" -msgstr " Options d'émulation: \n" - -#: bucomm.c:113 -#, 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:125 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: formats concordant:" - -#: bucomm.c:142 -msgid "Supported targets:" -msgstr "Cibles supportés:" - -#: bucomm.c:144 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: cibles supportés:" - -#: bucomm.c:162 -msgid "Supported architectures:" -msgstr "Architectures supportées:" - -#: bucomm.c:164 -#, c-format -msgid "%s: supported architectures:" -msgstr "%s: architectures supportées:" - -#: bucomm.c:360 -#, c-format -msgid "BFD header file version %s\n" -msgstr "Version de l'en-tête du fichier BFD %s\n" - -#: bucomm.c:467 -#, c-format -msgid "%s: bad number: %s" -msgstr "%s: mauvais numéro: %s" - -#: coffdump.c:107 -#, c-format -msgid "#lines %d " -msgstr "# de lignes %d " - -#: coffdump.c:471 sysdump.c:767 -#, c-format -msgid "Usage: %s [option(s)] in-file\n" -msgstr "Usage: %s [options] fichier\n" - -#: coffdump.c:472 -msgid " Print a human readable interpretation of a SYSROFF object file\n" -msgstr "Aficher dans un format humainement lisible une interprétation du fichier objet SYSROFF\n" - -#: coffdump.c:473 -msgid "" -" The options are:\n" -" -h --help Display this information\n" -" -v --version Display the program's version\n" -"\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" -"\n" - -#: coffdump.c:541 srconv.c:2052 sysdump.c:831 -msgid "no input file specified" -msgstr "Aucune fichier spécifié à l'entrée" - -#: debug.c:654 -msgid "debug_add_to_current_namespace: no current file" -msgstr "debug_add_to_current_namespace: aucun fichier courant" - -#: debug.c:737 -msgid "debug_start_source: no debug_set_filename call" -msgstr "debug_start_source: aucun appel no debug_set_filename" - -#: debug.c:796 -msgid "debug_record_function: no debug_set_filename call" -msgstr "debug_record_function: aucun appel debug_set_filename" - -#: debug.c:852 -msgid "debug_record_parameter: no current function" -msgstr "debug_record_parameter: aucune fonction courante" - -#: debug.c:886 -msgid "debug_end_function: no current function" -msgstr "debug_end_function: aucune fonction courante" - -#: debug.c:892 -msgid "debug_end_function: some blocks were not closed" -msgstr "debug_end_function: quelques blocs n'ont pas été fermés" - -#: debug.c:922 -msgid "debug_start_block: no current block" -msgstr "debug_start_block: aucun bloc couratn" - -#: debug.c:960 -msgid "debug_end_block: no current block" -msgstr "debug_end_block: aucun bloc courant" - -#: debug.c:967 -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:993 -msgid "debug_record_line: no current unit" -msgstr "debug_record_line: aucune unité courante" - -#. FIXME -#: debug.c:1047 -msgid "debug_start_common_block: not implemented" -msgstr "debug_start_common_block: pas implanté" - -#. FIXME -#: debug.c:1059 -msgid "debug_end_common_block: not implemented" -msgstr "debug_end_common_block: pas implanté" - -#. FIXME. -#: debug.c:1153 -msgid "debug_record_label: not implemented" -msgstr "debug_record_label: pas implanté" - -#: debug.c:1179 -msgid "debug_record_variable: no current file" -msgstr "debug_record_variable: aucun fichier courant" - -#: debug.c:1762 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "debug_make_undefined_type: type non supportée" - -#: debug.c:1963 -msgid "debug_name_type: no current file" -msgstr "debug_name_type: aucun fichier courant" - -#: debug.c:2011 -msgid "debug_tag_type: no current file" -msgstr "debug_tag_type: aucune fichier courant" - -#: debug.c:2019 -msgid "debug_tag_type: extra tag attempted" -msgstr "debug_tag_type: tentative d'étiquetage additionnelle" - -#: debug.c:2058 -#, 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:2082 -msgid "debug_find_named_type: no current compilation unit" -msgstr "debug_find_named_type: aucune unité de compilation courante" - -#: debug.c:2189 -#, 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:2650 -msgid "debug_write_type: illegal type encountered" -msgstr "debug_write_type: type illégal rencontré" - -#: dlltool.c:812 dlltool.c:837 dlltool.c:863 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "erreur interne: type de machine inconnue: %d" - -#: dlltool.c:900 -#, c-format -msgid "Can't open def file: %s" -msgstr "Ne peut ouvrir le fichier de définition: %s" - -#: dlltool.c:905 -#, c-format -msgid "Processing def file: %s" -msgstr "Traitement du fichier de définition: %s" - -#: dlltool.c:909 -msgid "Processed def file" -msgstr "Traitement complété du fichier de définition" - -#: dlltool.c:935 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "Erreur de syntaxe dans le fichier de définition %s:%d" - -#: dlltool.c:974 -#, c-format -msgid "NAME: %s base: %x" -msgstr "NOM: %s base: %x" - -#: dlltool.c:977 dlltool.c:996 -msgid "Can't have LIBRARY and NAME" -msgstr "Ne peut trouver la LIBRAIRIE et le NOM" - -#: dlltool.c:993 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "LIBRAIRIE: %s base %x" - -#: dlltool.c:1251 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "en attente: %s" - -#: dlltool.c:1256 dllwrap.c:430 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "sous-processus a reçu le signal fatal %d" - -#: dlltool.c:1262 dllwrap.c:437 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s a terminé avec le statut %d" - -#: dlltool.c:1294 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "Aspirer les informations de la section %s dans %s" - -#: dlltool.c:1423 -#, c-format -msgid "Excluding symbol: %s" -msgstr "Exclusion de symbole: %s" - -#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015 -#, c-format -msgid "%s: no symbols" -msgstr "%s: aucun symbole" - -#. FIXME: we ought to read in and block out the base relocations. -#: dlltool.c:1556 -#, c-format -msgid "Done reading %s" -msgstr "Lecture complétée %s" - -#: dlltool.c:1567 -#, c-format -msgid "Unable to open object file: %s" -msgstr "Incapable d'ouvrir le fichier objet: %s" - -#: dlltool.c:1570 -#, c-format -msgid "Scanning object file %s" -msgstr "Scrutation du fichier objet %s" - -#: dlltool.c:1585 -#, 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:1677 -msgid "Adding exports to output file" -msgstr "Ajout des exports au fichier de sortie" - -#: dlltool.c:1724 -msgid "Added exports to output file" -msgstr "Exports ajoutés au fichier de sortie" - -#: dlltool.c:1848 -#, c-format -msgid "Generating export file: %s" -msgstr "Génération du fichier d'exports: %s" - -#: dlltool.c:1853 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "Incapable d'ouvrir le fichier assembleur temporaire: %s" - -#: dlltool.c:1856 -#, c-format -msgid "Opened temporary file: %s" -msgstr "Fichier temporaire ouvert: %s" - -#: dlltool.c:2086 -msgid "Generated exports file" -msgstr "Fichier d'exports généré" - -#: dlltool.c:2378 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "échec de bfd_open lors de l'ouverture du fichier stub: %s" - -#: dlltool.c:2381 -#, c-format -msgid "Creating stub file: %s" -msgstr "Création du fichier stub: %s" - -#: dlltool.c:2766 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "échec d'ouverture du fichier de tête temporaire: %s" - -#: dlltool.c:2825 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "échec d'ouverture du fichier de queue temporaire: %s" - -#: dlltool.c:2892 -#, c-format -msgid "Can't open .lib file: %s" -msgstr "Ne peut ouvrir le fichier .lib: %s" - -#: dlltool.c:2895 -#, c-format -msgid "Creating library file: %s" -msgstr "Création du fichier de librairie: %s" - -#: dlltool.c:2951 -#, c-format -msgid "cannot delete %s: %s" -msgstr "ne peut détruire %s: %s" - -#: dlltool.c:2955 -msgid "Created lib file" -msgstr "Fichier de libraire créé" - -#: dlltool.c:3062 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "AVERTISSEMENT: EXPORT en duplication ignoré %s %d,%d" - -#: dlltool.c:3068 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "ERREUR, EXPORT en duplication avec ordinals: %s" - -#: dlltool.c:3191 -msgid "Processing definitions" -msgstr "Traitement des définitions" - -#: dlltool.c:3223 -msgid "Processed definitions" -msgstr "Définitions traitées" - -#. xgetext:c-format -#: dlltool.c:3234 dllwrap.c:495 -#, c-format -msgid "Usage %s \n" -msgstr "Usage %s \n" - -#. xgetext:c-format -#: dlltool.c:3236 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine créer comme DLL pour la . [défaut: %s]\n" - -#: dlltool.c:3237 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -#: dlltool.c:3238 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp générer un fichier d'export.\n" - -#: dlltool.c:3239 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib générer une librairie d'interface.\n" - -#: dlltool.c:3240 -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:3241 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname nom du dll à placer dans la libraire d'interface.\n" - -#: dlltool.c:3242 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def nom du fichier .def à lire\n" - -#: dlltool.c:3243 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def nom du fichier .def à créer.\n" - -#: dlltool.c:3244 -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:3245 -msgid " --no-export-all-symbols Only export listed symbols\n" -msgstr " --no-export-all-symbols exporter seulement la liste des symboles\n" - -#: dlltool.c:3246 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols ne pas exporter la \n" - -#: dlltool.c:3247 -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:3248 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file lire le fichier de base généré par l'éditeur de liens\n" - -#: dlltool.c:3249 -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:3250 -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:3251 -msgid " -U --add-underscore Add underscores to symbols in interface library.\n" -msgstr " -U --add-underscore ajouter des soulignés aux symboles dans la librairie d'interface\n" - -#: dlltool.c:3252 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at stopper @ à partir des noms exportés\n" - -#: dlltool.c:3253 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias ajouter des aliases sans @\n" - -#: dlltool.c:3254 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as utiliser le pour l'assembleur\n" - -#: dlltool.c:3255 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags relayer les à l'assembleur\n" - -#: dlltool.c:3256 -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:3257 -msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" -msgstr " -n --no-delete conserver les fichier temporaires\n" - -#: dlltool.c:3258 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose passer en mode bavard\n" - -#: dlltool.c:3259 -msgid " -V --version Display the program version.\n" -msgstr " -V --version afficher le nom et la version du logiciel\n" - -#: dlltool.c:3260 -msgid " -h --help Display this information.\n" -msgstr " -h --help afficher l'aide-mémoire\n" - -#: dlltool.c:3262 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf traiter le fichier objet mcore-elf selon le \n" - -#: dlltool.c:3263 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker utiliser comme éditeur de liens\n" - -#: dlltool.c:3264 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags relayer les à l'éditeur de liens\n" - -#: dlltool.c:3418 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "Incapable d'ouvrir le fichier de base: %s" - -#: dlltool.c:3450 -#, c-format -msgid "Machine '%s' not supported" -msgstr "Machine « %s » n'est pas supportée" - -#: dlltool.c:3553 dllwrap.c:214 -#, c-format -msgid "Tried file: %s" -msgstr "Essai avec le fichier: %s" - -#: dlltool.c:3560 dllwrap.c:221 -#, c-format -msgid "Using file: %s" -msgstr "Utilisation du fichier: %s" - -#: dllwrap.c:308 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "Conservation temportaire du fichier de base %s" - -#: dllwrap.c:310 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "Destruction du fichier de base temporaire %s" - -#: dllwrap.c:324 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "Conservation du fichier temporaire exp %s" - -#: dllwrap.c:326 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "Destruction du fichier exp temporaire %s" - -#: dllwrap.c:339 -#, c-format -msgid "Keeping temporary def file %s" -msgstr "Conservation du fichier temporaire def %s" - -#: dllwrap.c:341 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "Destruction du fichier temporaire def %s" - -#: dllwrap.c:496 -msgid " Generic options:\n" -msgstr " Option génériques:\n" - -#: dllwrap.c:497 -msgid " --quiet, -q Work quietly\n" -msgstr " --quiet, -q travailler en silence\n" - -#: dllwrap.c:498 -msgid " --verbose, -v Verbose\n" -msgstr " --verbose, -v travailler en mode bavard\n" - -#: dllwrap.c:499 -msgid " --version Print dllwrap version\n" -msgstr " --version afficher la version du dllwrap\n" - -#: dllwrap.c:500 -msgid " --implib Synonym for --output-lib\n" -msgstr " --implib identique à --output-lib\n" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr " Options pour %s:\n" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name par défaut « gcc »\n" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags écrasesr les fanions par défaut de ld\n" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name par défaut « dlltool »\n" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry spécifier une entrée alternative au point d'entrée du DLL\n" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr " --image-base spécifier une adresse de l'image de base\n" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target i386-cygwin32 ou i386-mingw32\n" - -#: dllwrap.c:508 -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:509 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr " --mno-cygwin créer une DLL de type Mingw\n" - -#: dllwrap.c:510 -msgid " Options passed to DLLTOOL:\n" -msgstr " Options relayées à DLLTOOL:\n" - -#: dllwrap.c:511 -msgid " --machine \n" -msgstr " --machine \n" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp générer un fichier d'exports.\n" - -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib générer une librairie d'entrée.\n" - -#: dllwrap.c:514 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr " --add-indirect ajouter les dll indirectes au fichier d'exports.\n" - -#: dllwrap.c:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname nom du dll d'entrée à ajouter dans le fichier lib de sortie.\n" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr " --def nom du fichier d'entrée .def\n" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr " --output-def nom du fichier de sortie .def\n" - -#: dllwrap.c:518 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols exporter tous les symboles au fichier .def\n" - -#: dllwrap.c:519 -msgid " --no-export-all-symbols Only export .drectve symbols\n" -msgstr " --no-export-all-symbols exporter seulement les symboles .drectve\n" - -#: dllwrap.c:520 -msgid " --exclude-symbols Exclude from .def\n" -msgstr " --exclude-symbols exclure la de .def\n" - -#: dllwrap.c:521 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes ignorer les symboles par défaut d'exclusion\n" - -#: dllwrap.c:522 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file lire le fichier de base généré par l'éditeur de liens\n" - -#: dllwrap.c:523 -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:524 -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:525 -msgid " -U Add underscores to .lib\n" -msgstr " -U ajouter des soulignés au fichier .lib\n" - -#: dllwrap.c:526 -msgid " -k Kill @ from exported names\n" -msgstr " -k stopper @ à partir des noms exportés\n" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias ajouter les aliases sans @\n" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr " --as utiliser comme assembleur\n" - -#: dllwrap.c:529 -msgid " --nodelete Keep temp files.\n" -msgstr " --nodelete conserver les fichiers temporaires.\n" - -#: dllwrap.c:530 -msgid " Rest are passed unmodified to the language driver\n" -msgstr " le reste est passé sans modification au pilote du langage\n" - -#: dllwrap.c:802 -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:830 -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:992 -#, c-format -msgid "DLLTOOL name : %s\n" -msgstr "OUTILDLL nom : %s\n" - -#: dllwrap.c:993 -#, c-format -msgid "DLLTOOL options : %s\n" -msgstr "OUTILDLL options : %s\n" - -#: dllwrap.c:994 -#, c-format -msgid "DRIVER name : %s\n" -msgstr "PILOTE name : %s\n" - -#: dllwrap.c:995 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "PILOTE options : %s\n" - -#: emul_aix.c:58 -#, c-format -msgid " [-g] - 32 bit small archive\n" -msgstr " [-g] - petite archive de 32 bits\n" - -#: emul_aix.c:59 -msgid " [-X32] - ignores 64 bit objects\n" -msgstr " [-X32] - ignore les objets de 64 bits\n" - -#: emul_aix.c:60 -msgid " [-X64] - ignores 32 bit objects\n" -msgstr " [-X64] - ignore les objets de 32 bits\n" - -#: emul_aix.c:61 -msgid " [-X32_64] - accepts 32 and 64 bit objects\n" -msgstr " [-X32_64] - accepter les objets de 32 et 64 bits\n" - -#: ieee.c:326 -msgid "unexpected end of debugging information" -msgstr "fin inattendue des informations de débug" - -#: ieee.c:421 -msgid "invalid number" -msgstr "numéro invalide" - -#: ieee.c:480 -msgid "invalid string length" -msgstr "longueur de chaîne invalide" - -#: ieee.c:537 ieee.c:578 -msgid "expression stack overflow" -msgstr "débordement de pile de l'expression" - -#: ieee.c:557 -msgid "unsupported IEEE expression operator" -msgstr "opérateur d'espression IEEE non supporté" - -#: ieee.c:572 -msgid "unknown section" -msgstr "section inconnue" - -#: ieee.c:593 -msgid "expression stack underflow" -msgstr "sous dépilage de l'expression" - -#: ieee.c:607 -msgid "expression stack mismatch" -msgstr "non concordance de l'expression dans la pile" - -#: ieee.c:646 -msgid "unknown builtin type" -msgstr "type de construit interne inconnu" - -#: ieee.c:791 -msgid "BCD float type not supported" -msgstr "type de numérotaion flottante BCD inconnue" - -#: ieee.c:937 -msgid "unexpected number" -msgstr "numéro inattendu" - -#: ieee.c:944 -msgid "unexpected record type" -msgstr "type d'enregistrement inattendu" - -#: ieee.c:977 -msgid "blocks left on stack at end" -msgstr "des blocs sont demeurés sur la pile à la fin" - -#: ieee.c:1242 -msgid "unknown BB type" -msgstr "type BB inconnu" - -#: ieee.c:1251 -msgid "stack overflow" -msgstr "débordement de la pile" - -#: ieee.c:1276 -msgid "stack underflow" -msgstr "sous dépilage de la pile" - -#: ieee.c:1390 ieee.c:1462 ieee.c:2161 -msgid "illegal variable index" -msgstr "variable d'index illégale" - -#: ieee.c:1440 -msgid "illegal type index" -msgstr "type d'index illégal" - -#: ieee.c:1450 ieee.c:1487 -msgid "unknown TY code" -msgstr "code TY inconnu" - -#: ieee.c:1469 -msgid "undefined variable in TY" -msgstr "variable non définie dans TY" - -#. Pascal file name. FIXME. -#: ieee.c:1880 -msgid "Pascal file name not supported" -msgstr "Nom de fichier Pascal non supporté" - -#: ieee.c:1928 -msgid "unsupported qualifier" -msgstr "qualificateur non supporté" - -#: ieee.c:2199 -msgid "undefined variable in ATN" -msgstr "variable non définie dans ATN" - -#: ieee.c:2242 -msgid "unknown ATN type" -msgstr "type ATN inconnu" - -#. Reserved for FORTRAN common. -#: ieee.c:2364 -msgid "unsupported ATN11" -msgstr "ATN11 non supporté" - -#. We have no way to record this information. FIXME. -#: ieee.c:2391 -msgid "unsupported ATN12" -msgstr "ATN2 non supporté" - -#: ieee.c:2451 -msgid "unexpected string in C++ misc" -msgstr "chaîne inattendue dans misc en C++" - -#: ieee.c:2464 -msgid "bad misc record" -msgstr "mauvais enregistrement misc" - -#: ieee.c:2507 -msgid "unrecognized C++ misc record" -msgstr "enregistrement misc non reconnu en C++" - -#: ieee.c:2624 -msgid "undefined C++ object" -msgstr "objet indéfini en C++" - -#: ieee.c:2658 -msgid "unrecognized C++ object spec" -msgstr "spécification d'objet non reconnu en C++" - -#: ieee.c:2694 -msgid "unsupported C++ object type" -msgstr "type d'objet non supporté en C++" - -#: ieee.c:2704 -msgid "C++ base class not defined" -msgstr "classe de base non définie en C++" - -#: ieee.c:2716 ieee.c:2821 -msgid "C++ object has no fields" -msgstr "objet n'ayant pas de champ en C++" - -#: ieee.c:2735 -msgid "C++ base class not found in container" -msgstr "classe de base non repéré dans le conteneur en C++" - -#: ieee.c:2842 -msgid "C++ data member not found in container" -msgstr "membre des données non repéré dans le conteneur en C++" - -#: ieee.c:2883 ieee.c:3033 -msgid "unknown C++ visibility" -msgstr "visibilité C++ inconnue" - -#: ieee.c:2917 -msgid "bad C++ field bit pos or size" -msgstr "mauvais champ de bit pos ou de taille en C++" - -#: ieee.c:3009 -msgid "bad type for C++ method function" -msgstr "mauvais type pour le méthode d'une fonction en C++" - -#: ieee.c:3019 -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:3058 -msgid "C++ static virtual method" -msgstr "méthode statique virtuelle en C++" - -#: ieee.c:3153 -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:3192 -msgid "undefined C++ vtable" -msgstr "vtable non définie en C++" - -#: ieee.c:3263 -msgid "C++ default values not in a function" -msgstr "valeurs par défaut ne sont pas dans une fonction en C++" - -#: ieee.c:3303 -msgid "unrecognized C++ default type" -msgstr "type par défaut en C++ n'est pas reconnu" - -#: ieee.c:3334 -msgid "reference parameter is not a pointer" -msgstr "paramètre de la référence n'est pas un pointeur" - -#: ieee.c:3419 -msgid "unrecognized C++ reference type" -msgstr "référence du type en C++ n'est pas reconnue" - -#: ieee.c:3501 -msgid "C++ reference not found" -msgstr "la référence n'a pas été retrouvée en C++" - -#: ieee.c:3509 -msgid "C++ reference is not pointer" -msgstr "la référence n'est pas un pointeur en C++" - -#: ieee.c:3538 ieee.c:3546 -msgid "missing required ASN" -msgstr "ASN requis est absent" - -#: ieee.c:3576 ieee.c:3584 -msgid "missing required ATN65" -msgstr "ATN65 requis est absent" - -#: ieee.c:3598 -msgid "bad ATN65 record" -msgstr "mauvais enregistrement ATN65" - -#: ieee.c:4286 -msgid "IEEE numeric overflow: 0x" -msgstr "débordement numériquie IEEE: Ox" - -#: ieee.c:4332 -#, c-format -msgid "IEEE string length overflow: %u\n" -msgstr "débordement de la longueur de la chaîne IEEE: %u\n" - -#: ieee.c:5382 -#, c-format -msgid "IEEE unsupported integer type size %u\n" -msgstr "taille de type d'entier IEEE non supporté %u\n" - -#: ieee.c:5418 -#, 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:5454 -#, c-format -msgid "IEEE unsupported complex type size %u\n" -msgstr "taille de nombre complexe IEEE non supportée %u\n" - -#: nlmconv.c:282 srconv.c:2043 -msgid "input and output files must be different" -msgstr "fichiers d'entrée et de sortie doivent être différents" - -#: nlmconv.c:329 -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:338 -msgid "no input file" -msgstr "aucun fichier d'entrée" - -#: nlmconv.c:368 -msgid "no name for output file" -msgstr "aucun nom pour le fichier de sortie" - -#: nlmconv.c:382 -msgid "warning: input and output formats are not compatible" -msgstr "AVERTISSEMENT: les formats d'entrée et de sortie sont incompatibles" - -#: nlmconv.c:411 -msgid "make .bss section" -msgstr "générer la section .bss" - -#: nlmconv.c:420 -msgid "make .nlmsections section" -msgstr "générer la section .nlmsections" - -#: nlmconv.c:422 -msgid "set .nlmsections flags" -msgstr "initialiser les fanions .nlmsections" - -#: nlmconv.c:450 -msgid "set .bss vma" -msgstr "initialiser le vma de la section .bss" - -#: nlmconv.c:457 -msgid "set .data size" -msgstr "initialiser la taille de la section .data" - -#: nlmconv.c:637 -#, 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:657 -msgid "set start address" -msgstr "initialiser l'adresse de départ" - -#: nlmconv.c:706 -#, c-format -msgid "warning: START procedure %s not defined" -msgstr "AVERTISSEMENT: procédure START %s n'est pas définie" - -#: nlmconv.c:708 -#, c-format -msgid "warning: EXIT procedure %s not defined" -msgstr "AVERTISSEMENT: procédure EXIT %s n'est pas définie" - -#: nlmconv.c:710 -#, c-format -msgid "warning: CHECK procedure %s not defined" -msgstr "AVERTISSEMENT: procédure CHECK %s n'est pas définie" - -#: nlmconv.c:731 nlmconv.c:920 -msgid "custom section" -msgstr "section « custom »" - -#: nlmconv.c:752 nlmconv.c:949 -msgid "help section" -msgstr "section d'aide" - -#: nlmconv.c:774 nlmconv.c:967 -msgid "message section" -msgstr "section message" - -#: nlmconv.c:790 nlmconv.c:1000 -msgid "module section" -msgstr "section module" - -#: nlmconv.c:810 nlmconv.c:1016 -msgid "rpc section" -msgstr "section rpc" - -#. 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: AVERTISSEMENT: les librairies partagées ne peuvent avoir des données non initialisées" - -#: nlmconv.c:867 nlmconv.c:1035 -msgid "shared section" -msgstr "section partagée" - -#: nlmconv.c:875 -msgid "warning: No version number given" -msgstr "AVERTISSEMENT: aucun numéro de version fourni" - -#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030 -#, c-format -msgid "%s: read: %s" -msgstr "%s: lu: %s" - -#: nlmconv.c:937 -msgid "warning: MAP and FULLMAP are not supported; try ld -M" -msgstr "AVERTISSEMENT: MAP et FULLMAP ne sont pas supportées; essayer ld -M" - -#: nlmconv.c:1109 -#, c-format -msgid "Usage: %s [option(s)] [in-file [out-file]]\n" -msgstr "Usage: %s [options] fichier_entrée [fichier_sortie]\n" - -#: nlmconv.c:1110 -msgid " Convert an object file into a NetWare Loadable Module\n" -msgstr "Convertir un fichier objet en un module NetWare Loadable\n" - -#: nlmconv.c:1111 -msgid "" -" The options are:\n" -" -I --input-target= Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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 "" -"Les options sont:\n" -" -I --input-target= sélectionner le format binaire du fichier d'entrée\n" -" -O --output-target= sélectionner le format binaire du fichier de sortie\n" -" -T --header-file= lire les informations NLM du \n" -" -l --linker= utiliser l'éditeur de pour toutes éditions\n" -" -d --debug afficher la ligne de commande sur stderr\n" -" -h --help afficher l'aide-mémoire\n" -" -V --version afficher le nom et la version du logiciel\n" - -#: nlmconv.c:1153 -#, c-format -msgid "support not compiled in for %s" -msgstr "soutien non compilé pour %s" - -#: nlmconv.c:1193 -msgid "make section" -msgstr "section make" - -#: nlmconv.c:1207 -msgid "set section size" -msgstr "initialisation de la taille de la section" - -#: nlmconv.c:1213 -msgid "set section alignment" -msgstr "initialisation de l'alignement de la section" - -#: nlmconv.c:1217 -msgid "set section flags" -msgstr "initialisation des fanions de la section" - -#: nlmconv.c:1228 -msgid "set .nlmsections size" -msgstr "initialisation de la taille de .nlmsections" - -#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 -msgid "set .nlmsection contents" -msgstr "initialisation du contenu de .nlmsection" - -#: nlmconv.c:1839 -msgid "stub section sizes" -msgstr "taille de la section stub" - -#: nlmconv.c:1888 -msgid "writing stub" -msgstr "écriture du stub" - -#: nlmconv.c:1977 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "relocalisation relative sur PC non résolue de %s" - -#: nlmconv.c:2041 -#, c-format -msgid "overflow when adjusting relocation against %s" -msgstr "débordement lors de la relocalisation de %s" - -#: nlmconv.c:2158 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "%s: échec d'exécution de %s :" - -#: nlmconv.c:2173 -#, c-format -msgid "Execution of %s failed" -msgstr "Échec d'exécution de %s" - -#: nm.c:283 size.c:85 strings.c:657 -#, c-format -msgid "Usage: %s [option(s)] [file(s)]\n" -msgstr "Usage: %s [options] fichiers\n" - -#: nm.c:284 -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: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 "" -"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 » ou « gnu-new-abi »,\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" -" -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" -" -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" -" -V, --version afficher le nom et la version du logiciel\n" -" -X 32_64 (ignoré)\n" -" -h --help afficher l'aide-mémoire\n" -" -V --version afficher le nom et la version du logiciel\n" -"\n" - -#: nm.c:319 objdump.c:250 -#, c-format -msgid "Report bugs to %s.\n" -msgstr "Rapporter toutes anomalies à %s\n" - -#: nm.c:352 -#, c-format -msgid "%s: invalid radix" -msgstr "%s: base numérique invalide" - -#: nm.c:377 -#, c-format -msgid "%s: invalid output format" -msgstr "%s: format de sortie invalide" - -#: nm.c:494 -msgid "Only -X 32_64 is supported" -msgstr "Seul -X 32_64 est supporté" - -#: nm.c:514 -msgid "Using the --size-sort and --undefined-only options together" -msgstr "Utiliser ensemble les options --size-sort et --undefined-only" - -#: nm.c:515 -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:543 -#, c-format -msgid "data size %ld" -msgstr "taille des donnée %ld" - -#: nm.c:568 readelf.c:5809 readelf.c:5845 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:570 readelf.c:5811 readelf.c:5857 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:572 readelf.c:5813 readelf.c:5860 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:1376 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"Symboles indéfinis dans %s:\n" -"\n" - -#: nm.c:1378 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"Symboles de %s:\n" -"\n" - -#: nm.c:1380 nm.c:1438 -msgid "" -"Name Value Class Type Size Line Section\n" -"\n" -msgstr "" -"Nom Valeur Classe Type Taille Ligne Section\n" -"\n" - -#: nm.c:1383 nm.c:1441 -msgid "" -"Name Value Class Type Size Line Section\n" -"\n" -msgstr "" -"Nom Valeur Classe Type Taille Ligne Section\n" -"\n" - -#: nm.c:1434 -#, 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:1436 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"Symboles de %s[%s]:\n" -"\n" - -#: nm.c:1658 -msgid "" -"\n" -"Archive index:\n" -msgstr "" -"\n" -"Indexe de l'archive:\n" - -#: objcopy.c:414 srconv.c:1952 -#, 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:415 -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:416 objcopy.c:495 -msgid " The options are:\n" -msgstr " Les options sont:\n" - -#: objcopy.c:417 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" --add-gnu-debuglink= Add section .gnu_debuglink linking to \n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --redefine-syms --redefine-sym for all symbol pairs \n" -" listed in \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code Use alternate machine code for output\n" -" --prefix-symbols Add to start of every symbol name\n" -" --prefix-sections Add to start of every section name\n" -" --prefix-alloc-sections \n" -" Add 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 assumer que le fichier d'entrée est de format \n" -" -O --output-target créer un fichier de sortie de format \n" -" -B --binary-architecture sélectionner l'architecture du fichier de sortie lorsque binaire\n" -" -F --target initialiser les formats d'entrée et de sortie à \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 copier seulement la section dans le fichier de sortie\n" -" --add-gnu-debuglink= ajouter la section .gnu_debuglink d'édition de liens au \n" -" -R --remove-section retirer la section du fichier de sortie\n" -" -S --strip-all retirer tous les symboles et les informations de relocalisation\n" -" -g --strip-debug retirer tous les symboles de débug\n" -" --strip-unneeded retirer tous les symboles qui ne sont pas nécessaires pour la relocalisation\n" -" -N --strip-symbol ne pas copier le symbole \n" -" -K --keep-symbol copier seulement le symbole \n" -" -L --localize-symbol marquer le symbole comme symbole local\n" -" -G --keep-global-symbol localiser tous les symboles sauf celui ayant pour \n" -" -W --weaken-symbol marquer le symbole comme symbole faible\n" -" --weaken marquer tous les symboles globaux comme symboles faibles\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 copier seulement 1 octet à chaque d'octets\n" -" -b --byte sélectionner l'octet dans chaque bloc intercalé\n" -" --gap-fill remplir les trous entre les sections avec la \n" -" --pad-to remplir la dernière section jusqu'à l'\n" -" --set-start utiliser l' de départ\n" -" {--change-start|--adjust-start} \n" -" ajouter l' à l'adresse de départ\n" -" {--change-addresses|--adjust-vma} \n" -" ajouter l' aux adresses LMA, VMA et de départ\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" modifier LMA et VMA de la section par la \n" -" --change-section-lma {=|+|-}\n" -" modifier LMA de la section par la \n" -" --change-section-vma {=|+|-}\n" -" modifier VMA de la section par la \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" avertir si le nom de la section n'existe pas\n" -" --set-section-flags =\n" -" initialiser les propriétés de la section avec les \n" -" --add-section = ajouter la section repérée dans le vers la sortie\n" -" --rename-section =[,] renommer l' section à la \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" -" --redefine-sym =\n" -" redéfinir le nom du symbole à \n" -" --srec-len 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 -N pour tous les symboles listés dans le \n" -" --keep-symbols -K pour tous les symboles listés dans le \n" -" --localize-symbols -L pour tous les symboles listés dans le \n" -" --keep-global-symbols \n" -" -G pour tous les symboles listés dans le \n" -" --weaken-symbols -W pour tous les symboles listés dans le \n" -" --alt-machine-code Use alternate machine code for output\n" -" -v --verbose afficher la liste de tous les objets modifiés\n" -" -V --version afficher le nom et la version du logiciel\n" -" -h --help afficher l'aide-mémoire\n" - -#: objcopy.c:493 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "Usage: %s fichiers\n" - -#: objcopy.c:494 -msgid " Removes symbols and sections from files\n" -msgstr "Enlever les symboles et les sections des fichiers\n" - -#: objcopy.c:496 -msgid "" -" -I --input-target= Assume input file is in format \n" -" -O --output-target= Create an output file in format \n" -" -F --target= Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target assumer que le format du fichier d'entrée est \n" -" -O --output-target créer un fichier de sortie ayant le format \n" -" -F --target utiliser à l'entrée et à la sortie le format \n" -" -p --preserve-dates préserver les dates d'accès et de modification lors de la copie\n" -" -R --remove-section retirer la section du fichier de sortie\n" -" -s --strip-all retirer tous les symboles et les informations de relocalisation\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 à la relocalisation\n" -" -N --strip-symbol ne pas copier le symbole \n" -" -K --keep-symbol copier seulement le symbole \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 placer la sortie élaguée dans le \n" - -#: objcopy.c:567 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "fanion de section non reconnnu « %s »" - -#: objcopy.c:568 -#, c-format -msgid "supported flags: %s" -msgstr "fanions supportés: %s" - -#: objcopy.c:645 objcopy.c:2526 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "ne peut évaluer par stat(): %s: %s" - -#: objcopy.c:652 objcopy.c:2544 -#, c-format -msgid "cannot open: %s: %s" -msgstr "ne peut ouvrir: %s: %s" - -#: objcopy.c:655 objcopy.c:2548 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread en échec" - -#: objcopy.c:728 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "Rebuts ignorés trouvés sur la ligne %d de %s" - -#: objcopy.c:979 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: re-définition multiples du symbole « %s »" - -#: objcopy.c:983 -#, 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:1010 -#, 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:1088 -#, c-format -msgid "%s: garbage at end of line %d" -msgstr "%s: rebus à la fin de la ligne %d" - -#: objcopy.c:1091 -#, c-format -msgid "%s: missing new symbol name at line %d" -msgstr "%s: nom du nouveau symbole manquant à la ligne %d" - -#: objcopy.c:1101 -#, c-format -msgid "%s: premature end of file at line %d" -msgstr "%s: fin prématuré de fichier à la ligne %d" - -#: objcopy.c:1147 -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:1155 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "copie de %s(%s) vers %s(%s)\n" - -#: objcopy.c:1182 -#, c-format -msgid "Warning: Output file cannot represent architecture %s" -msgstr "AVERTISSEMENT: fichier de sortie ne peut représenter l'architecture %s" - -#: objcopy.c:1211 -#, c-format -msgid "can't create section `%s': %s" -msgstr "Ne peut créer la section « %s »: %s" - -#: objcopy.c:1304 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "Ne peut remplir le vide après %s: %s" - -#: objcopy.c:1329 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "Ne peut ajouter de remplissage pour %s: %s" - -#: objcopy.c:1485 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: erreur de copie des données privées BFD: %s" - -#: objcopy.c:1498 -msgid "unknown alternate machine code, ignored" -msgstr "code machine alternatif inconnu, ignoré" - -#: objcopy.c:1531 objcopy.c:1561 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "ne peut créer le répertoire mkdir %s pour copie d'archivage (erreur: %s)" - -#: objcopy.c:1749 -#, c-format -msgid "Multiple renames of section %s" -msgstr "Changement multiples de noms de la section %s" - -#: objcopy.c:1840 -msgid "making" -msgstr "génération" - -#: objcopy.c:1849 -msgid "size" -msgstr "taille" - -#: objcopy.c:1863 -msgid "vma" -msgstr "vma" - -#: objcopy.c:1888 -msgid "alignment" -msgstr "alignement" - -#: objcopy.c:1896 -msgid "flags" -msgstr "fanions" - -#: objcopy.c:1918 -msgid "private data" -msgstr "données privées" - -#: objcopy.c:1926 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: section « %s »: erreur dans %s: %s" - -#: objcopy.c:2199 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: ne peut créer la section de débug: %s" - -#: objcopy.c:2214 -#, c-format -msgid "%s: can't set debugging section contents: %s" -msgstr "%s: ne peut initialiser le contenu de la section de débug: %s" - -#: objcopy.c:2223 -#, c-format -msgid "%s: don't know how to write debugging information for %s" -msgstr "%s: ne sait comment écrire les informations de débug de %s" - -#: objcopy.c:2346 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: ne peut évaluer par stat(): %s" - -#: objcopy.c:2400 -msgid "byte number must be non-negative" -msgstr "le nombre d'octet ne peut être négatif" - -#: objcopy.c:2410 -msgid "interleave must be positive" -msgstr "l'intercalage doit être positif" - -#: objcopy.c:2430 objcopy.c:2438 -#, c-format -msgid "%s both copied and removed" -msgstr "%s les deux doivent être copiés et enlevés" - -#: 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 "mauvais format pour %s" - -#: objcopy.c:2662 -#, 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:2818 -msgid "alternate machine code index must be positive" -msgstr "le code alternatif d'index du code machine doit être positif" - -#: objcopy.c:2856 -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:2883 -#, c-format -msgid "architecture %s unknown" -msgstr "architecture %s inconnue" - -#: objcopy.c:2887 -msgid "Warning: input target 'binary' required for binary architecture parameter." -msgstr "AVERTISSEMENT: la cible d'entrée « binary » requiert un paramètre pour une architecture binaire." - -#: objcopy.c:2888 -#, c-format -msgid " Argument %s ignored" -msgstr " Argument %s ignoré" - -#: objcopy.c:2894 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "Ne peut évaluer par stat(): %s: %s" - -#: objcopy.c:2934 objcopy.c:2948 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s %s%c0x%s jamais utilisé" - -#: objdump.c:197 -#, c-format -msgid "Usage: %s \n" -msgstr "Usage: %s \n" - -#: objdump.c:198 -msgid " Display information from object .\n" -msgstr "Afficher les informations depuis les objet.\n" - -#: objdump.c:199 -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: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 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" -" -h, --[section-]headers afficher le contenu des en-têtes de section\n" -" -x, --all-headers afficher le contenu de toutes 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éassemblage\n" -" -s, --full-contents afficher le contenu complet de toutes les sections voulus\n" -" -g, --debugging afficher information de débug du fichier objet\n" -" -G, --stabs afficher (en format brut) toutes les infos à inclure du 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 relocalisation du fichier\n" -" -R, --dynamic-reloc afficher les entrées dynamiques de relocalisation du fichier\n" -" -V, --version afficher le nom et la version du logiciel\n" -" -i, --info afficher les formats objets et les architectures supportées\n" -" -H, --help afficher cette information\n" - -#: objdump.c:222 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" -"\n" -" Les commutateurs suivants sont optionnels:\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=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é-assembleur\n" -" -EB --endian=big assumer le format « big endian » lors du dé-assemblage\n" -" -EL --endian=little assumer le format « little endian » lors du dé-assemblage\n" -" --file-start-context inclure le contexte à partir du début du fichier (avec -S)\n" -" -l, --line-numbers inclure les numéros de ligne et les noms de fichier dans la sortie\n" -" -C, --demangle[=STYLE] décoder les mutilations/traitements des noms de symboles\n" -" Le STYLE, si spécifé, peut être « auto », « gnu »,\n" -" « lucid », « arm », « hp », « edg », ou « gnu-v3 »,\n" -" « gnu-new-abi » 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é-assemblage\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écimale le dé-assemblage symbolique\n" -" --adjust-vma=DÉCALAGE ajouter un DÉCALAGE à toutes les adresses affichés des sections\n" -"\n" - -#: objdump.c:391 -msgid "Sections:\n" -msgstr "Sections:\n" - -#: objdump.c:394 objdump.c:398 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Nom Taille VMA LMA Fich off Algn" - -#: objdump.c:400 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Nom Taille VMA LMA Fich off Algn" - -#: objdump.c:404 -msgid " Flags" -msgstr " Fanions" - -#: objdump.c:406 -msgid " Pg" -msgstr " Pg" - -#: objdump.c:451 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: n'est pas un objet dynamique" - -#: objdump.c:1144 -msgid "Out of virtual memory" -msgstr "Mémoire virtuelle épuisée" - -#: objdump.c:1574 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "Ne peut utiliser la machine %s" - -#: objdump.c:1592 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "Ne peut déassembler pour l'architecture %s\n" - -#: objdump.c:1682 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "Déassemblage de la section %s:\n" - -#: objdump.c:1847 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" -"Aucune section %s présente\n" -"\n" - -#: objdump.c:1854 -#, c-format -msgid "%s has no %s section" -msgstr "%s n'as pas de section %s" - -#: objdump.c:1868 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "Lecture de la section %s de %s a échouée: %s" - -#: objdump.c:1880 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "Lecture de la section %s de %s a échouée: %s\n" - -#: objdump.c:1923 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" -"Contenu de la section %s:\n" -"\n" - -#: objdump.c:2021 -#, c-format -msgid "architecture: %s, " -msgstr "architecture: %s, " - -#: objdump.c:2024 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "fanions 0x%08x:\n" - -#: objdump.c:2038 -msgid "" -"\n" -"start address 0x" -msgstr "" -"\n" -"adresse de départ 0x" - -#: objdump.c:2071 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" -"\n" -"%s: format de fichier %s\n" - -#: objdump.c:2111 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: échec d'affichage des information de débug" - -#: objdump.c:2190 -#, c-format -msgid "In archive %s:\n" -msgstr "Dans l'archive %s:\n" - -#: objdump.c:2249 -#, c-format -msgid "Contents of section %s:\n" -msgstr "Contenu de la section %s:\n" - -#: objdump.c:2369 -msgid "no symbols\n" -msgstr "aucun symbole\n" - -#: objdump.c:2718 -msgid "unrecognized -E option" -msgstr "option -E non reconnue" - -#: objdump.c:2729 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "type non reconnu --endian « %s »" - -#: rdcoff.c:206 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "parse_coff_type: mauvais type de code 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 en échec: %s" - -#: rdcoff.c:440 rdcoff.c:751 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent en échec: %s" - -#: rdcoff.c:818 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: .bf aucune fonction qui précède" - -#: rdcoff.c:868 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "%ld: .ef inattendu\n" - -#: rddbg.c:91 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "%s: aucune information de débug reconnue" - -#: rddbg.c:415 -msgid "Last stabs entries before error:\n" -msgstr "Dernière entrées à inclure avant erreur:\n" - -#: readelf.c:455 -#, c-format -msgid "%s: Error: " -msgstr "%s: ERREUR: " - -#: readelf.c:466 -#, c-format -msgid "%s: Warning: " -msgstr "%s: AVERTISSEMENT: " - -#: readelf.c:488 -#, c-format -msgid "Unable to seek to 0x%x for %s\n" -msgstr "Incapable de repérer 0x%x pour %s\n" - -#: readelf.c:499 -#, c-format -msgid "Out of memory allocating 0x%x bytes for %s\n" -msgstr "Mémoire épuisée lors de l'allocation de 0x%x octets pour %s\n" - -#: readelf.c:507 -#, c-format -msgid "Unable to read in 0x%x bytes of %s\n" -msgstr "Incapable de lire 0x%x octets de %s\n" - -#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "Taille de données non traitées: %d\n" - -#: readelf.c:924 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "Ne connaît pas de méthode pour la relocalisation sur l'architecture de cette machine\n" - -#: readelf.c:946 readelf.c:975 readelf.c:1021 readelf.c:1049 -msgid "relocs" -msgstr "relocalisations" - -#: readelf.c:957 readelf.c:986 readelf.c:1031 readelf.c:1059 -msgid "out of memory parsing relocs" -msgstr "Mémoire épuisée lors de l'analyse syntaxique des relocalisations" - -#: readelf.c:1112 -msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n" -msgstr " Décalage Info Type Val.-sym. Noms-symb. + Addenda\n" - -#: readelf.c:1114 -msgid " Offset Info Type Sym.Value Sym. Name + Addend\n" -msgstr " Décalage Info Type Val.-sym Noms-symb + Addenda\n" - -#: readelf.c:1119 -msgid " Offset Info Type Sym. Value Symbol's Name\n" -msgstr " Décalage Info Type Val.-sym. Noms-symboles\n" - -#: readelf.c:1121 -msgid " Offset Info Type Sym.Value Sym. Name\n" -msgstr " Décalage Info Type Val.-sym Noms-symboles\n" - -#: readelf.c:1129 -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:1131 -msgid " Offset Info Type Sym. Value Sym. Name + Addend\n" -msgstr " Décalage Info Type Val.-symboles Noms-symb.+ Addenda\n" - -#: readelf.c:1136 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Décalage Info Type Valeurs symbols Noms symbols\n" - -#: readelf.c:1138 -msgid " Offset Info Type Sym. Value Sym. Name\n" -msgstr " Décalage Info Type Val.-symboles Noms-symboles\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 "non reconnue: %-7lx" - -#: readelf.c:1466 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:1743 -#, c-format -msgid "Processor Specific: %lx" -msgstr "Spécificités du processeur: %lx" - -#: readelf.c:1762 -#, c-format -msgid "Operating System specific: %lx" -msgstr "Spécificités du systèmes d'exploitation: %lx" - -#: readelf.c:1765 readelf.c:2417 -#, c-format -msgid ": %lx" -msgstr ": %lx" - -#: readelf.c:1779 -msgid "NONE (None)" -msgstr "NONE (Aucun)" - -#: readelf.c:1780 -msgid "REL (Relocatable file)" -msgstr "REL (Fichier de relocalisation)" - -#: readelf.c:1781 -msgid "EXEC (Executable file)" -msgstr "EXEC (fichier exécutable)" - -#: readelf.c:1782 -msgid "DYN (Shared object file)" -msgstr "DYN (fichier objet partagé)" - -#: readelf.c:1783 -msgid "CORE (Core file)" -msgstr "CORE (fichier core)" - -#: readelf.c:1787 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "Spécificités du processor: (%x)" - -#: readelf.c:1789 -#, c-format -msgid "OS Specific: (%x)" -msgstr "Spécificités du système d'exploitation: (%x)" - -#: readelf.c:1791 readelf.c:1898 readelf.c:2574 -#, c-format -msgid ": %x" -msgstr ": %x" - -#: readelf.c:1804 -msgid "None" -msgstr "Aucun" - -#: readelf.c:2616 -msgid "Usage: readelf elf-file(s)\n" -msgstr "Usage: readelf fichiers-elf\n" - -#: readelf.c:2617 -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: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= Dump the contents of section \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 "" -"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" -" -e --headers équivalent à: -h -l -S\n" -" -s --syms afficher la table des symboles\n" -" --symbols un alias pour --syms\n" -" -n --notes afficher les notes du core (si présentes)\n" -" -r --relocs afficher les relocalisation (si présentes)\n" -" -u --unwind afficher les informations de type unwind (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" -" -D --use-dynamic utiliser les informations de la section\n" -" dynamique lors de l'affichage des symboles\n" -" -x --hex-dump= vidanger le contenu de la section \n" -" -w[liaprmfFso] ou\n" -" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" -" afficher le contenu des sections débug DWARF2\n" - -#: readelf.c:2640 -msgid "" -" -i --instruction-dump=\n" -" Disassemble the contents of section \n" -msgstr "" -" -i --instruction-dump=\n" -" déassembler le contenu de la section \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 afficher l'histogramme des bacs selon la longueur de la liste\n" -" -W --wide permettre d'afficher plus de 80 caractères\n" -" -H --help afficher l'aide-mémoire\n" -" -V --version afficher le nom et la version du logiciel\n" - -#: readelf.c:2666 readelf.c:10765 -msgid "Out of memory allocating dump request table." -msgstr "Mémoire épuisée allocation d'une table pour requêtes de vidange" - -#: readelf.c:2830 readelf.c:2906 -#, c-format -msgid "Unrecognized debug option '%s'\n" -msgstr "Option de débug non reconnue « %s »\n" - -#: readelf.c:2940 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "Option invalide '-%c»\n" - -#: readelf.c:2953 -msgid "Nothing to do.\n" -msgstr "Rien à faire.\n" - -#: readelf.c:2966 readelf.c:2983 readelf.c:5366 -msgid "none" -msgstr "aucun" - -#: readelf.c:2970 readelf.c:2987 readelf.c:3018 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:2984 -msgid "2's complement, little endian" -msgstr "complément à 2, système à octets de poids faible d'abord (little endian)" - -#: readelf.c:2985 -msgid "2's complement, big endian" -msgstr "complément à 2, système à octets de poids fort d'abord (big endian)" - -#: readelf.c:3015 -msgid "Standalone App" -msgstr "Tache autonome" - -#: readelf.c:3034 -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:3042 -msgid "ELF Header:\n" -msgstr "En-tête ELF:\n" - -#: readelf.c:3043 -msgid " Magic: " -msgstr " Magique: " - -#: readelf.c:3047 -#, c-format -msgid " Class: %s\n" -msgstr " Classe: %s\n" - -#: readelf.c:3049 -#, c-format -msgid " Data: %s\n" -msgstr " Données: %s\n" - -#: readelf.c:3051 -#, c-format -msgid " Version: %d %s\n" -msgstr " Version: %d %s\n" - -#: readelf.c:3058 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -#: readelf.c:3060 -#, c-format -msgid " ABI Version: %d\n" -msgstr " Version ABI: %d\n" - -#: readelf.c:3062 -#, c-format -msgid " Type: %s\n" -msgstr " Type: %s\n" - -#: readelf.c:3064 -#, c-format -msgid " Machine: %s\n" -msgstr " Machine: %s\n" - -#: readelf.c:3066 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " Version: 0x%lx\n" - -#: readelf.c:3069 -msgid " Entry point address: " -msgstr " Adresse du point d'entrée: " - -#: readelf.c:3071 -msgid "" -"\n" -" Start of program headers: " -msgstr "" -"\n" -" Début des en-têtes de programme: " - -#: readelf.c:3073 -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:3075 -msgid " (bytes into file)\n" -msgstr " (octets dans le fichier)\n" - -#: readelf.c:3077 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " Fanions: 0x%lx%s\n" - -#: readelf.c:3080 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " Taille de cet en-tête: %ld (bytes)\n" - -#: readelf.c:3082 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " Taille de l'en-tête du programme: %ld (bytes)\n" - -#: readelf.c:3084 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " Nombre d'en-tête du programme: %ld\n" - -#: readelf.c:3086 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " Taille des en-têtes de section: %ld (bytes)\n" - -#: readelf.c:3088 -#, c-format -msgid " Number of section headers: %ld" -msgstr " Nombre d'en-têtes de section: %ld" - -#: readelf.c:3093 -#, 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:3127 readelf.c:3163 -msgid "program headers" -msgstr "En-tête de programme" - -#: 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 "Mémoire épuisée\n" - -#: readelf.c:3231 -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:3237 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" -"\n" -"Type de fichier ELF est %s\n" - -#: readelf.c:3238 -msgid "Entry point " -msgstr "Point d'entrée " - -#: readelf.c:3240 -#, 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:3252 readelf.c:3254 -msgid "" -"\n" -"Program Headers:\n" -msgstr "" -"\n" -"En-têtes de programme:\n" - -#: readelf.c:3258 -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:3261 -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:3265 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " Type Décalage Adr.virt Adr.phys.\n" - -#: readelf.c:3267 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " Taille fichier Taille mémoire Fanion Alignement\n" - -#: readelf.c:3360 -msgid "more than one dynamic segment\n" -msgstr "plus d'un segment dynamique\n" - -#: readelf.c:3368 -msgid "Unable to find program interpreter name\n" -msgstr "Incapable de repérer le nom de l'interpréteur du programme\n" - -#: readelf.c:3375 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" -"\n" -" [Réquisition de l'interpréteur de programme: %s]" - -#: readelf.c:3387 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" -"\n" -" Section à la projection de segement:\n" - -#: readelf.c:3388 -msgid " Segment Sections...\n" -msgstr " Sections de segment...\n" - -#: readelf.c:3437 -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:3453 -#, 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:3471 readelf.c:3517 -msgid "section headers" -msgstr "En-têtes de section" - -#: readelf.c:3565 readelf.c:3632 -msgid "symbols" -msgstr "symboles" - -#: 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" -"Il n'y a pas de section dans ce fichier.\n" - -#: readelf.c:3751 -#, 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:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070 -msgid "string table" -msgstr "table de chaînes" - -#: readelf.c:3793 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "Le fichier contient plusieurs tables dynamiques de symboles\n" - -#: readelf.c:3805 -msgid "File contains multiple dynamic string tables\n" -msgstr "Le fichier contient plusieurs tables de chaînes dynamiques\n" - -#: readelf.c:3811 -msgid "dynamic strings" -msgstr "chaînes dynamiques" - -#: readelf.c:3817 -msgid "File contains multiple symtab shndx tables\n" -msgstr "Le fichier contient de multiples tables symboliques shndx\n" - -#: readelf.c:3855 -msgid "" -"\n" -"Section Headers:\n" -msgstr "" -"\n" -"En-têtes de section:\n" - -#: readelf.c:3857 -msgid "" -"\n" -"Section Header:\n" -msgstr "" -"\n" -"En-têtes de section:\n" - -#: readelf.c:3861 -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:3864 -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:3867 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [Nr] Nom Type Adresse Décalage\n" - -#: readelf.c:3868 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " Taille TaillEntré Fanion Lien Info Alignement\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 "" -"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), x (inconnu)\n" -" O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n" - -#: readelf.c:4031 -#, c-format -msgid "" -"\n" -"'%s' relocation section at offset 0x%lx contains %ld bytes:\n" -msgstr "" -"\n" -"'%s' section de relocalisation à l'adresse de décalage 0x%lx contient %ld octets:\n" - -#: readelf.c:4043 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" -"\n" -"Il n'y a pas d'informations de relocalisation dynamique dans ce fichier.\n" - -#: readelf.c:4070 -msgid "" -"\n" -"Relocation section " -msgstr "" -"\n" -"Section de relocalisation " - -#: 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 " à l'adresse de décalage 0x%lx contient %lu entrées:\n" - -#: readelf.c:4115 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" -"\n" -"Il n'y a pas de relocalisation dans ce fichier.\n" - -#: readelf.c:4299 -msgid "unwind table" -msgstr "table unwind" - -#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "Escamotage du type de symbole inattendu %u\n" - -#: readelf.c:4370 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "Escamotage du type de relocalisation inattendue %s\n" - -#: readelf.c:4415 readelf.c:4440 -msgid "" -"\n" -"There are no unwind sections in this file.\n" -msgstr "" -"\n" -"Il n'y a pas de section unwind dans ce fichier.\n" - -#: readelf.c:4491 -msgid "" -"\n" -"Could not find unwind info section for " -msgstr "" -"\n" -"N'a pu repérer les infos d'une section unwind pour " - -#: readelf.c:4503 -msgid "unwind info" -msgstr "info unwind" - -#: readelf.c:4505 -msgid "" -"\n" -"Unwind section " -msgstr "" -"\n" -"Section unwind" - -#: readelf.c:4699 readelf.c:4742 -msgid "dynamic segment" -msgstr "segment dynamique" - -#: readelf.c:4820 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" -"\n" -"Il n'y a pas de segement dynamique dans ce fichier.\n" - -#: readelf.c:4854 -msgid "Unable to seek to end of file!" -msgstr "Incapable de repérer la fin du fichier!" - -#: readelf.c:4865 -msgid "Unable to determine the number of symbols to load\n" -msgstr "Incapable de déterminer le nombre de symboles à charger\n" - -#: readelf.c:4895 -msgid "Unable to seek to end of file\n" -msgstr "Incapable de repérer la fin du fichier\n" - -#: readelf.c:4901 -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:4906 -msgid "dynamic string table" -msgstr "table dynamique de chaînes" - -#: readelf.c:4941 -msgid "symbol information" -msgstr "information de symbole" - -#: readelf.c:4965 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%lx contains %ld entries:\n" -msgstr "" -"\n" -"Segment dynamique à l'adresse de décalage 0x%lx contient %ld entrées:\n" - -#: readelf.c:4968 -msgid " Tag Type Name/Value\n" -msgstr " Étiquettes Type Nom/Valeur\n" - -#: readelf.c:5004 -msgid "Auxiliary library" -msgstr "Librairie auxiliaire" - -#: readelf.c:5008 -msgid "Filter library" -msgstr "Librairie de filtre" - -#: readelf.c:5012 -msgid "Configuration file" -msgstr "Fichier de configuration" - -#: readelf.c:5016 -msgid "Dependency audit library" -msgstr "Librairie d'audit des dépendances" - -#: readelf.c:5020 -msgid "Audit library" -msgstr "Librairie des audits" - -#: readelf.c:5038 readelf.c:5066 readelf.c:5094 -msgid "Flags:" -msgstr "Fanions:" - -#: readelf.c:5041 readelf.c:5069 readelf.c:5096 -msgid " None\n" -msgstr "Aucun\n" - -#: readelf.c:5217 -#, c-format -msgid "Shared library: [%s]" -msgstr "Librairie partagées: [%s]" - -#: readelf.c:5220 -msgid " program interpreter" -msgstr " programme interpréteur" - -#: readelf.c:5224 -#, c-format -msgid "Library soname: [%s]" -msgstr "Librairie soname: [%s]" - -#: readelf.c:5228 -#, c-format -msgid "Library rpath: [%s]" -msgstr "Librairie rpath: [%s]" - -#: readelf.c:5232 -#, c-format -msgid "Library runpath: [%s]" -msgstr "Librairie runpath:[%s]" - -#: readelf.c:5296 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "Objet non nécessaire: [%s]\n" - -#: readelf.c:5412 -#, c-format -msgid "" -"\n" -"Version definition section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"Section des définitions de version « %s » contient %ld entrées:\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 " Décalage: %#08lx Lien: %lx (%s)\n" - -#: readelf.c:5424 -msgid "version definition section" -msgstr "section de définition de version" - -#: readelf.c:5450 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: Rev: %d Fanions: %s" - -#: readelf.c:5453 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " Index: %d Compteur: %d " - -#: readelf.c:5464 -#, c-format -msgid "Name: %s\n" -msgstr "Nom: %s\n" - -#: readelf.c:5466 -#, c-format -msgid "Name index: %ld\n" -msgstr "Nom de l'index: %ld\n" - -#: readelf.c:5481 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: Parent %d: %s\n" - -#: readelf.c:5484 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: Parent %d, name index: %ld\n" - -#: readelf.c:5503 -#, c-format -msgid "" -"\n" -"Version needs section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"Version nécessitant la section « %s » contenant %ld entrées:\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 " Décalage: %#08lx Lien vers la section: %ld (%s)\n" - -#: readelf.c:5514 -msgid "version need section" -msgstr "version nécessite une section" - -#: readelf.c:5536 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: Version: %d" - -#: readelf.c:5539 -#, c-format -msgid " File: %s" -msgstr " Fichier: %s" - -#: readelf.c:5541 -#, c-format -msgid " File: %lx" -msgstr " Fichier: %lx" - -#: readelf.c:5543 -#, c-format -msgid " Cnt: %d\n" -msgstr " Compteur: %d\n" - -#: readelf.c:5561 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: Nom: %s" - -#: readelf.c:5564 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: Nom de l'index: %lx" - -#: readelf.c:5567 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " Fanions: %s Version: %d\n" - -#: readelf.c:5603 -msgid "version string table" -msgstr "table chaîne de version" - -#: readelf.c:5607 -#, 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:5610 -msgid " Addr: " -msgstr " Adr: " - -#: readelf.c:5622 -msgid "version symbol data" -msgstr "données de symbole de version" - -#: readelf.c:5649 -msgid " 0 (*local*) " -msgstr " 0 (*local*) " - -#: readelf.c:5653 -msgid " 1 (*global*) " -msgstr " 1 (*global*) " - -#: readelf.c:5689 readelf.c:6129 -msgid "version need" -msgstr "version nécessaire" - -#: readelf.c:5699 -msgid "version need aux (2)" -msgstr "version nécessite aux (2)" - -#: readelf.c:5741 readelf.c:6192 -msgid "version def" -msgstr "définition de version" - -#: readelf.c:5760 readelf.c:6207 -msgid "version def aux" -msgstr "définition de version aux" - -#: readelf.c:5791 -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:5923 -msgid "Unable to read in dynamic data\n" -msgstr "Incapable de lire les données dynamiques\n" - -#: readelf.c:5967 -msgid "Unable to seek to start of dynamic information" -msgstr "Incapable de repérer le début des informations dynamiques" - -#: readelf.c:5973 -msgid "Failed to read in number of buckets\n" -msgstr "Échec de lecture parmi tous les baquets\n" - -#: readelf.c:5979 -msgid "Failed to read in number of chains\n" -msgstr "Échec de lecture du nombre de chaînes\n" - -#: readelf.c:5999 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" -"\n" -"Table de symbole de l'image:\n" - -#: readelf.c:6001 -msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" -msgstr " Nb Buc: Valeur Taille Type Lien Vis Ndx Nom\n" - -#: readelf.c:6003 -msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" -msgstr " Nb Buc: Valeur Taille Type Lien Vis Ndx Nom\n" - -#: readelf.c:6048 -#, c-format -msgid "" -"\n" -"Symbol table '%s' contains %lu entries:\n" -msgstr "" -"\n" -"Table de symboles « %s » contient %lu entrées:\n" - -#: readelf.c:6052 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Num: Valeur Tail Type Lien Vis Ndx Nom\n" - -#: readelf.c:6054 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Num: Valeur Tail Type Lien Vis Ndx Nom\n" - -#: readelf.c:6101 -msgid "version data" -msgstr "données de version" - -#: readelf.c:6142 -msgid "version need aux (3)" -msgstr "version nécessite aux (3)" - -#: readelf.c:6167 -msgid "bad dynamic symbol" -msgstr "mauvais symbole dynamique" - -#: readelf.c:6230 -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:6242 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length (total of %d buckets):\n" -msgstr "" -"\n" -"Histogramme de la longeur de la liste des baquets (total de %d baquets):\n" - -#: readelf.c:6244 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr " Long. Nombre %% de couverture totale\n" - -#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090 -msgid "Out of memory" -msgstr "Mémoire épuisée" - -#: readelf.c:6317 -#, 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:6320 -msgid " Num: Name BoundTo Flags\n" -msgstr " Num: Nom Lier à Fanions\n" - -#: readelf.c:6373 -#, c-format -msgid "" -"\n" -"Assembly dump of section %s\n" -msgstr "" -"\n" -"Vidange de la section assembleur %s\n" - -#: readelf.c:6396 -#, 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:6401 -#, c-format -msgid "" -"\n" -"Hex dump of section '%s':\n" -msgstr "" -"\n" -"Vidange hexadécimale de la section « %s »:\n" - -#: readelf.c:6406 -msgid "section data" -msgstr "données de section" - -#: readelf.c:6555 -msgid "badly formed extended line op encountered!\n" -msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée!\n" - -#: readelf.c:6562 -#, c-format -msgid " Extended opcode %d: " -msgstr " Code op étendu %d: " - -#: readelf.c:6567 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" -"Fin de séquence\n" -"\n" - -#: readelf.c:6573 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "initialisé l'adresse à 0x%lx\n" - -#: readelf.c:6578 -msgid " define new File Table entry\n" -msgstr " définir une entrée pour un nouveau fichier de table\n" - -#: readelf.c:6579 readelf.c:6726 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " Entrée\tRép.\tDate\tTaille\tNom\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 "UNKNOWN: longueur %d\n" - -#: readelf.c:6621 -#, c-format -msgid "" -"\n" -"Dump of debug contents of section %s:\n" -"\n" -msgstr "" -"\n" -"Vidange du contenu de débug de la section %s:\n" -"\n" - -#: readelf.c:6649 -msgid "The line info appears to be corrupt - the section is too small\n" -msgstr "La ligne d'information semble corrompue - la section est trop petite\n" - -#: readelf.c:6658 -msgid "Only DWARF version 2 and 3 line info is currently supported.\n" -msgstr "Seule la ligne d'info DWARF de version 2 et 3 est couramment supportée.\n" - -#: readelf.c:6679 -#, c-format -msgid " Length: %ld\n" -msgstr " Longueur: %ld\n" - -#: readelf.c:6680 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " Version DWARF: %d\n" - -#: readelf.c:6681 -#, c-format -msgid " Prologue Length: %d\n" -msgstr " Longueur du prologue: %d\n" - -#: readelf.c:6682 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " Longueur minimale des instructions: %d\n" - -#: readelf.c:6683 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " Valeur initiale de « is_stmt »: %d\n" - -#: readelf.c:6684 -#, c-format -msgid " Line Base: %d\n" -msgstr " Ligne de base: %d\n" - -#: readelf.c:6685 -#, c-format -msgid " Line Range: %d\n" -msgstr " Ligne d'étendue: %d\n" - -#: readelf.c:6686 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " Code op Base: %d\n" - -#: readelf.c:6695 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" -"\n" -" Codes op:\n" - -#: readelf.c:6698 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " Code op %d a %d arguments\n" - -#: readelf.c:6704 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" -"\n" -" La table des répertoires est vide.\n" - -#: readelf.c:6707 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" -"\n" -" La table des répertoire:\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" -" La talbe des noms de fichiers est vide.\n" - -#: readelf.c:6725 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" -"\n" -" La table des noms de fichiers:\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" -" Numéro de ligne des déclarations:\n" - -#: readelf.c:6768 -#, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " Code op spécial %d: avancé l'Adresse par %d à 0x%lx" - -#: readelf.c:6772 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " et Ligne par %d à %d\n" - -#: readelf.c:6783 -msgid " Copy\n" -msgstr " Copie\n" - -#: readelf.c:6790 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " Avancer le compteur PC de %d à %lx\n" - -#: readelf.c:6798 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " Avancer la ligne de %d à %d\n" - -#: readelf.c:6805 -#, c-format -msgid " Set File Name to entry %d in the File Name Table\n" -msgstr " Initialisé le nom du fichier à l'entrée %d dans la table des noms de fichiers\n" - -#: readelf.c:6813 -#, c-format -msgid " Set column to %d\n" -msgstr " Initialisé la colonne à %d\n" - -#: readelf.c:6820 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " Initialisé is_stmt avec %d\n" - -#: readelf.c:6825 -msgid " Set basic block\n" -msgstr " Initialisé le bloc de base\n" - -#: readelf.c:6833 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr " Avancer le compteur PC par constante de %d à 0x%lx\n" - -#: readelf.c:6841 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " Avancer le compteur PC par une taille fixe de %d à 0x%lx\n" - -#: readelf.c:6846 -msgid " Set prologue_end to true\n" -msgstr " Initialiser prologue_end à VRAI\n" - -#: readelf.c:6850 -msgid " Set epilogue_begin to true\n" -msgstr " Initialiser epilogue_begin à VRAI\n" - -#: readelf.c:6856 -#, c-format -msgid " Set ISA to %d\n" -msgstr " Initialiser ISA à %d\n" - -#: readelf.c:6860 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr " opcode inconnu %d avec les opérandes:" - -#: readelf.c:6891 readelf.c:7371 readelf.c:7443 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" -"Contenue de la section %s:\n" -"\n" - -#: readelf.c:6931 -msgid "Only DWARF 2 and 3 pubnames are currently supported\n" -msgstr "Seuls les noms publics DWARF 2 et 3 sont couramment supportés\n" - -#: readelf.c:6938 -#, c-format -msgid " Length: %ld\n" -msgstr " Longueur: %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 " Décalage dans la section .debug_info:%ld\n" - -#: readelf.c:6944 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr " Taille de la zone dans la section .debug_info: %ld\n" - -#: readelf.c:6947 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" -"\n" -" Décalage\tNom\n" - -#: readelf.c:7042 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "Valeur d'étiquette (« TAG ») inconnue: %lx" - -#: readelf.c:7156 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "Valeur AT inconnue: %lx" - -#: readelf.c:7193 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "Valeur FORM inconnue: %lx" - -#: readelf.c:7392 -#, c-format -msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" -msgstr " DW_MACINFO_start_file - no de ligne: %d no de fichier: %d\n" - -#: readelf.c: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 - no de ligne : %d macro : %s\n" - -#: readelf.c:7413 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n" - -#: readelf.c:7424 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr " DW_MACINFO_vendor_ext - constante : %d chaîne : %s\n" - -#: readelf.c:7452 -msgid " Number TAG\n" -msgstr " Numéro d'étiquette\n" - -#: readelf.c:7458 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -#: readelf.c:7461 -msgid "has children" -msgstr "a des rejetons" - -#: readelf.c:7461 -msgid "no children" -msgstr "aucun rejeton" - -#: readelf.c:7465 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -#: readelf.c:7486 -#, c-format -msgid " %lu byte block: " -msgstr " %lu bloc d'octets: " - -#: readelf.c:7814 -msgid "(User defined location op)" -msgstr "(Op de localisation défini par l'usager)" - -#: readelf.c:7816 -msgid "(Unknown location op)" -msgstr "(Op de localisation inconnu)" - -#: readelf.c:7855 -msgid "debug_loc section data" -msgstr "données de la section debug_loc" - -#: readelf.c:7887 -msgid "" -"\n" -"The .debug_loc section is empty.\n" -msgstr "" -"\n" -"La section .debug_loc est vide.\n" - -#: readelf.c:7891 -msgid "" -"Contents of the .debug_loc section:\n" -"\n" -msgstr "" -"Contenu de la section .debug_loc:\n" -"\n" - -#: readelf.c:7892 -msgid "" -"\n" -" Offset Begin End Expression\n" -msgstr "" -"\n" -" Décalage Début Fin Expression\n" - -#: readelf.c:7968 -msgid "debug_str section data" -msgstr "données de la section debug_str" - -#: readelf.c:7987 -msgid "" -msgstr "" - -#: readelf.c:7990 -msgid "" -msgstr "" - -#: readelf.c:8009 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" -"\n" -"La section .debug_str est vide.\n" - -#: readelf.c:8013 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" -"Contenu de la section .debug_str:\n" -"\n" - -#: readelf.c:8088 -msgid "Internal error: DWARF version is not 2 or 3.\n" -msgstr "Erreur interne: DWARF version n'est ni 2 ou 3.\n" - -#: readelf.c:8203 -#, c-format -msgid " (indirect string, offset: 0x%lx): %s" -msgstr " (chaîne indirecte, décalage: 0x%lx): %s" - -#: readelf.c:8212 -#, c-format -msgid "Unrecognized form: %d\n" -msgstr "Forme non reconnue: %d\n" - -#: readelf.c:8226 -msgid "(not inlined)" -msgstr "(pas en ligne)" - -#: readelf.c:8229 -msgid "(inlined)" -msgstr "(en ligne)" - -#: readelf.c:8232 -msgid "(declared as inline but ignored)" -msgstr "(déclaré comme en ligne mais ignoré)" - -#: readelf.c:8235 -msgid "(declared as inline and inlined)" -msgstr "(déclaré comme en-ligne et en-ligné" - -#: readelf.c:8238 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (valeur d'attibut en ligne inconnu: %lx)" - -#: readelf.c:8419 readelf.c:8646 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" -"La section %s contient:\n" -"\n" - -#: readelf.c:8535 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " Unité de compilation @ %lx:\n" - -#: readelf.c:8536 -#, c-format -msgid " Length: %ld\n" -msgstr " Longueur: %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 " Décalage agrégé: %ld\n" - -#: readelf.c:8539 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Taille des pointeurs: %d\n" - -#: readelf.c:8543 -msgid "Only version 2 and 3 DWARF debug information is currently supported.\n" -msgstr "Seuls les informations de débug de la version DWARF 2 et 3 sont couramment supportés.\n" - -#: readelf.c:8563 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr "Incapable de localiser la section .debug_abbrev!\n" - -#: readelf.c:8569 -msgid "debug_abbrev section data" -msgstr "données de la section debug_abbrev" - -#: readelf.c:8606 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "Incapable de localiser l'entrée %lu dans la table d'abréviation\n" - -#: readelf.c:8611 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%lx>: Numéro d'abréviation: %lu (%s)\n" - -#: readelf.c:8691 -msgid "Only DWARF 2 and 3 aranges are currently supported.\n" -msgstr "Seuls les aranges DWARF de version 2 et 3 sont couramment supportés.\n" - -#: readelf.c:8695 -#, c-format -msgid " Length: %ld\n" -msgstr " Longueur %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 " Décalage dans .debug_info: %lx\n" - -#: readelf.c:8698 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Taille des pointeurs: %d\n" - -#: readelf.c:8699 -#, c-format -msgid " Segment Size: %d\n" -msgstr " Taille des segments: %d\n" - -#: readelf.c:8701 -msgid "" -"\n" -" Address Length\n" -msgstr "" -"\n" -" Longueur d'adresse\n" - -#: readelf.c:8903 -#, c-format -msgid "The section %s contains:\n" -msgstr "La section %s contient:\n" - -#: readelf.c:9538 -#, c-format -msgid "Displaying the debug contents of section %s is not yet supported.\n" -msgstr "L'affichage du contenu de la section de débug %s n'est pas encore supporté.\n" - -#: readelf.c:9634 -#, c-format -msgid "" -"\n" -"Section '%s' has no debugging data.\n" -msgstr "" -"\n" -"La section « %s » n'a aucune donnée de débug.\n" - -#: readelf.c:9639 readelf.c:9701 -msgid "debug section data" -msgstr "données de la section debug" - -#: readelf.c:9655 -#, c-format -msgid "Unrecognized debug section: %s\n" -msgstr "Section de débug non reconnue: %s\n" - -#: readelf.c:9729 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "Quelques sections n'ont pas été vidangées parce qu'inexistantes!\n" - -#: readelf.c:9806 readelf.c:10170 -msgid "liblist" -msgstr "liblist" - -#: readelf.c:9891 -msgid "options" -msgstr "options" - -#: readelf.c:9922 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" -"\n" -"Section « %s » contient %d entrées:\n" - -#: readelf.c:10083 -msgid "conflict list found without a dynamic symbol table" -msgstr "conflit de liste repéré sans symbole de table dynamique" - -#: readelf.c:10101 readelf.c:10117 -msgid "conflict" -msgstr "conflit" - -#: readelf.c:10127 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" -"\n" -"La section « .conflict » contient %ld entrées:\n" - -#: readelf.c:10129 -msgid " Num: Index Value Name" -msgstr " Nombre: Index Valeur Nom" - -#: readelf.c:10178 -msgid "liblist string table" -msgstr "table de chaînes liblist" - -#: readelf.c:10187 -#, 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:10236 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (structure prstatus)" - -#: readelf.c:10237 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (régistres en virgule flottante)" - -#: readelf.c:10238 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (structure prpsinfo)" - -#: readelf.c:10239 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (structure de taches)" - -#: readelf.c:10240 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (structure user_xfpregs)" - -#: readelf.c:10241 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (structure pstatus)" - -#: readelf.c:10242 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (registres en virgule flottante)" - -#: readelf.c:10243 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (structure psinfo)" - -#: readelf.c:10244 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (structure lwpstatus_t)" - -#: readelf.c:10245 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (structure lwpsinfo_t)" - -#: readelf.c:10246 -msgid "NT_WIN32PSTATUS (win32_pstatus structure)" -msgstr "NT_WIN32PSTATUS (structure win32_pstatus)" - -#: readelf.c:10248 readelf.c:10272 -#, c-format -msgid "Unknown note type: (0x%08x)" -msgstr "Type de note inconnu: (0x%08x)" - -#. NetBSD core "procinfo" structure. -#: readelf.c:10262 -msgid "NetBSD procinfo structure" -msgstr "structure proinfo NetBSD" - -#: readelf.c:10289 readelf.c:10303 -msgid "PT_GETREGS (reg structure)" -msgstr "PT_GETREGS (structure reg)" - -#: readelf.c:10291 readelf.c:10305 -msgid "PT_GETFPREGS (fpreg structure)" -msgstr "PT_GETFPPREGS (structure fpreg)" - -#: readelf.c:10311 -#, c-format -msgid "PT_FIRSTMACH+%d" -msgstr "PT_FIRSTMACH+%d" - -#: readelf.c:10365 -msgid "notes" -msgstr "notes" - -#: readelf.c:10371 -#, 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:10373 -msgid " Owner\t\tData size\tDescription\n" -msgstr " Propriétaire\t\tTaille de données\tDescription\n" - -#: readelf.c:10392 -#, c-format -msgid "corrupt note found at offset %x into core notes\n" -msgstr "note corrompue repérée au décalage %x dans les notes du core\n" - -#: readelf.c:10394 -#, c-format -msgid " type: %x, namesize: %08lx, descsize: %08lx\n" -msgstr " type: %x, taille de noms: %08lx, taille de descriptions: %08lx\n" - -#: readelf.c:10476 -msgid "No note segments present in the core file.\n" -msgstr "Aucun note de segment présent dans le fichier core.\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 "" -"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:10606 -#, c-format -msgid "Cannot stat input file %s.\n" -msgstr "Ne peut évaluer par stat() le fichier d'entrée %s.\n" - -#: readelf.c:10613 -#, c-format -msgid "Input file %s not found.\n" -msgstr "Fichier d'entrée %s non repéré.\n" - -#: readelf.c:10619 -#, 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:10633 -#, c-format -msgid "" -"\n" -"File: %s\n" -msgstr "" -"\n" -"Fichier: %s\n" - -#: rename.c:132 -#, c-format -msgid "%s: cannot set time: %s" -msgstr "%s: ne peut initialisé l'heure: %s" - -#. We have to clean up here. -#: rename.c:171 rename.c:204 -#, c-format -msgid "%s: rename: %s" -msgstr "%s: changé de nom: %s" - -#: rename.c:212 -#, c-format -msgid "%s: simple_copy: %s" -msgstr "%s: simple copie: %s" - -#: resbin.c:134 -#, c-format -msgid "%s: not enough binary data" -msgstr "%s: pas assez de données binaires" - -#: resbin.c:153 -msgid "null terminated unicode string" -msgstr "chaîne unicode terminée par un null" - -#: resbin.c:183 resbin.c:189 -msgid "resource ID" -msgstr "IDentificateur de ressource" - -#: resbin.c:233 -msgid "cursor" -msgstr "curseur" - -#: resbin.c:267 resbin.c:274 -msgid "menu header" -msgstr "en-tête de menu" - -#: resbin.c:284 -msgid "menuex header" -msgstr "en-tête menuex" - -#: resbin.c:288 -msgid "menuex offset" -msgstr "décalage menuex" - -#: resbin.c:295 -#, c-format -msgid "unsupported menu version %d" -msgstr "version de menu non supportée %d" - -#: resbin.c:323 resbin.c:338 resbin.c:404 -msgid "menuitem header" -msgstr "en-tête d'item du menu" - -#: resbin.c:434 -msgid "menuitem" -msgstr "item du menu" - -#: resbin.c:475 resbin.c:503 -msgid "dialog header" -msgstr "en-tête de dialogue" - -#: resbin.c:493 -#, c-format -msgid "unexpected DIALOGEX version %d" -msgstr "version DIALOGEX inattendue %d" - -#: resbin.c:538 -msgid "dialog font point size" -msgstr "taille en point de fonte de dialogue" - -#: resbin.c:546 -msgid "dialogex font information" -msgstr "information de fonte de type dialogex" - -#: resbin.c:572 resbin.c:590 -msgid "dialog control" -msgstr "contrôle de dialogue" - -#: resbin.c:582 -msgid "dialogex control" -msgstr "contrôle dialogex" - -#: resbin.c:611 -msgid "dialog control end" -msgstr "fin de contrôle du dialogue" - -#: resbin.c:623 -msgid "dialog control data" -msgstr "données de contrôle du dialogue" - -#: resbin.c:666 -msgid "stringtable string length" -msgstr "longueur de chaîne de la table des chaînes" - -#: resbin.c:676 -msgid "stringtable string" -msgstr "chaîne de la table des chaînes" - -#: resbin.c:709 -msgid "fontdir header" -msgstr "en-tête fontdir" - -#: resbin.c:722 -msgid "fontdir" -msgstr "fontdir" - -#: resbin.c:738 -msgid "fontdir device name" -msgstr "nom du périphérique fontdir" - -#: resbin.c:744 -msgid "fontdir face name" -msgstr "nom de la sélection du répertoire de fontes" - -#: resbin.c:787 -msgid "accelerator" -msgstr "accélérateur" - -#: resbin.c:851 -msgid "group cursor header" -msgstr "en-tête du groupe de curseurs" - -#: resbin.c:855 -#, c-format -msgid "unexpected group cursor type %d" -msgstr "type de groupe de curseur inattendu %d" - -#: resbin.c:870 -msgid "group cursor" -msgstr "groupe de curseur" - -#: resbin.c:909 -msgid "group icon header" -msgstr "en-tête du groupe d'icônes" - -#: resbin.c:913 -#, c-format -msgid "unexpected group icon type %d" -msgstr "type de groupe d'icône inattendu %d" - -#: resbin.c:928 -msgid "group icon" -msgstr "groupe d'icônes" - -#: resbin.c:999 resbin.c:1218 -msgid "unexpected version string" -msgstr "chaîne de version inattendue" - -#: resbin.c:1033 -#, 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:1037 -#, c-format -msgid "unexpected version type %d" -msgstr "type de version inattendu %d" - -#: resbin.c:1049 -#, c-format -msgid "unexpected fixed version information length %d" -msgstr "longueur d'information fixe de version inattendue %d" - -#: resbin.c:1052 -msgid "fixed version info" -msgstr "information fixe de version" - -#: resbin.c:1056 -#, c-format -msgid "unexpected fixed version signature %lu" -msgstr "signature de version fixe inattendue %lu" - -#: resbin.c:1060 -#, c-format -msgid "unexpected fixed version info version %lu" -msgstr "information de version inattendue dans la version fixe %lu" - -#: resbin.c:1089 -msgid "version var info" -msgstr "information de variable de version" - -#: resbin.c:1106 -#, c-format -msgid "unexpected stringfileinfo value length %d" -msgstr "longueur de la valeur stringfileinfo inattendue %d" - -#: resbin.c:1116 -#, c-format -msgid "unexpected version stringtable value length %d" -msgstr "longueur inattendue de la valeur de la table de chaîne de version %d" - -#: resbin.c:1150 -#, c-format -msgid "unexpected version string length %d != %d + %d" -msgstr "longueur inattendue de la chaîne de version %d != %d +%d" - -#: resbin.c:1161 -#, c-format -msgid "unexpected version string length %d < %d" -msgstr "longueur inattendue de la chaîne de version %d < %d" - -#: resbin.c:1178 -#, c-format -msgid "unexpected varfileinfo value length %d" -msgstr "longueur inattendue de la chaîne varfileinfo %d" - -#: resbin.c:1197 -msgid "version varfileinfo" -msgstr "version varfileinfo" - -#: resbin.c:1212 -#, c-format -msgid "unexpected version value length %d" -msgstr "longueur inattendue de la chaîne de version %d" - -#: rescoff.c:128 -msgid "filename required for COFF input" -msgstr "nom de fichier requis pour l'entrée COFF" - -#: rescoff.c:145 -#, c-format -msgid "%s: no resource section" -msgstr "%s: aucune section ressource" - -#: rescoff.c:152 -msgid "can't read resource section" -msgstr "ne peutlire la section ressource" - -#: rescoff.c:178 -#, c-format -msgid "%s: %s: address out of bounds" -msgstr "%s: %s: adresse est hors limite" - -#: rescoff.c:197 -msgid "directory" -msgstr "répertoire" - -#: rescoff.c:225 -msgid "named directory entry" -msgstr "nom du répertoire d'entrée" - -#: rescoff.c:234 -msgid "directory entry name" -msgstr "nom de l'entrée du répertoire" - -#: rescoff.c:254 -msgid "named subdirectory" -msgstr "nom de sous-répertoire" - -#: rescoff.c:262 -msgid "named resource" -msgstr "nom de ressource" - -#: rescoff.c:277 -msgid "ID directory entry" -msgstr "IDentificateur d'entrée de répertoire" - -#: rescoff.c:294 -msgid "ID subdirectory" -msgstr "IDentificateur de sous-répertoire" - -#: rescoff.c:302 -msgid "ID resource" -msgstr "IDentificateur ressource" - -#: rescoff.c:328 -msgid "resource type unknown" -msgstr "type de ressource inconnue" - -#: rescoff.c:331 -msgid "data entry" -msgstr "aucune donnée" - -#: rescoff.c:339 -msgid "resource data" -msgstr "donnée ressource" - -#: rescoff.c:344 -msgid "resource data size" -msgstr "taille de données ressources" - -#: rescoff.c:439 -msgid "filename required for COFF output" -msgstr "nom de fichier requis pour la sortie de COFF" - -#: rescoff.c:738 -msgid "can't get BFD_RELOC_RVA relocation type" -msgstr "ne peut obtenir le type de la relocalisation BFD_RELOC_RVA" - -#: resrc.c:240 resrc.c:312 -#, c-format -msgid "can't open temporary file `%s': %s" -msgstr "ne peut ouvrir un fichier temporaire « %s »: %s" - -#: resrc.c:246 -#, c-format -msgid "can't redirect stdout: `%s': %s" -msgstr "ne peut rediriger sur stdout: « %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 "ne peut exécuter « %s »: %s" - -#: resrc.c:317 -#, 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:324 -#, c-format -msgid "can't popen `%s': %s" -msgstr "ne peut ouvrir un pipe par popen() « %s »: %s" - -#: resrc.c:326 -msgid "Using popen to read preprocessor output\n" -msgstr "Utilisation de popen pour lire la sortie du préprocesseur\n" - -#: resrc.c:369 -#, c-format -msgid "Tried `%s'\n" -msgstr "Essayé « %s »\n" - -#: resrc.c:380 -#, c-format -msgid "Using `%s'\n" -msgstr "Utilisation de « %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: fin de fichier EOF prématuré" - -#: resrc.c:608 -#, c-format -msgid "%s: read of %lu returned %lu" -msgstr "%s: lecture de %lu retourné %lu" - -#: resrc.c:650 resrc.c:905 resrc.c:1178 resrc.c:1332 -#, c-format -msgid "stat failed on bitmap file `%s': %s" -msgstr "échec d'évaluation par stat() du fichier bitmap « %s »: %s" - -#: resrc.c:703 -#, 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:735 resrc.c:1049 -#, c-format -msgid "%s: fseek to %lu failed: %s" -msgstr "%s: échec %lu de repérage: %s" - -#: resrc.c:873 -msgid "help ID requires DIALOGEX" -msgstr "identificateur d'aide requiert DIALOGEX" - -#: resrc.c:875 -msgid "control data requires DIALOGEX" -msgstr "donnée de contrôle requiert DIALOGEX" - -#: resrc.c:1018 -#, 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:1537 -#, c-format -msgid "can't open `%s' for output: %s" -msgstr "ne peut ouvrir « %s » pour la sortie: %s" - -#: size.c:86 -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:87 -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: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= Set the binary file format\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|-h --radix={8|10|16} afficher les nombres en octal, décimal ou hexadécimal\n" -" -t --totals afficher les tailles totales (Berkeley seulement)\n" -" --target= sélectionner le format de fichier binaire\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:1953 -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: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 "" -"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" -" -h --help afficher l'aide-mémoire\n" -" -V --version afficher le nom et la version du logiciel\n" - -#: srconv.c:2099 -#, c-format -msgid "unable to open output file %s" -msgstr "incapable d'ouvrir le fichier de sortie %s" - -#: stabs.c:346 stabs.c:1755 -msgid "numeric overflow" -msgstr "débordement numérique" - -#: stabs.c:357 -#, c-format -msgid "Bad stab: %s\n" -msgstr "Mauvaise inclusion (« stab »): %s\n" - -#: stabs.c:367 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "AVERTISSEMENT: %s: %s\n" - -#: stabs.c:488 -msgid "N_LBRAC not within function\n" -msgstr "N_LBRAC n'est pas dans la fonction\n" - -#: stabs.c:527 -msgid "Too many N_RBRACs\n" -msgstr "Trop de N_RBRAC\n" - -#: stabs.c:773 -msgid "unknown C++ encoded name" -msgstr "nom encode C++ inconnu" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1293 -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:1847 -msgid "missing index type" -msgstr "type d'index manquant" - -#: stabs.c:2174 -msgid "unknown virtual character for baseclass" -msgstr "caractère virtuel inconnu pour la classe de base" - -#: stabs.c:2192 -msgid "unknown visibility character for baseclass" -msgstr "caractère de visibilité inconnu pour la classe de base" - -#: stabs.c:2384 -msgid "unnamed $vb type" -msgstr "type $vb inconnu" - -#: stabs.c:2390 -msgid "unrecognized C++ abbreviation" -msgstr "abréviation C++ inconnue" - -#: stabs.c:2470 -msgid "unknown visibility character for field" -msgstr "caractère de visibilité inconnu pour le champ" - -#: stabs.c:2726 -msgid "const/volatile indicator missing" -msgstr "indicateur de const/volatile manquant" - -#: stabs.c:2967 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "Pas de mutilation pour \"n%s\"\n" - -#: stabs.c:3281 -msgid "Undefined N_EXCL" -msgstr "N_EXCL indéfini" - -#: stabs.c:3369 -#, c-format -msgid "Type file number %d out of range\n" -msgstr "Nombre de type de fichier %d hors limite\n" - -#: stabs.c:3374 -#, c-format -msgid "Type index number %d out of range\n" -msgstr "Nombre de type index %d hors limite\n" - -#: stabs.c:3461 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "Type XCOFF non reconnu %d\n" - -#: stabs.c:3762 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "mauvais codage par mutilation du nom « %s »\n" - -#: stabs.c:3859 -msgid "no argument types in mangled string\n" -msgstr "aucun type d'argument dans la chaîne encodé par mutilation\n" - -#: strings.c:208 -#, c-format -msgid "invalid number %s" -msgstr "nombre invalide %s" - -#: strings.c:647 -#, c-format -msgid "invalid integer argument %s" -msgstr "argument en valeur entière invalide %s" - -#: strings.c:658 -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: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" -" - 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= 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 "" -"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ées par NULL d'au\n" -" - moins [nombre] de caractères (par défault 4).\n" -" -t --radix={o,x,d} afficher la localisation de la chaîne en base 8, 10 ou 16\n" -" -o un alias pour --radix=o\n" -" -T --target= 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 = 8-bits, {b,l} = 16-bits, {B,L} = 32-bits\n" -" -h --help afficher l'aide-mémoire\n" -" -v --version afficher le nom et la version du logiciel\n" - -#: sysdump.c:768 -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:769 -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:836 -#, c-format -msgid "cannot open input file %s" -msgstr "ne peut ouvrir le fichier d'entrée %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 "" -"Ce logiciel est libre; vous pouvez le redistribuer selon les termes de la\n" -"licence GNU General Public License. AUCUNE garantie n'est donnée.\n" - -#: windres.c:205 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "ne peut ouvrir %s « %s »: %s" - -#: windres.c:384 -msgid ": expected to be a directory\n" -msgstr ": espérait un répertoire\n" - -#: windres.c:396 -msgid ": expected to be a leaf\n" -msgstr ": espérait une feuille\n" - -#: windres.c:405 -#, c-format -msgid "%s: warning: " -msgstr "%s: AVERTISSEMENT: " - -#: windres.c:407 -msgid ": duplicate value\n" -msgstr ": valeur dupliquée\n" - -#: windres.c:569 -#, c-format -msgid "unknown format type `%s'" -msgstr "type de format inconnu « %s »" - -#: windres.c:570 -#, c-format -msgid "%s: supported formats:" -msgstr "%s: formats supportés:" - -#. Otherwise, we give up. -#: windres.c:655 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "ne peut déterminer le type de fichier « %s »; utiliser l'option -I" - -#: windres.c:669 -#, 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:671 -msgid "" -" The options are:\n" -" -i --input= Name input file\n" -" -o --output= Name output file\n" -" -J --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" -I --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -U --undefine Undefine SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" -l --language= 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= nommer le fichier d'entrée\n" -" -o --output= nommer le fichier de sortie\n" -" -J --input-format=\n" -" spécifier le format d'entrée\n" -" -O --output-format=\n" -" spécifier le format de sortie\n" -" -F --target= spécifier la CIBLE en COFF\n" -" --preprocessor= programme à utiliser pour pré-traiter le fichier rc\n" -" -I --include-dir= inclure le RÉPERTOIRE lors du pré-traitement du fichier rc\n" -" -D --define SYM[=VALEUR]\n" -" définir le SYMbole ayant la VALEUR lors du\n" -" du pré-traitement du fichier rc\n" -" -v --verbose utiliser le mode bavard\n" -" -l --language= 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:687 -msgid " --yydebug Turn on parser debugging\n" -msgstr " --yydebug activer le mode de débug de l'analyseur syntaxique\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 "" -"Les options sont:\n" -" -r ignoré pour la compatibilité avec rc\n" -" -h --help afficher l'aide-mémoire\n" -" -V --version afficher le nom et la version du logiciel\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 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:833 -msgid "invalid option -f\n" -msgstr "option invalide -f\n" - -#: windres.c:838 -msgid "No filename following the -fo option.\n" -msgstr "Pas de nom de fichier après l'option -fo.\n" - -#: windres.c:896 -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:1014 -msgid "no resources" -msgstr "aucune ressource" - -#: wrstabs.c:395 wrstabs.c:2055 -#, c-format -msgid "string_hash_lookup failed: %s" -msgstr "échec de string_hash_lookup: %s" - -#: wrstabs.c:695 -#, c-format -msgid "stab_int_type: bad size %u" -msgstr "stab_int_type: mauvaise taille %u" - -#: wrstabs.c:1495 -#, 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 "debug_record_variable: no current block" -#~ msgstr "debug_record_variable: aucun bloc courant" - -#~ msgid "%s: No dynamic symbols" -#~ msgstr "%s: aucun symboles dynamiques" - -#~ msgid "64-bit DWARF line info is not supported yet.\n" -#~ msgstr "ligne info DWARF 64 bits n'est pas encore supportée.\n" - -#~ msgid "64-bit DWARF pubnames are not supported yet.\n" -#~ msgstr "noms publics DWARF 64 bits ne sont pas encore supportés\n" - -#~ msgid "64-bit DWARF debug info is not supported yet.\n" -#~ msgstr "info de débug DWARF 64 bits n'est pas encore supportée.\n" - -#~ msgid "64-bit DWARF aranges are not supported yet.\n" -#~ msgstr "gamme aranges DWARF de 64 bits n'est pas encore supportée.\n" - -#~ msgid "64-bit DWARF format frames are not supported yet.\n" -#~ msgstr "gamme aranges DWARF de 64 bits n'est pas encore supportée.\n" - -#~ msgid "" -#~ " -h --help Print this help message\n" -#~ " -V --version Print version information\n" -#~ msgstr "" -#~ " -h --help afficher l'aide-mémoire\n" -#~ " -V --version afficher le nom et la version du logiciel\n" - -#~ msgid "" -#~ "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" -#~ " [-e executable] [--exe=executable] [--demangle[=style]]\n" -#~ " [--basenames] [--functions] [addr addr ...]\n" -#~ msgstr "" -#~ "Usage: %s [-CfsHV] [-b nombdf] [--target=nombdf]\n" -#~ " [-e executable] [--exe=executable] [--demangle[=style]]\n" -#~ " [--basenames] [--functions] [adr adr ...]\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 "" -#~ "Usage: %s [-dhV] [-I nombfd] [-O nombfd] [-T fichier_en_tete] [-l editeur_de_lien]\n" -#~ " [--input-target=nombfd] [--output-target=nombfd]\n" -#~ " [--header-file=fichier] [--linker=editeur_de_liens] [--debug]\n" -#~ " [--help] [--version]\n" -#~ " [fichier_d_entree [fichier_de_sortie]]\n" - -#~ msgid "Usage: %s [OPTION]... [FILE]...\n" -#~ msgstr "Usage: %s [OPTIONS]... [FICHIER]...\n" - -#~ msgid "Usage: %s OPTION... FILE...\n" -#~ msgstr "Usage: %s OPTION... FICHIER...\n" - -#~ msgid " Options are:\n" -#~ msgstr " Les options sont:\n" - -#~ msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" -#~ msgstr " -a ou --all équivalent à: -h -l -S -s -r -d -V -A -I\n" - -#~ msgid " -h or --file-header Display the ELF file header\n" -#~ msgstr " -h ou --file-header afficher l'en-tête du fichier ELF\n" - -#~ msgid " -l or --program-headers or --segments\n" -#~ msgstr " -l ou --program-headers ou --segments\n" - -#~ msgid " Display the program headers\n" -#~ msgstr " afficher les en-têtes du programme\n" - -#~ msgid " -S or --section-headers or --sections\n" -#~ msgstr " -S ou --section-headers ou --sections\n" - -#~ msgid " Display the sections' header\n" -#~ msgstr " afficher l'en-tête des sections\n" - -#~ msgid " -e or --headers Equivalent to: -h -l -S\n" -#~ msgstr " -e ou --headers équivalent à: -h -l -S\n" - -#~ msgid " -s or --syms or --symbols Display the symbol table\n" -#~ msgstr " -s ou --syms ou --symbols afficher la table de symboles\n" - -#~ msgid " -n or --notes Display the core notes (if present)\n" -#~ msgstr " -n ou --notes afficher les notes du core (si disponible)\n" - -#~ msgid " -r or --relocs Display the relocations (if present)\n" -#~ msgstr " -r ou --relocs afficher les relocalisations (si disponibles)\n" - -#~ msgid " -u or --unwind Display the unwind info (if present)\n" -#~ msgstr " -u ou --unwind afficher les infos unwind (si disponibles)\n" - -#~ msgid " -d or --dynamic Display the dynamic segment (if present)\n" -#~ msgstr " -d ou --dynamic afficher le segement dynamique (si disponible)\n" - -#~ msgid " -V or --version-info Display the version sections (if present)\n" -#~ msgstr " -V ou --version-info afficher la version des sections (si disponible)\n" - -#~ msgid " -A or --arch-specific Display architecture specific information (if any).\n" -#~ msgstr " -A ou --arch-specific afficher les informations de spécificités d'architecture (si disponible).\n" - -#~ msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" -#~ msgstr " -D ou --use-dynamic utiliser les infos de la section dynamique lors de l'affichage des symboles\n" - -#~ msgid " -x or --hex-dump=\n" -#~ msgstr " -x ou --hex-dump=\n" - -#~ msgid " Dump the contents of section \n" -#~ msgstr " vidanger le contenu de la section \n" - -#~ msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" -#~ msgstr " -w[liaprmfs] ou --debug-dump[=ligne,=info,=abbrev,=nompub,=plages,=macro,=trames,=str]\n" - -#~ msgid " Display the contents of DWARF2 debug sections\n" -#~ msgstr " afficher le contenu des sections DWARF2 de débug\n" - -#~ msgid " -i or --instruction-dump=\n" -#~ msgstr " -i ou --instruction-dump=\n" - -#~ msgid " -I or --histogram Display histogram of bucket list lengths\n" -#~ msgstr " -I ou --histogram afficher l'histogramme of bucket list lengths\n" - -#~ msgid " -v or --version Display the version number of readelf\n" -#~ msgstr " -v ou --version afficher le numéro de version de readelf\n" - -#~ msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n" -#~ msgstr " -W ou --wide ne pas couper les lignes ou tronquer les symboles pour s'insérer dans 80 colonnes\n" - -#~ msgid " -H or --help Display this information\n" -#~ msgstr " -H ou --help afficher cette information\n" - -#~ msgid "unexpected dialog signature %d" -#~ msgstr "signature de dialogue inattendue %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 "" -#~ "Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n" -#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n" -#~ " [-V | --version] [--target=nombfd] [--help] [FICHIER...]\n" - -#~ msgid "default is --format=berkeley\n" -#~ msgstr "par défaut --format=berkeley\n" - -#~ msgid "default is --format=sysv\n" -#~ msgstr "par défaut --format=sysv\n" - -#~ msgid "Usage: %s [-dhVq] in-file [out-file]\n" -#~ msgstr "Usage: %s [-dhVq] fichier-entrée [fichier-sortie]\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 "" -#~ "Usage: %s [-afov] [-n longueur-min] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" -#~ " [-] [--all] [--print-file-name] [--bytes=longueur-min] [--radix={o,x,d}]\n" -#~ " [--target=nom_bfd] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n" - -#~ msgid "Usage: %s [-hV] in-file\n" -#~ msgstr "Usage: %s [-hV] fichier-entrée\n" - -#~ msgid "GNU %s version %s\n" -#~ msgstr "GNU %s version %s\n" - -#~ msgid "no export definition file provided" -#~ msgstr "aucun fichier de définition d'exports fourni" - -#~ msgid " The switches are:\n" -#~ msgstr " Les commutateurs sont:\n" - -#~ msgid "Unable to seek to start of %s at %x\n" -#~ msgstr "Incapable de repérer le début de %s à %x\n" - -#~ msgid "Unable to read data at %x for %s\n" -#~ msgstr "Incapable de lire les données à %x de %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 "Clé des fanions:\n" - -#~ msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" -#~ msgstr " W (écrit), A (alloc), X (exécution), M (fusion), S (chaînes)\n" - -#~ msgid " I (info), L (link order), G (group), x (unknown)\n" -#~ msgstr " I (info), L (ordre de liens), G (groupe), x (inconnu)\n" - -#~ msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" -#~ msgstr " O (traitement additionnel sys. exploit. requis) o (spécificités sys. esploit.), p (spécificités de processeur)\n" - -#~ msgid "Unable to handle FORM: %d" -#~ msgstr "Incapable de traiter la FORME: %d" - -#~ msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" -#~ msgstr "type de données de 64 bits et ne peut lire un fichier ELF de 64 bits.\n" diff --git a/binutils/po/ja.po b/binutils/po/ja.po deleted file mode 100644 index a140b41e1..000000000 --- a/binutils/po/ja.po +++ /dev/null @@ -1,4110 +0,0 @@ -# Japanese message for binutils 2.11 -# Copyright (C) 2001 Free Software Foundation, Inc. -# Daisuke Yamashita , 2001. -# -msgid "" -msgstr "" -"Project-Id-Version: binutils 2.11\n" -"POT-Creation-Date: 2001-01-11 12:02-0800\n" -"PO-Revision-Date: 2001-12-16 16:10+0900\n" -"Last-Translator: Daisuke Yamashita \n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=EUC-JP\n" -"Content-Transfer-Encoding: 8bit\n" - -#: addr2line.c:76 -#, c-format -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" - -#: addr2line.c:83 ar.c:288 nlmconv.c:1119 objcopy.c:373 objcopy.c:405 -#: readelf.c:1876 size.c:91 strings.c:530 windres.c:737 -#, c-format -msgid "Report bugs to %s\n" -msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Þ¤Ç\n" - -#: addr2line.c:243 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: ¥¢¡¼¥«¥¤¥Ö¤«¤é¥¢¥É¥ì¥¹¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó" - -#: addr2line.c:310 nm.c:436 objdump.c:2857 -#, c-format -msgid "unknown demangling style `%s'" -msgstr "̾Á°Éü¸µ (demangle) ¤ÎÊý¼° `%s' ¤¬ÉÔÌÀ¤Ç¤¹" - -#: ar.c:236 -#, c-format -msgid "no entry %s in archive\n" -msgstr "¹àÌÜ %s ¤¬¥¢¡¼¥«¥¤¥ÖÃæ¤Ë¤¢¤ê¤Þ¤»¤ó\n" - -#: ar.c:253 -#, c-format -msgid "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" -msgstr "»È¤¤Êý: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [¥á¥ó¥Ð̾] [¥«¥¦¥ó¥È] ½ñ¸Ë¥Õ¥¡¥¤¥ë ¥Õ¥¡¥¤¥ë...\n" - -#: ar.c:256 -#, c-format -msgid " %s -M [\n\n" -msgstr "\n<¥á¥ó¥Ð %s>\n\n" - -#: ar.c:845 ar.c:913 -#, c-format -msgid "%s is not a valid archive" -msgstr "%s ¤ÏÀµ¾ï¤Ê½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" - -#: ar.c:881 -#, c-format -msgid "stat returns negative size for %s" -msgstr "stat(2) ¤¬ %s ¤Î¥µ¥¤¥º¤È¤·¤ÆÉé¤Î¿ô¤òÊÖ¤·¤Þ¤·¤¿" - -#: ar.c:1008 -#, c-format -msgid "%s is not an archive" -msgstr "%s ¤Ï½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" - -#: ar.c:1015 -#, c-format -msgid "creating %s" -msgstr "%s ¤òºîÀ®¤·¤Þ¤¹" - -#: ar.c:1221 -#, c-format -msgid "No member named `%s'\n" -msgstr "`%s' ¤È¤¤¤¦Ì¾Á°¤Î¥á¥ó¥Ð¤Ï¤¢¤ê¤Þ¤»¤ó\n" - -#: ar.c:1273 -#, c-format -msgid "no entry %s in archive %s!" -msgstr "¥¨¥ó¥È¥ê %s ¤Ï½ñ¸Ë %s ¤Ë¤¢¤ê¤Þ¤»¤ó!" - -#: ar.c:1434 -#, c-format -msgid "%s: no archive map to update" -msgstr "%s: ¹¹¿·¤¹¤Ù¤­½ñ¸Ë¥Þ¥Ã¥×¤¬¤¢¤ê¤Þ¤»¤ó" - -#: arsup.c:88 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "¥¨¥ó¥È¥ê %s ¤Ï½ñ¸ËÆâ¤Ë¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: arsup.c:120 -#, c-format -msgid "Can't open file %s\n" -msgstr "¥Õ¥¡¥¤¥ë %s¤ò³«¤±¤Þ¤»¤ó\n" - -#: arsup.c:170 -#, c-format -msgid "%s: Can't open output archive %s\n" -msgstr "%s: ½ÐÎϽñ¸Ë %s ¤ò³«¤±¤Þ¤»¤ó\n" - -#: arsup.c:182 -#, 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:229 -#, c-format -msgid "%s: no output archive specified yet\n" -msgstr "%s: ½ÐÎϽñ¸Ë¤¬¤Þ¤À»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó\n" - -#: arsup.c:249 arsup.c:284 arsup.c:320 arsup.c:340 arsup.c:398 -#, c-format -msgid "%s: no open output archive\n" -msgstr "%s: ½ÐÎÏÍѽñ¸Ë¤¬³«¤«¤ì¤Æ¤¤¤Þ¤»¤ó\n" - -#: arsup.c:257 arsup.c:358 arsup.c:378 -#, c-format -msgid "%s: can't open file %s\n" -msgstr "%s: ¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó\n" - -#: arsup.c:305 arsup.c:374 arsup.c:453 -#, c-format -msgid "%s: can't find module file %s\n" -msgstr "%s: ¥â¥¸¥å¡¼¥ë¥Õ¥¡¥¤¥ë %s ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó\n" - -#: arsup.c:405 -#, c-format -msgid "Current open archive is %s\n" -msgstr "¸½ºß³«¤«¤ì¤¿½ñ¸Ë¤Ï %s ¤Ç¤¹\n" - -#: arsup.c:432 -#, c-format -msgid "%s: no open archive\n" -msgstr "%s: ³«¤¤¤Æ¤¤¤ë½ñ¸Ë¤¬¤¢¤ê¤Þ¤»¤ó\n" - -#: bucomm.c:135 -#, c-format -msgid "can't set BFD default target to `%s': %s" -msgstr "BFD ¥Ç¥Õ¥©¥ë¥È¥¿¡¼¥²¥Ã¥È¤ò `%s' ¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó: %s" - -#: bucomm.c:147 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: ·Á¼°¤ò¾È¹ç¤·¤Þ¤¹:" - -#: bucomm.c:164 -msgid "Supported targets:" -msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥¿¡¼¥²¥Ã¥È:" - -#: bucomm.c:166 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥¿¡¼¥²¥Ã¥È:" - -#: bucomm.c:272 -#, c-format -msgid "%s: bad number: %s" -msgstr "%s: ÉÔÀµ¤ÊÈÖ¹æ: %s" - -#: coffdump.c:94 -#, c-format -msgid "#lines %d " -msgstr "#¹Ô %d " - -#: coffdump.c:456 sysdump.c:719 -#, c-format -msgid "%s: Print a human readable interpretation of a SYSROFF object file\n" -msgstr "%s: SYSROFF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Î²ò¼á¤ò¿Í´Ö¤¬Æɤߤ䤹¤¤·Á¼°¤Çɽ¼¨¤¹¤ë\n" - -#: coffdump.c:498 srconv.c:1941 sysdump.c:755 -#, c-format -msgid "GNU %s version %s\n" -msgstr "GNU %s ¥Ð¡¼¥¸¥ç¥ó %s\n" - -#: coffdump.c:516 srconv.c:1975 sysdump.c:775 -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:1764 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "debug_make_undefined_type: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¼ïÎà¤Ç¤¹" - -#: debug.c:1970 -msgid "debug_name_type: no current file" -msgstr "debug_name_type: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" - -#: debug.c:2018 -msgid "debug_tag_type: no current file" -msgstr "debug_tag_type: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" - -#: debug.c:2026 -msgid "debug_tag_type: extra tag attempted" -msgstr "debug_tag_type: ;ʬ¤Ê¥¿¥°¤¬»î¤µ¤ì¤Þ¤·¤¿" - -#: debug.c:2066 -#, c-format -msgid "Warning: changing type size from %d to %d\n" -msgstr "·Ù¹ð: ·¿¤Î¥µ¥¤¥º¤ò %d ¤«¤é %d ¤ËÊѹ¹¤·¤Þ¤¹\n" - -#: debug.c:2090 -msgid "debug_find_named_type: no current compilation unit" -msgstr "debug_find_named_type: ¸½ºß¤Î¥³¥ó¥Ñ¥¤¥ëñ°Ì¤¬¤¢¤ê¤Þ¤»¤ó" - -#: debug.c:2197 -#, c-format -msgid "debug_get_real_type: circular debug information for %s\n" -msgstr "debug_get_real_type: %s ¤Î¥Ç¥Ð¥Ã¥°¾ðÊ󤬽۴Ĥ·¤Æ¤¤¤Þ¤¹\n" - -#: debug.c:2662 -msgid "debug_write_type: illegal type encountered" -msgstr "debug_write_type: ÉÔÀµ¤Ê·¿¤ËÁø¶ø¤·¤Þ¤·¤¿" - -#: dlltool.c:737 dlltool.c:762 dlltool.c:788 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "ÆâÉô¥¨¥é¡¼: ÉÔÌÀ¤Ê¥Þ¥·¥ó·¿¤Ç¤¹: %d" - -#: dlltool.c:825 -#, c-format -msgid "Can't open def file: %s" -msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:830 -#, c-format -msgid "Processing def file: %s" -msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤ò½èÍý¤·¤Þ¤¹: %s" - -#: dlltool.c:834 -msgid "Processed def file" -msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤ò½èÍý¤·¤Þ¤·¤¿" - -#: dlltool.c:859 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤Çʸˡ¥¨¥é¡¼¤Ç¤¹ %s:%d" - -#: dlltool.c:892 -#, c-format -msgid "NAME: %s base: %x" -msgstr "NAME: %s ¥Ù¡¼¥¹: %x" - -#: dlltool.c:895 dlltool.c:914 -msgid "Can't have LIBRARY and NAME" -msgstr "LIBRARY ¤ä NAME ¤ò»ý¤Æ¤Þ¤»¤ó" - -#: dlltool.c:911 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "LIBRARY: %s ¥Ù¡¼¥¹: %x" - -#: dlltool.c:1169 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "wait: %s" - -#: dlltool.c:1174 dllwrap.c:456 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "»Ò¥×¥í¥»¥¹¤¬Ã×̿Ū¤Ê¥·¥°¥Ê¥ë¤ò %d ¼õ¤±¼è¤ê¤Þ¤·¤¿" - -#: dlltool.c:1180 dllwrap.c:463 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s ¤Ï¥¹¥Æ¡¼¥¿¥¹ %d ¤Ç½ªÎ»¤·¤Þ¤·¤¿" - -#: dlltool.c:1212 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "%s ¥»¥¯¥·¥ç¥ó(%s Æâ) ¤«¤é¾ðÊó¤ò¼è¤ê¹þ¤ß¤Þ¤¹" - -#: dlltool.c:1336 -#, c-format -msgid "Excluding symbol: %s" -msgstr "¥·¥ó¥Ü¥ë¤ò½ü³°¤·¤Þ¤¹: %s" - -#: dlltool.c:1431 dlltool.c:1442 nm.c:946 nm.c:957 objdump.c:443 objdump.c:460 -#, c-format -msgid "%s: no symbols" -msgstr "%s: ¥·¥ó¥Ü¥ë¤¬¤¢¤ê¤Þ¤»¤ó" - -#. FIXME: we ought to read in and block out the base relocations -#: dlltool.c:1469 -#, c-format -msgid "Done reading %s" -msgstr "%s ¤ÎÆɼè¤ê¤¬´°Î»¤·¤Þ¤·¤¿" - -#: dlltool.c:1480 -#, c-format -msgid "Unable to open object file: %s" -msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:1483 -#, c-format -msgid "Scanning object file %s" -msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë %s ¤òÁöºº¤·¤Þ¤¹" - -#: dlltool.c:1498 -#, c-format -msgid "Cannot produce mcore-elf dll from archive file: %s" -msgstr "½ñ¸Ë¥Õ¥¡¥¤¥ë¤«¤é mcore-elf dll ¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó: %s" - -#: dlltool.c:1590 -msgid "Adding exports to output file" -msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ë exports ¤òÄɲä·¤Þ¤¹" - -#: dlltool.c:1635 -msgid "Added exports to output file" -msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ë exports ¤òÄɲä·¤Þ¤·¤¿" - -#: dlltool.c:1759 -#, c-format -msgid "Generating export file: %s" -msgstr "export ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹: %s" - -#: dlltool.c:1764 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "°ì»þ¥¢¥»¥ó¥Ö¥ê¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:1767 -#, c-format -msgid "Opened temporary file: %s" -msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤ò³«¤­¤Þ¤·¤¿: %s" - -#: dlltool.c:1981 -msgid "Generated exports file" -msgstr "exports ¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤·¤¿" - -#: dlltool.c:2236 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "bfd_open ¤¬¥¹¥¿¥Ö¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿: %s" - -#: dlltool.c:2239 -#, c-format -msgid "Creating stub file: %s" -msgstr "¥¹¥¿¥Ö¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹: %s" - -#: dlltool.c:2626 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "°ì»þ head ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:2685 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "°ì»þ tail ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:2753 -#, c-format -msgid "Can't open .lib file: %s" -msgstr ".lib ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:2756 -#, c-format -msgid "Creating library file: %s" -msgstr "¥é¥¤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹: %s" - -#: dlltool.c:2815 -#, c-format -msgid "cannot delete %s: %s" -msgstr "%s ¤òºï½ü¤Ç¤­¤Þ¤»¤ó: %s" - -#: dlltool.c:2819 -msgid "Created lib file" -msgstr "lib ¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤·¤¿" - -#: dlltool.c:2924 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "·Ù¹ð¡¢½ÅÊ£¤·¤¿ EXPORT %s %d,%d ¤ò̵»ë¤·¤Þ¤¹" - -#: dlltool.c:2930 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "¥¨¥é¡¼¡¢½ø¿ôÉÕ¤­ EXPORT ¤¬½ÅÊ£¤·¤Þ¤·¤¿: %s" - -#: dlltool.c:3057 -msgid "Processing definitions" -msgstr "ÄêµÁ¤ò½èÍý¤·¤Þ¤¹" - -#: dlltool.c:3095 -msgid "Processed definitions" -msgstr "ÄêµÁ¤ò½èÍý¤·¤Þ¤·¤¿" - -#. xgetext:c-format -#: dlltool.c:3106 dllwrap.c:520 -#, c-format -msgid "Usage %s \n" -msgstr "»È¤¤Êý %s <¥ª¥×¥·¥ç¥ó> <¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë>...\n" - -#. xgetext:c-format -#: dlltool.c:3108 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine <¥Þ¥·¥ó> <¥Þ¥·¥ó> ÍÑ DLL ¤òºîÀ®¤¹¤ë¡£ [default: %s]\n" - -#: dlltool.c:3109 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " ²Äǽ¤Ê <¥Þ¥·¥ó>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -#: dlltool.c:3110 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp <½ÐÎÏ̾> export ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¡£\n" - -#: dlltool.c:3111 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib <½ÐÎÏ̾> interface ¥é¥¤¥Ö¥é¥ê¤òÀ¸À®¤¹¤ë¡£\n" - -#: dlltool.c:3112 -msgid " -a --add-indirect Add dll indirects to export file.\n" -msgstr " -a --add-indirect export ¥Õ¥¡¥¤¥ë¤Ë´ÖÀÜ dll ¤òÄɲ乤롣\n" - -#: dlltool.c:3113 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname <̾Á°> interface ¥é¥¤¥Ö¥é¥ê¤ËÃÖ¤¯ÆþÎÏ dll ¤Î̾Á°¡£\n" - -#: dlltool.c:3114 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def Æɹþ¤Þ¤ì¤ë .def ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\n" - -#: dlltool.c:3115 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def ºîÀ®¤µ¤ì¤ë .def ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\n" - -#: dlltool.c:3116 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols .def ¤ËÁ´¤Æ¤Î¥·¥ó¥Ü¥ë¤ò export ¤¹¤ë\n" - -#: dlltool.c:3117 -msgid " --no-export-all-symbols Only export listed symbols\n" -msgstr " --no-export-all-symbols ¥ê¥¹¥È¤µ¤ì¤¿¥·¥ó¥Ü¥ë¤À¤±¤ò export ¤¹¤ë\n" - -#: dlltool.c:3118 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols <¥ê¥¹¥È> <¥ê¥¹¥È> ¤ò export ¤·¤Ê¤¤\n" - -#: dlltool.c:3119 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr " --no-default-excludes ¥Ç¥Õ¥©¥ë¥È¤Ç½ü³°¤µ¤ì¤ë¥·¥ó¥Ü¥ë¤ò¥¯¥ê¥¢¤¹¤ë\n" - -#: dlltool.c:3120 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file ¥ê¥ó¥«¤¬À¸À®¤·¤¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤òÆɤ߼è¤ë\n" - -#: dlltool.c:3121 -msgid " -x --no-idata4 Don't generate idata$4 section.\n" -msgstr " -x --no-idata4 idata$4 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤¡£\n" - -#: dlltool.c:3122 -msgid " -c --no-idata5 Don't generate idata$5 section.\n" -msgstr " -c --no-idata5 idata$5 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤¡£\n" - -#: dlltool.c:3123 -msgid " -U --add-underscore Add underscores to symbols in interface library.\n" -msgstr " -U --add-underscore interface Æâ¤Î¥·¥ó¥Ü¥ë¤Ë²¼Àþ¤ò¤Ä¤±¤ë\n" - -#: dlltool.c:3124 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at export ¤µ¤ì¤¿Ì¾Á°¤«¤é @ ¤òºï¤ë¡£\n" - -#: dlltool.c:3125 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias @ ̵¤·¤Î¥¨¥¤¥ê¥¢¥¹¤òÄɲ乤롣\n" - -#: dlltool.c:3126 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as <̾Á°> ¥¢¥»¥ó¥Ö¥éÍѤΠ<̾Á°> ¤ò»È¤¦¡£\n" - -#: dlltool.c:3127 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags <¥Õ¥é¥°> ¥¢¥»¥ó¥Ö¥é¤Ë <¥Õ¥é¥°> ¤òÅϤ¹¡£\n" - -#: dlltool.c:3128 -msgid " -C --compat-implib Create backward compatible import library.\n" -msgstr " -C --compat-implib ¸åÊý¸ß´¹ import ¥é¥¤¥Ö¥é¥ê¤òºîÀ®¤¹¤ë¡£\n" - -#: dlltool.c:3129 -msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" -msgstr " -n --no-delete °ì»þ¥Õ¥¡¥¤¥ë¤ò¾Ãµî¤·¤Ê¤¤ (;ʬ¤Ê¤â¤Î¤âÊݸ¤¹¤ë¤Ê¤é·«¤êÊÖ¤¹¤³¤È)¡£\n" - -#: dlltool.c:3130 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose ñÁÀå¥â¡¼¥É¡£\n" - -#: dlltool.c:3131 -msgid " -V --version Display the program version.\n" -msgstr " -V --version ¥×¥í¥°¥é¥à¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë¡£\n" - -#: dlltool.c:3132 -msgid " -h --help Display this information.\n" -msgstr " -h --help ¤³¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¡£\n" - -#: dlltool.c:3134 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf <½ÐÎÏ̾> <½ÐÎÏ̾> ¤Ø mcore-elf ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë\n" - -#: dlltool.c:3135 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker <̾Á°> <̾Á°> ¤ò¥ê¥ó¥«¤È¤·¤Æ»ÈÍѤ¹¤ë¡£\n" - -#: dlltool.c:3136 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags <¥Õ¥é¥°> <¥Õ¥é¥°> ¤ò¥ê¥ó¥«¤ËÅϤ¹¡£\n" - -#: dlltool.c:3280 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" - -#: dlltool.c:3309 -#, c-format -msgid "Machine '%s' not supported" -msgstr "¥Þ¥·¥ó '%s' ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" - -#: dlltool.c:3412 dllwrap.c:241 -#, c-format -msgid "Tried file: %s" -msgstr "»î¤·¤¿¥Õ¥¡¥¤¥ë: %s" - -#: dlltool.c:3419 dllwrap.c:248 -#, c-format -msgid "Using file: %s" -msgstr "»ÈÍѤ¹¤ë¥Õ¥¡¥¤¥ë: %s" - -#: dllwrap.c:335 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "°ì»þ¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤·¤Þ¤¹" - -#: dllwrap.c:337 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "°ì»þ¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹" - -#: dllwrap.c:351 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "°ì»þ exp ¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤·¤Þ¤¹" - -#: dllwrap.c:353 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "°ì»þ exp ¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹" - -#: dllwrap.c:366 -#, c-format -msgid "Keeping temporary def file %s" -msgstr "°ì»þ def ¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤·¤Þ¤¹" - -#: dllwrap.c:368 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "°ì»þ def ¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹" - -#: dllwrap.c:521 -msgid " Generic options:\n" -msgstr " °ìÈÌ¥ª¥×¥·¥ç¥ó:\n" - -#: dllwrap.c:522 -msgid " --quiet, -q Work quietly\n" -msgstr " --quiet, -q ÀŤ«¤ËÆ°ºî¤¹¤ë\n" - -#: dllwrap.c:523 -msgid " --verbose, -v Verbose\n" -msgstr " --verbose, -v ñÁÀå\n" - -#: dllwrap.c:524 -msgid " --version Print dllwrap version\n" -msgstr " --version dllwrap ¤Î¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨\n" - -#: dllwrap.c:525 -msgid " --implib Synonym for --output-lib\n" -msgstr " --implib <½ÐÎÏ̾> --output-lib ¤ÈƱµÁ¸ì\n" - -#: dllwrap.c:526 -#, c-format -msgid " Options for %s:\n" -msgstr " %s ÍÑ¥ª¥×¥·¥ç¥ó:\n" - -#: dllwrap.c:527 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name <¥É¥é¥¤¥Ð> \"gcc\" ¤¬¥Ç¥Õ¥©¥ë¥È\n" - -#: dllwrap.c:528 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags <¥Õ¥é¥°> ¥Ç¥Õ¥©¥ë¥È ld ¥Õ¥é¥°¤ò¾å½ñ¤­¤¹¤ë\n" - -#: dllwrap.c:529 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name \"dlltool\" ¤¬¥Ç¥Õ¥©¥ë¥È\n" - -#: dllwrap.c:530 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry ÂåÂØ DLL ¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¤ò»ØÄꤹ¤ë\n" - -#: dllwrap.c:531 -msgid " --image-base Specify image base address\n" -msgstr " --image-base image ¥Ù¡¼¥¹¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë\n" - -#: dllwrap.c:532 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target <¥Þ¥·¥ó> i386-cygwin32 Ëô¤Ï i386-mingw32\n" - -#: dllwrap.c:533 -msgid " --dry-run Show what needs to be run\n" -msgstr " --dry-run Æ°ºî¤ËɬÍפʤ³¤È¤òÌÀ¤é¤«¤Ë¤¹¤ë\n" - -#: dllwrap.c:534 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr " --mno-cygwin Mingw DLL ¤òºîÀ®¤¹¤ë\n" - -#: dllwrap.c:535 -msgid " Options passed to DLLTOOL:\n" -msgstr " DLLTOOL ¤ËÅϤµ¤ì¤ë¥ª¥×¥·¥ç¥ó:\n" - -#: dllwrap.c:536 -msgid " --machine \n" -msgstr " --machine <¥Þ¥·¥ó>\n" - -#: dllwrap.c:537 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp <½ÐÎÏ̾> export ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¡£\n" - -#: dllwrap.c:538 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib <½ÐÎÏ̾> input ¥é¥¤¥Ö¥é¥ê¤òÀ¸À®¤¹¤ë¡£\n" - -#: dllwrap.c:539 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr " --add-indirect export ¥Õ¥¡¥¤¥ë¤Ë´ÖÀÜ dll ¤òÄɲ乤롣\n" - -#: dllwrap.c:540 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname <̾Á°> ½ÐÎÏ lib ¤ËÃÖ¤¯ÆþÎÏ dll ¤Î̾Á°¡£\n" - -#: dllwrap.c:541 -msgid " --def Name input .def file\n" -msgstr " --def ÆþÎÏ .def ¥Õ¥¡¥¤¥ë¤Î̾Á°\n" - -#: dllwrap.c:542 -msgid " --output-def Name output .def file\n" -msgstr " --output-def ½ÐÎÏ .def ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\n" - -#: dllwrap.c:543 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols .def ¤ËÁ´¥·¥ó¥Ü¥ë¤ò export ¤¹¤ë\n" - -#: dllwrap.c:544 -msgid " --no-export-all-symbols Only export .drectve symbols\n" -msgstr " --no-export-all-symbols .drectve ¥·¥ó¥Ü¥ë¤Î¤ß¤ò export ¤¹¤ë\n" - -#: dllwrap.c:545 -msgid " --exclude-symbols Exclude from .def\n" -msgstr " --exclude-symbols .def ¤«¤é ¤ò½ü³°¤¹¤ë\n" - -#: dllwrap.c:546 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes ¥Ç¥Õ¥©¥ë¥È¤Ç½ü³°¤µ¤ì¤ë¥·¥ó¥Ü¥ë¤ò̵¤¯¤¹\n" - -#: dllwrap.c:547 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file ¥ê¥ó¥«¤¬ºîÀ®¤·¤¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤òÆɤ߼è¤ë\n" - -#: dllwrap.c:548 -msgid " --no-idata4 Don't generate idata$4 section\n" -msgstr " --no-idata4 idata$4 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤\n" - -#: dllwrap.c:549 -msgid " --no-idata5 Don't generate idata$5 section\n" -msgstr " --no-idata5 idata$5 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤\n" - -#: dllwrap.c:550 -msgid " -U Add underscores to .lib\n" -msgstr " -U .lib ¤Ë²¼Àþ¤òÄɲ乤ë\n" - -#: dllwrap.c:551 -msgid " -k Kill @ from exported names\n" -msgstr " -k export ¤µ¤ì¤¿Ì¾Á°¤«¤é @ ¤òºï¤ë\n" - -#: dllwrap.c:552 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias @ ¤Ê¤·¤Î¥¨¥¤¥ê¥¢¥¹¤òÄɲ乤ë\n" - -#: dllwrap.c:553 -msgid " --as Use for assembler\n" -msgstr " --as <̾Á°> ¥¢¥»¥ó¥Ö¥é¤È¤·¤Æ <̾Á°> ¤ò»È¤¦\n" - -#: dllwrap.c:554 -msgid " --nodelete Keep temp files.\n" -msgstr " --nodelete °ì»þ¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Ê¤¤¡£\n" - -#: dllwrap.c:555 -msgid " Rest are passed unmodified to the language driver\n" -msgstr " »Ä¤ê¤Ï¤½¤Î¤Þ¤Þ¸À¸ì¥É¥é¥¤¥Ð¤ËÅϤµ¤ì¤Þ¤¹\n" - -#: dllwrap.c:816 -msgid "Must provide at least one of -o or --dllname options" -msgstr "¾¯¤Ê¤¯¤È¤â -o ¤« --dllname ¥ª¥×¥·¥ç¥ó¤Î¤É¤Á¤é¤«¤Ï»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" - -#: dllwrap.c:844 -msgid "no export definition file provided" -msgstr "export ÄêµÁ¥Õ¥¡¥¤¥ë¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó" - -#: dllwrap.c:845 -msgid "creating one, but that may not be what you want" -msgstr "°ì¤ÄºîÀ®¤·¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¤¢¤Ê¤¿¤¬Ë¾¤à¤â¤Î¤Ç¤Ï¤Ê¤¤¤È»×¤ï¤ì¤Þ¤¹" - -#: dllwrap.c:1006 -#, c-format -msgid "DLLTOOL name : %s\n" -msgstr "DLLTOOL ̾ : %s\n" - -#: dllwrap.c:1007 -#, c-format -msgid "DLLTOOL options : %s\n" -msgstr "DLLTOOL ¥ª¥×¥·¥ç¥ó: %s\n" - -#: dllwrap.c:1008 -#, c-format -msgid "DRIVER name : %s\n" -msgstr "DRIVER ̾ : %s\n" - -#: dllwrap.c:1009 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "DRIVER ¥ª¥×¥·¥ç¥ó: %s\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 qualifer" -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 "C++ misc ¤Ëͽ´ü¤·¤Ê¤¤Ê¸»úÎ󤬤¢¤ê¤Þ¤¹" - -#: ieee.c:2455 -msgid "bad misc record" -msgstr "ÉÔÀµ¤Ê misc ¥ì¥³¡¼¥É¤Ç¤¹" - -#: ieee.c:2498 -msgid "unrecognized C++ misc record" -msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ C++ misc ¥ì¥³¡¼¥É¤Ç¤¹" - -#: ieee.c:2615 -msgid "undefined C++ object" -msgstr "̤ÄêµÁ¤Î C++ ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹" - -#: ieee.c:2649 -msgid "unrecognized C++ object spec" -msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ C++ ¥ª¥Ö¥¸¥§¥¯¥È»ÅÍͤǤ¹" - -#: 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 "C++ ¥Ù¡¼¥¹¥¯¥é¥¹¤¬¥³¥ó¥Æ¥ÊÆâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó" - -#: ieee.c:2833 -msgid "C++ data member not found in container" -msgstr "C++ ¥Ç¡¼¥¿¥á¥ó¥Ð¤¬¥³¥ó¥Æ¥ÊÆâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó" - -#: ieee.c:2874 ieee.c:3024 -msgid "unknown C++ visibility" -msgstr "ÉÔÌÀ¤Ê C++ ²Ä»ëÀ­¤Ç¤¹" - -#: ieee.c:2908 -msgid "bad C++ field bit pos or size" -msgstr "C++ ¥Õ¥£¡¼¥ë¥É¥Ó¥Ã¥È°ÌÃÖËô¤Ï¥µ¥¤¥º¤¬ÉÔÀµ¤Ç¤¹" - -#: ieee.c:3000 -msgid "bad type for C++ method function" -msgstr "C++ ¥á¥½¥Ã¥É´Ø¿ô¤Î·¿¤¬ÉÔÀµ¤Ç¤¹" - -#: ieee.c:3010 -msgid "no type information for C++ method function" -msgstr "C++ ¥á¥½¥Ã¥É´Ø¿ô¤Î·¿¾ðÊ󤬤¢¤ê¤Þ¤»¤ó" - -#: ieee.c:3049 -msgid "C++ static virtual method" -msgstr "C++ static virtual ¥á¥½¥Ã¥É¤Ç¤¹" - -#: ieee.c:3144 -msgid "unrecognized C++ object overhead spec" -msgstr "C++ ¥ª¥Ö¥¸¥§¥¯¥È¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É»ÅÍͤòǧ¼±¤Ç¤­¤Þ¤»¤ó" - -#: ieee.c:3183 -msgid "undefined C++ vtable" -msgstr "C++ ²¾ÁÛ´Ø¿ô¥Æ¡¼¥Ö¥ë(vtable) ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" - -#: ieee.c:3254 -msgid "C++ default values not in a function" -msgstr "C++ ¥Ç¥Õ¥©¥ë¥ÈÃͤ¬´Ø¿ôÆâ¤Ë¤¢¤ê¤Þ¤»¤ó" - -#: 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:4236 -msgid "IEEE numeric overflow: 0x" -msgstr "IEEE ¿ôÃͤ¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 0x" - -#: ieee.c:4282 -#, c-format -msgid "IEEE string length overflow: %u\n" -msgstr "IEEE ʸ»úÎóŤ¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: %u\n" - -#: ieee.c:5324 -#, c-format -msgid "IEEE unsupported integer type size %u\n" -msgstr "IEEE ¤ÏÀ°¿ô·¿¥µ¥¤¥º %u ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n" - -#: ieee.c:5360 -#, c-format -msgid "IEEE unsupported float type size %u\n" -msgstr "IEEE ¤ÏÉâÆ°¾®¿ô·¿¥µ¥¤¥º %u ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n" - -#: ieee.c:5396 -#, c-format -msgid "IEEE unsupported complex type size %u\n" -msgstr "IEEE ¤ÏÊ£ÁÇ¿ô·¿¥µ¥¤¥º %u ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n" - -#: nlmconv.c:275 srconv.c:1966 -msgid "input and output files must be different" -msgstr "ÆþÎϤȽÐÎϤϰۤʤë¥Õ¥¡¥¤¥ë¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" - -#: nlmconv.c:322 -msgid "input file named both on command line and with INPUT" -msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë̾¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤È INPUT ¤ÎξÊý¤ÇÍ¿¤¨¤é¤ì¤Þ¤·¤¿" - -#: nlmconv.c:331 -msgid "no input file" -msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" - -#: nlmconv.c:361 -msgid "no name for output file" -msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ëÍѤÎ̾Á°¤¬¤¢¤ê¤Þ¤»¤ó" - -#: nlmconv.c:374 -msgid "warning: input and output formats are not compatible" -msgstr "·Ù¹ð: ÆþÎϤȽÐÎϤηÁ¼°¤Ë¸ß´¹À­¤¬¤¢¤ê¤Þ¤»¤ó" - -#: nlmconv.c:403 -msgid "make .bss section" -msgstr ".bss ¥»¥¯¥·¥ç¥ó¤ÎºîÀ®" - -#: nlmconv.c:412 -msgid "make .nlmsections section" -msgstr ".nlmsections ¥»¥¯¥·¥ç¥ó¤ÎºîÀ®" - -#: nlmconv.c:414 -msgid "set .nlmsections flags" -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:723 nlmconv.c:912 -msgid "custom section" -msgstr "¥«¥¹¥¿¥à¥»¥¯¥·¥ç¥ó" - -#: nlmconv.c:744 nlmconv.c:941 -msgid "help section" -msgstr "¥Ø¥ë¥×¥»¥¯¥·¥ç¥ó" - -#: nlmconv.c:766 nlmconv.c:959 -msgid "message section" -msgstr "¥á¥Ã¥»¡¼¥¸¥»¥¯¥·¥ç¥ó" - -#: nlmconv.c:782 nlmconv.c:992 -msgid "module section" -msgstr "¥â¥¸¥å¡¼¥ë¥»¥¯¥·¥ç¥ó" - -#: nlmconv.c:802 nlmconv.c:1008 -msgid "rpc section" -msgstr "rpc ¥»¥¯¥·¥ç¥ó" - -#. There is no place to record this information. -#: nlmconv.c:838 -#, c-format -msgid "%s: warning: shared libraries can not have uninitialized data" -msgstr "%s: ·Ù¹ð: ¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ï̤½é´ü²½¥Ç¡¼¥¿¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó" - -#: nlmconv.c:859 nlmconv.c:1027 -msgid "shared section" -msgstr "¶¦Í­¥»¥¯¥·¥ç¥ó" - -#: nlmconv.c:867 -msgid "warning: No version number given" -msgstr "·Ù¹ð: ¥Ð¡¼¥¸¥ç¥óÈֹ椬Ϳ¤¨¤é¤ì¤Æ¤¤¤Þ¤»¤ó" - -#: nlmconv.c:907 nlmconv.c:936 nlmconv.c:954 nlmconv.c:1003 nlmconv.c:1022 -#, c-format -msgid "%s: read: %s" -msgstr "%s: Æɹþ¤ß: %s" - -#: nlmconv.c:929 -msgid "warning: MAP and FULLMAP are not supported; try ld -M" -msgstr "·Ù¹ð: MAP ¤È FULLMAP ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó -- ld -M ¤ò»î¤·¤Æ¤¯¤À¤µ¤¤" - -#: nlmconv.c:1099 -#, c-format -msgid "%s: Convert an object file into a NetWare Loadable Module\n" -msgstr "%s: ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò NetWare ¥í¡¼¥À¥Ö¥ë¥â¥¸¥å¡¼¥ë¤ËÊÑ´¹¤·¤Þ¤¹\n" - -#: nlmconv.c:1111 -#, c-format -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" - -#: nlmconv.c:1151 -#, c-format -msgid "support not compiled in for %s" -msgstr "%s ÍÑ¥µ¥Ý¡¼¥È¤Ï¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" - -#: nlmconv.c:1191 -msgid "make section" -msgstr "make ¥»¥¯¥·¥ç¥ó" - -#: 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:1839 -msgid "stub section sizes" -msgstr "¥¹¥¿¥Ö¥»¥¯¥·¥ç¥ó¥µ¥¤¥º" - -#: nlmconv.c:1888 -msgid "writing stub" -msgstr "¥¹¥¿¥Ö¤Î½ñ¹þ¤ßÃæ" - -#: nlmconv.c:1978 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "%s ¤ËÂФ¹¤ë PC ´ØÏ¢ºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" - -#: nlmconv.c:2042 -#, c-format -msgid "overflow when adjusting relocation against %s" -msgstr "%s ¤ËÂФ¹¤ëºÆÇÛÃÖ¤òÄ´À°Ãæ¤Ë¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" - -#: nlmconv.c:2159 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "%s: %s ¤Î¼Â¹Ô¤¬¼ºÇÔ¤·¤Þ¤·¤¿: " - -#: nlmconv.c:2174 -#, c-format -msgid "Execution of %s failed" -msgstr "%s ¤Î¼Â¹Ô¤¬¼ºÇÔ¤·¤Þ¤·¤¿" - -#: nm.c:294 -#, c-format -msgid "Usage: %s [OPTION]... [FILE]...\n" -msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n" - -#: nm.c:295 -msgid "List symbols from FILEs (a.out by default).\n" -msgstr "¥Õ¥¡¥¤¥ë(¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï a.out)¤«¤é¥·¥ó¥Ü¥ë¤ò¥ê¥¹¥Èɽ¼¨¤·¤Þ¤¹¡£\n" - -#: nm.c:296 -msgid "" -"\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" -" -h, --help Display this information\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-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" -" -V, --version Display this program's version number\n" -" -X 32_64 (ignored)\n" -"\n" -msgstr "" -"\n" -" -a, --debug-syms ¥Ç¥Ð¥Ã¥°ÀìÍÑ¥·¥ó¥Ü¥ë¤òɽ¼¨¤¹¤ë\n" -" -A, --print-file-name ³Æ¥·¥ó¥Ü¥ë¤ÎÁ°¤ËÆþÎÏ¥Õ¥¡¥¤¥ë̾¤òɽ¼¨¤¹¤ë\n" -" -B --format=bsd ¤ÈƱ¤¸\n" -" -C, --demangle[=STYLE] Äã°Ì¥·¥ó¥Ü¥ë̾¤ò¥æ¡¼¥¶¥ì¥Ù¥ë̾¤ËÉü¸µ¤¹¤ë\n" -" STYLE ¤Ë°Ê²¼¤Î¤â¤Î¤ò»ØÄê¤Ç¤­¤ë -- `auto'(default),\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" -" -h, --help ¤³¤Î¾ðÊó¤òɽ¼¨¤¹¤ë\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" -" -s, --print-armap ½ñ¸Ë¥á¥ó¥Ð¤«¤é¤Î¥·¥ó¥Ü¥ëÍѤκ÷°ú¤ò´Þ¤á¤ë\n" -" --size-sort ¥µ¥¤¥º¤Ë¤è¤Ã¤Æ¥½¡¼¥È¤¹¤ë\n" -" -t, --radix=RADIX ¥·¥ó¥Ü¥ëÃͤÎɽ¼¨´ð¿ô¤Ë RADIX ¤ò»È¤¦\n" -" --target=BFDNAME ¥¿¡¼¥²¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È·Á¼°¤ò BFDNAME ¤È¤·¤Æ»ØÄꤹ¤ë\n" -" -u, --undefined-only ̤ÄêµÁ¥·¥ó¥Ü¥ë¤Î¤ß¤òɽ¼¨¤¹¤ë\n" -" -V, --version ¤³¤Î¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë\n" -" -X 32_64 (̵»ë¤µ¤ì¤ë)\n" -"\n" - -#: nm.c:328 objdump.c:274 -#, c-format -msgid "Report bugs to %s.\n" -msgstr "¥Ð¥°Êó¹ð¤Ï %s ¤Þ¤Ç¡£\n" - -#: nm.c:361 -#, c-format -msgid "%s: invalid radix" -msgstr "%s: ´ð¿ô¤¬ÉÔŬÀڤǤ¹" - -#: nm.c:386 -#, c-format -msgid "%s: invalid output format" -msgstr "%s: ½ÐÎÏ·Á¼°¤¬ÉÔŬÀڤǤ¹" - -#: nm.c:493 -msgid "Only -X 32_64 is supported" -msgstr "-X 32_64 ¤·¤«¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" - -#: nm.c:535 -#, c-format -msgid "data size %ld" -msgstr "¥Ç¡¼¥¿¥µ¥¤¥º %ld" - -#: nm.c:1325 -#, c-format -msgid "\n\nUndefined symbols from %s:\n\n" -msgstr "\n\n%s ¤«¤é¤Î̤ÄêµÁ¥·¥ó¥Ü¥ë:\n\n" - -#: nm.c:1327 -#, c-format -msgid "\n\nSymbols from %s:\n\n" -msgstr "\n\n%s ¤«¤é¤Î¥·¥ó¥Ü¥ë:\n\n" - -#: nm.c:1328 nm.c:1382 -msgid "Name Value Class Type Size Line Section\n\n" -msgstr "̾Á° ÃÍ ¥¯¥é¥¹ ·¿ ¥µ¥¤¥º ¹Ô ¥»¥¯¥·¥ç¥ó\n\n" - -#: nm.c:1379 -#, c-format -msgid "\n\nUndefined symbols from %s[%s]:\n\n" -msgstr "\n\n%s[%s] ¤«¤é¤Î̤ÄêµÁ¥·¥ó¥Ü¥ë:\n\n" - -#: nm.c:1381 -#, c-format -msgid "\n\nSymbols from %s[%s]:\n\n" -msgstr "\n\n%s[%s] ¤«¤é¤Î¥·¥ó¥Ü¥ë:\n\n" - -#: nm.c:1552 -msgid "\nArchive index:\n" -msgstr "\n½ñ¸Ë¥¤¥ó¥Ç¥Ã¥¯¥¹:\n" - -#: objcopy.c:322 -#, c-format -msgid "Usage: %s in-file [out-file]\n" -msgstr "»È¤¤Êý: %s <¥¹¥¤¥Ã¥Á> ÆþÎÏ¥Õ¥¡¥¤¥ë [½ÐÎÏ¥Õ¥¡¥¤¥ë]\n" - -#: objcopy.c:323 objcopy.c:383 -msgid " The switches are:\n" -msgstr " ¥¹¥¤¥Ã¥Á¤Ï°Ê²¼¤ÎÄ̤ê:\n" - -#: objcopy.c:324 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in 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 = Redefine symbol name to \n" -" --srec-len 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 ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò ·Á¼°¤ò¤È¤ß¤Ê¤¹\n" -" -O --output-target ½ÐÎÏ·Á¼°¤ò ¤È¤·¤ÆºîÀ®¤¹¤ë\n" -" -F --target ÆþÎÏ¡¦½ÐÎÏξÊý¤Ë ·Á¼°¤ò»ÈÍѤ¹¤ë\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 {=|+|-}\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" -" --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" - -#: objcopy.c:382 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "»È¤¤Êý: %s <¥¹¥¤¥Ã¥Á> ÆþÎÏ¥Õ¥¡¥¤¥ë...\n" - -#: objcopy.c:384 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -F --target Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section Remove section from the output\n" -" -s --strip-all Remove all symbol and relocation information\n" -" -g -S --strip-debug Remove all debugging symbols\n" -" --strip-unneeded Remove all symbols not needed by relocations\n" -" -N --strip-symbol Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò ·Á¼°¤È¤ß¤Ê¤¹\n" -" -O --output-target ½ÐÎϤò ·Á¼°¤ÇºîÀ®¤¹¤ë\n" -" -F --target ÆþÎÏ¡¦½ÐÎÏξÊý¤Ë ·Á¼°¤ò»ÈÍѤ¹¤ë\n" -" -p --preserve-dates ½¤Àµ/¥¢¥¯¥»¥¹»þ¹ï¾ðÊó¤ò½ÐÎϤ˥³¥Ô¡¼¤¹¤ë\n" -" -R --remove-section <̾Á°> <̾Á°> ¤Î¥»¥¯¥·¥ç¥ó¤ò½ÐÎϤ«¤é¼è¤ê½ü¤¯\n" -" -s --strip-all Á´¤Æ¤Î¥·¥ó¥Ü¥ëµÚ¤ÓºÆÇÛÃÖ¾ðÊó¤ò¼è¤ê½ü¤¯\n" -" -g -S --strip-debug Á´¤Æ¤Î¥Ç¥Ð¥Ã¥°¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" -" --strip-unneeded ºÆÇÛÃÖ¤ËɬÍפʥ·¥ó¥Ü¥ë°Ê³°¤òÁ´¤Æ¼è¤ê½ü¤¯ \n" -" -N --strip-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤ò¥³¥Ô¡¼¤·¤Ê¤¤\n" -" -K --keep-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤ò¥³¥Ô¡¼¤¹¤ë\n" -" -x --discard-all Á´¤Æ¤ÎÈóÂç°è¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" -" -X --discard-locals ¤¢¤ë¼ï¤Î¥³¥ó¥Ñ¥¤¥éÀ¸À®¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" -" -v --verbose ½¤Àµ¤µ¤ì¤¿Á´¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È\n" -" -V --version ¤³¤Î¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n" -" -h --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" -" -o <¥Õ¥¡¥¤¥ë> strip ºÑ½ÐÎϤò <¥Õ¥¡¥¤¥ë> ¤Ë½ñ¤­¹þ¤à\n" - -#: objcopy.c:454 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "¥»¥¯¥·¥ç¥ó¥Õ¥é¥° `%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" - -#: objcopy.c:455 -#, c-format -msgid "supported flags: %s" -msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥Õ¥é¥°: %s" - -#: objcopy.c:712 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: ¥·¥ó¥Ü¥ë \"%s\" ¤ÎºÆÄêµÁ¤Ç¤¹" - -#: objcopy.c:719 -#, c-format -msgid "%s: Symbol \"%s\" is target of more than one redefinition" -msgstr "%s: ¥·¥ó¥Ü¥ë \"%s\" ²¿ÅÙ¤«ºÆÄêµÁ¤µ¤ì¤¿¥¿¡¼¥²¥Ã¥È¤Ç¤¹" - -#: objcopy.c:773 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "%s(%s) ¤«¤é %s(%s) ¤Ø¥³¥Ô¡¼¤·¤Þ¤¹\n" - -#: objcopy.c:792 -#, c-format -msgid "Warning: Output file cannot represent architecture %s" -msgstr "·Ù¹ð: ½ÐÎÏ¥Õ¥¡¥¤¥ë¤¬¥¢¡¼¥­¥Æ¥¯¥Á¥ã %s ¤ËÂбþ¤·¤Æ¤¤¤Þ¤»¤ó" - -#: objcopy.c:819 -#, c-format -msgid "can't create section `%s': %s" -msgstr "¥»¥¯¥·¥ç¥ó `%s' ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" - -#: objcopy.c:905 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "%s °Ê¹ß¤Î·ä´Ö¤òËä¤á¤é¤ì¤Þ¤»¤ó: %s" - -#: objcopy.c:930 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "%s ¤Ë¥Ñ¥Ç¥£¥ó¥°¤Ç¤­¤Þ¤»¤ó: %s" - -#: objcopy.c:1068 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: ¥×¥é¥¤¥Ù¡¼¥È BFD ¥Ç¡¼¥¿¥³¥Ô¡¼Ãæ¤Î¥¨¥é¡¼: %s" - -#: objcopy.c:1102 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "½ñ¸Ë¥³¥Ô¡¼¤Î°Ù¤Î mkdir %s ¤¬¤Ç¤­¤Þ¤»¤ó (¥¨¥é¡¼: %s)" - -#: objcopy.c:1291 -msgid "making" -msgstr "ºîÀ®Ãæ" - -#: objcopy.c:1300 -msgid "size" -msgstr "¥µ¥¤¥º" - -#: objcopy.c:1314 -msgid "vma" -msgstr "vma " - -#: objcopy.c:1340 -msgid "alignment" -msgstr "¥¢¥é¥¤¥ó¥á¥ó¥È" - -#: objcopy.c:1349 -msgid "flags" -msgstr "¥Õ¥é¥°" - -#: objcopy.c:1363 -msgid "private data" -msgstr "¥×¥é¥¤¥Ù¡¼¥È¥Ç¡¼¥¿" - -#: objcopy.c:1371 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: ¥»¥¯¥·¥ç¥ó `%s': %s¤Î¥¨¥é¡¼: %s" - -#: objcopy.c:1645 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: ¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" - -#: objcopy.c:1660 -#, c-format -msgid "%s: can't set debugging section contents: %s" -msgstr "%s: ¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤòÀßÄê¤Ç¤­¤Þ¤»¤ó: %s" - -#: objcopy.c:1669 -#, c-format -msgid "%s: don't know how to write debugging information for %s" -msgstr "%s: %s ÍѥǥХå°¾ðÊó¤Î½ñ¤­Êý¤¬²ò¤ê¤Þ¤»¤ó" - -#: objcopy.c:1775 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: stat(2) ¤¬¤Ç¤­¤Þ¤»¤ó: %s" - -#: objcopy.c:1825 -msgid "byte number must be non-negative" -msgstr "¥Ð¥¤¥È¿ô¤ÏÈóÉé¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" - -#: objcopy.c:1831 -msgid "interleave must be positive" -msgstr "interleave ¤ÏÀµ¤Î¿ôÃͤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" - -#: objcopy.c:1851 objcopy.c:1859 -#, c-format -msgid "%s both copied and removed" -msgstr "%s ¥³¥Ô¡¼¤Èºï½ü¤ÎξÊý¤¬»ØÄꤵ¤ì¤Þ¤·¤¿" - -#: objcopy.c:1928 objcopy.c:1998 objcopy.c:2099 objcopy.c:2127 -#, c-format -msgid "bad format for %s" -msgstr "%s ÍѤȤ·¤Æ¤ÏÉÔÀµ¤Ê·Á¼°¤Ç¤¹" - -#: objcopy.c:1931 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "stat(2) ¤Ç¤­¤Þ¤»¤ó: %s: %s" - -#: objcopy.c:1949 -#, c-format -msgid "cannot open: %s: %s" -msgstr "open ¤Ç¤­¤Þ¤»¤ó: %s: %s" - -#: objcopy.c:1953 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread(3) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" - -#: objcopy.c:2067 -#, c-format -msgid "Warning: truncating gap-fill from 0x%s to 0x%x" -msgstr "·Ù¹ð: 0x%s ¤«¤é 0x%x ¤Þ¤Ç¤Î·ä´Ö¤ÎËä¤á¹þ¤ß¤òÀÚ¤êµÍ¤á¤Þ¤¹" - -#: objcopy.c:2169 -msgid "byte number must be less than interleave" -msgstr "¥Ð¥¤¥È¿ô¤Ï interleave ̤Ëþ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" - -#: objcopy.c:2188 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "stat(2) ¤Ç¤­¤Þ¤»¤ó: %s: %s" - -#: objcopy.c:2228 objcopy.c:2242 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s %s%c0x%s ¤Ï»È¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó" - -#: objdump.c:223 -#, c-format -msgid "Usage: %s OPTION... FILE...\n" -msgstr "»È¤¤Êý: %s ¥ª¥×¥·¥ç¥ó... ¥Õ¥¡¥¤¥ë...\n" - -#: objdump.c:224 -msgid "Display information from object FILE.\n" -msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤«¤é¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¡£\n" - -#: objdump.c:225 -msgid "\n At least one of the following switches must be given:\n" -msgstr "\n °Ê²¼¤Î¥¹¥¤¥Ã¥Á¤«¤é¾¯¤Ê¤¯¤È¤â°ì¤Ä¤Ï»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó:\n" - -#: objdump.c:226 -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 executable ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò¥¢¥»¥ó¥Ö¥ê·Á¼°É½¼¨\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:248 -msgid "\n The following switches are optional:\n" -msgstr "\n °Ê²¼¤Î¥¹¥¤¥Ã¥Á¤Ï¥ª¥×¥·¥ç¥ó¤Ç¤¹:\n" - -#: objdump.c:249 -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] ÊÑ·Á/½èÍý¤µ¤ì¤¿¥·¥ó¥Ü¥ë̾¤òÉü¸µ(demangle)¤¹¤ë\n" -" STYLE ¤ò»ØÄꤹ¤ë¾ì¹ç `auto', 'gnu', 'lucid',\n" -" 'arm', 'hp', 'edg', or '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 µÕ¥¢¥»¥ó¥Ö¥ëÌ¿Îá̾¤Î¦¤Ë 16 ¿Ê¿ô¥³¡¼¥É¤âɽ¼¨\n" -" --adjust-vma=OFFSET Á´¤Æ¤Î¥»¥¯¥·¥ç¥ó¥¢¥É¥ì¥¹¤Ë OFFSET ¤ò²Ã»»¤¹¤ë\n" -"\n" - -#: objdump.c:419 -msgid "Sections:\n" -msgstr "¥»¥¯¥·¥ç¥ó:\n" - -#: objdump.c:422 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "º÷°ú̾ ¥µ¥¤¥º VMA LMA File off Algn" - -#: objdump.c:424 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "º÷°ú̾ ¥µ¥¤¥º VMA LMA File off Algn" - -#: objdump.c:428 -msgid " Flags" -msgstr " ¥Õ¥é¥°" - -#: objdump.c:478 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: ưŪ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" - -#: objdump.c:494 -#, c-format -msgid "%s: No dynamic symbols" -msgstr "%s: ưŪ¥·¥ó¥Ü¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" - -#: objdump.c:1197 -msgid "Out of virtual memory" -msgstr "²¾ÁÛ¥á¥â¥ê¤¬Â­¤ê¤Þ¤»¤ó" - -#: objdump.c:1616 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "Í¿¤¨¤é¤ì¤¿¥Þ¥·¥ó %s ¤ò»È¤¨¤Þ¤»¤ó" - -#: objdump.c:1634 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "%s ¥¢¡¼¥­¥Æ¥¯¥Á¥ãÍѤˤϵե¢¥»¥ó¥Ö¥ë¤Ç¤­¤Þ¤»¤ó\n" - -#: objdump.c:1716 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎµÕ¥¢¥»¥ó¥Ö¥ë:\n" - -#: objdump.c:1890 -#, c-format -msgid "No %s section present\n\n" -msgstr "%s ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó\n\n" - -#: objdump.c:1897 -#, c-format -msgid "%s has no %s section" -msgstr "%s ¤Ë¤Ï %s ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" - -#: objdump.c:1911 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "%s ¥»¥¯¥·¥ç¥ó (%s) Æɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s" - -#: objdump.c:1923 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "%s ¥»¥¯¥·¥ç¥ó (%s) Æɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n" - -#: objdump.c:1966 -#, c-format -msgid "Contents of %s section:\n\n" -msgstr "%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍÆ:\n\n" - -#: objdump.c:2066 -#, c-format -msgid "architecture: %s, " -msgstr "¥¢¡¼¥­¥Æ¥¯¥Á¥ã: %s, " - -#: objdump.c:2069 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "¥Õ¥é¥° 0x%08x:\n" - -#: objdump.c:2082 -msgid "\nstart address 0x" -msgstr "\n³«»Ï¥¢¥É¥ì¥¹ 0x" - -#: objdump.c:2114 -#, c-format -msgid "\n%s: file format %s\n" -msgstr "\n%s: ¥Õ¥¡¥¤¥ë·Á¼° %s\n" - -#: objdump.c:2156 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: ¥Ç¥Ð¥Ã¥°¾ðÊó¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿" - -#: objdump.c:2233 -#, c-format -msgid "In archive %s:\n" -msgstr "½ñ¸Ë %s Æâ:\n" - -#: objdump.c:2285 -#, c-format -msgid "Contents of section %s:\n" -msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎÆâÍÆ:\n" - -#: objdump.c:2798 -#, c-format -msgid "BFD header file version %s\n" -msgstr "BFD ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¥Ð¡¼¥¸¥ç¥ó %s\n" - -#: objdump.c:2882 -msgid "unrecognized -E option" -msgstr "-E ¤Î¥ª¥×¥·¥ç¥ó¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" - -#: objdump.c:2893 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "--endian ¥¿¥¤¥× `%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" - -#: rdcoff.c:205 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "parse_coff_type: ÉÔÀµ¤Ê¥¿¥¤¥×¥³¡¼¥É 0x%x" - -#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:730 -#, c-format -msgid "bfd_coff_get_syment failed: %s" -msgstr "bfd_coff_get_syment ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" - -#: rdcoff.c:439 rdcoff.c:750 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" - -#: rdcoff.c:817 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: Á°Êý¤Ë´Ø¿ô¤¬¤Ê¤¤ .bf ¤¬¤¢¤ê¤Þ¤¹" - -#: rdcoff.c:867 -#, 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 "¥¨¥é¡¼¤ÎľÁ°¤Î¥¹¥¿¥Ö¥¨¥ó¥È¥ê:\n" - -#: readelf.c:260 -#, c-format -msgid "Unable to seek to start of %s at %x\n" -msgstr "%s ¤Î»ÏÅÀ¤Ø seek ¤Ç¤­¤Þ¤»¤ó(%x)\n" - -#: readelf.c:268 -#, c-format -msgid "Out of memory allocating %d bytes for %s\n" -msgstr "%d ¥Ð¥¤¥È¤Î¥á¥â¥ê³ÎÊݤ¬¤Ç¤­¤Þ¤»¤ó (%s)\n" - -#: readelf.c:274 -#, c-format -msgid "Unable to read in %d bytes of %s\n" -msgstr "%d ¥Ð¥¤¥È¤ÎÆɹþ¤ß¤Ë¼ºÇÔ (%s)\n" - -#: readelf.c:284 -#, c-format -msgid "Unable to seek to %x for %s\n" -msgstr "%x ¤Ø seek ¤Ç¤­¤Þ¤»¤ó (%s)\n" - -#: readelf.c:289 -#, c-format -msgid "Unable to read data at %x for %s\n" -msgstr "%x ¤Ç¤Î¥Ç¡¼¥¿¤è¸«¹þ¤ß¤¬¤Ç¤­¤Þ¤»¤ó (%s)\n" - -#: readelf.c:304 readelf.c:330 -#, c-format -msgid "%s: Error: " -msgstr "%s: ¥¨¥é¡¼: " - -#: readelf.c:316 readelf.c:345 -#, c-format -msgid "%s: Warning: " -msgstr "%s: ·Ù¹ð: " - -#: readelf.c:395 readelf.c:533 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "¼è¤ê°·¤ï¤ì¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿Ä¹: %d\n" - -#: readelf.c:597 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "¤³¤Î¥Þ¥·¥ó¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤ÎºÆÇÛÃ֤ˤĤ¤¤Æ²ò¤Ã¤Æ¤¤¤Þ¤»¤ó\n" - -#: readelf.c:637 readelf.c:666 readelf.c:698 readelf.c:726 -msgid "out of memory parsing relocs" -msgstr "ºÆÇÛÃ֥ǡ¼¥¿²òÀÏÃæ¤Ë¥á¥â¥êÉÔ­¤Ë´Ù¤ê¤Þ¤·¤¿" - -#: readelf.c:744 -msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" -msgstr " Offset ¾ðÊó ¥¿¥¤¥× ¥·¥ó¥Ü¥ë¤ÎÃÍ ¥·¥ó¥Ü¥ë̾ Addend\n" - -#: readelf.c:747 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Offset ¾ðÊó ¥¿¥¤¥× ¥·¥ó¥Ü¥ë¤ÎÃÍ ¥·¥ó¥Ü¥ë̾\n" - -#: readelf.c:907 readelf.c:909 -#, c-format -msgid "unrecognised: %-7lx" -msgstr "ǧ¼±¤Ç¤­¤Þ¤»¤ó: %-7lx" - -#: readelf.c:934 -#, c-format -msgid "" -msgstr "<ʸ»úÎó¥Æ¡¼¥Ö¥ë¤Îº÷°ú %3ld>" - -#: readelf.c:1147 -#, c-format -msgid "Processor Specific: %lx" -msgstr "¥×¥í¥»¥Ã¥µ¸ÇÍ­: %lx" - -#: readelf.c:1166 -#, c-format -msgid "Operating System specific: %lx" -msgstr "¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¸ÇÍ­: %lx" - -#: readelf.c:1169 readelf.c:1677 -#, c-format -msgid ": %lx" -msgstr "<ÉÔÌÀ>: %lx" - -#: readelf.c:1183 -msgid "NONE (None)" -msgstr "NONE (̵¤·)" - -#: readelf.c:1184 -msgid "REL (Relocatable file)" -msgstr "REL (ºÆÇÛÃÖ²Äǽ¥Õ¥¡¥¤¥ë)" - -#: readelf.c:1185 -msgid "EXEC (Executable file)" -msgstr "EXEC (¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë)" - -#: readelf.c:1186 -msgid "DYN (Shared object file)" -msgstr "DYN (¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë)" - -#: readelf.c:1187 -msgid "CORE (Core file)" -msgstr "CORE (¥³¥¢¥Õ¥¡¥¤¥ë)" - -#: readelf.c:1191 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "¥×¥í¥»¥Ã¥µ¸ÇÍ­: (%x)" - -#: readelf.c:1193 -#, c-format -msgid "OS Specific: (%x)" -msgstr "OS ¸ÇÍ­: (%x)" - -#: readelf.c:1195 readelf.c:1281 readelf.c:1811 -#, c-format -msgid ": %x" -msgstr "<ÉÔÌÀ>: %x" - -#: readelf.c:1208 -msgid "None" -msgstr "¤Ê¤·" - -#: readelf.c:1849 -msgid "Usage: readelf {options} elf-file(s)\n" -msgstr "»È¤¤Êý: readelf {¥ª¥×¥·¥ç¥ó} elf¥Õ¥¡¥¤¥ë\n" - -#: readelf.c:1850 -msgid " Options are:\n" -msgstr " ¥ª¥×¥·¥ç¥ó:\n" - -#: readelf.c:1851 -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" - -#: readelf.c:1852 -msgid " -h or --file-header Display the ELF file header\n" -msgstr " -h Ëô¤Ï --file-header ELF ¥Õ¥¡¥¤¥ë¥Ø¥Ã¥À¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1853 -msgid " -l or --program-headers or --segments\n" -msgstr " -l Ëô¤Ï --program-headers Ëô¤Ï --segments\n" - -#: readelf.c:1854 -msgid " Display the program headers\n" -msgstr " ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1855 -msgid " -S or --section-headers or --sections\n" -msgstr " -S Ëô¤Ï --section-headers Ëô¤Ï --sections\n" - -#: readelf.c:1856 -msgid " Display the sections' header\n" -msgstr " ¥»¥¯¥·¥ç¥ó¤Î¥Ø¥Ã¥À¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1857 -msgid " -e or --headers Equivalent to: -h -l -S\n" -msgstr " -e Ëô¤Ï --headers -h -l -S ¤ÈƱ¤¸\n" - -#: readelf.c:1858 -msgid " -s or --syms or --symbols Display the symbol table\n" -msgstr " -s Ëô¤Ï --syms Ëô¤Ï --symbols ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1859 -msgid " -n or --notes Display the core notes (if present)\n" -msgstr " -n Ëô¤Ï --notes ¥³¥¢ note ¥»¥°¥á¥ó¥È¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" - -#: readelf.c:1860 -msgid " -r or --relocs Display the relocations (if present)\n" -msgstr " -r Ëô¤Ï --relocs ºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" - -#: readelf.c:1861 -msgid " -d or --dynamic Display the dynamic segment (if present)\n" -msgstr " -d Ëô¤Ï --dynamic ưŪ¥»¥°¥á¥ó¥È¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" - -#: readelf.c:1862 -msgid " -V or --version-info Display the version sections (if present)\n" -msgstr " -V Ëô¤Ï --version-info ¥Ð¡¼¥¸¥ç¥ó¥»¥¯¥·¥ç¥ó¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" - -#: readelf.c:1863 -msgid " -A or --arch-specific Display architecture specific information (if any).\n" -msgstr " -A Ëô¤Ï --arch-specific ¥¢¡¼¥­¥Æ¥¯¥Á¥ã¸ÇÍ­¾ðÊ󤬤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" - -#: readelf.c:1864 -msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" -msgstr " -D Ëô¤Ï --use-dynamic ¥·¥ó¥Ü¥ëɽ¼¨¤ËưŪ¥»¥¯¥·¥ç¥ó¾ðÊó¤ò»ÈÍѤ¹¤ë\n" - -#: readelf.c:1865 -msgid " -x or --hex-dump=\n" -msgstr " -x <ÈÖ¹æ> Ëô¤Ï --hex-dump=<ÈÖ¹æ>\n" - -#: readelf.c:1866 -msgid " Dump the contents of section \n" -msgstr " ¥»¥¯¥·¥ç¥ó <ÈÖ¹æ> ¤ÎÆâÍƤò¥À¥ó¥×¤¹¤ë\n" - -#: readelf.c:1867 -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" - -#: readelf.c:1868 -msgid " Display the contents of DWARF2 debug sections\n" -msgstr " DWARF2 ¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" - -#: readelf.c:1870 -msgid " -i or --instruction-dump=\n" -msgstr " -i <ÈÖ¹æ> or --instruction-dump=<ÈÖ¹æ>\n" - -#: readelf.c:1871 -msgid " Disassemble the contents of section \n" -msgstr " ¥»¥¯¥·¥ç¥ó <ÈÖ¹æ> ¤ÎÆâÍƤòµÕ¥¢¥»¥ó¥Ö¥ë¤¹¤ë\n" - -#: readelf.c:1873 -msgid " -I or --histogram Display histogram of bucket list lengths\n" -msgstr " -I Ëô¤Ï --histogram ¥Ð¥±¥Ã¥È¥ê¥¹¥ÈŤÎÅÙ¿ôʬÉÛ¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1874 -msgid " -v or --version Display the version number of readelf\n" -msgstr " -v Ëô¤Ï --version readelf ¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1875 -msgid " -H or --help Display this information\n" -msgstr " -H Ëô¤Ï --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" - -#: readelf.c:1893 -msgid "Out of memory allocating dump request table." -msgstr "Í׵ᤵ¤ì¤¿¥Æ¡¼¥Ö¥ë¤Î¥À¥ó¥×Ãæ¤Ë¥á¥â¥ê³ÎÊݤ¬¼ºÇÔ¤·¤Þ¤·¤¿¡£" - -#: readelf.c:2033 -#, c-format -msgid "Unrecognised debug option '%s'\n" -msgstr "¥Ç¥Ð¥Ã¥°¥ª¥×¥·¥ç¥ó '%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n" - -#: readelf.c:2058 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "¥ª¥×¥·¥ç¥ó '-%c' ¤¬ÉÔŬÀڤǤ¹\n" - -#: readelf.c:2071 -msgid "Nothing to do.\n" -msgstr "¹Ô¤Ê¤¦¤Ù¤­»ö¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:2084 readelf.c:2101 readelf.c:3740 -msgid "none" -msgstr "¤Ê¤·" - -#: readelf.c:2085 -msgid "ELF32" -msgstr "ELF32" - -#: readelf.c:2086 -msgid "ELF64" -msgstr "ELF64" - -#: readelf.c:2088 readelf.c:2105 readelf.c:2133 -#, c-format -msgid "" -msgstr "<ÉÔÌÀ: %x>" - -#: readelf.c:2102 -msgid "2's complement, little endian" -msgstr "2 ¤ÎÊä¿ô¡¢¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó" - -#: readelf.c:2103 -msgid "2's complement, big endian" -msgstr "2 ¤ÎÊä¿ô¡¢¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó" - -#: readelf.c:2118 -msgid "UNIX - System V" -msgstr "UNIX - System V" - -#: readelf.c:2119 -msgid "UNIX - HP-UX" -msgstr "UNIX - HP-UX" - -#: readelf.c:2120 -msgid "UNIX - NetBSD" -msgstr "UNIX - NetBSD" - -#: readelf.c:2121 -msgid "UNIX - Linux" -msgstr "UNIX - Linux" - -#: readelf.c:2122 -msgid "GNU/Hurd" -msgstr "GNU/Hurd" - -#: readelf.c:2123 -msgid "UNIX - Solaris" -msgstr "UNIX - Solaris" - -#: readelf.c:2124 -msgid "UNIX - AIX" -msgstr "UNIX - AIX" - -#: readelf.c:2125 -msgid "UNIX - IRIX" -msgstr "UNIX - IRIX" - -#: readelf.c:2126 -msgid "UNIX - FreeBSD" -msgstr "UNIX - FreeBSD" - -#: readelf.c:2127 -msgid "UNIX - TRU64" -msgstr "UNIX - TRU64" - -#: readelf.c:2128 -msgid "Novell - Modesto" -msgstr "Novell - Modesto" - -#: readelf.c:2129 -msgid "UNIX - OpenBSD" -msgstr "UNIX - OpenBSD" - -#: readelf.c:2130 -msgid "Standalone App" -msgstr "Standalone App" - -#: readelf.c:2131 -msgid "ARM" -msgstr "ARM" - -#: readelf.c:2148 -msgid "Not an ELF file - it has the wrong magic bytes at the start\n" -msgstr "ELF ¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó - »ÏÅÀ¤Ë¤¢¤ë¥Þ¥¸¥Ã¥¯Èֹ椬°Û¤Ê¤ê¤Þ¤¹\n" - -#: readelf.c:2156 -msgid "ELF Header:\n" -msgstr "ELF ¥Ø¥Ã¥À:\n" - -#: readelf.c:2157 -msgid " Magic: " -msgstr " ¥Þ¥¸¥Ã¥¯: " - -#: readelf.c:2161 -#, c-format -msgid " Class: %s\n" -msgstr " ¥¯¥é¥¹: %s\n" - -#: readelf.c:2163 -#, c-format -msgid " Data: %s\n" -msgstr " ¥Ç¡¼¥¿: %s\n" - -#: readelf.c:2165 -#, c-format -msgid " Version: %d %s\n" -msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d %s\n" - -#: readelf.c:2172 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -#: readelf.c:2174 -#, c-format -msgid " ABI Version: %d\n" -msgstr " ABI ¥Ð¡¼¥¸¥ç¥ó: %d\n" - -#: readelf.c:2176 -#, c-format -msgid " Type: %s\n" -msgstr " ¥¿¥¤¥×: %s\n" - -#: readelf.c:2178 -#, c-format -msgid " Machine: %s\n" -msgstr " ¥Þ¥·¥ó: %s\n" - -#: readelf.c:2180 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " ¥Ð¡¼¥¸¥ç¥ó: 0x%lx\n" - -#: readelf.c:2183 -msgid " Entry point address: " -msgstr " ¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¥¢¥É¥ì¥¹: " - -#: readelf.c:2185 -msgid "\n Start of program headers: " -msgstr "\n ¥×¥í¥°¥é¥à¤Î³«»Ï¥Ø¥Ã¥À: " - -#: readelf.c:2187 -msgid "" -" (bytes into file)\n" -" Start of section headers: " -msgstr "" -" (¥Ð¥¤¥È)\n" -" ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À»ÏÅÀ: " - -#: readelf.c:2189 -msgid " (bytes into file)\n" -msgstr " (¥Ð¥¤¥È)\n" - -#: readelf.c:2191 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " ¥Õ¥é¥°: 0x%lx%s\n" - -#: readelf.c:2194 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " ¤³¤Î¥Ø¥Ã¥À¤Î¥µ¥¤¥º: %ld (¥Ð¥¤¥È)\n" - -#: readelf.c:2196 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¥µ¥¤¥º: %ld (¥Ð¥¤¥È)\n" - -#: readelf.c:2198 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¿ô: %ld\n" - -#: readelf.c:2200 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À: %ld (¥Ð¥¤¥È)\n" - -#: readelf.c:2202 -#, c-format -msgid " Number of section headers: %ld\n" -msgstr " ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À¥µ¥¤¥º: %ld\n" - -#: readelf.c:2204 -#, c-format -msgid " Section header string table index: %ld\n" -msgstr " ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥Àʸ»úÎó¥Æ¡¼¥Ö¥ëº÷°ú:%ld\n" - -#: readelf.c:2289 -msgid "\nThere are no program headers in this file.\n" -msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:2295 -#, c-format -msgid "\nElf file type is %s\n" -msgstr "\nElf ¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ï %s ¤Ç¤¹\n" - -#: readelf.c:2296 -msgid "Entry point " -msgstr "¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È " - -#: readelf.c:2298 -#, c-format -msgid "\nThere are %d program headers, starting at offset " -msgstr "\n%d ¸Ä¤Î¥×¥í¥°¥é¥à¥Ø¥Ã¥À¡¢»ÏÅÀ¥ª¥Õ¥»¥Ã¥È " - -#: readelf.c:2309 readelf.c:2485 readelf.c:2527 readelf.c:2570 readelf.c:2611 -#: readelf.c:3133 readelf.c:3174 readelf.c:3350 readelf.c:4358 readelf.c:4372 -#: readelf.c:7741 readelf.c:7781 -msgid "Out of memory\n" -msgstr "¥á¥â¥ê¤¬Â­¤ê¤Þ¤»¤ó\n" - -#: readelf.c:2327 -#, c-format -msgid "\nProgram Header%s:\n" -msgstr "\n¥×¥í¥°¥é¥à¥Ø¥Ã¥À%.0s:\n" - -#: readelf.c:2331 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " ¥¿¥¤¥× ¥ª¥Õ¥»¥Ã¥È ²¾ÁÛAddr ʪÍýAddr FileSiz MemSiz Flg Align\n" - -#: readelf.c:2335 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " ¥¿¥¤¥× ¥ª¥Õ¥»¥Ã¥È ²¾ÁÛAddr ʪÍýAddr\n" - -#: readelf.c:2337 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " ¥Õ¥¡¥¤¥ë¥µ¥¤¥º ¥á¥â¥ê¥µ¥¤¥º ¥Õ¥é¥° ¥¢¥é¥¤¥ó\n" - -#: readelf.c:2395 -msgid "more than one dynamic segment\n" -msgstr "Ê£¿ô¤ÎưŪ¥»¥°¥á¥ó¥È\n" - -#: readelf.c:2403 -msgid "Unable to find program interpreter name\n" -msgstr "¥×¥í¥°¥é¥à¥¤¥ó¥¿¥×¥ê¥¿Ì¾¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó\n" - -#: readelf.c:2410 -#, c-format -msgid "\n [Requesting program interpreter: %s]" -msgstr "\n [Í׵ᤵ¤ì¤ë¥×¥í¥°¥é¥à¥¤¥ó¥¿¥×¥ê¥¿: %s]" - -#: readelf.c:2428 -msgid "\n Section to Segment mapping:\n" -msgstr "\n ¥»¥°¥á¥ó¥È¥Þ¥Ã¥Ô¥ó¥°¤Ø¤Î¥»¥¯¥·¥ç¥ó:\n" - -#: readelf.c:2429 -msgid " Segment Sections...\n" -msgstr " ¥»¥°¥á¥ó¥È¥»¥¯¥·¥ç¥ó...\n" - -#: readelf.c:2693 -msgid "\nThere are no sections in this file.\n" -msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:2699 -#, c-format -msgid "There are %d section headers, starting at offset 0x%lx:\n" -msgstr "%d ¸Ä¤Î¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À¡¢»ÏÅÀ¥ª¥Õ¥»¥Ã¥È 0x%lx:\n" - -#: readelf.c:2739 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "¥Õ¥¡¥¤¥ë¤¬Ê£¿ô¤ÎưŪ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹\n" - -#: readelf.c:2752 -msgid "File contains multiple dynamic string tables\n" -msgstr "¥Õ¥¡¥¤¥ë¤¬Ê£¿ô¤ÎưŪʸ»úÎó¥Æ¡¼¥Ö¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹\n" - -#: readelf.c:2786 -#, c-format -msgid "\nSection Header%s:\n" -msgstr "\n¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À%.0s:\n" - -#: readelf.c:2790 -msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" -msgstr " [ÈÖ] ̾Á° ¥¿¥¤¥× ¥¢¥É¥ì¥¹ Off ¥µ¥¤¥º ES Flg Lk Inf Al\n" - -#: readelf.c:2793 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [ÈÖ] ̾Á° ¥¿¥¤¥× ¥¢¥É¥ì¥¹ Offset\n" - -#: readelf.c:2794 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " ¥µ¥¤¥º EntSize ¥Õ¥é¥° Link Info Align\n" - -#: readelf.c:2841 -msgid "Key to Flags:\n" -msgstr "¥Õ¥é¥°¤Î¥­¡¼:\n" - -#: readelf.c:2842 -msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" -msgstr " W (write), A (alloc), X (execute), M (merge), S (strings)\n" - -#: readelf.c:2843 -msgid " I (info), L (link order), G (group), x (unknown)\n" -msgstr " I (info), L (link order), G (group), x (ÉÔÌÀ)\n" - -#: readelf.c:2844 -msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" -msgstr " O (OS ¤ÎÆüì½èÍý¤ËɬÍ×) o (OS ¸ÇÍ­), p (processor ¸ÇÍ­)\n" - -#: readelf.c:2902 -#, c-format -msgid "\nRelocation section at offset 0x%lx contains %ld bytes:\n" -msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%lx ¤ÎºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤Ï %ld ¥Ð¥¤¥È¤Ç¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:2909 -msgid "\nThere are no dynamic relocations in this file.\n" -msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏưŪºÆÇÛÃÖ¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:2937 -msgid "\nRelocation section " -msgstr "\nºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó " - -#: readelf.c:2944 -#, c-format -msgid " at offset 0x%lx contains %lu entries:\n" -msgstr " (¥ª¥Õ¥»¥Ã¥È 0x%lx) ¤Ï %lu ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:2972 -msgid "\nThere are no relocations in this file.\n" -msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏºÆÇÛÃÖ¤µ¤ì¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:3227 -msgid "\nThere is no dynamic segment in this file.\n" -msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏưŪ¥»¥°¥á¥ó¥È¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:3261 -msgid "Unable to seek to end of file!" -msgstr "¥Õ¥¡¥¤¥ëËöÈø¤Ë seek ¤Ç¤­¤Þ¤»¤ó!" - -#: readelf.c:3270 -msgid "Unable to determine the number of symbols to load\n" -msgstr "¥í¡¼¥É¤¹¤Ù¤­¥·¥ó¥Ü¥ë¤Î¿ô¤ò·èÄê¤Ç¤­¤Þ¤»¤ó\n" - -#: readelf.c:3300 -msgid "Unable to seek to end of file\n" -msgstr "¥Õ¥¡¥¤¥ëËöÈø¤Ë seek ¤Ç¤­¤Þ¤»¤ó\n" - -#: readelf.c:3306 -msgid "Unable to determine the length of the dynamic string table\n" -msgstr "ưŪʸ»úÎó¥Æ¡¼¥Ö¥ë¤ÎŤµ¤ò·èÄê¤Ç¤­¤Þ¤»¤ó\n" - -#: readelf.c:3367 -#, c-format -msgid "\nDynamic segment at offset 0x%x contains %ld entries:\n" -msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%x ¤ÎưŪ¥»¥°¥á¥ó¥È¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:3370 -msgid " Tag Type Name/Value\n" -msgstr " ¥¿¥° ¥¿¥¤¥× ̾Á°/ÃÍ\n" - -#: readelf.c:3406 -msgid "Auxiliary library" -msgstr "Êä½õ¥é¥¤¥Ö¥é¥ê" - -#: readelf.c:3410 -msgid "Filter library" -msgstr "¥Õ¥£¥ë¥¿¥é¥¤¥Ö¥é¥ê" - -#: readelf.c:3414 -msgid "Configuration file" -msgstr "ÀßÄê¥Õ¥¡¥¤¥ë" - -#: readelf.c:3418 -msgid "Dependency audit library" -msgstr "°Í¸´Ø·¸´Æºº¥é¥¤¥Ö¥é¥ê" - -#: readelf.c:3422 -msgid "Audit library" -msgstr "´Æºº¥é¥¤¥Ö¥é¥ê" - -#: readelf.c:3440 readelf.c:3466 readelf.c:3492 -msgid "Flags:" -msgstr "¥Õ¥é¥°:" - -#: readelf.c:3442 readelf.c:3468 readelf.c:3494 -msgid " None\n" -msgstr " ̵¤·\n" - -#: readelf.c:3613 -#, c-format -msgid "Shared library: [%s]" -msgstr "¶¦Í­¥é¥¤¥Ö¥é¥ê: [%s]" - -#: readelf.c:3616 -msgid " program interpreter" -msgstr " ¥×¥í¥°¥é¥à¥¤¥ó¥¿¥×¥ê¥¿" - -#: readelf.c:3620 -#, c-format -msgid "Library soname: [%s]" -msgstr "¥é¥¤¥Ö¥é¥ê¤Î soname: [%s]" - -#: readelf.c:3624 -#, c-format -msgid "Library rpath: [%s]" -msgstr "¥é¥¤¥Ö¥é¥ê¤Î rpath: [%s]" - -#: readelf.c:3628 -#, c-format -msgid "Library runpath: [%s]" -msgstr "¥é¥¤¥Ö¥é¥ê¤Î runpath: [%s]" - -#: readelf.c:3689 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "ÉÔÍפʥª¥Ö¥¸¥§¥¯¥È: [%s]\n" - -#: readelf.c:3786 -#, c-format -msgid "\nVersion definition section '%s' contains %ld entries:\n" -msgstr "\n¥Ð¡¼¥¸¥ç¥óÄêµÁ¥»¥¯¥·¥ç¥ó '%s' ¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:3789 -msgid " Addr: 0x" -msgstr " ¥¢¥É¥ì¥¹: 0x" - -#: readelf.c:3791 readelf.c:3979 -#, c-format -msgid " Offset: %#08lx Link: %lx (%s)\n" -msgstr " ¥ª¥Õ¥»¥Ã¥È: %#08lx ¥ê¥ó¥¯: %lx (%s)\n" - -#: readelf.c:3821 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: Rev: %d ¥Õ¥é¥°: %s" - -#: readelf.c:3824 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " º÷°ú: %d Cnt: %d " - -#: readelf.c:3835 -#, c-format -msgid "Name: %s\n" -msgstr "̾Á°: %s\n" - -#: readelf.c:3837 -#, c-format -msgid "Name index: %ld\n" -msgstr "̾Á°º÷°ú: %ld\n" - -#: readelf.c:3852 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: ¿Æ %d: %s\n" - -#: readelf.c:3855 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: ¿Æ %d, ̾Á°º÷°ú: %ld\n" - -#: readelf.c:3874 -#, c-format -msgid "\nVersion needs section '%s' contains %ld entries:\n" -msgstr "\nɬÍץС¼¥¸¥ç¥ó¥»¥¯¥·¥ç¥ó '%s' ¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:3877 -msgid " Addr: 0x" -msgstr " ¥¢¥É¥ì¥¹: 0x" - -#: readelf.c:3879 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr " Offset: %#08lx ¥»¥¯¥·¥ç¥ó¤Ø¤Î¥ê¥ó¥¯: %ld (%s)\n" - -#: readelf.c:3905 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: ¥Ð¡¼¥¸¥ç¥ó: %d" - -#: readelf.c:3908 -#, c-format -msgid " File: %s" -msgstr " ¥Õ¥¡¥¤¥ë: %s" - -#: readelf.c:3910 -#, c-format -msgid " File: %lx" -msgstr " ¥Õ¥¡¥¤¥ë: %lx" - -#: readelf.c:3912 -#, c-format -msgid " Cnt: %d\n" -msgstr " ¸Ä¿ô: %d\n" - -#: readelf.c:3930 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: ̾Á°: %s" - -#: readelf.c:3933 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: ̾Á°º÷°ú: %lx" - -#: readelf.c:3936 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " ¥Õ¥é¥°: %s ¥Ð¡¼¥¸¥ç¥ó: %d\n" - -#: readelf.c:3974 -#, c-format -msgid "\nVersion symbols section '%s' contains %d entries:\n" -msgstr "\n¥Ð¡¼¥¸¥ç¥ó¥·¥ó¥Ü¥ë¥»¥¯¥·¥ç¥ó '%s' ¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:3977 -msgid " Addr: " -msgstr " ¥¢¥É¥ì¥¹: " - -#: readelf.c:4007 -msgid " 0 (*local*) " -msgstr " 0 (*¶É ½ê*) " - -#: readelf.c:4011 -msgid " 1 (*global*) " -msgstr " 1 (*Âç °è*) " - -#: readelf.c:4233 -msgid "\nNo version information found in this file.\n" -msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤«¤é¤Ï¥Ð¡¼¥¸¥ç¥ó¾ðÊ󤬸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:4251 readelf.c:4286 -#, c-format -msgid ": %d" -msgstr "<¥×¥í¥»¥Ã¥µ¸ÇÍ­>: %d" - -#: readelf.c:4253 readelf.c:4298 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: readelf.c:4255 readelf.c:4301 -#, c-format -msgid ": %d" -msgstr "<ÉÔÌÀ>: %d" - -#: readelf.c:4364 -msgid "Unable to read in dynamic data\n" -msgstr "ưŪ¥Ç¡¼¥¿¤òÆɹþ¤á¤Þ¤»¤ó\n" - -#: readelf.c:4406 -msgid "Unable to seek to start of dynamic information" -msgstr "ưŪ¾ðÊó¤Î³«»Ï°ÌÃÖ¤Ë seek ¤Ç¤­¤Þ¤»¤ó" - -#: readelf.c:4412 -msgid "Failed to read in number of buckets\n" -msgstr "¥Ð¥±¥Ã¥È¿ô¤ÎÆɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿\n" - -#: readelf.c:4418 -msgid "Failed to read in number of chains\n" -msgstr "¥Á¥§¥¤¥ó¿ô¤ÎÆɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿\n" - -#: readelf.c:4438 -msgid "\nSymbol table for image:\n" -msgstr "\n¥¤¥á¡¼¥¸¤Î¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë:\n" - -#: readelf.c:4440 -msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" -msgstr " bucket¿ô: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" - -#: readelf.c:4442 -msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" -msgstr " bucket¿ô: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" - -#: readelf.c:4486 -#, c-format -msgid "\nSymbol table '%s' contains %lu entries:\n" -msgstr "\n¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë '%s' ¤Ï %lu ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:4490 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " ÈÖ¹æ: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" - -#: readelf.c:4492 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " ÈÖ¹æ: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" - -#: readelf.c:4601 -msgid "bad dynamic symbol" -msgstr "ÉÔÀµ¤ÊưŪ¥·¥ó¥Ü¥ë¤Ç¤¹" - -#: readelf.c:4660 -msgid "\nDynamic symbol information is not available for displaying symbols.\n" -msgstr "\nưŪ¥·¥ó¥Ü¥ë¾ðÊó¤Ïɽ¼¨ÍÑ¥·¥ó¥Ü¥ë¤È¤·¤Æ¤ÏÍøÍѤǤ­¤Þ¤»¤ó¡£\n" - -#: readelf.c:4672 -#, c-format -msgid "\nHistogram for bucket list length (total of %d buckets):\n" -msgstr "\n¥Ð¥±¥Ã¥È¥ê¥¹¥È¤ÎÅÙ¿ôʬÉÛ (Á´ %d ¸Ä¤Î¥Ð¥±¥Ã¥È):\n" - -#: readelf.c:4674 -msgid " Length Number %% of total Coverage\n" -msgstr " Ťµ ¸Ä¿ô ÀêͭΨ ÈÏ°Ï\n" - -#: readelf.c:4679 readelf.c:4698 readelf.c:7423 readelf.c:7616 -msgid "Out of memory" -msgstr "¥á¥â¥ê¤¬Â­¤ê¤Þ¤»¤ó" - -#: readelf.c:4747 -#, c-format -msgid "\nDynamic info segment at offset 0x%lx contains %d entries:\n" -msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%lx ¤ÎưŪ¾ðÊ󥻥°¥á¥ó¥È¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:4750 -msgid " Num: Name BoundTo Flags\n" -msgstr "ÈÖ¹æ: ̾Á° ¶­³¦¤Þ¤Ç ¥Õ¥é¥°\n" - -#: readelf.c:4798 -#, c-format -msgid "\nAssembly dump of section %s\n" -msgstr "\n¥»¥¯¥·¥ç¥ó %s ¤Î¥¢¥»¥ó¥Ö¥ê¥À¥ó¥×\n" - -#: readelf.c:4821 -#, c-format -msgid "\nSection '%s' has no data to dump.\n" -msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Ï¥À¥ó¥×¤Ç¤­¤ë¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£\n" - -#: readelf.c:4826 -#, c-format -msgid "\nHex dump of section '%s':\n" -msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Î 16 ¿Ê¿ô¥À¥ó¥×:\n" - -#: readelf.c:4978 -msgid "badly formed extended line op encountered!" -msgstr "ÉÔÀµ¤Ê·Á¼°¤Î³ÈÄ¥ line ¥ª¥Ú¥³¡¼¥É¤ËÁø¶ø¤·¤Þ¤·¤¿!" - -#: readelf.c:4985 -#, c-format -msgid " Extended opcode %d: " -msgstr " ³ÈÄ¥¥ª¥Ú¥³¡¼¥É %d: " - -#: readelf.c:4990 -msgid "End of Sequence\n\n" -msgstr "Îó¤Î½ª¤ê\n\n" - -#: readelf.c:4996 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "ÀßÄꥢ¥É¥ì¥¹ 0x%lx\n" - -#: readelf.c:5001 -msgid " define new File Table entry\n" -msgstr " ¿·¤¿¤Ê¥Õ¥¡¥¤¥ë¥Æ¡¼¥Ö¥ë¥¨¥ó¥È¥ê¤ÎÄêµÁ\n" - -#: readelf.c:5002 readelf.c:5124 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " Entry\tDir\t»þ¹ï\t¥µ¥¤¥º\t̾Á°\n" - -#: readelf.c:5004 -#, c-format -msgid " %d\t" -msgstr " %d\t" - -#: readelf.c:5007 readelf.c:5009 readelf.c:5011 readelf.c:5136 readelf.c:5138 -#: readelf.c:5140 -#, c-format -msgid "%lu\t" -msgstr "%lu\t" - -#: readelf.c:5012 -#, c-format -msgid "%s\n\n" -msgstr "%s\n\n" - -#: readelf.c:5016 -#, c-format -msgid "UNKNOWN: length %d\n" -msgstr "UNKNOWN: Ťµ %d\n" - -#: readelf.c:5042 -#, c-format -msgid "\nDump of debug contents of section %s:\n\n" -msgstr "\n¥»¥¯¥·¥ç¥óÆâÍƤΥǥХå°¥À¥ó¥× %s:\n\n" - -#: readelf.c:5054 -msgid "The line info appears to be corrupt - the section is too small\n" -msgstr "line ¾ðÊó¤Ï²õ¤ì¤Æ¤¤¤Þ¤¹ - ¥»¥¯¥·¥ç¥ó¤¬¾®¤µ¤¹¤®¤Þ¤¹\n" - -#: readelf.c:5062 -msgid "Only DWARF version 2 line info is currently supported.\n" -msgstr "¸½ºß¤Î¤È¤³¤í¡¢DWARF ¥Ð¡¼¥¸¥ç¥ó 2 ¤À¤±¤¬ line ¾ðÊó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£\n" - -#: readelf.c:5077 -#, c-format -msgid " Length: %ld\n" -msgstr " Ťµ: %ld\n" - -#: readelf.c:5078 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " DWARF ¥Ð¡¼¥¸¥ç¥ó: %d\n" - -#: readelf.c:5079 -#, c-format -msgid " Prolgue Length: %d\n" -msgstr " Prolgue ¤ÎŤµ: %d\n" - -#: readelf.c:5080 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " ºÇ¾®Ì¿ÎáĹ: %d\n" - -#: readelf.c:5081 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " 'is_stmt' ¤Î½é´üÃÍ: %d\n" - -#: readelf.c:5082 -#, c-format -msgid " Line Base: %d\n" -msgstr " Line ¥Ù¡¼¥¹: %d\n" - -#: readelf.c:5083 -#, c-format -msgid " Line Range: %d\n" -msgstr " Line ÈÏ°Ï: %d\n" - -#: readelf.c:5084 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " ¥ª¥Ú¥³¡¼¥É¥Ù¡¼¥¹: %d\n" - -#: readelf.c:5093 -msgid "\n Opcodes:\n" -msgstr "\n ¥ª¥Ú¥³¡¼¥É:\n" - -#: readelf.c:5096 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " ¥ª¥Ú¥³¡¼¥É %d ¤Ï %d ¸Ä¤Î°ú¿ô¤ò»ý¤Á¤Þ¤¹\n" - -#: readelf.c:5102 -msgid "\n The Directory Table is empty.\n" -msgstr "\n ¥Ç¥£¥ì¥¯¥È¥ê¥Æ¡¼¥Ö¥ë¤Ï¶õ¤Ç¤¹¡£\n" - -#: readelf.c:5105 -msgid "\n The Directory Table:\n" -msgstr "\n ¥Ç¥£¥ì¥¯¥È¥ê¥Æ¡¼¥Ö¥ë:\n" - -#: readelf.c:5109 -#, c-format -msgid " %s\n" -msgstr " %s\n" - -#: readelf.c:5120 -msgid "\n The File Name Table is empty.\n" -msgstr "\n ¥Õ¥¡¥¤¥ë̾¥Æ¡¼¥Ö¥ë¤Ï¶õ¤Ç¤¹¡£\n" - -#: readelf.c:5123 -msgid "\n The File Name Table:\n" -msgstr "\n ¥Õ¥¡¥¤¥ë̾¥Æ¡¼¥Ö¥ë:\n" - -#: readelf.c:5131 -#, c-format -msgid " %d\t" -msgstr " %d\t" - -#: readelf.c:5142 -#, c-format -msgid "%s\n" -msgstr "%s\n" - -#. Now display the statements. -#: readelf.c:5150 -msgid "\n Line Number Statements:\n" -msgstr "\n ¹ÔÈֹ楹¥Æ¡¼¥È¥á¥ó¥È:\n" - -#: readelf.c:5169 -msgid " Copy\n" -msgstr " ¥³¥Ô¡¼\n" - -#: readelf.c:5176 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " PC ¤ò %d ʬ¿Ê¤á %lx ¤È¤·¤Þ¤¹\n" - -#: readelf.c:5184 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " ¹Ô¤ò %d ¿Ê¤á %d ¤È¤·¤Þ¤¹\n" - -#: readelf.c:5191 -#, c-format -msgid " Set File Name to entry %d in the File Name Table\n" -msgstr " ¥¨¥ó¥È¥ê %d ¤Î¥Õ¥¡¥¤¥ë̾¤ò¥Õ¥¡¥¤¥ë̾¥Æ¡¼¥Ö¥ë¤Ë¥»¥Ã¥È\n" - -#: readelf.c:5199 -#, c-format -msgid " Set column to %d\n" -msgstr " ·åÉý¤ò %d ¤ËÀßÄê\n" - -#: readelf.c:5206 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " is_stmt ¤ò %d ¤Ë¥»¥Ã¥È\n" - -#: readelf.c:5211 -msgid " Set basic block\n" -msgstr " ´ðËÜ¥Ö¥í¥Ã¥¯¤òÀßÄê\n" - -#: readelf.c:5219 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr " PC ¤òÄê¿ô %d ʬ¿Ê¤á 0x%lx ¤È¤·¤Þ¤¹\n" - -#: readelf.c:5227 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " PC ¤ò¸ÇÄꥵ¥¤¥º %d ʬ¿Ê¤á 0x%lx ¤È¤·¤Þ¤¹\n" - -#: readelf.c:5235 -#, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " Æü쥪¥Ú¥³¡¼¥É %d: ¥¢¥É¥ì¥¹¤ò %d ʬ¿Ê¤á 0x%lx ¤È¤·" - -#: readelf.c:5239 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " ¹Ô¤ò %d ʬ¿Ê¤á %d ¤È¤·¤Þ¤¹\n" - -#: readelf.c:5262 readelf.c:5691 -#, c-format -msgid "Contents of the %s section:\n\n" -msgstr "%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍÆ:\n\n" - -#: readelf.c:5285 -msgid "Only DWARF 2 pubnames are currently supported\n" -msgstr "¸½ºß¤Î¤È¤³¤í¡¢DWARF 2 ¤À¤±¤¬ pubnames ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹\n" - -#: readelf.c:5292 -#, c-format -msgid " Length: %ld\n" -msgstr " Ťµ: %ld\n" - -#: readelf.c:5294 -#, c-format -msgid " Version: %d\n" -msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d\n" - -#: readelf.c:5296 -#, c-format -msgid " Offset into .debug_info section: %ld\n" -msgstr " .debug_info ¥»¥¯¥·¥ç¥ó¤Ø¤Î¥ª¥Õ¥»¥Ã¥È:%ld\n" - -#: readelf.c:5298 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr " .debug_info ¥»¥¯¥·¥ç¥óÎΰ襵¥¤¥º: %ld\n" - -#: readelf.c:5301 -msgid "\n Offset\tName\n" -msgstr "\n ¥ª¥Õ¥»¥Ã¥È\t̾Á°\n" - -#: readelf.c:5383 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "ÉÔÌÀ¤Ê TAG ÃÍ: %lx" - -#: readelf.c:5478 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "ÉÔÌÀ¤Ê AT ÃÍ: %lx" - -#: readelf.c:5515 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "ÉÔÌÀ¤Ê FORM ÃÍ: %lx" - -#: readelf.c:5697 -msgid " Number TAG\n" -msgstr " ÈÖ¹æ TAG\n" - -#: readelf.c:5703 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -#: readelf.c:5706 -msgid "has children" -msgstr "»Ò¤¢¤ê" - -#: readelf.c:5706 -msgid "no children" -msgstr "»Ò¤Ê¤·" - -#: readelf.c:5710 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -#: readelf.c:5729 -#, c-format -msgid " %lu byte block: " -msgstr " %lu ¥Ð¥¤¥È¥Ö¥í¥Ã¥¯: " - -#: readelf.c:6036 -msgid "(User defined location op)" -msgstr "(¥æ¡¼¥¶ÄêµÁ location op)" - -#: readelf.c:6038 -msgid "(Unknown location op)" -msgstr "(ÉÔÌÀ¤Ê location op)" - -#: readelf.c:6165 -#, c-format -msgid "Unable to handle FORM: %d" -msgstr "FORM ¤ò°·¤¨¤Þ¤»¤ó: %d" - -#: readelf.c:6169 -#, c-format -msgid "Unrecognised form: %d" -msgstr "ǧ¼±¤Ç¤­¤Ê¤¤·Á¼°: %d" - -#: readelf.c:6182 -msgid "(not inlined)" -msgstr "(Èó inline)" - -#: readelf.c:6183 -msgid "(inlined)" -msgstr "(inlined ²½)" - -#: readelf.c:6184 -msgid "(declared as inline but ignored)" -msgstr "(inline Àë¸À¤µ¤ì¤¿¤¬Ìµ»ë¤µ¤ì¤¿)" - -#: readelf.c:6185 -msgid "(declared as inline and inlined)" -msgstr "(inline Àë¸À¤µ¤ì inline ²½)" - -#: readelf.c:6186 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (ÉÔÌÀ¤Ê inline °À­ÃÍ: %lx)" - -#: readelf.c:6315 readelf.c:6441 -#, c-format -msgid "The section %s contains:\n\n" -msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎÆâÍÆ:\n\n" - -#: readelf.c:6337 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " ¥³¥ó¥Ñ¥¤¥ëñ°Ì @ %lx:\n" - -#: readelf.c:6338 -#, c-format -msgid " Length: %ld\n" -msgstr " Ťµ: %ld\n" - -#: readelf.c:6339 -#, c-format -msgid " Version: %d\n" -msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d\n" - -#: readelf.c:6340 -#, c-format -msgid " Abbrev Offset: %ld\n" -msgstr " ¾Êά offset: %ld\n" - -#: readelf.c:6341 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " ¥Ý¥¤¥ó¥¿¥µ¥¤¥º:%d\n" - -#: readelf.c:6345 -msgid "Only version 2 DWARF debug information is currently supported.\n" -msgstr "¸½ºß¤Î¤È¤³¤í¡¢¥Ð¡¼¥¸¥ç¥ó 2 DWARF ¤À¤±¤¬¥Ç¥Ð¥Ã¥°¾ðÊó¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£\n" - -#: readelf.c:6367 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr ".debug_abbrev ¥»¥¯¥·¥ç¥ó¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó!\n" - -#: readelf.c:6407 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "¾Êά¥Æ¡¼¥Ö¥ëÆâ¤Î¥¨¥ó¥È¥ê %lu ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó\n" - -#: readelf.c:6412 -#, c-format -msgid " <%d><%x>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%x>: ¾ÊάÈÖ¹æ: %lu (%s)\n" - -#: readelf.c:6462 -msgid "Only DWARF 2 aranges are currently supported.\n" -msgstr "¸½ºß¤Î¤È¤³¤í DWARF 2 ¤À¤±¤¬ arange ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£\n" - -#: readelf.c:6466 -#, c-format -msgid " Length: %ld\n" -msgstr " Ťµ: %ld\n" - -#: readelf.c:6467 -#, c-format -msgid " Version: %d\n" -msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d\n" - -#: readelf.c:6468 -#, c-format -msgid " Offset into .debug_info: %lx\n" -msgstr " .debug_info Æâ¤Ø¤Îoffset: %lx\n" - -#: readelf.c:6469 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " ¥Ý¥¤¥ó¥¿¥µ¥¤¥º: %d\n" - -#: readelf.c:6470 -#, c-format -msgid " Segment Size: %d\n" -msgstr " ¥»¥°¥á¥ó¥È¥µ¥¤¥º: %d\n" - -#: readelf.c:6472 -msgid "\n Address Length\n" -msgstr "\n ¥¢¥É¥ì¥¹Ä¹\n" - -#: readelf.c:6634 -#, c-format -msgid "The section %s contains:\n" -msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎÆâÍÆ:\n" - -#: readelf.c:7109 -#, c-format -msgid "Displaying the debug contents of section %s is not yet supported.\n" -msgstr "¥»¥¯¥·¥ç¥ó %s ¤Î¥Ç¥Ð¥Ã¥°ÆâÍƤÎɽ¼¨¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n" - -#: readelf.c:7173 -#, c-format -msgid "\nSection '%s' has no debugging data.\n" -msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Ï¥Ç¥Ð¥Ã¥°¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£\n" - -#: readelf.c:7192 -#, c-format -msgid "Unrecognised debug section: %s\n" -msgstr "ǧ¼±¤Ç¤­¤Ê¤¤¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó: %s\n" - -#: readelf.c:7264 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "¸ºß¤·¤Ê¤¤¤¿¤á¥À¥ó¥×¤µ¤ì¤Ê¤«¤Ã¤¿¥»¥¯¥·¥ç¥ó¤â¤¢¤ê¤Þ¤¹!\n" - -#: readelf.c:7447 -#, c-format -msgid "\nSection '%s' contains %d entries:\n" -msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:7609 -msgid "conflict list with without table" -msgstr "¥Æ¡¼¥Ö¥ë¤Î̵ͭ¤Î conflict ¥ê¥¹¥È" - -#: readelf.c:7637 -#, c-format -msgid "\nSection '.conflict' contains %d entries:\n" -msgstr "\n¥»¥¯¥·¥ç¥ó '.conflict' ¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" - -#: readelf.c:7638 -msgid " Num: Index Value Name" -msgstr " ÈÖ¹æ: º÷°ú ÃÍ Ì¾Á°" - -#: readelf.c:7663 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (prstatus ¹½Â¤ÂÎ)" - -#: readelf.c:7664 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿)" - -#: readelf.c:7665 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (prpsinfo ¹½Â¤ÂÎ)" - -#: readelf.c:7666 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (task ¹½Â¤ÂÎ)" - -#: readelf.c:7667 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (user_xfpregs ¹½Â¤ÂÎ)" - -#: readelf.c:7668 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (pstatus ¹½Â¤ÂÎ)" - -#: readelf.c:7669 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿)" - -#: readelf.c:7670 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (psinfo ¹½Â¤ÂÎ)" - -#: readelf.c:7671 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (lwpstatus_t ¹½Â¤ÂÎ)" - -#: readelf.c:7672 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (lwpsinfo_t ¹½Â¤ÂÎ)" - -#: readelf.c:7673 -msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)" -msgstr "NT_WIN32PSTATUS (win32_pstatus ¹½Â¤ÂÎ)" - -#: readelf.c:7675 -#, c-format -msgid "Unknown note type: (0x%08x)" -msgstr "ÉÔÌÀ¤Ê note ¥¿¥¤¥×: (0x%08x)" - -#: readelf.c:7713 -#, c-format -msgid "\nNotes at offset 0x%08lx with length 0x%08lx:\n" -msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%08lx, Ťµ 0x%08lx ¤Î note:\n" - -#: readelf.c:7715 -msgid " Owner\t\tData size\tDescription\n" -msgstr " ½êÍ­¼Ô\t\t¥Ç¡¼¥¿¥µ¥¤¥º\tÀâÌÀ\n" - -#: readelf.c:7826 -msgid "No note segments present in the core file.\n" -msgstr "¤³¤Î¥³¥¢¥Õ¥¡¥¤¥ë¤Ë note ¥»¥°¥á¥ó¥È¤¬Í­¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:7904 -msgid "This instance of readelf has been built without support for a\n" -msgstr "¤³¤Î readelf ¤Î¼ÂÂÎ¤Ï 64 bit ¥Ç¡¼¥¿·¿¥µ¥Ý¡¼¥È̵¤·¤Ç¥Ó¥ë¥É¤µ¤ì¤Æ¤ª¤ê¡¢\n" - -#: readelf.c:7905 -msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" -msgstr "64 bit ELF ¥Õ¥¡¥¤¥ë¤òÆɤळ¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n" - -#: readelf.c:7940 -#, c-format -msgid "Cannot stat input file %s.\n" -msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤ò stat(2) ¤Ç¤­¤Þ¤»¤ó¡£\n" - -#: readelf.c:7947 -#, c-format -msgid "Input file %s not found.\n" -msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n" - -#: readelf.c:7953 -#, c-format -msgid "%s: Failed to read file header\n" -msgstr "%s: ¥Õ¥¡¥¤¥ë¥Ø¥Ã¥À¤ÎÆɹþ¤ß¤¬¼ºÇÔ¤·¤Þ¤·¤¿\n" - -#: readelf.c:7967 -#, c-format -msgid "\nFile: %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: rename: %s" - -#: rename.c:211 -#, c-format -msgid "%s: simple_copy: %s" -msgstr "%s: simple_copy: %s" - -#: resbin.c:130 -#, c-format -msgid "%s: not enough binary data" -msgstr "%s: ¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤¬ÉÔ½½Ê¬¤Ç¤¹" - -#: resbin.c:149 -msgid "null terminated unicode string" -msgstr "½ªÃ¼¤¬ null ¤Î unicode ʸ»úÎó¤Ç¤¹" - -#: resbin.c:179 resbin.c:185 -msgid "resource ID" -msgstr "¥ê¥½¡¼¥¹ ID" - -#: resbin.c:229 -msgid "cursor" -msgstr "¥«¡¼¥½¥ë" - -#: resbin.c:263 resbin.c:270 -msgid "menu header" -msgstr "menu ¥Ø¥Ã¥À" - -#: resbin.c:280 -msgid "menuex header" -msgstr "¥á¥Ë¥å¡¼ ex ¥Ø¥Ã¥À" - -#: resbin.c:284 -msgid "menuex offset" -msgstr "¥á¥Ë¥å¡¼ ex ¥ª¥Õ¥»¥Ã¥È" - -#: resbin.c:291 -#, c-format -msgid "unsupported menu version %d" -msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥á¥Ë¥å¡¼¥Ð¡¼¥¸¥ç¥ó %d" - -#: resbin.c:319 resbin.c:334 resbin.c:400 -msgid "menuitem header" -msgstr "¥á¥Ë¥å¡¼¥¢¥¤¥Æ¥à¥Ø¥Ã¥À" - -#: resbin.c:430 -msgid "menuitem" -msgstr "¥á¥Ë¥å¡¼¥¢¥¤¥Æ¥à" - -#: resbin.c:471 resbin.c:499 -msgid "dialog header" -msgstr "¥À¥¤¥¢¥í¥°¥Ø¥Ã¥À" - -#: resbin.c:489 -#, c-format -msgid "unexpected dialog signature %d" -msgstr "ͽ´ü¤·¤Ê¤¤¥À¥¤¥¢¥í¥°¼±ÊÌÈÖ¹æ %d" - -#: resbin.c:531 -msgid "dialog font point size" -msgstr "¥À¥¤¥¢¥í¥°¥Õ¥©¥ó¥È¥Ý¥¤¥ó¥È¥µ¥¤¥º" - -#: resbin.c:539 -msgid "dialogex font information" -msgstr "¥À¥¤¥¢¥í¥° ex ¥Õ¥©¥ó¥È¾ðÊó" - -#: resbin.c:564 resbin.c:582 -msgid "dialog control" -msgstr "¥À¥¤¥¢¥í¥°¥³¥ó¥È¥í¡¼¥ë" - -#: resbin.c:574 -msgid "dialogex control" -msgstr "¥À¥¤¥¢¥í¥° ex ¥³¥ó¥È¥í¡¼¥ë" - -#: resbin.c:603 -msgid "dialog control end" -msgstr "¥À¥¤¥¢¥í¥°¥³¥ó¥È¥í¡¼¥ëËöÈø" - -#: resbin.c:615 -msgid "dialog control data" -msgstr "¥À¥¤¥¢¥í¥°¥³¥ó¥È¥í¡¼¥ë¥Ç¡¼¥¿" - -#: resbin.c:658 -msgid "stringtable string length" -msgstr "stringtable ʸ»úÎóĹ" - -#: resbin.c:668 -msgid "stringtable string" -msgstr "stringtable ʸ»úÎó" - -#: resbin.c:701 -msgid "fontdir header" -msgstr "fontdir ¥Ø¥Ã¥À" - -#: resbin.c:714 -msgid "fontdir" -msgstr "fontdir" - -#: resbin.c:730 -msgid "fontdir device name" -msgstr "fontdir ¥Ç¥Ð¥¤¥¹Ì¾" - -#: resbin.c:736 -msgid "fontdir face name" -msgstr "fontdir ¥Õ¥§¥¤¥¹Ì¾" - -#: resbin.c:779 -msgid "accelerator" -msgstr "¥¢¥¯¥»¥é¥ì¡¼¥¿" - -#: resbin.c:843 -msgid "group cursor header" -msgstr "¥°¥ë¡¼¥×¥«¡¼¥½¥ë¥Ø¥Ã¥À" - -#: resbin.c:847 -#, c-format -msgid "unexpected group cursor type %d" -msgstr "ͽ´ü¤·¤Ê¤¤¥°¥ë¡¼¥×¥«¡¼¥½¥ë·¿ %d" - -#: resbin.c:862 -msgid "group cursor" -msgstr "¥°¥ë¡¼¥×¥«¡¼¥½¥ë" - -#: resbin.c:901 -msgid "group icon header" -msgstr "¥°¥ë¡¼¥×¥¢¥¤¥³¥ó¥Ø¥Ã¥À" - -#: resbin.c:905 -#, c-format -msgid "unexpected group icon type %d" -msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óʸ»úÎó %d" - -#: resbin.c:920 -msgid "group icon" -msgstr "¥°¥ë¡¼¥×¥¢¥¤¥³¥ó" - -#: resbin.c:991 resbin.c:1210 -msgid "unexpected version string" -msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óʸ»úÎó" - -#: resbin.c:1025 -#, c-format -msgid "version length %d does not match resource length %lu" -msgstr "¥Ð¡¼¥¸¥çĹ %d ¤Ï¥ê¥½¡¼¥¹Ä¹ %lu ¤Î°ìÃפ·¤Þ¤»¤ó" - -#: resbin.c:1029 -#, c-format -msgid "unexpected version type %d" -msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥ó¥¿¥¤¥× %d" - -#: resbin.c:1041 -#, c-format -msgid "unexpected fixed version information length %d" -msgstr "ͽ´ü¤·¤Ê¤¤¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¾ðÊóĹ %d" - -#: resbin.c:1044 -msgid "fixed version info" -msgstr "¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¾ðÊó" - -#: resbin.c:1048 -#, c-format -msgid "unexpected fixed version signature %lu" -msgstr "ͽ´ü¤·¤Ê¤¤¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¼±ÊÌÈÖ¹æ %lu" - -#: resbin.c:1052 -#, c-format -msgid "unexpected fixed version info version %lu" -msgstr "ͽ´ü¤·¤Ê¤¤¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¾ðÊó¥Ð¡¼¥¸¥ç¥ó %lu" - -#: resbin.c:1081 -msgid "version var info" -msgstr "¥Ð¡¼¥¸¥ç¥ó var ¾ðÊó" - -#: resbin.c:1098 -#, c-format -msgid "unexpected stringfileinfo value length %d" -msgstr "ͽ´ü¤·¤Ê¤¤ stringfileinfo ÃͤÎŤµ %d" - -#: resbin.c:1108 -#, c-format -msgid "unexpected version stringtable value length %d" -msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥ó stringtable ÃͤÎŤµ %d" - -#: resbin.c:1142 -#, c-format -msgid "unexpected version string length %d != %d + %d" -msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óʸ»úÎóĹ %d != %d + %d" - -#: resbin.c:1153 -#, c-format -msgid "unexpected version string length %d < %d" -msgstr "ͽ´ü¤·¤Ê¤¤ÊÑ¿ô¥Õ¥¡¥¤¥ë¾ðÊóÃͤÎŤµ %d < %d" - -#: resbin.c:1170 -#, c-format -msgid "unexpected varfileinfo value length %d" -msgstr "ͽ´ü¤·¤Ê¤¤ varfileinfo ÃͤÎŤµ %d" - -#: resbin.c:1189 -msgid "version varfileinfo" -msgstr "¥Ð¡¼¥¸¥ç¥ó varfileinfo" - -#: resbin.c:1204 -#, 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 "ID ¥Ç¥£¥ì¥¯¥È¥ê¹àÌÜ" - -#: rescoff.c:294 -msgid "ID subdirectory" -msgstr "ID ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê" - -#: rescoff.c:302 -msgid "ID resource" -msgstr "ID ¥ê¥½¡¼¥¹" - -#: 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 "`%s' ¤ò popen ¤Ç¤­¤Þ¤»¤ó: %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 "`%s' ¤ò»î¤·¤Þ¤·¤¿\n" - -#: resrc.c:380 -#, c-format -msgid "Using `%s'\n" -msgstr "`%s' ¤ò»È¤¤¤Þ¤¹\n" - -#: resrc.c:541 -#, c-format -msgid "%s:%d: %s\n" -msgstr "%s:%d: %s\n" - -#: resrc.c:550 -#, c-format -msgid "%s: unexpected EOF" -msgstr "%s: ͽ´ü¤·¤Ê¤¤ EOF ¤Ç¤¹" - -#: resrc.c:607 -#, c-format -msgid "%s: read of %lu returned %lu" -msgstr "%s: %lu ¸Ä¤ÎÆɹþ¤ß¤Ç %lu ¤¬Ê֤äƤ­¤Þ¤·¤¿" - -#: resrc.c:649 resrc.c:903 resrc.c:1176 resrc.c:1330 -#, c-format -msgid "stat failed on bitmap file `%s': %s" -msgstr "¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥¡¥¤¥ë `%s' ¤Î stat(2) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" - -#: resrc.c:702 -#, c-format -msgid "cursor file `%s' does not contain cursor data" -msgstr "¥«¡¼¥½¥ë¥Õ¥¡¥¤¥ë `%s' ¤¬¥«¡¼¥½¥ë¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó" - -#: resrc.c:734 resrc.c:1047 -#, c-format -msgid "%s: fseek to %lu failed: %s" -msgstr "%s: %lu ¤Ø¤Î fseek ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" - -#: resrc.c:871 -msgid "help ID requires DIALOGEX" -msgstr "¥Ø¥ë¥× ID ¤Ë¤Ï DIALOGEX ¤¬É¬ÍפȤʤê¤Þ¤¹" - -#: resrc.c:873 -msgid "control data requires DIALOGEX" -msgstr "¥³¥ó¥È¥í¡¼¥ë¥Ç¡¼¥¿¤Ë¤Ï DIALOGEX ¤¬É¬ÍפȤʤê¤Þ¤¹" - -#: resrc.c:1016 -#, c-format -msgid "icon file `%s' does not contain icon data" -msgstr "¥¢¥¤¥³¥ó¥Õ¥¡¥¤¥ë `%s' ¤¬¥¢¥¤¥³¥ó¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó" - -#: resrc.c:1535 -#, c-format -msgid "can't open `%s' for output: %s" -msgstr "½ÐÎÏÍѤΠ`%s' ¤ò³«¤±¤Þ¤»¤ó: %s" - -#: size.c:79 -#, c-format -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" - -#: size.c:85 -msgid "default is --format=berkeley\n" -msgstr "¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï --format=berkeley ¤Ç¤¹\n" - -#: size.c:87 -msgid "default is --format=sysv\n" -msgstr "¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï --format=sysv ¤Ç¤¹\n" - -#: size.c:141 -#, c-format -msgid "invalid argument to --format: %s" -msgstr "--format ¤ËÂФ·¤ÆÉÔŬÀڤʰú¿ô¤Ç¤¹: %s" - -#: size.c:168 -#, c-format -msgid "Invalid radix: %s\n" -msgstr "ÉÔŬÀڤʴð¿ô¤Ç¤¹: %s\n" - -#: srconv.c:1880 -#, c-format -msgid "Usage: %s [-dhVq] in-file [out-file]\n" -msgstr "»È¤¤Êý: %s [-dhVq] ÆþÎÏ¥Õ¥¡¥¤¥ë [½ÐÎÏ¥Õ¥¡¥¤¥ë]\n" - -#: srconv.c:1887 -#, c-format -msgid "%s: Convert a COFF object file into a SYSROFF object file\n" -msgstr "%s: COFF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò SYSROFF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤Þ¤¹\n" - -#: srconv.c:2020 -#, c-format -msgid "unable to open output file %s" -msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó" - -#: stabs.c:349 stabs.c:1770 -msgid "numeric overflow" -msgstr "¿ôÃͤ¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" - -#: stabs.c:360 -#, c-format -msgid "Bad stab: %s\n" -msgstr "ÉÔÀµ¤Ê¥¹¥¿¥Ö¤Ç¤¹: %s\n" - -#: stabs.c:370 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "·Ù¹ð: %s: %s\n" - -#: stabs.c:492 -msgid "N_LBRAC not within function\n" -msgstr "N_LBRAC ¤¬´Ø¿ôÆâ¤Ë¤¢¤ê¤Þ¤»¤ó\n" - -#: stabs.c:531 -msgid "Too many N_RBRACs\n" -msgstr "N_RBRAC ¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹\n" - -#: stabs.c:780 -msgid "unknown C++ encoded name" -msgstr "ÉÔÌÀ¤Ê C++ ¥¨¥ó¥³¡¼¥É̾¤Ç¤¹" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1307 -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:1862 -msgid "missing index type" -msgstr "¥¤¥ó¥Ç¥Ã¥¯¥¹·¿¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" - -#: stabs.c:2189 -msgid "unknown virtual character for baseclass" -msgstr "´ðÄ쥯¥é¥¹ÍѲ¾ÁÛʸ»ú¤¬ÉÔÌÀ¤Ç¤¹" - -#: stabs.c:2207 -msgid "unknown visibility character for baseclass" -msgstr "´ðÄ쥯¥é¥¹ÍѲĻëÀ­Ê¸»ú¤¬ÉÔÌÀ¤Ç¤¹" - -#: stabs.c:2399 -msgid "unnamed $vb type" -msgstr "$vb ·¿¤Î̾Á°¤¬¤¢¤ê¤Þ¤»¤ó" - -#: stabs.c:2405 -msgid "unrecognized C++ abbreviation" -msgstr "C++ ¾Êά̾¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" - -#: stabs.c:2485 -msgid "unknown visibility character for field" -msgstr "¥Õ¥£¡¼¥ë¥ÉÍѤβĻëÀ­Ê¸»ú¤¬ÉÔÌÀ¤Ç¤¹" - -#: stabs.c:2741 -msgid "const/volatile indicator missing" -msgstr "const/volatile »Ø¼¨»Ò¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" - -#: stabs.c:2981 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "\"%s\" ¤Î̾Á°¤ÎÊÑ·Á(mangling) ¤¬¤¢¤ê¤Þ¤»¤ó\n" - -#: stabs.c:3294 -msgid "Undefined N_EXCL" -msgstr "N_EXCL ¤¬Ì¤ÄêµÁ¤Ç¤¹" - -#: stabs.c:3382 -#, c-format -msgid "Type file number %d out of range\n" -msgstr "¥Õ¥¡¥¤¥ëÈֹ淿 %d ¤¬Èϰϳ°¤Ç¤¹\n" - -#: stabs.c:3387 -#, c-format -msgid "Type index number %d out of range\n" -msgstr "¥¤¥ó¥Ç¥Ã¥¯¥¹Èֹ淿 %d ¤¬Èϰϳ°¤Ç¤¹\n" - -#: stabs.c:3474 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "XCOFF ¥¿¥¤¥× %d ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n" - -#: stabs.c:3773 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "ÉÔÀµ¤ÊÊÑ·Á̾ (mangled name) `%s'\n" - -#: stabs.c:3869 -msgid "no argument types in mangled string\n" -msgstr "ÊÑ·Á¤µ¤ì¤¿(mangled) ʸ»úÎó¤Ë°ú¿ô¤Î·¿¤¬¤¢¤ê¤Þ¤»¤ó\n" - -#: strings.c:177 -#, c-format -msgid "invalid number %s" -msgstr "ÉÔŬÀÚ¤ÊÃÍ %s" - -#: strings.c:513 -#, c-format -msgid "invalid integer argument %s" -msgstr "ÉÔŬÀÚ¤ÊÀ°¿ô°ú¿ô %s" - -#: strings.c:523 -#, c-format -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" - -#: sysdump.c:712 -#, c-format -msgid "Usage: %s [-hV] in-file\n" -msgstr "»È¤¤Êý: %s [-hV] ÆþÎÏ¥Õ¥¡¥¤¥ë\n" - -#: sysdump.c:781 -#, c-format -msgid "cannot open input file %s" -msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó" - -#: version.c:39 -msgid "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" -msgstr "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" - -#: version.c:40 -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 "" -"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" -"[»²¹ÍÌõ -- ˡŪ¸úÎϤȤ·¤Æ¤Ï±Ñʸ¤¬Å¬ÍѤµ¤ì¤Þ¤¹]\n" -"¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹ -- GNU GPL ¤Îʸ¸À¤Ë½¾¤Ã¤ÆÊ£À½¤¬µö²Ä¤µ¤ì¤Þ¤¹¡£\n" -"¤³¤Î¥×¥í¥°¥é¥à¤Ë¤Ï¤¤¤«¤Ê¤ëÊݾڤ⤢¤ê¤Þ¤»¤ó¡£\n" - -#: windres.c:237 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "%s `%s' ¤ò³«¤±¤Þ¤»¤ó: %s" - -#: windres.c:416 -msgid ": expected to be a directory\n" -msgstr ": ¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹\n" - -#: windres.c:428 -msgid ": expected to be a leaf\n" -msgstr ": ËöÈøÍ×ÁǤǤ¢¤ë¤Ù¤­¤Ç¤¹\n" - -#: windres.c:437 -#, c-format -msgid "%s: warning: " -msgstr "%s: ·Ù¹ð: " - -#: windres.c:439 -msgid ": duplicate value\n" -msgstr ": ½ÅÊ£¤·¤¿ÃͤǤ¹\n" - -#: 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:690 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Î·¿¤ò·èÄê¤Ç¤­¤Þ¤»¤ó -- -I ¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ¤·¤ç¤¦" - -#: windres.c:704 -#, c-format -msgid "Usage: %s [options] [input-file] [output-file]\n" -msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó] [ÆþÎÏ¥Õ¥¡¥¤¥ë] [½ÐÎÏ¥Õ¥¡¥¤¥ë]\n" - -#: windres.c:706 -msgid "" -"Options:\n" -" -i FILE, --input FILE Name input file\n" -" -o FILE, --output FILE Name output file\n" -" -I FORMAT, --input-format FORMAT\n" -" Specify input format\n" -" -O FORMAT, --output-format FORMAT\n" -" Specify output format\n" -" -F TARGET, --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" -" -DSYM[=VAL], --define SYM[=VAL]\n" -" Define SYM when preprocessing rc file\n" -" -v 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 "" -"¥ª¥×¥·¥ç¥ó:\n" -" -i FILE, --input FILE ÆþÎÏ¥Õ¥¡¥¤¥ë̾\n" -" -o FILE, --output FILE ½ÐÎÏ¥Õ¥¡¥¤¥ë̾\n" -" -I FORMAT, --input-format FORMAT\n" -" ÆþÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë\n" -" -O FORMAT, --output-format FORMAT\n" -" ½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë\n" -" -F TARGET, --target TARGET COFF ¥¿¡¼¥²¥Ã¥È¤ò»ØÄꤹ¤ë\n" -" --preprocessor PROGRAM rc ¥Õ¥¡¥¤¥ë¤ÎÁ°½èÍý¤Ë»È¤¦¥×¥í¥°¥é¥à\n" -" --include-dir DIR rc ¥Õ¥¡¥¤¥ëÁ°½èÍý»þ¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Ç¥£¥ì¥¯¥È¥ê\n" -" -DSYM[=VAL], --define SYM[=VAL]\n" -" rc ¥Õ¥¡¥¤¥ëÁ°½èÍý»þ¤Ë SYM ¤òÄêµÁ¤¹¤ë\n" -" -v ñÁÀå --¹Ô¤ï¤ì¤ë¤³¤È¤òÃΤ餻¤ë\n" -" --language VAL rc Æɹþ¤ß»þ¤Î¸À¸ì¤òÀßÄꤹ¤ë\n" -" --use-temp-file Á°½èÍý½ÐÎϤÎÆɹþ¤ß¤Ë popen ¤Ç¤Ï¤Ê¤¯\n" -" °ì»þ¥Õ¥¡¥¤¥ë¤ò»È¤¦\n" -" --no-use-temp-file popen ¤ò»È¤¦ (¥Ç¥Õ¥©¥ë¥È)\n" - -#: windres.c:725 -msgid " --yydebug Turn on parser debugging\n" -msgstr " --yydebug ¹½Ê¸²òÀÏ´ï¤Î¥Ç¥Ð¥Ã¥°¤òÍ­¸ú¤Ë¤¹¤ë\n" - -#: windres.c:728 -msgid "" -" --help Print this help message\n" -" --version Print version information\n" -msgstr "" -" --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" -" --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤¹¤ë\n" - -#: windres.c:731 -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:980 -msgid "no resources" -msgstr "¥ê¥½¡¼¥¹¤¬¤¢¤ê¤Þ¤»¤ó" - -#: wrstabs.c:366 wrstabs.c:2027 -#, 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:1467 -#, c-format -msgid "%s: warning: unknown size for field `%s' in struct" -msgstr "%s: ·Ù¹ð: ¹½Â¤ÂΤΥե£¡¼¥ë¥É `%s' ¤Î¥µ¥¤¥º¤¬ÉÔÌÀ¤Ç¤¹" diff --git a/binutils/po/ru.po b/binutils/po/ru.po deleted file mode 100644 index a3be42124..000000000 --- a/binutils/po/ru.po +++ /dev/null @@ -1,4889 +0,0 @@ -# Translation of binutils-2.14rel030712.ru.po to Russian -# Copyright (C) 2003 Free Software Foundation, Inc. -# This file is distributed under the same license as the binutils package. -# Pavel Maryanov , 2003. -# -msgid "" -msgstr "" -"Project-Id-Version: binutils 2.14rel030712\n" -"POT-Creation-Date: 2003-07-11 13:56+0930\n" -"PO-Revision-Date: 2003-12-29 13:06+0200\n" -"Last-Translator: Pavel Maryanov \n" -"Language-Team: Russian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=KOI8-R\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.0.2\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 " åÓÌÉ ÁÄÒÅÓÁ ÎÅ ÕËÁÚÁÎÙ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, ÏÎÉ ÂÕÄÕÔ ÐÒÏÞÉÔÁÎÙ ÉÚ stdin\n" - -#: addr2line.c:77 -msgid "" -" The options are:\n" -" -b --target= Set the binary file format\n" -" -e --exe= 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= õÓÔÁÎÏ×ÉÔØ ÆÏÒÍÁÔ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" -" -e --exe= õÓÔÁÎÏ×ÉÔØ ÉÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ a.out)\n" -" -s --basenames ÷ÙÄÅÌÉÔØ ÉÍÅÎÁ ËÁÔÁÌÏÇÏ×\n" -" -f --functions ðÏËÁÚÁÔØ ÉÍÅÎÁ ÆÕÎËÃÉÊ\n" -" -C --demangle[=ÓÔÉÌØ] òÁÓÛÉÆÒÏ×ÁÔØ ÉÍÅÎÁ ÆÕÎËÃÉÊ\n" -" -h --help ðÏËÁÚÁÔØ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ\n" -" -v --version ðÏËÁÚÁÔØ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ\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 "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n" - -#: addr2line.c:245 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÁÄÒÅÓÁ ÉÚ ÁÒÈÉ×Á" - -#: addr2line.c:317 nm.c:433 objdump.c:2693 -#, 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:255 -#, c-format -msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" -msgstr "" -"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ] [-]{dmpqrstx}[abcfilNoPsSuvV] [ÉÍÑ_ÞÌÅÎÁ]\n" -" [ÓÞÅÔ] ÆÁÊÌ_ÁÒÈÉ×Á ÆÁÊÌ...\n" - -#: ar.c:258 -#, c-format -msgid " %s -M [\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 "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å %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:52 -#, c-format -msgid " emulation options: \n" -msgstr " ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ: \n" - -#: bucomm.c:113 -#, c-format -msgid "can't set BFD default target to `%s': %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÃÅÌØ BFD ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÁ `%s': %s" - -#: bucomm.c:125 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: æÏÒÍÁÔÙ ÓÏ×ÐÁÄÅÎÉÑ:" - -#: bucomm.c:142 -msgid "Supported targets:" -msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:" - -#: bucomm.c:144 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:" - -#: bucomm.c:162 -msgid "Supported architectures:" -msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:" - -#: bucomm.c:164 -#, c-format -msgid "%s: supported architectures:" -msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:" - -#: bucomm.c:360 -#, c-format -msgid "BFD header file version %s\n" -msgstr "æÁÊÌ ÚÁÇÏÌÏ×ËÁ BFD ×ÅÒÓÉÑ %s\n" - -#: bucomm.c:467 -#, 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 [ÏÐÃÉÉ] in-ÆÁÊÌ\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:654 -msgid "debug_add_to_current_namespace: no current file" -msgstr "debug_add_to_current_namespace: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" - -#: debug.c:737 -msgid "debug_start_source: no debug_set_filename call" -msgstr "debug_start_source: ÎÅÔ ×ÙÚÏ×Á debug_set_filename" - -#: debug.c:796 -msgid "debug_record_function: no debug_set_filename call" -msgstr "debug_record_function: ÎÅÔ ×ÙÚÏ×Á debug_set_filename" - -#: debug.c:852 -msgid "debug_record_parameter: no current function" -msgstr "debug_record_parameter: ÎÅÔ ÔÅËÕÝÅÊ ÆÕÎËÃÉÉ" - -#: debug.c:886 -msgid "debug_end_function: no current function" -msgstr "debug_end_function: ÎÅÔ ÔÅËÕÝÅÊ ÆÕÎËÃÉÉ" - -#: debug.c:892 -msgid "debug_end_function: some blocks were not closed" -msgstr "debug_end_function: ÎÅËÏÔÏÒÙÅ ÂÌÏËÉ ÎÅ ÂÙÌÉ ÚÁËÒÙÔÙ" - -#: debug.c:922 -msgid "debug_start_block: no current block" -msgstr "debug_start_block: ÎÅÔ ÔÅËÕÝÅÇÏ ÂÌÏËÁ" - -#: debug.c:960 -msgid "debug_end_block: no current block" -msgstr "debug_end_block: ÎÅÔ ÔÅËÕÝÅÇÏ ÂÌÏËÁ" - -#: debug.c:967 -msgid "debug_end_block: attempt to close top level block" -msgstr "debug_end_block: ÐÏÐÙÔËÁ ÚÁËÒÙÔØ ÂÌÏË ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ" - -#: debug.c:993 -msgid "debug_record_line: no current unit" -msgstr "debug_record_line: ÎÅÔ ÔÅËÕÝÅÇÏ ÍÏÄÕÌÑ" - -#. FIXME -#: debug.c:1047 -msgid "debug_start_common_block: not implemented" -msgstr "debug_start_common_block: ÎÅ ×ÙÐÏÌÎÅÎ" - -#. FIXME -#: debug.c:1059 -msgid "debug_end_common_block: not implemented" -msgstr "debug_end_common_block: ÎÅ ×ÙÐÏÌÎÅÎ" - -#. FIXME. -#: debug.c:1153 -msgid "debug_record_label: not implemented" -msgstr "debug_record_label: ÎÅ ×ÙÐÏÌÎÅÎ" - -#: debug.c:1179 -msgid "debug_record_variable: no current file" -msgstr "debug_record_variable: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" - -#: debug.c:1762 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "debug_make_undefined_type: ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ" - -#: debug.c:1963 -msgid "debug_name_type: no current file" -msgstr "debug_name_type: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" - -#: debug.c:2011 -msgid "debug_tag_type: no current file" -msgstr "debug_tag_type: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" - -#: debug.c:2019 -msgid "debug_tag_type: extra tag attempted" -msgstr "debug_tag_type: ÏÐÒÏÂÏ×ÁÎ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ÔÜÇ" - -#: debug.c:2058 -#, c-format -msgid "Warning: changing type size from %d to %d\n" -msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÉÚÍÅÎÑÅÔÓÑ ÒÁÚÍÅÒ ÔÉÐÁ Ó %d ÎÁ %d\n" - -#: debug.c:2082 -msgid "debug_find_named_type: no current compilation unit" -msgstr "debug_find_named_type: ÎÅÔ ÔÅËÕÝÅÇÏ ÍÏÄÕÌÑ ËÏÍÐÉÌÑÃÉÉ" - -#: debug.c:2189 -#, 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:812 dlltool.c:837 dlltool.c:863 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÍÁÛÉÎÙ: %d" - -#: dlltool.c:900 -#, c-format -msgid "Can't open def file: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ def: %s" - -#: dlltool.c:905 -#, c-format -msgid "Processing def file: %s" -msgstr "ïÂÒÁÂÁÔÙ×ÁÅÔÓÑ ÆÁÊÌ def: %s" - -#: dlltool.c:909 -msgid "Processed def file" -msgstr "ïÂÒÁÂÏÔÁÎ ÆÁÊÌ def" - -#: dlltool.c:935 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "ïÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ × ÆÁÊÌÅ def %s:%d" - -#: dlltool.c:974 -#, c-format -msgid "NAME: %s base: %x" -msgstr "NAME: %s base: %x" - -#: dlltool.c:977 dlltool.c:996 -msgid "Can't have LIBRARY and NAME" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÍÅÔØ LIBRARY É NAME" - -#: dlltool.c:993 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "LIBRARY: %s base: %x" - -#: dlltool.c:1251 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "ÏÖÉÄÁÎÉÅ: %s" - -#: dlltool.c:1256 dllwrap.c:430 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "ÐÏÄÐÒÏÃÅÓÓ ÐÏÌÕÞÉÌ ÆÁÔÁÌØÎÙÊ ÓÉÇÎÁÌ %d" - -#: dlltool.c:1262 dllwrap.c:437 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s ÚÁ×ÅÒÛÅÎ ÓÏ ÓÔÁÔÕÓÏÍ %d" - -#: dlltool.c:1294 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "÷ÓÁÓÙ×ÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÒÁÚÄÅÌÁ %s × %s" - -#: dlltool.c:1423 -#, c-format -msgid "Excluding symbol: %s" -msgstr "óÉÍ×ÏÌ ÉÓËÌÀÞÅÎÉÑ: %s" - -#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015 -#, c-format -msgid "%s: no symbols" -msgstr "%s: ÎÅÔ ÓÉÍ×ÏÌÏ×" - -#. FIXME: we ought to read in and block out the base relocations. -#: dlltool.c:1556 -#, c-format -msgid "Done reading %s" -msgstr "þÔÅÎÉÅ ×ÙÐÏÌÎÅÎÏ %s" - -#: dlltool.c:1567 -#, c-format -msgid "Unable to open object file: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÏÂßÅËÔÎÙÊ ÆÁÊÌ: %s" - -#: dlltool.c:1570 -#, c-format -msgid "Scanning object file %s" -msgstr "óËÁÎÉÒÕÅÔÓÑ ÏÂßÅËÔÎÙÊ ÆÁÊÌ %s" - -#: dlltool.c:1585 -#, c-format -msgid "Cannot produce mcore-elf dll from archive file: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÆÏÒÍÉÒÏ×ÁÔØ mcore-elf dll ÉÚ ÆÁÊÌÁ ÁÒÈÉ×Á: %s" - -#: dlltool.c:1677 -msgid "Adding exports to output file" -msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÑÀÔÓÑ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ" - -#: dlltool.c:1724 -msgid "Added exports to output file" -msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÅÎÙ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ" - -#: dlltool.c:1848 -#, c-format -msgid "Generating export file: %s" -msgstr "çÅÎÅÒÉÒÕÅÔÓÑ ÆÁÊÌ ÜËÓÐÏÒÔÁ: %s" - -#: dlltool.c:1853 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ ÁÓÓÅÍÂÌÅÒÁ: %s" - -#: dlltool.c:1856 -#, c-format -msgid "Opened temporary file: %s" -msgstr "ïÔËÒÙÔÙÊ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s" - -#: dlltool.c:2086 -msgid "Generated exports file" -msgstr "óÇÅÎÅÒÉÒÏ×ÁÎ ÆÁÊÌ ÜËÓÐÏÒÔÁ" - -#: dlltool.c:2378 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "bfd_open ÎÅ ÓÍÏÇ ÏÔËÒÙÔØ ÆÁÊÌ stub: %s" - -#: dlltool.c:2381 -#, c-format -msgid "Creating stub file: %s" -msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ stub: %s" - -#: dlltool.c:2766 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ÇÏÌÏ×ÎÏÇÏ ÆÁÊÌÁ: %s" - -#: dlltool.c:2825 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ËÏÎÅÞÎÏÇÏ ÆÁÊÌÁ: %s" - -#: dlltool.c:2892 -#, c-format -msgid "Can't open .lib file: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ .lib: %s" - -#: dlltool.c:2895 -#, c-format -msgid "Creating library file: %s" -msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ ÂÉÂÌÉÏÔÅËÉ: %s" - -#: dlltool.c:2951 -#, c-format -msgid "cannot delete %s: %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s: %s" - -#: dlltool.c:2955 -msgid "Created lib file" -msgstr "óÏÚÄÁÎ lib-ÆÁÊÌ" - -#: dlltool.c:3062 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÐÒÏÐÕÓËÁÅÔÓÑ ÐÏ×ÔÏÒÑÀÝÉÊÓÑ EXPORT %s %d,%d" - -#: dlltool.c:3068 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "ïÛÉÂËÁ, EXPORT ÐÏ×ÔÏÒÑÅÔÓÑ Ó ÐÏÒÑÄËÏ×ÙÍÉ ÞÉÓÌÉÔÅÌØÎÙÍÉ: %s" - -#: dlltool.c:3191 -msgid "Processing definitions" -msgstr "ïÂÒÁÂÁÔÙ×ÁÀÔÓÑ ÏÐÉÓÁÎÉÑ" - -#: dlltool.c:3223 -msgid "Processed definitions" -msgstr "ïÐÉÓÁÎÉÑ ÏÂÒÁÂÏÔÁÎÙ" - -#. xgetext:c-format -#: dlltool.c:3234 dllwrap.c:495 -#, c-format -msgid "Usage %s \n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ %s <ÏÐÃÉÉ> <ÏÂßÅËÔÎÙÅ_ÆÁÊÌÙ>\n" - -#. xgetext:c-format -#: dlltool.c:3236 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine <ÍÁÛÉÎÁ> óÏÚÄÁÎÉÅ ËÁË DLL ÄÌÑ <ÍÁÛÉÎÙ>. [ÐÏ ÕÍÏÌÞÁÎÉÀ: %s]\n" - -#: dlltool.c:3237 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " ×ÏÚÍÏÖÎÏ <ÍÁÛÉÎÁ>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -#: dlltool.c:3238 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n" - -#: dlltool.c:3239 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÎÔÅÒÆÅÊÓÁ.\n" - -#: dlltool.c:3240 -msgid " -a --add-indirect Add dll indirects to export file.\n" -msgstr " -a --add-indirect äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n" - -#: dlltool.c:3241 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname <ÉÍÑ> éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ÂÉÂÌÉÏÔÅËÕ ÉÎÔÅÒÆÅÊÓÁ.\n" - -#: dlltool.c:3242 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def éÍÑ ÆÁÊÌÁ .def ÄÌÑ ÓÞÉÔÙ×ÁÎÉÑ.\n" - -#: dlltool.c:3243 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def éÍÑ ÓÏÚÄÁ×ÁÅÍÏÇÏ ÆÁÊÌÁ .def.\n" - -#: dlltool.c:3244 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n" - -#: dlltool.c:3245 -msgid " --no-export-all-symbols Only export listed symbols\n" -msgstr " --no-export-all-symbols üËÓÐÏÒÔ ÔÏÌØËÏ ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" - -#: dlltool.c:3246 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols <ÓÐÉÓÏË> îÅ ÜËÓÐÏÒÔÉÒÏ×ÁÔØ <ÓÐÉÓÏË>\n" - -#: dlltool.c:3247 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr " --no-default-excludes ïÞÉÓÔËÁ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n" - -#: dlltool.c:3248 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n" - -#: dlltool.c:3249 -msgid " -x --no-idata4 Don't generate idata$4 section.\n" -msgstr " -x --no-idata4 îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n" - -#: dlltool.c:3250 -msgid " -c --no-idata5 Don't generate idata$5 section.\n" -msgstr " -c --no-idata5 îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n" - -#: dlltool.c:3251 -msgid " -U --add-underscore Add underscores to symbols in interface library.\n" -msgstr " -U --add-underscore äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ Ë ÓÉÍ×ÏÌÁÍ × ÂÉÂÌÉÏÔÅËÅ ÉÎÔÅÒÆÅÊÓÁ.\n" - -#: dlltool.c:3252 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at õÄÁÌÅÎÉÅ @ ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n" - -#: dlltool.c:3253 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @.\n" - -#: dlltool.c:3254 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as <ÉÍÑ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ.\n" - -#: dlltool.c:3255 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags <ÆÌÁÇÉ> ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> × ÁÓÓÅÍÂÌÅÒ.\n" - -#: dlltool.c:3256 -msgid " -C --compat-implib Create backward compatible import library.\n" -msgstr " -C --compat-implib óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÍÐÏÒÔÁ Ó ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔØÀ.\n" - -#: dlltool.c:3257 -msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" -msgstr " -n --no-delete ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ (ÐÏ×ÔÏÒ ÄÌÑ ÄÏÐ. ÚÁÝÉÔÙ).\n" - -#: dlltool.c:3258 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ.\n" - -#: dlltool.c:3259 -msgid " -V --version Display the program version.\n" -msgstr " -V --version ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ.\n" - -#: dlltool.c:3260 -msgid " -h --help Display this information.\n" -msgstr " -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n" - -#: dlltool.c:3262 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf <×ÙÈ_ÉÍÑ> ïÂÒÁÂÏÔËÁ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ mcore-elf × <×ÙÈ_ÉÍÑ>.\n" - -#: dlltool.c:3263 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker <ÉÍÑ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> × ËÁÞÅÓÔ×Å ËÏÍÐÏÎÏ×ÝÉËÁ.\n" - -#: dlltool.c:3264 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags <ÆÌÁÇÉ> ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> ËÏÍÐÏÎÏ×ÝÉËÕ.\n" - -#: dlltool.c:3418 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ base-ÆÁÊÌ: %s" - -#: dlltool.c:3450 -#, c-format -msgid "Machine '%s' not supported" -msgstr "íÁÛÉÎÁ '%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" - -#: dlltool.c:3553 dllwrap.c:214 -#, c-format -msgid "Tried file: %s" -msgstr "ïÐÒÏÂÏ×ÁÎÎÙÊ ÆÁÊÌ: %s" - -#: dlltool.c:3560 dllwrap.c:221 -#, c-format -msgid "Using file: %s" -msgstr "éÓÐÏÌØÚÕÅÔÓÑ ÆÁÊÌ: %s" - -#: dllwrap.c:308 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s" - -#: dllwrap.c:310 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s" - -#: dllwrap.c:324 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s" - -#: dllwrap.c:326 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s" - -#: 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 Synonym for --output-lib\n" -msgstr " --implib <×ÙÈ_ÉÍÑ> óÉÎÏÎÉÍ ÄÌÑ --output-lib\n" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr " ïÐÃÉÉ ÄÌÑ %s:\n" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name <ÄÒÁÊ×ÅÒ> úÎÁÞÅÎÉÑ ÄÌÑ \"gcc\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags <ÆÌÁÇÉ> ðÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÆÌÁÇÏ× ld ÐÏ ÕÍÏÌÞÁÎÉÀ\n" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name úÎÁÞÅÎÉÑ ÄÌÑ \"dlltool\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry <ÐÕÎËÔ> õËÁÚÁÎÉÅ ÁÌØÔÅÒÎÁÔÉ×ÎÏÊ ÔÏÞËÉ ×ÈÏÄÁ DLL\n" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr " --image-base õËÁÚÁÎÉÅ ÂÁÚÏ×ÏÇÏ ÁÄÒÅÓÁ ÏÂÒÁÚÁ\n" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target <ÍÁÛÉÎÁ> 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 \n" -msgstr " --machine <ÍÁÛÉÎÁ>\n" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n" - -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ×ÈÏÄÎÏÊ ÂÉÂÌÉÏÔÅËÉ.\n" - -#: dllwrap.c:514 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr " --add-indirect äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n" - -#: dllwrap.c:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname <ÉÍÑ> éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ×ÙÈÏÄÎÕÀ ÂÉÂÌÉÏÔÅËÕ.\n" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr " --def éÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr " --output-def éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ .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 Exclude from .def\n" -msgstr " --exclude-symbols <ÓÐÉÓÏË> éÓËÌÀÞÉÔØ <ÓÐÉÓÏË> ÉÚ .def\n" - -#: dllwrap.c:521 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes õÄÁÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n" - -#: dllwrap.c:522 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n" - -#: 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 @ from exported names\n" -msgstr " -k õÄÁÌÅÎÉÅ @ ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @\n" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr " --as <ÉÍÑ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ\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 "DRIVER ÉÍÑ : %s\n" - -#: dllwrap.c:995 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "DRIVER ÏÐÃÉÉ : %s\n" - -#: emul_aix.c:58 -#, c-format -msgid " [-g] - 32 bit small archive\n" -msgstr " [-g] - 32-ÂÉÔÎÙÊ ÍÁÌÅÎØËÉÊ ÁÒÈÉ×\n" - -#: emul_aix.c:59 -msgid " [-X32] - ignores 64 bit objects\n" -msgstr " [-X32] - ÐÒÏÐÕÓËÁÅÔ 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n" - -#: emul_aix.c:60 -msgid " [-X64] - ignores 32 bit objects\n" -msgstr " [-X64] - ÐÒÏÐÕÓËÁÅÔ 32-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n" - -#: emul_aix.c:61 -msgid " [-X32_64] - accepts 32 and 64 bit objects\n" -msgstr " [-X32_64] - ÄÏÐÕÓËÁÅÔ 32- É 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n" - -#: ieee.c:326 -msgid "unexpected end of debugging information" -msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÏËÏÎÞÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ" - -#: ieee.c:421 -msgid "invalid number" -msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ" - -#: ieee.c:480 -msgid "invalid string length" -msgstr "ÎÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ" - -#: ieee.c:537 ieee.c:578 -msgid "expression stack overflow" -msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ" - -#: ieee.c:557 -msgid "unsupported IEEE expression operator" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÏÐÅÒÁÔÏÒ ×ÙÒÁÖÅÎÉÑ IEEE" - -#: ieee.c:572 -msgid "unknown section" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÒÁÚÄÅÌ" - -#: ieee.c:593 -msgid "expression stack underflow" -msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ" - -#: ieee.c:607 -msgid "expression stack mismatch" -msgstr "ÎÅÓÏ×ÐÁÄÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ" - -#: ieee.c:646 -msgid "unknown builtin type" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ" - -#: ieee.c:791 -msgid "BCD float type not supported" -msgstr "ä×ÏÉÞÎÏ-ËÏÄÉÒÏ×ÁÎÎÙÊ ÄÅÓÑÔÉÞÎÙÊ ÔÉÐ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" - -#: ieee.c:937 -msgid "unexpected number" -msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÞÉÓÌÏ" - -#: ieee.c:944 -msgid "unexpected record type" -msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÍÂÉÎÉÒÏ×ÁÎÎÙÊ ÔÉÐ" - -#: ieee.c:977 -msgid "blocks left on stack at end" -msgstr "× ËÏÎÃÅ ÓÔÅËÁ ÏÓÔÁÌÉÓØ ÂÌÏËÉ" - -#: ieee.c:1242 -msgid "unknown BB type" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ BB" - -#: ieee.c:1251 -msgid "stack overflow" -msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ" - -#: ieee.c:1276 -msgid "stack underflow" -msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ" - -#: ieee.c:1390 ieee.c:1462 ieee.c:2161 -msgid "illegal variable index" -msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÐÅÒÅÍÅÎÎÏÊ" - -#: ieee.c:1440 -msgid "illegal type index" -msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÔÉÐÁ" - -#: ieee.c:1450 ieee.c:1487 -msgid "unknown TY code" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ËÏÄ TY" - -#: ieee.c:1469 -msgid "undefined variable in TY" -msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × TY" - -#. Pascal file name. FIXME. -#: ieee.c:1880 -msgid "Pascal file name not supported" -msgstr "éÍÑ ÆÁÊÌÁ Pascal ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" - -#: ieee.c:1928 -msgid "unsupported qualifier" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ËÌÁÓÓÉÆÉËÁÔÏÒ" - -#: ieee.c:2199 -msgid "undefined variable in ATN" -msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × ATN" - -#: ieee.c:2242 -msgid "unknown ATN type" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ATN" - -#. Reserved for FORTRAN common. -#: ieee.c:2364 -msgid "unsupported ATN11" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN11" - -#. We have no way to record this information. FIXME. -#: ieee.c:2391 -msgid "unsupported ATN12" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN12" - -#: ieee.c:2451 -msgid "unexpected string in C++ misc" -msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÓÔÒÏËÁ × C++ misc" - -#: ieee.c:2464 -msgid "bad misc record" -msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ misc" - -#: ieee.c:2507 -msgid "unrecognized C++ misc record" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ C++ ÚÁÐÉÓØ misc" - -#: ieee.c:2624 -msgid "undefined C++ object" -msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÙÊ ÏÂßÅËÔ C++" - -#: ieee.c:2658 -msgid "unrecognized C++ object spec" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++" - -#: ieee.c:2694 -msgid "unsupported C++ object type" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ ÏÂßÅËÔÁ C++" - -#: ieee.c:2704 -msgid "C++ base class not defined" -msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÏÐÒÅÄÅÌÅÎ" - -#: ieee.c:2716 ieee.c:2821 -msgid "C++ object has no fields" -msgstr "ÏÂßÅËÔ C++ ÎÅ ÉÍÅÅÔ ÐÏÌÅÊ" - -#: ieee.c:2735 -msgid "C++ base class not found in container" -msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÎÁÊÄÅÎ × ËÏÎÅÊÎÅÒÅ" - -#: ieee.c:2842 -msgid "C++ data member not found in container" -msgstr "ÜÌÅÍÅÎÔ ËÌÁÓÓÁ C++ ÎÅ ÎÁÊÄÅÎ × ËÏÎÔÅÊÎÅÒÅ" - -#: ieee.c:2883 ieee.c:3033 -msgid "unknown C++ visibility" -msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ×ÉÄÉÍÏÓÔØ C++" - -#: ieee.c:2917 -msgid "bad C++ field bit pos or size" -msgstr "ÎÅ×ÅÒÎÙÊ Ä×ÏÉÞÎÙÊ ÒÁÚÒÑÄ ÉÌÉ ÒÁÚÍÅÒ ÐÏÌÑ C++" - -#: ieee.c:3009 -msgid "bad type for C++ method function" -msgstr "ÎÅ×ÅÒÎÙÊ ÔÉÐ ÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++" - -#: ieee.c:3019 -msgid "no type information for C++ method function" -msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÉÐÅ ÄÌÑ ÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++" - -#: ieee.c:3058 -msgid "C++ static virtual method" -msgstr "ÓÔÁÔÉÞÅÓËÉÊ ×ÉÒÔÕÁÌØÎÙÊ ÍÅÔÏÄ C++" - -#: ieee.c:3153 -msgid "unrecognized C++ object overhead spec" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÌÕÖÅÂÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++" - -#: ieee.c:3192 -msgid "undefined C++ vtable" -msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ×ÉÒÔÕÁÌØÎÁÑ ÔÁÂÌÉÃÁ C++" - -#: ieee.c:3263 -msgid "C++ default values not in a function" -msgstr "ÚÎÁÞÅÎÉÑ C++ ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÅ × ÆÕÎËÃÉÉ" - -#: ieee.c:3303 -msgid "unrecognized C++ default type" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ C++ ÐÏ ÕÍÏÌÞÁÎÉÀ" - -#: ieee.c:3334 -msgid "reference parameter is not a pointer" -msgstr "ÓÓÙÌÏÞÎÙÊ ÐÁÒÁÍÅÔÒ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ" - -#: ieee.c:3419 -msgid "unrecognized C++ reference type" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÓÓÙÌÏÞÎÙÊ ÔÉÐ C++" - -#: ieee.c:3501 -msgid "C++ reference not found" -msgstr "ÓÓÙÌËÁ C++ ÎÅ ÎÁÊÄÅÎÁ" - -#: ieee.c:3509 -msgid "C++ reference is not pointer" -msgstr "ÓÓÙÌËÁ C++ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ" - -#: ieee.c:3538 ieee.c:3546 -msgid "missing required ASN" -msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ASN" - -#: ieee.c:3576 ieee.c:3584 -msgid "missing required ATN65" -msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ATN65" - -#: ieee.c:3598 -msgid "bad ATN65 record" -msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ ATN65" - -#: ieee.c:4286 -msgid "IEEE numeric overflow: 0x" -msgstr "ÞÉÓÌÏ×ÏÅ ÐÅÒÅÐÏÌÎÅÎÉÅ IEEE: 0x" - -#: ieee.c:4332 -#, c-format -msgid "IEEE string length overflow: %u\n" -msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÄÌÉÎÙ ÓÔÒÏËÉ IEEE: %u\n" - -#: ieee.c:5382 -#, c-format -msgid "IEEE unsupported integer type size %u\n" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÃÅÌÏÇÏ ÔÉÐÁ IEEE %u\n" - -#: ieee.c:5418 -#, c-format -msgid "IEEE unsupported float type size %u\n" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÔÉÐÁ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ IEEE %u\n" - -#: ieee.c:5454 -#, c-format -msgid "IEEE unsupported complex type size %u\n" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ËÏÍÐÌÅËÓÎÏÇÏ ÔÉÐÁ IEEE%u\n" - -#: nlmconv.c:282 srconv.c:2043 -msgid "input and output files must be different" -msgstr "×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÚÌÉÞÎÙÍÉ" - -#: nlmconv.c:329 -msgid "input file named both on command line and with INPUT" -msgstr "×ÈÏÄÎÏÊ ÆÁÊÌ ÎÁÚ×ÁÎ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ É × INPUT" - -#: nlmconv.c:338 -msgid "no input file" -msgstr "ÎÅÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ" - -#: nlmconv.c:368 -msgid "no name for output file" -msgstr "ÎÅÔ ÉÍÅÎÉ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ" - -#: nlmconv.c:382 -msgid "warning: input and output formats are not compatible" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ ÎÅ ÓÏ×ÍÅÓÔÉÍÙ" - -#: nlmconv.c:411 -msgid "make .bss section" -msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .bss" - -#: nlmconv.c:420 -msgid "make .nlmsections section" -msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .nlmsections" - -#: nlmconv.c:422 -msgid "set .nlmsections flags" -msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× .nlmsections" - -#: nlmconv.c:450 -msgid "set .bss vma" -msgstr "ÕÓÔÁÎÏ×ËÁ .bss vma" - -#: nlmconv.c:457 -msgid "set .data size" -msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .data" - -#: nlmconv.c:637 -#, c-format -msgid "warning: symbol %s imported but not in import list" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÉÍ×ÏÌ %s ÉÍÐÏÒÔÉÒÏ×ÁÎ, ÎÏ ÅÇÏ ÎÅÔ × ÓÐÉÓËÅ ÉÍÐÏÒÔÁ" - -#: nlmconv.c:657 -msgid "set start address" -msgstr "ÕÓÔÁÎÏ×ËÁ ÎÁÞÁÌØÎÏÇÏ ÁÄÒÅÓÁ" - -#: nlmconv.c:706 -#, c-format -msgid "warning: START procedure %s not defined" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: START-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ" - -#: nlmconv.c:708 -#, c-format -msgid "warning: EXIT procedure %s not defined" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: EXIT-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ" - -#: nlmconv.c:710 -#, c-format -msgid "warning: CHECK procedure %s not defined" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: CHECK-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ" - -#: nlmconv.c:731 nlmconv.c:920 -msgid "custom section" -msgstr "ÒÁÚÄÅÌ custom" - -#: nlmconv.c:752 nlmconv.c:949 -msgid "help section" -msgstr "ÒÁÚÄÅÌ help" - -#: nlmconv.c:774 nlmconv.c:967 -msgid "message section" -msgstr "ÒÁÚÄÅÌ message" - -#: nlmconv.c:790 nlmconv.c:1000 -msgid "module section" -msgstr "ÒÁÚÄÅÌ module" - -#: nlmconv.c:810 nlmconv.c:1016 -msgid "rpc section" -msgstr "ÒÁÚÄÅÌ rpc" - -#. 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: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÅ ÂÉÂÌÉÏÔÅËÉ ÎÅ ÍÏÇÕÔ ÉÍÅÔØ ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ" - -#: nlmconv.c:867 nlmconv.c:1035 -msgid "shared section" -msgstr "ÒÁÚÄÅÌ shared" - -#: nlmconv.c:875 -msgid "warning: No version number given" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅ ÕËÁÚÁÎ ÎÏÍÅÒ ×ÅÒÓÉÉ" - -#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030 -#, c-format -msgid "%s: read: %s" -msgstr "%s: ÞÔÅÎÉÅ: %s" - -#: nlmconv.c:937 -msgid "warning: MAP and FULLMAP are not supported; try ld -M" -msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: MAP É FULLMAP ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ; ÐÏÐÒÏÂÕÊÔÅ ld -M" - -#: nlmconv.c:1109 -#, c-format -msgid "Usage: %s [option(s)] [in-file [out-file]]\n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [in-ÆÁÊÌ [out-ÆÁÊÌ]]\n" - -#: nlmconv.c:1110 -msgid " Convert an object file into a NetWare Loadable Module\n" -msgstr " ëÏÎ×ÅÒÔÉÒÕÅÔ ÏÂßÅËÔÎÙÊ ÆÁÊÌ × ÚÁÇÒÕÖÁÅÍÙÊ ÍÏÄÕÌØ ÓÉÓÔÅÍÙ NetWare\n" - -#: nlmconv.c:1111 -msgid "" -" The options are:\n" -" -I --input-target= Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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= õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" -" -O --output-target= õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÙÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" -" -T --header-file=<ÆÁÊÌ> þÔÅÎÉÅ <ÆÁÊÌÁ> Ó ÉÎÆÏÒÍÁÃÉÅÊ ÚÁÇÏÌÏ×ËÁ NLM\n" -" -l --linker=<ËÏÍÐÏÎÏ×ÝÉË> éÓÐÏÌØÚÏ×ÁÎÉÅ <ËÏÍÐÏÎÏ×ÝÉËÁ> ÄÌÑ ÌÀÂÏÇÏ Ó×ÑÚÙ×ÁÎÉÑ\n" -" -d --debug ÷Ù×ÏÄ ÎÁ stderr ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ËÏÍÐÏÎÏ×ÝÉËÁ\n" -" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" -" -v --version ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" - -#: nlmconv.c:1153 -#, c-format -msgid "support not compiled in for %s" -msgstr "ÏÔËÏÍÐÉÌÉÒÏ×ÁÎ ÂÅÚ ÐÏÄÄÅÒÖËÉ %s" - -#: nlmconv.c:1193 -msgid "make section" -msgstr "ÒÁÚÄÅÌ make" - -#: nlmconv.c:1207 -msgid "set section size" -msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ ÒÁÚÄÅÌÁ" - -#: nlmconv.c:1213 -msgid "set section alignment" -msgstr "ÕÓÔÁÎÏ×ËÁ ÏÒÉÅÎÔÁÃÉÉ ÒÁÚÄÅÌÁ" - -#: nlmconv.c:1217 -msgid "set section flags" -msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× ÒÁÚÄÅÌÁ" - -#: nlmconv.c:1228 -msgid "set .nlmsections size" -msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .nlmsections" - -#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 -msgid "set .nlmsection contents" -msgstr "ÕÓÔÁÎÏ×ËÁ ÓÏÄÅÒÖÉÍÏÇÏ .nlmsections" - -#: nlmconv.c:1839 -msgid "stub section sizes" -msgstr "ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÁ ÚÁÇÌÕÛËÉ" - -#: nlmconv.c:1888 -msgid "writing stub" -msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ ÚÁÇÌÕÛËÁ" - -#: nlmconv.c:1977 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÏÅ ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÅÒÅÍÅÝÅÎÉÅ ÐÏ ÓÞÅÔÞÉËÕ ËÏÍÁÎÄ × %s" - -#: nlmconv.c:2041 -#, c-format -msgid "overflow when adjusting relocation against %s" -msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÐÒÉ ÒÅÇÕÌÉÒÏ×ËÅ ÐÅÒÅÍÅÝÅÎÉÑ × %s" - -#: nlmconv.c:2158 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "%s: ×ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: " - -#: nlmconv.c:2173 -#, c-format -msgid "Execution of %s failed" -msgstr "÷ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ" - -#: nm.c:283 size.c:85 strings.c:657 -#, c-format -msgid "Usage: %s [option(s)] [file(s)]\n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÆÁÊÌ(Ù)]\n" - -#: nm.c:284 -msgid " List symbols in [file(s)] (a.out by default).\n" -msgstr " ÷Ù×ÏÄÉÔ ÓÐÉÓÏË ÓÉÍ×ÏÌÏ× × [ÆÁÊÌ(Ù)] (ÐÏ ÕÍÏÌÞÁÎÉÀ × a.out).\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 "" -" ïÐÃÉÉ:\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'. ðÏ ÕÍÏÌÞÁÎÉÀ `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" -" -S, --print-size ÷Ù×ÏÄ ÒÁÚÍÅÒÁ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" -" -s, --print-armap ÷ËÌÀÞÅÎÉÅ ÉÎÄÅËÓÁ ÄÌÑ ÓÉÍ×ÏÌÏ× ÉÚ ÞÌÅÎÏ× ÁÒÈÉ×Á\n" -" --size-sort óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÒÁÚÍÅÒÕ\n" -" -t, --radix=RADIX éÓÐÏÌØÚÏ×ÁÎÉÅ RADIX ÄÌÑ ×Ù×ÏÄÁ ÚÎÁÞÅÎÉÊ ÓÉÍ×ÏÌÏ×\n" -" --target=BFD-éíñ õËÁÚÁÎÉÅ ÃÅÌÅ×ÏÇÏ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n" -" -u, --undefined-only ÷Ù×ÏÄ ÔÏÌØËÏ ÎÅ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" -" -X 32_64 (ÐÒÏÐÕÝÅÎÁ)\n" -" -h, --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" -" -V, --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" -"\n" - -#: nm.c:319 objdump.c:250 -#, c-format -msgid "Report bugs to %s.\n" -msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n" - -#: nm.c:352 -#, c-format -msgid "%s: invalid radix" -msgstr "%s: ÎÅ×ÅÒÎÙÊ radix" - -#: nm.c:377 -#, c-format -msgid "%s: invalid output format" -msgstr "%s: ÎÅ×ÅÒÎÙÊ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ" - -#: nm.c:494 -msgid "Only -X 32_64 is supported" -msgstr "ðÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ -X 32_64" - -#: nm.c:514 -msgid "Using the --size-sort and --undefined-only options together" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÍÅÓÔÅ ÏÐÃÉÊ --size-sort É --undefined-only" - -#: nm.c:515 -msgid "will produce no output, since undefined symbols have no size." -msgstr "ÎÅ ÄÁÓÔ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ, Ô.Ë. ÎÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÎÅ ÉÍÅÀÔ ÒÁÚÍÅÒÁ." - -#: nm.c:543 -#, c-format -msgid "data size %ld" -msgstr "ÒÁÚÍÅÒ ÄÁÎÎÙÈ %ld" - -#: nm.c:568 readelf.c:5809 readelf.c:5845 -#, c-format -msgid ": %d" -msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ>: %d" - -#: nm.c:570 readelf.c:5811 readelf.c:5857 -#, c-format -msgid ": %d" -msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó>: %d" - -#: nm.c:572 readelf.c:5813 readelf.c:5860 -#, c-format -msgid ": %d" -msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %d" - -#: nm.c:1376 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s:\n" -"\n" - -#: nm.c:1378 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"óÉÍ×ÏÌÙ ÉÚ %s:\n" -"\n" - -#: nm.c:1380 nm.c:1438 -msgid "" -"Name Value Class Type Size Line Section\n" -"\n" -msgstr "" -"éÍÑ úÎÁÞ. ëÌÁÓÓ ôÉÐ òÁÚÍÅÒ óÔÒÏËÁ òÁÚÄÅÌ\n" -"\n" - -#: nm.c:1383 nm.c:1441 -msgid "" -"Name Value Class Type Size Line Section\n" -"\n" -msgstr "" -"éÍÑ úÎÁÞ. ëÌÁÓÓ ôÉÐ òÁÚÍÅÒ óÔÒÏËÁ òÁÚÄÅÌ\n" -"\n" - -#: nm.c:1434 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s[%s]:\n" -"\n" - -#: nm.c:1436 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"óÉÍ×ÏÌÙ ÉÚ %s[%s]:\n" -"\n" - -#: nm.c:1658 -msgid "" -"\n" -"Archive index:\n" -msgstr "" -"\n" -"éÎÄÅËÓ ÁÒÈÉ×Á:\n" - -#: objcopy.c:414 srconv.c:1952 -#, c-format -msgid "Usage: %s [option(s)] in-file [out-file]\n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ [out-ÆÁÊÌ]\n" - -#: objcopy.c:415 -msgid " Copies a binary file, possibly transforming it in the process\n" -msgstr " ëÏÐÉÒÕÅÔ Ä×ÏÉÞÎÙÊ ÆÁÊÌ, ×ÏÚÍÏÖÎÏ, ÐÒÅÏÂÒÁÚÏ×Ù×ÁÑ ÅÇÏ × ÐÒÏÃÅÓÓÅ\n" - -#: objcopy.c:416 objcopy.c:495 -msgid " The options are:\n" -msgstr " ïÐÃÉÉ:\n" - -#: objcopy.c:417 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" --add-gnu-debuglink= Add section .gnu_debuglink linking to \n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --redefine-syms --redefine-sym for all symbol pairs \n" -" listed in \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code Use alternate machine code for output\n" -" --prefix-symbols Add to start of every symbol name\n" -" --prefix-sections Add to start of every section name\n" -" --prefix-alloc-sections \n" -" Add 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 ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" -" -O --output-target óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" -" -B --binary-architecture <ÁÒÈ> õÓÔÁÎÏ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ, ËÏÇÄÁ ×ÈÏÄÎÏÊ ÆÁÊÌ Ä×ÏÉÞÎÙÊ\n" -" -F --target õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × \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" -" -K --keep-symbol <ÉÍÑ> ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n" -" -L --localize-symbol <ÉÍÑ> ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÞÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÌÏËÁÌØÎÙÊ\n" -" -G --keep-global-symbol <ÉÍÑ> ìÏËÁÌÉÚÏ×ÁÔØ ×ÓÅ ÓÉÍ×ÏÌÙ ËÒÏÍÅ <ÉÍÑ>\n" -" -W --weaken-symbol <ÉÍÑ> ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÓÌÁÂÙÊ\n" -" --weaken ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ ËÁË ÓÌÁÂÙÅ\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" -" --redefine-sym <ÓÔÁÒ>=<ÎÏ×> ðÅÒÅÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÓÉÍ×ÏÌÁ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n" -" --redefine-syms <ÆÁÊÌ> --redefine-sym ÄÌÑ ×ÓÅÈ ÐÁÒ ÓÉÍ×ÏÌÏ×,\n" -" ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" -" --srec-len <ÞÉÓÌÏ> ïÇÒÁÎÉÞÉÔØ ÄÌÉÎÕ ÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ\n" -" --srec-forceS3 ïÇÒÁÎÉÞÉÔØ ÔÉÐ ÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ ÄÏ S3\n" -" --strip-symbols <ÆÁÊÌ> -N ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" -" --keep-symbols <ÆÁÊÌ> -K ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" -" --localize-symbols <ÆÁÊÌ> -L ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" -" --keep-global-symbols <ÆÁÊÌ> -G ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" -" --weaken-symbols <ÆÁÊÌ> -W ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" -" --alt-machine-code <ÉÎÄÅËÓ> éÓÐÏÌØÚÏ×ÁÔØ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ ÄÌÑ ×Ù×ÏÄÁ\n" -" --prefix-symbols <ÐÒÅÆÉËÓ> äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n" -" --prefix-sections <ÐÒÅÆÉËÓ> äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÒÁÚÄÅÌÁ\n" -" --prefix-alloc-sections <ÐÒÅÆÉËÓ>\n" -" äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ\n" -" ÎÁÚÎÁÞÁÅÍÏÇÏ ÒÁÚÄÅÌÁ\n" -" -v --verbose ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n" -" -V --version ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" -" -h --help ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n" -" --info ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n" - -#: objcopy.c:493 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> in-ÆÁÊÌ(Ù)\n" - -#: objcopy.c:494 -msgid " Removes symbols and sections from files\n" -msgstr " õÄÁÌÑÅÔ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ ÉÚ ÆÁÊÌÏ×\n" - -#: objcopy.c:496 -msgid "" -" -I --input-target= Assume input file is in format \n" -" -O --output-target= Create an output file in format \n" -" -F --target= Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target= ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" -" -O --output-target= óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" -" -F --target= õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × \n" -" -p --preserve-dates ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n" -" -R --remove-section <ÉÍÑ> õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n" -" -s --strip-all õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n" -" -g -S -d --strip-debug õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n" -" --strip-unneeded õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n" -" -N --strip-symbol=<ÉÍÑ> îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n" -" -K --keep-symbol=<ÉÍÑ> ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n" -" -x --discard-all õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n" -" -X --discard-locals õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n" -" -v --verbose ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n" -" -V --version ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" -" -h --help ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n" -" --info ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n" -" -o <ÆÁÊÌ> ðÏÍÅÓÔÉÔØ ÇÏÌÙÅ ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ × <ÆÁÊÌ>\n" - -#: objcopy.c:567 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÆÌÁÇ ÒÁÚÄÅÌÁ `%s'" - -#: objcopy.c:568 -#, c-format -msgid "supported flags: %s" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÌÁÇÉ: %s" - -#: objcopy.c:645 objcopy.c:2526 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ stat: %s: %s" - -#: objcopy.c:652 objcopy.c:2544 -#, c-format -msgid "cannot open: %s: %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s: %s" - -#: objcopy.c:655 objcopy.c:2548 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ" - -#: objcopy.c:728 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÍÕÓÏÒ, ÎÁÊÄÅÎÎÙÊ × ÓÔÒÏËÅ %d ÉÚ %s" - -#: objcopy.c:979 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: íÎÏÇÏËÒÁÔÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ \"%s\"" - -#: objcopy.c:983 -#, c-format -msgid "%s: Symbol \"%s\" is target of more than one redefinition" -msgstr "%s: óÉÍ×ÏÌ \"%s\" Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ ÂÏÌÅÅ, ÞÅÍ ÏÄÎÏÇÏ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ" - -#: objcopy.c:1010 -#, c-format -msgid "couldn't open symbol redefinition file %s (error: %s)" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÁ %s (ÏÛÉÂËÁ: %s)" - -#: objcopy.c:1088 -#, c-format -msgid "%s: garbage at end of line %d" -msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ÓÔÒÏËÉ %d" - -#: objcopy.c:1091 -#, c-format -msgid "%s: missing new symbol name at line %d" -msgstr "%s: ÏÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÎÏ×ÏÇÏ ÓÉÍ×ÏÌÁ × ÓÔÒÏËÅ %d" - -#: objcopy.c:1101 -#, c-format -msgid "%s: premature end of file at line %d" -msgstr "%s: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ × ÓÔÒÏËÅ %d" - -#: objcopy.c:1147 -msgid "Unable to change endianness of input file(s)" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ endianness ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ" - -#: objcopy.c:1155 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ %s(%s) × %s(%s)\n" - -#: objcopy.c:1182 -#, 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:1304 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔÏË ÐÏÓÌÅ %s: %s" - -#: objcopy.c:1329 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÚÁÐÏÌÎÅÎÉÅ × %s: %s" - -#: objcopy.c:1485 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: ÏÛÉÂËÁ ËÏÐÉÒÏ×ÁÎÉÑ ÞÁÓÔÎÙÈ ÄÁÎÎÙÈ BFD: %s" - -#: objcopy.c:1498 -msgid "unknown alternate machine code, ignored" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ, ÐÒÏÐÕÝÅÎ" - -#: objcopy.c:1531 objcopy.c:1561 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ mkdir %s ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÁÒÈÉ×Á (ÏÛÉÂËÁ: %s)" - -#: objcopy.c:1749 -#, c-format -msgid "Multiple renames of section %s" -msgstr "íÎÏÇÏËÒÁÔÎÙÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÒÁÚÄÅÌÁ %s" - -#: objcopy.c:1840 -msgid "making" -msgstr "ÓÏÚÄÁÅÔÓÑ" - -#: objcopy.c:1849 -msgid "size" -msgstr "ÒÁÚÍÅÒ" - -#: objcopy.c:1863 -msgid "vma" -msgstr "vma" - -#: objcopy.c:1888 -msgid "alignment" -msgstr "ÏÒÉÅÎÔÁÃÉÑ" - -#: objcopy.c:1896 -msgid "flags" -msgstr "ÆÌÁÇÉ" - -#: objcopy.c:1918 -msgid "private data" -msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ" - -#: objcopy.c:1926 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: ÒÁÚÄÅÌ `%s': ÏÛÉÂËÁ × %s: %s" - -#: objcopy.c:2199 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÔÌÁÄÏÞÎÙÊ ÒÁÚÄÅÌ: %s" - -#: objcopy.c:2214 -#, c-format -msgid "%s: can't set debugging section contents: %s" -msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÏÔÌÁÄÏÞÎÏÇÏ ÒÁÚÄÅÌÁ: %s" - -#: objcopy.c:2223 -#, c-format -msgid "%s: don't know how to write debugging information for %s" -msgstr "%s: ÎÅ ÉÚ×ÅÓÔÎÏ, ËÁË ÚÁÐÉÓÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ %s" - -#: objcopy.c:2346 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ stat: %s" - -#: objcopy.c:2400 -msgid "byte number must be non-negative" -msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅÎ ÂÙÔØ ÎÅÏÔÒÉÃÁÔÅÌØÎÙÍ" - -#: objcopy.c:2410 -msgid "interleave must be positive" -msgstr "ÞÅÒÅÄÏ×ÁÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ" - -#: objcopy.c:2430 objcopy.c:2438 -#, c-format -msgid "%s both copied and removed" -msgstr "ÏÂÁ %s ÓËÏÐÉÒÏ×ÁÎÙ É ÕÄÁÌÅÎÙ" - -#: 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 "ÐÌÏÈÏÊ ÆÏÒÍÁÔ ÄÌÑ %s" - -#: objcopy.c:2662 -#, c-format -msgid "Warning: truncating gap-fill from 0x%s to 0x%x" -msgstr "ðÒÅÄÕÐÒÅÖÅÄÎÉÅ: ÏÂÒÅÚÁÅÔÓÑ ÚÁÐÏÌÎÅÎÉÅ ÐÒÏÍÅÖÕÔËÁ ÏÔ 0x%s ÄÏ 0x%x" - -#: objcopy.c:2818 -msgid "alternate machine code index must be positive" -msgstr "ÉÎÄÅËÓ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÍÁÛÉÎÙ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ" - -#: objcopy.c:2856 -msgid "byte number must be less than interleave" -msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅÎ ÂÙÔØ ÍÅÎØÛÅ ÞÅÒÅÄÏ×ÁÎÉÑ" - -#: objcopy.c:2883 -#, c-format -msgid "architecture %s unknown" -msgstr "ÁÒÈÉÔÅËÔÕÒÁ %s ÎÅ ÉÚ×ÅÓÔÎÁ" - -#: objcopy.c:2887 -msgid "Warning: input target 'binary' required for binary architecture parameter." -msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: 'Ä×ÏÉÞÎÙÊ' ÃÅÌÅ×ÏÊ ×ÈÏÄÎÏÊ ÆÁÊÌ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÁÒÁÍÅÔÒÁ Ä×ÏÉÞÎÏÊ ÁÒÈÉÔÅËÔÕÒÙ." - -#: objcopy.c:2888 -#, c-format -msgid " Argument %s ignored" -msgstr " áÒÇÕÍÅÎÔ %s ÐÒÏÐÕÝÅÎ" - -#: objcopy.c:2894 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ stat: %s: %s" - -#: objcopy.c:2934 objcopy.c:2948 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s %s%c0x%s ÎÉËÏÇÄÁ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ" - -#: objdump.c:197 -#, c-format -msgid "Usage: %s \n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> <ÆÁÊÌ(Ù)>\n" - -#: objdump.c:198 -msgid " Display information from object .\n" -msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÏÂßÅËÔÁ <ÆÁÊÌ(Ù)>.\n" - -#: objdump.c:199 -msgid " At least one of the following switches must be given:\n" -msgstr " äÏÌÖÅÎ ÂÙÔØ ÕËÁÚÁÎ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ ËÌÀÞÅÊ:\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 ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\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:222 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" -"\n" -" óÌÅÄÕÀÝÉÅ ËÌÀÞÉ Ñ×ÌÑÀÔÓÑ ÏÐÃÉÏÎÁÌØÎÙÍÉ:\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=BFD-éíñ õËÁÚÁÔØ ÃÅÌÅ×ÏÊ ÆÏÒÍÁÔ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n" -" -m, --architecture=íáûéîá õËÁÚÁÔØ ÃÅÌÅ×ÕÀ ÁÒÈÉÔÅËÔÕÒÕ ËÁË íáûéîá\n" -" -j, --section=éíñ ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÔÏÌØËÏ ÄÌÑ ÒÁÚÄÅÌÁ éíñ\n" -" -M, --disassembler-options=OPT ðÅÒÅÄÁÔØ ÔÅËÓÔ OPT × ÄÉÚÁÓÓÅÍÂÌÅÒ\n" -" -EB --endian=big ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ big endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" -" -EL --endian=little ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ little endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" -" --file-start-context ÷ËÌÀÞÉÔØ ËÏÎÔÅËÓÔ ÉÚ ÎÁÞÁÌÁ ÆÁÊÌÁ (Ó -S)\n" -" -l, --line-numbers ÷ËÌÀÞÉÔØ ÎÏÍÅÒÁ ÓÔÒÏË É ÉÍÅÎÁ ÆÁÊÌÏ× ÎÁ ×Ù×ÏÄÅ\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" -" --adjust-vma=óíåýåîéå äÏÂÁ×ÉÔØ óíåýåîéå ËÏ ×ÓÅÍ ÁÄÒÅÓÁÍ ×Ù×ÏÄÉÍÙÈ ÒÁÚÄÅÌÏ×\n" -"\n" - -#: objdump.c:391 -msgid "Sections:\n" -msgstr "òÁÚÄÅÌÙ:\n" - -#: objdump.c:394 objdump.c:398 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "éÎÄ éÍÑ òÁÚÍÅÒ VMA LMA æÁÊÌ ÷ÙÒÁ×" - -#: objdump.c:400 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "éÎÄ éÍÑ òÁÚÍÅÒ VMA LMA æÁÊÌ ÷ÙÒÁ×" - -#: objdump.c:404 -msgid " Flags" -msgstr " æÌÁÇÉ" - -#: objdump.c:406 -msgid " Pg" -msgstr " óÔÒ" - -#: objdump.c:451 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: ÎÅ ÄÉÎÁÍÉÞÅÓËÉÊ ÏÂßÅËÔ" - -#: objdump.c:1144 -msgid "Out of virtual memory" -msgstr "îÅÈ×ÁÔËÁ ×ÉÒÔÕÁÌØÎÏÊ ÐÁÍÑÔÉ" - -#: objdump.c:1574 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÅÄÓÔÁ×ÌÅÎÎÕÀ ÍÁÛÉÎÕ %s" - -#: objdump.c:1592 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ %s\n" - -#: objdump.c:1682 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "äÉÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÒÁÚÄÅÌÁ %s:\n" - -#: objdump.c:1847 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" -"òÁÚÄÅÌ %s ÏÔÓÕÔÓÔ×ÕÅÔ\n" -"\n" - -#: objdump.c:1854 -#, c-format -msgid "%s has no %s section" -msgstr "%s ÎÅ ÉÍÅÅÔ ÒÁÚÄÅÌÁ %s" - -#: objdump.c:1868 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s" - -#: objdump.c:1880 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s\n" - -#: objdump.c:1923 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" -"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n" -"\n" - -#: objdump.c:2021 -#, c-format -msgid "architecture: %s, " -msgstr "ÁÒÈÉÔÅËÔÕÒÁ: %s, " - -#: objdump.c:2024 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "ÆÌÁÇÉ 0x%08x:\n" - -#: objdump.c:2038 -msgid "" -"\n" -"start address 0x" -msgstr "" -"\n" -"ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ 0x" - -#: objdump.c:2071 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" -"\n" -"%s: ÆÏÒÍÁÔ ÆÁÊÌÁ %s\n" - -#: objdump.c:2111 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: ×Ù×ÏÄ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ" - -#: objdump.c:2190 -#, c-format -msgid "In archive %s:\n" -msgstr "÷ ÁÒÈÉ×Å %s:\n" - -#: objdump.c:2249 -#, c-format -msgid "Contents of section %s:\n" -msgstr "óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n" - -#: objdump.c:2369 -msgid "no symbols\n" -msgstr "ÎÅÔ ÓÉÍ×ÏÌÏ×\n" - -#: objdump.c:2718 -msgid "unrecognized -E option" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ -E" - -#: objdump.c:2729 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ --endian ÔÉÐ `%s'" - -#: rdcoff.c:206 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "parse_coff_type: ðÌÏÈÏÊ ËÏÄ ÔÉÐÁ 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 ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" - -#: rdcoff.c:440 rdcoff.c:751 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" - -#: rdcoff.c:818 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: .bf ÂÅÚ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÊ ÆÕÎËÃÉÉ" - -#: rdcoff.c:868 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "%ld: ÎÅÏÖÉÄÁÎÎÙÊ .ef\n" - -#: rddbg.c:91 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "%s: ÎÅÔ ÒÁÓÐÏÚÎÁÎÎÏÊ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ" - -#: rddbg.c:415 -msgid "Last stabs entries before error:\n" -msgstr "ðÏÓÌÅÄÎÉÅ ÐÕÎËÔÙ stabs ÐÅÒÅÄ ÏÛÉÂËÏÊ:\n" - -#: readelf.c:455 -#, c-format -msgid "%s: Error: " -msgstr "%s: ïÛÉÂËÁ: " - -#: readelf.c:466 -#, c-format -msgid "%s: Warning: " -msgstr "%s: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: " - -#: readelf.c:488 -#, c-format -msgid "Unable to seek to 0x%x for %s\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ 0x%x ÄÌÑ %s\n" - -#: readelf.c:499 -#, c-format -msgid "Out of memory allocating 0x%x bytes for %s\n" -msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÓÐÒÅÄÅÌÅÎÉÉ 0x%x ÂÁÊÔ ÄÌÑ %s\n" - -#: readelf.c:507 -#, c-format -msgid "Unable to read in 0x%x bytes of %s\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÕÞÉÔØ ÐÏÓÒÅÄÓÔ×ÏÍ ÞÔÅÎÉÑ 0x%x ÂÁÊÔ %s\n" - -#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "äÌÉÎÁ ÎÅÏÂÒÁÂÁÔÙ×ÁÅÍÙÈ ÄÁÎÎÙÈ: %d\n" - -#: readelf.c:924 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "îÅÉÚ×ÅÓÔÎÏ Ï ÐÅÒÅÍÅÝÅÎÉÑÈ ÄÌÑ ÜÔÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÍÁÛÉÎÙ\n" - -#: 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 -msgid "out of memory parsing relocs" -msgstr "ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÂÏÒÅ ÐÅÒÅÍÅÝÅÎÉÊ" - -#: readelf.c:1112 -msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ×. éÍÑ ÓÉÍ×ÏÌÁ + Addend\n" - -#: readelf.c:1114 -msgid " Offset Info Type Sym.Value Sym. Name + Addend\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ× éÍÑ ÓÉÍ×. + Addend\n" - -#: readelf.c:1119 -msgid " Offset Info Type Sym. Value Symbol's Name\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ× éÍÑ ÓÉÍ×ÏÌÁ\n" - -#: readelf.c:1121 -msgid " Offset Info Type Sym.Value Sym. Name\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ× éÍÑ ÓÉÍ×.\n" - -#: readelf.c:1129 -msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞÅÎÉÅ ÓÉÍ×. éÍÑ ÓÉÍ×ÏÌÁ + Addend\n" - -#: readelf.c:1131 -msgid " Offset Info Type Sym. Value Sym. Name + Addend\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ×. éÍÑ ÓÉÍ×. + Addend\n" - -#: readelf.c:1136 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞÅÎÉÅ ÓÉÍ×. éÍÑ ÓÉÍ×ÏÌÁ\n" - -#: readelf.c:1138 -msgid " Offset Info Type Sym. Value Sym. Name\n" -msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ×. éÍÑ ÓÉÍ×.\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 "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ: %-7lx" - -#: readelf.c:1466 -#, c-format -msgid "" -msgstr "<ÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË %3ld>" - -#: readelf.c:1743 -#, c-format -msgid "Processor Specific: %lx" -msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: %lx" - -#: readelf.c:1762 -#, c-format -msgid "Operating System specific: %lx" -msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ: %lx" - -#: readelf.c:1765 readelf.c:2417 -#, c-format -msgid ": %lx" -msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %lx" - -#: readelf.c:1779 -msgid "NONE (None)" -msgstr "îåô (îÅÔ)" - -#: readelf.c:1780 -msgid "REL (Relocatable file)" -msgstr "REL (ðÅÒÅÍÅÝÁÅÍÙÊ ÆÁÊÌ)" - -#: readelf.c:1781 -msgid "EXEC (Executable file)" -msgstr "EXEC (éÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ)" - -#: readelf.c:1782 -msgid "DYN (Shared object file)" -msgstr "DYN (óÏ×Í. ÉÓÐ. ÏÂßÅËÔÎÙÊ ÆÁÊÌ)" - -#: readelf.c:1783 -msgid "CORE (Core file)" -msgstr "CORE (ïÓÎÏ×ÎÏÊ ÆÁÊÌ)" - -#: readelf.c:1787 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: (%x)" - -#: readelf.c:1789 -#, c-format -msgid "OS Specific: (%x)" -msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó: (%x)" - -#: readelf.c:1791 readelf.c:1898 readelf.c:2574 -#, c-format -msgid ": %x" -msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %x" - -#: readelf.c:1804 -msgid "None" -msgstr "îÅÔ" - -#: readelf.c:2616 -msgid "Usage: readelf elf-file(s)\n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: readelf <ÏÐÃÉÉ> elf-ÆÁÊÌ(Ù)\n" - -#: readelf.c:2617 -msgid " Display information about the contents of ELF format files\n" -msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÄÅÒÖÉÍÏÍ ÆÁÊÌÏ× × ÆÏÒÍÁÔÅ ELF\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= Dump the contents of section \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 "" -" ïÐÃÉÉ:\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 ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÁÓÐÉÓÙ×ÁÎÉÉ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n" -" -d --dynamic ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n" -" -V --version-info ÷Ù×ÏÄ ÒÁÚÄÅÌÏ× Ó ×ÅÒÓÉÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n" -" -A --arch-specific ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ, ÓÐÅÃÉÆÉÞÎÏÊ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ (ÅÓÌÉ ÉÍÅÅÔÓÑ).\n" -" -D --use-dynamic éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ ÐÒÉ ×Ù×ÏÄÅ ÓÉÍ×ÏÌÏ×\n" -" -x --hex-dump=<ÎÏÍÅÒ> äÁÍÐ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n" -" -w[liaprmfFso] ÉÌÉ\n" -" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" -" ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÌÁÄÏÞÎÙÈ ÒÁÚÄÅÌÏ× DWARF2\n" - -#: readelf.c:2640 -msgid "" -" -i --instruction-dump=\n" -" Disassemble the contents of section \n" -msgstr "" -" -i --instruction-dump=<ÎÏÍÅÒ>\n" -" äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\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 ÷Ù×ÏÄ ÇÉÓÔÏÇÒÁÍÍÙ ÄÌÉÎ ÓÐÉÓËÁ ÕÞÁÓÔËÁ ÐÁÍÑÔÉ\n" -" -W --wide òÁÚÒÅÛÅÎÉÅ ÛÉÒÉÎÙ ×Ù×ÏÄÁ ÂÏÌÅÅ 80 ÓÉÍ×ÏÌÏ×\n" -" -H --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" -" -v --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ readelf\n" - -#: readelf.c:2666 readelf.c:10765 -msgid "Out of memory allocating dump request table." -msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÍÅÝÅÎÉÉ ÄÁÍÐÁ ÔÁÂÌÉÃÙ ÚÁÐÒÏÓÁ." - -#: readelf.c:2830 readelf.c:2906 -#, c-format -msgid "Unrecognized debug option '%s'\n" -msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÔÌÁÄÏÞÎÁÑ ÏÐÃÉÑ '%s'\n" - -#: readelf.c:2940 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "îÅ×ÅÒÎÁÑ ÏÐÃÉÑ '-%c'\n" - -#: readelf.c:2953 -msgid "Nothing to do.\n" -msgstr "îÅÞÅÇÏ ×ÙÐÏÌÎÑÔØ.\n" - -#: readelf.c:2966 readelf.c:2983 readelf.c:5366 -msgid "none" -msgstr "ÎÅÔ" - -#: readelf.c:2970 readelf.c:2987 readelf.c:3018 -#, c-format -msgid "" -msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ: %x>" - -#: readelf.c:2984 -msgid "2's complement, little endian" -msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, little endian" - -#: readelf.c:2985 -msgid "2's complement, big endian" -msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, big endian" - -#: readelf.c:3015 -msgid "Standalone App" -msgstr "éÚÏÌÉÒÏ×ÁÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ" - -#: readelf.c:3034 -msgid "Not an ELF file - it has the wrong magic bytes at the start\n" -msgstr "îÅ ELF-ÆÁÊÌ - ÏÎ ÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÅ magic-ÂÁÊÔÙ × ÎÁÞÁÌÅ\n" - -#: readelf.c:3042 -msgid "ELF Header:\n" -msgstr "úÁÇÏÌÏ×ÏË ELF:\n" - -#: readelf.c:3043 -msgid " Magic: " -msgstr " Magic: " - -#: readelf.c:3047 -#, c-format -msgid " Class: %s\n" -msgstr " ëÌÁÓÓ: %s\n" - -#: readelf.c:3049 -#, c-format -msgid " Data: %s\n" -msgstr " äÁÎÎÙÅ: %s\n" - -#: readelf.c:3051 -#, c-format -msgid " Version: %d %s\n" -msgstr " ÷ÅÒÓÉÑ: %d %s\n" - -#: readelf.c:3058 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -#: readelf.c:3060 -#, c-format -msgid " ABI Version: %d\n" -msgstr " ÷ÅÒÓÉÑ ABI: %d\n" - -#: readelf.c:3062 -#, c-format -msgid " Type: %s\n" -msgstr " ôÉÐ: %s\n" - -#: readelf.c:3064 -#, c-format -msgid " Machine: %s\n" -msgstr " íÁÛÉÎÁ: %s\n" - -#: readelf.c:3066 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " ÷ÅÒÓÉÑ: 0x%lx\n" - -#: readelf.c:3069 -msgid " Entry point address: " -msgstr " áÄÒÅÓ ÔÏÞËÉ ×ÈÏÄÁ: " - -#: readelf.c:3071 -msgid "" -"\n" -" Start of program headers: " -msgstr "" -"\n" -" îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: " - -#: readelf.c:3073 -msgid "" -" (bytes into file)\n" -" Start of section headers: " -msgstr "" -" (ÂÁÊÔ × ÆÁÊÌÅ)\n" -" îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: " - -#: readelf.c:3075 -msgid " (bytes into file)\n" -msgstr " (ÂÁÊÔ × ÆÁÊÌÅ)\n" - -#: readelf.c:3077 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " æÌÁÇÉ: 0x%lx%s\n" - -#: readelf.c:3080 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " òÁÚÍÅÒ ÜÔÏÇÏ ÚÁÇÏÌÏ×ËÁ: %ld (ÂÁÊÔ)\n" - -#: readelf.c:3082 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: %ld (ÂÁÊÔ)\n" - -#: readelf.c:3084 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: %ld\n" - -#: readelf.c:3086 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ: %ld (ÂÁÊÔ)\n" - -#: readelf.c:3088 -#, c-format -msgid " Number of section headers: %ld" -msgstr " þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ: %ld" - -#: readelf.c:3093 -#, c-format -msgid " Section header string table index: %ld" -msgstr " éÎÄÅËÓ ÔÁÂÌ. ÓÔÒÏË ÚÁÇÏÌ. ÒÁÚÄÅÌÁ: %ld" - -#: readelf.c:3127 readelf.c:3163 -msgid "program headers" -msgstr "ÚÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ" - -#: 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 "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n" - -#: readelf.c:3231 -msgid "" -"\n" -"There are no program headers in this file.\n" -msgstr "" -"\n" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n" - -#: readelf.c:3237 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" -"\n" -"ôÉÐ elf-ÆÁÊÌÁ - %s\n" - -#: readelf.c:3238 -msgid "Entry point " -msgstr "ôÏÞËÁ ×ÈÏÄÁ " - -#: readelf.c:3240 -#, c-format -msgid "" -"\n" -"There are %d program headers, starting at offset " -msgstr "" -"\n" -"éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ " - -#: readelf.c:3252 readelf.c:3254 -msgid "" -"\n" -"Program Headers:\n" -msgstr "" -"\n" -"úÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ:\n" - -#: readelf.c:3258 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " ôÉÐ óÍÅÝ. ÷ÉÒÔ.ÁÄÒ æÉÚ.ÁÄÒ òÚÍ.ÆÊÌ òÚÍ.ÐÍ æÌÇ ÷ÙÒÁ×Î\n" - -#: readelf.c:3261 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " ôÉÐ óÍÅÝ. ÷ÉÒÔ.ÁÄÒ æÉÚ.ÁÄÒ òÚÍ.ÆÊÌ òÚÍ.ÐÍ æÌÇ ÷ÙÒÁ×Î\n" - -#: readelf.c:3265 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " ôÉÐ óÍÅÝ. ÷ÉÒÔ.ÁÄÒ æÉÚ.ÁÄÒ\n" - -#: readelf.c:3267 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " òÚÍ.ÆÊÌ òÚÍ.ÐÍ æÌÁÇÉ ÷ÙÒÁ×Î\n" - -#: readelf.c:3360 -msgid "more than one dynamic segment\n" -msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ\n" - -#: readelf.c:3368 -msgid "Unable to find program interpreter name\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÉÍÑ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÐÒÏÇÒÁÍÍÙ\n" - -#: readelf.c:3375 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" -"\n" -" [úÁÐÒÁÛÉ×ÁÅÍÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ: %s]" - -#: readelf.c:3387 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" -"\n" -" óÏÏÔ×ÅÔÓÔ×ÉÅ ÒÁÚÄÅÌ-ÓÅÇÍÅÎÔ:\n" - -#: readelf.c:3388 -msgid " Segment Sections...\n" -msgstr " óÅÇÍÅÎÔ òÁÚÄÅÌÙ...\n" - -#: readelf.c:3437 -msgid "Cannot interpret virtual addresses without program headers.\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ×ÉÒÔÕÁÌØÎÙÅ ÁÄÒÅÓÁ ÂÅÚ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n" - -#: readelf.c:3453 -#, c-format -msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n" -msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÁÄÒÅÓ 0x%lx ÎÅ ÒÁÚÍÅÝÅÎ × ËÁËÏÍ-ÌÉÂÏ ÓÅÇÍÅÎÔÅ PT_LOAD.\n" - -#: readelf.c:3471 readelf.c:3517 -msgid "section headers" -msgstr "ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×" - -#: readelf.c:3565 readelf.c:3632 -msgid "symbols" -msgstr "ÓÉÍ×ÏÌÙ" - -#: 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" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚÄÅÌÏ×.\n" - -#: readelf.c:3751 -#, c-format -msgid "There are %d section headers, starting at offset 0x%lx:\n" -msgstr "éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx:\n" - -#: readelf.c:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070 -msgid "string table" -msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË" - -#: readelf.c:3793 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n" - -#: readelf.c:3805 -msgid "File contains multiple dynamic string tables\n" -msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n" - -#: readelf.c:3811 -msgid "dynamic strings" -msgstr "ÄÉÎÁÍÉÞÅÓËÉÅ ÓÔÒÏËÉ" - -#: readelf.c:3817 -msgid "File contains multiple symtab shndx tables\n" -msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà symtab shndx\n" - -#: readelf.c:3855 -msgid "" -"\n" -"Section Headers:\n" -msgstr "" -"\n" -"úÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×:\n" - -#: readelf.c:3857 -msgid "" -"\n" -"Section Header:\n" -msgstr "" -"\n" -"úÁÇÏÌÏ×ÏË ÒÁÚÄÅÌÁ:\n" - -#: readelf.c:3861 -msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" -msgstr " [îÍ] éÍÑ ôÉÐ áÄÒÅÓ óÍÅÝ òÁÚÍ ES æÌÇ óÓ éÎÆ Al\n" - -#: readelf.c:3864 -msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n" -msgstr " [îÍ] éÍÑ ôÉÐ áÄÒÅÓ óÍÅÝ òÁÚÍ ES æÌÇ ìË éÎÆ Al\n" - -#: readelf.c:3867 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [îÍ] éÍÑ ôÉÐ áÄÒÅÓ óÍÅÝÅÎÉÅ\n" - -#: readelf.c:3868 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " òÁÚÍÅÒ òÁÚÍ.Ent æÌÁÇÉ óÓÙÌË éÎÆÏ ÷ÙÒÁ×Î\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 "" -"ïÂÏÚÎÁÞÅÎÉÑ ÆÌÁÇÏ×:\n" -" W (ÚÁÐÉÓØ), A (ÎÁÚÎÁÞ), X (ÉÓÐÏÌÎÑÅÍÙÊ), M (ÓÌÉÑÎÉÅ), S (ÓÔÒÏËÉ)\n" -" I (ÉÎÆÏ), L (ÐÏÒÑÄÏË ÓÓÙÌÏË), G (ÇÒÕÐÐÁ), x (ÎÅÉÚ×.)\n" -" O (ÔÒÅÂ. ÄÏÐ. ÏÂÒÁÂÏÔËÁ ïó) o (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó), p (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ)\n" - -#: readelf.c:4031 -#, c-format -msgid "" -"\n" -"'%s' relocation section at offset 0x%lx contains %ld bytes:\n" -msgstr "" -"\n" -"'%s' ÒÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÂÁÊÔ:\n" - -#: readelf.c:4043 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" -"\n" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÉÈ ÐÅÒÅÍÅÝÅÎÉÊ .\n" - -#: readelf.c:4070 -msgid "" -"\n" -"Relocation section " -msgstr "" -"\n" -"òÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ " - -#: 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 " ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n" - -#: readelf.c:4115 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" -"\n" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÐÅÒÅÍÅÝÅÎÉÊ.\n" - -#: readelf.c:4299 -msgid "unwind table" -msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÔÁÂÌÉÃÁ" - -#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÓÉÍ×ÏÌÁ %u\n" - -#: readelf.c:4370 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÐÅÒÅÍÅÝÅÎÉÑ %s\n" - -#: readelf.c:4415 readelf.c:4440 -msgid "" -"\n" -"There are no unwind sections in this file.\n" -msgstr "" -"\n" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚ×ÅÒÎÕÔÙÈ ÒÁÚÄÅÌÏ×.\n" - -#: readelf.c:4491 -msgid "" -"\n" -"Could not find unwind info section for " -msgstr "" -"\n" -"îÅ×ÏÚÍÏÖÎÏ ÂÙÌÏ ÎÁÊÔÉ ÒÁÚÄÅÌ Ó ÒÁÚ×ÅÒÎÕÔÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÄÌÑ" - -#: readelf.c:4503 -msgid "unwind info" -msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÉÎÆÏÒÍÁÃÉÑ" - -#: readelf.c:4505 -msgid "" -"\n" -"Unwind section " -msgstr "" -"\n" -"òÁÚ×ÅÒÎÕÔÙÊ ÒÁÚÄÅÌ " - -#: readelf.c:4699 readelf.c:4742 -msgid "dynamic segment" -msgstr "ÄÉÎÁÍÉÞÅÓËÉÊ ÓÅÇÍÅÎÔ" - -#: readelf.c:4820 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" -"\n" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ.\n" - -#: readelf.c:4854 -msgid "Unable to seek to end of file!" -msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ!" - -#: readelf.c:4865 -msgid "Unable to determine the number of symbols to load\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÞÉÓÌÏ ÚÁÇÒÕÖÁÅÍÙÈ ÓÉÍ×ÏÌÏ×\n" - -#: readelf.c:4895 -msgid "Unable to seek to end of file\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ\n" - -#: readelf.c:4901 -msgid "Unable to determine the length of the dynamic string table\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÌÉÎÕ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n" - -#: readelf.c:4906 -msgid "dynamic string table" -msgstr "ÔÁÂÌÉÃÁ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË" - -#: readelf.c:4941 -msgid "symbol information" -msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÓÉÍ×ÏÌÅ" - -#: readelf.c:4965 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%lx contains %ld entries:\n" -msgstr "" -"\n" -"äÉÎÁÍÉÞÅÓËÉÊ ÓÅÇÍÅÎÔ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" - -#: readelf.c:4968 -msgid " Tag Type Name/Value\n" -msgstr " ôÅÇ ôÉÐ éÍÑ/úÎÁÞ\n" - -#: readelf.c:5004 -msgid "Auxiliary library" -msgstr "÷ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÂÉÂÌÉÏÔÅËÁ" - -#: readelf.c:5008 -msgid "Filter library" -msgstr "âÉÂÌÉÏÔÅËÁ ÆÉÌØÔÒÏ×" - -#: readelf.c:5012 -msgid "Configuration file" -msgstr "æÁÊÌ ÎÁÓÔÒÏÊËÉ" - -#: readelf.c:5016 -msgid "Dependency audit library" -msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ ÚÁ×ÉÓÉÍÏÓÔÅÊ" - -#: readelf.c:5020 -msgid "Audit library" -msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ" - -#: readelf.c:5038 readelf.c:5066 readelf.c:5094 -msgid "Flags:" -msgstr "æÌÁÇÉ:" - -#: readelf.c:5041 readelf.c:5069 readelf.c:5096 -msgid " None\n" -msgstr " îÅÔ\n" - -#: readelf.c:5217 -#, c-format -msgid "Shared library: [%s]" -msgstr "óÏ×Í. ÉÓÐ. ÂÉÂÌÉÏÔÅËÁ: [%s]" - -#: readelf.c:5220 -msgid " program interpreter" -msgstr " ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ" - -#: readelf.c:5224 -#, c-format -msgid "Library soname: [%s]" -msgstr "âÉÂÌÉÏÔÅËÁ soname: [%s]" - -#: readelf.c:5228 -#, c-format -msgid "Library rpath: [%s]" -msgstr "âÉÂÌÉÏÔÅËÁ rpath: [%s]" - -#: readelf.c:5232 -#, c-format -msgid "Library runpath: [%s]" -msgstr "âÉÂÌÉÏÔÅËÁ runpath: [%s]" - -#: readelf.c:5296 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "îÅÎÕÖÎÙÊ ÏÂßÅËÔ: [%s]\n" - -#: readelf.c:5412 -#, c-format -msgid "" -"\n" -"Version definition section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"òÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" - -#: readelf.c:5415 -msgid " Addr: 0x" -msgstr " áÄÒÅÓ: 0x" - -#: readelf.c:5417 readelf.c:5612 -#, c-format -msgid " Offset: %#08lx Link: %lx (%s)\n" -msgstr " óÍÅÝÅÎÉÅ: %#08lx óÓÙÌËÁ: %lx (%s)\n" - -#: readelf.c:5424 -msgid "version definition section" -msgstr "ÒÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ" - -#: readelf.c:5450 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: òÅ×ÉÚÉÑ: %d æÌÁÇÉ: %s" - -#: readelf.c:5453 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " éÎÄÅËÓ: %d óÞÅÔÞÉË: %d " - -#: readelf.c:5464 -#, c-format -msgid "Name: %s\n" -msgstr "éÍÑ: %s\n" - -#: readelf.c:5466 -#, c-format -msgid "Name index: %ld\n" -msgstr "éÎÄÅËÓ ÉÍÅÎÉ: %ld\n" - -#: readelf.c:5481 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: òÏÄÉÔÅÌØ %d: %s\n" - -#: readelf.c:5484 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: òÏÄÉÔÅÌØ %d, ÉÎÄÅËÓ ÉÍÅÎÉ: %ld\n" - -#: readelf.c:5503 -#, c-format -msgid "" -"\n" -"Version needs section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"òÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" - -#: readelf.c:5506 -msgid " Addr: 0x" -msgstr " áÄÒÅÓ: 0x" - -#: readelf.c:5508 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr " óÍÅÝÅÎÉÅ: %#08lx óÓÙÌËÁ ÎÁ ÒÁÚÄÅÌ: %ld (%s)\n" - -#: readelf.c:5514 -msgid "version need section" -msgstr "ÒÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ" - -#: readelf.c:5536 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: ÷ÅÒÓÉÑ: %d" - -#: readelf.c:5539 -#, c-format -msgid " File: %s" -msgstr " æÁÊÌ: %s" - -#: readelf.c:5541 -#, c-format -msgid " File: %lx" -msgstr " æÁÊÌ: %lx" - -#: readelf.c:5543 -#, c-format -msgid " Cnt: %d\n" -msgstr " óÞÅÔÞÉË: %d\n" - -#: readelf.c:5561 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: éÍÑ: %s" - -#: readelf.c:5564 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: éÎÄÅËÓ ÉÍÅÎÉ: %lx" - -#: readelf.c:5567 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " æÌÁÇÉ: %s ÷ÅÒÓÉÑ: %d\n" - -#: readelf.c:5603 -msgid "version string table" -msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË ×ÅÒÓÉÉ" - -#: readelf.c:5607 -#, c-format -msgid "" -"\n" -"Version symbols section '%s' contains %d entries:\n" -msgstr "" -"\n" -"òÁÚÄÅÌ ÓÉÍ×ÏÌÏ× ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n" - -#: readelf.c:5610 -msgid " Addr: " -msgstr " áÄÒÅÓ: " - -#: readelf.c:5622 -msgid "version symbol data" -msgstr "ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ ×ÅÒÓÉÉ" - -#: readelf.c:5649 -msgid " 0 (*local*) " -msgstr " 0 (*ÌÏËÁÌØÎÙÊ*) " - -#: readelf.c:5653 -msgid " 1 (*global*) " -msgstr " 1 (*ÇÌÏÂÁÌØÎÙÊ*) " - -#: readelf.c:5689 readelf.c:6129 -msgid "version need" -msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ" - -#: readelf.c:5699 -msgid "version need aux (2)" -msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (2)" - -#: readelf.c:5741 readelf.c:6192 -msgid "version def" -msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ" - -#: readelf.c:5760 readelf.c:6207 -msgid "version def aux" -msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ aux" - -#: readelf.c:5791 -msgid "" -"\n" -"No version information found in this file.\n" -msgstr "" -"\n" -"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅ ÎÁÊÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ.\n" - -#: readelf.c:5923 -msgid "Unable to read in dynamic data\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÄÉÎÁÍÉÞÅÓËÉÅ ÄÁÎÎÙÅ\n" - -#: readelf.c:5967 -msgid "Unable to seek to start of dynamic information" -msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÏÔ ÎÁÞÁÌÁ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ" - -#: readelf.c:5973 -msgid "Failed to read in number of buckets\n" -msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ\n" - -#: readelf.c:5979 -msgid "Failed to read in number of chains\n" -msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÃÅÐÏÞÅË\n" - -#: readelf.c:5999 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" -"\n" -"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ:\n" - -#: readelf.c:6001 -msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" -msgstr " ïÂÌÁÓÔÉ: úÎÁÞ òÁÚÍÅÒ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" - -#: readelf.c:6003 -msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" -msgstr " ïÂÌÁÓÔÉ: úÎÁÞ òÁÚÍÅÒ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" - -#: readelf.c:6048 -#, c-format -msgid "" -"\n" -"Symbol table '%s' contains %lu entries:\n" -msgstr "" -"\n" -"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n" - -#: readelf.c:6052 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " þÉÓ: úÎÁÞ òÁÚÍ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" - -#: readelf.c:6054 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " þÉÓ: úÎÁÞ òÁÚÍ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" - -#: readelf.c:6101 -msgid "version data" -msgstr "ÄÁÎÎÙÅ ×ÅÒÓÉÉ" - -#: readelf.c:6142 -msgid "version need aux (3)" -msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (3)" - -#: readelf.c:6167 -msgid "bad dynamic symbol" -msgstr "ÎÅ×ÅÒÎÙÊ ÄÉÎÁÍÉÞÅÓËÉÊ ÓÉÍ×ÏÌ" - -#: readelf.c:6230 -msgid "" -"\n" -"Dynamic symbol information is not available for displaying symbols.\n" -msgstr "" -"\n" -"éÎÆÏÒÍÁÃÉÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÉÍ×ÏÌÁ ÎÅ ÄÏÓÔÕÐÎÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÓÉÍ×ÏÌÏ×.\n" - -#: readelf.c:6242 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length (total of %d buckets):\n" -msgstr "" -"\n" -"çÉÓÔÏÇÒÁÍÍÁ ÄÌÑ ÄÌÉÎÙ ÓÐÉÓËÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ (×ÓÅÇÏ %d ÏÂÌÁÓÔÅÊ):\n" - -#: readelf.c:6244 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr " äÌÉÎÁ þÉÓÌÏ %% ÏÔ ×ÓÅÇÏ ïÈ×ÁÔ\n" - -#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090 -msgid "Out of memory" -msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ" - -#: readelf.c:6317 -#, c-format -msgid "" -"\n" -"Dynamic info segment at offset 0x%lx contains %d entries:\n" -msgstr "" -"\n" -"óÅÇÍÅÎÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n" - -#: readelf.c:6320 -msgid " Num: Name BoundTo Flags\n" -msgstr " þÉÓ: éÍÑ çÒÁÎÉÃÁ æÌÁÇÉ\n" - -#: readelf.c:6373 -#, c-format -msgid "" -"\n" -"Assembly dump of section %s\n" -msgstr "" -"\n" -"óÂÏÒÏÞÎÙÊ ÄÁÍÐ ÒÁÚÄÅÌÁ %s\n" - -#: readelf.c:6396 -#, c-format -msgid "" -"\n" -"Section '%s' has no data to dump.\n" -msgstr "" -"\n" -"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÄÌÑ ÄÁÍÐÁ.\n" - -#: readelf.c:6401 -#, c-format -msgid "" -"\n" -"Hex dump of section '%s':\n" -msgstr "" -"\n" -"Hex-ÄÁÍÐ ÒÁÚÄÅÌÁ '%s':\n" - -#: readelf.c:6406 -msgid "section data" -msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ" - -#: readelf.c:6555 -msgid "badly formed extended line op encountered!\n" -msgstr "×ÓÔÒÅÞÅÎ ÎÅ×ÅÒÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÒÁÓÛÉÒÅÎÎÙÊ line-up!\n" - -#: readelf.c:6562 -#, c-format -msgid " Extended opcode %d: " -msgstr " òÁÓÛÉÒÅÎÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: " - -#: readelf.c:6567 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" -"ëÏÎÅà ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n" -"\n" - -#: readelf.c:6573 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "ÕÓÔÁÎÏ×ËÁ ÁÄÒÅÓÁ × 0x%lx\n" - -#: readelf.c:6578 -msgid " define new File Table entry\n" -msgstr " ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ÐÕÎËÔÁ ôÁÂÌÉÃÙ ÆÁÊÌÏ×\n" - -#: readelf.c:6579 readelf.c:6726 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " ðÕÎËÔ\tëÁÔÁÌÏÇ\t÷ÒÅÍÑ\tòÁÚÍÅÒ\téÍÑ\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 "îåéú÷åóôîùê: ÄÌÉÎÁ %d\n" - -#: readelf.c:6621 -#, c-format -msgid "" -"\n" -"Dump of debug contents of section %s:\n" -"\n" -msgstr "" -"\n" -"äÁÍÐ ÄÌÑ ÏÔÌÁÄËÉ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ %s:\n" -"\n" - -#: readelf.c:6649 -msgid "The line info appears to be corrupt - the section is too small\n" -msgstr "ðÏÈÏÖÅ, ÞÔÏ ÓÔÒÏËÁ ÉÎÆÏ ÐÏ×ÒÅÖÄÅÎÁ - ÒÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ\n" - -#: readelf.c:6658 -msgid "Only DWARF version 2 and 3 line info is currently supported.\n" -msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÓÔÒÏËÉ ÉÎÆÏ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n" - -#: readelf.c:6679 -#, c-format -msgid " Length: %ld\n" -msgstr " äÌÉÎÁ: %ld\n" - -#: readelf.c:6680 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " DWARF ×ÅÒÓÉÑ: %d\n" - -#: readelf.c:6681 -#, c-format -msgid " Prologue Length: %d\n" -msgstr " äÌÉÎÁ ÐÒÏÌÏÇÁ: %d\n" - -#: readelf.c:6682 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " íÉÎÉÍ. ÄÌÉÎÁ ÉÎÓÔÒÕËÃÉÉ: %d\n" - -#: readelf.c:6683 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " îÁÞ. ÚÎÁÞÅÎÉÅ 'is_stmt': %d\n" - -#: readelf.c:6684 -#, c-format -msgid " Line Base: %d\n" -msgstr " ïÓÎÏ×ÁÎÉÅ ÓÔÒÏËÉ: %d\n" - -#: readelf.c:6685 -#, c-format -msgid " Line Range: %d\n" -msgstr " äÉÁÐÁÚÏÎ ÓÔÒÏËÉ: %d\n" - -#: readelf.c:6686 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " ïÓÎÏ×ÁÎÉÅ ËÏÄÁ ÏÐÅÒÁÃÉÉ: %d\n" - -#: readelf.c:6695 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" -"\n" -" ëÏÄÙ ÏÐÅÒÁÃÉÊ:\n" - -#: readelf.c:6698 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " ëÏÄ ÏÐÅÒÁÃÉÉ %d ÓÏÄÅÒÖÉÔ %d ÁÒÇÕÍÅÎÔÏ×\n" - -#: readelf.c:6704 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" -"\n" -" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ× ÐÕÓÔÁ.\n" - -#: readelf.c:6707 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" -"\n" -" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ×:\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" -" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ× ÐÕÓÔÁ.\n" - -#: readelf.c:6725 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" -"\n" -" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ×:\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" -" ïÐÅÒÁÔÏÒÙ ÎÏÍÅÒÁ ÓÔÒÏËÉ:\n" - -#: readelf.c:6768 -#, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " óÐÅÃÉÁÌØÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: ÐÒÏÄ×ÉÖÅÎÉÅ ÁÄÒÅÓÁ ÎÁ %d × 0x%lx" - -#: readelf.c:6772 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " É ÓÔÒÏËÉ ÎÁ %d × %d\n" - -#: readelf.c:6783 -msgid " Copy\n" -msgstr " ëÏÐÉÑ\n" - -#: readelf.c:6790 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ %d × %lx\n" - -#: readelf.c:6798 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÔÒÏËÉ ÎÁ %d × %d\n" - -#: readelf.c:6805 -#, c-format -msgid " Set File Name to entry %d in the File Name Table\n" -msgstr " õÓÔÁÎÏ×ËÁ ÉÍÅÎÉ ÆÁÊÌÁ × ÐÕÎËÔ %d × ÔÁÂÌÉÃÅ ÉÍÅÎ ÆÁÊÌÏ×\n" - -#: readelf.c:6813 -#, c-format -msgid " Set column to %d\n" -msgstr " õÓÔÁÎÏ×ËÁ ÓÔÏÌÂÃÁ × %d\n" - -#: readelf.c:6820 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " õÓÔÁÎÏ×ËÁ is_stmt × %d\n" - -#: readelf.c:6825 -msgid " Set basic block\n" -msgstr " õÓÔÁÎÏ×ËÁ ÂÁÚÏ×ÏÇÏ ÂÌÏËÁ\n" - -#: readelf.c:6833 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ÐÏÓÔÏÑÎÎÕÀ %d × 0x%lx\n" - -#: readelf.c:6841 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ×ÅÌÉÞÉÎÕ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ %d × 0x%lx\n" - -#: readelf.c:6846 -msgid " Set prologue_end to true\n" -msgstr " õÓÔÁÎÏ×ËÁ prologue_end × `ÉÓÔÉÎÁ'\n" - -#: readelf.c:6850 -msgid " Set epilogue_begin to true\n" -msgstr " õÓÔÁÎÏ×ËÁ epilogue_begin × `ÉÓÔÉÎÁ'\n" - -#: readelf.c:6856 -#, c-format -msgid " Set ISA to %d\n" -msgstr " õÓÔÁÎÏ×ËÁ ISA × %d\n" - -#: readelf.c:6860 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr " îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d Ó ÏÐÅÒÁÎÄÁÍÉ: " - -#: readelf.c:6891 readelf.c:7371 readelf.c:7443 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" -"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n" -"\n" - -#: readelf.c:6931 -msgid "Only DWARF 2 and 3 pubnames are currently supported\n" -msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ pubname ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3\n" - -#: readelf.c:6938 -#, c-format -msgid " Length: %ld\n" -msgstr " äÌÉÎÁ: %ld\n" - -#: readelf.c:6940 -#, c-format -msgid " Version: %d\n" -msgstr " ÷ÅÒÓÉÑ: %d\n" - -#: readelf.c:6942 -#, c-format -msgid " Offset into .debug_info section: %ld\n" -msgstr " óÍÅÝÅÎÉÅ × ÒÁÚÄÅÌ .debug_info: %ld\n" - -#: readelf.c:6944 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr " òÁÚÍ. ÏÂÌÁÓÔÉ × ÒÁÚÄÅÌÅ .debug_info: %ld\n" - -#: readelf.c:6947 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" -"\n" -" óÍÅÝÅÎÉÅ\téÍÑ\n" - -#: readelf.c:7042 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ TAG: %lx" - -#: readelf.c:7156 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ AT: %lx " - -#: readelf.c:7193 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ FORM: %lx" - -#: readelf.c:7392 -#, c-format -msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" -msgstr " DW_MACINFO_start_file - ÎÏÍÅÒ_ÓÔÒÏËÉ: %d ÎÏÍÅÒ_ÆÁÊÌÁ: %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 - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n" - -#: readelf.c:7413 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_undef - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n" - -#: readelf.c:7424 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr " DW_MACINFO_vendor_ext - ËÏÎÓÔÁÎÔÁ : %d ÓÔÒÏËÁ : %s\n" - -#: readelf.c:7452 -msgid " Number TAG\n" -msgstr " þÉÓÌÏ TAG\n" - -#: readelf.c:7458 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -#: readelf.c:7461 -msgid "has children" -msgstr "ÉÍÅÅÔ ÐÏÔÏÍËÏ×" - -#: readelf.c:7461 -msgid "no children" -msgstr "ÎÅÔ ÐÏÔÏÍËÏ×" - -#: readelf.c:7465 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -#: readelf.c:7486 -#, c-format -msgid " %lu byte block: " -msgstr " %lu-ÂÁÊÔÏ×ÙÊ ÂÌÏË: " - -#: readelf.c:7814 -msgid "(User defined location op)" -msgstr "(ïÐÒÅÄÅÌÅÎÎÏÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)" - -#: readelf.c:7816 -msgid "(Unknown location op)" -msgstr "(îÅÉÚ×ÅÓÔÎÏÅ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)" - -#: readelf.c:7855 -msgid "debug_loc section data" -msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_loc" - -#: readelf.c:7887 -msgid "" -"\n" -"The .debug_loc section is empty.\n" -msgstr "" -"\n" -"òÁÚÄÅÌ .debug_loc ÐÕÓÔ.\n" - -#: readelf.c:7891 -msgid "" -"Contents of the .debug_loc section:\n" -"\n" -msgstr "" -"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_loc:\n" -"\n" - -#: readelf.c:7892 -msgid "" -"\n" -" Offset Begin End Expression\n" -msgstr "" -"\n" -" óÍÅÝ. îÁÞÁÌÏ ëÏÎÅà òÁÓÛÉÒÅÎÉÅ\n" - -#: readelf.c:7968 -msgid "debug_str section data" -msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_str" - -#: readelf.c:7987 -msgid "" -msgstr "<ÎÅÔ ÒÁÚÄÅÌÁ .debug_str>" - -#: readelf.c:7990 -msgid "" -msgstr "<ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ>" - -#: readelf.c:8009 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" -"\n" -"òÁÚÄÅÌ .debug_str ÐÕÓÔ.\n" - -#: readelf.c:8013 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" -"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_str:\n" -"\n" - -#: readelf.c:8088 -msgid "Internal error: DWARF version is not 2 or 3.\n" -msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÏÍÅÒ ×ÅÒÓÉÉ DWARF ÎÅ 2 ÉÌÉ 3.\n" - -#: readelf.c:8203 -#, c-format -msgid " (indirect string, offset: 0x%lx): %s" -msgstr " (ËÏÓ×ÅÎÎÁÑ ÓÔÒÏËÁ, ÓÍÅÝÅÎÉÅ: 0x%lx): %s" - -#: readelf.c:8212 -#, c-format -msgid "Unrecognized form: %d\n" -msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÆÏÒÍÁ: %d\n" - -#: readelf.c:8226 -msgid "(not inlined)" -msgstr "(ÎÅ ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)" - -#: readelf.c:8229 -msgid "(inlined)" -msgstr "(×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)" - -#: readelf.c:8232 -msgid "(declared as inline but ignored)" -msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÎÏ ÐÒÏÐÕÝÅÎ)" - -#: readelf.c:8235 -msgid "(declared as inline and inlined)" -msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÔÁË É ÅÓÔØ)" - -#: readelf.c:8238 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ ×ÎÕÔÒÉÓÔÒÏÞÎÏÇÏ ÁÔÒÉÂÕÔÁ: %lx)" - -#: readelf.c:8419 readelf.c:8646 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" -"òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n" -"\n" - -#: readelf.c:8535 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " åÄÉÎÉÃÁ ËÏÍÐÉÌÑÃÉÉ @ %lx:\n" - -#: readelf.c:8536 -#, c-format -msgid " Length: %ld\n" -msgstr " äÌÉÎÁ: %ld\n" - -#: readelf.c:8537 -#, c-format -msgid " Version: %d\n" -msgstr " ÷ÅÒÓÉÑ: %d\n" - -#: readelf.c:8538 -#, c-format -msgid " Abbrev Offset: %ld\n" -msgstr " óÍÅÝ. ÁÂÂÒÅ×: %ld\n" - -#: readelf.c:8539 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " òÁÚÍ. ÕËÁÚÁÔ: %d\n" - -#: readelf.c:8543 -msgid "Only version 2 and 3 DWARF debug information is currently supported.\n" -msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n" - -#: readelf.c:8563 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÒÁÚÄÅÌÁ .debug_abbrev!\n" - -#: readelf.c:8569 -msgid "debug_abbrev section data" -msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_abbrev" - -#: readelf.c:8606 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÐÕÎËÔÁ %lu × ÔÁÂÌÉÃÅ ÁÂÂÒÅ×ÉÁÃÉÉ\n" - -#: readelf.c:8611 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%lx>: îÏÍÅÒ ÁÂÂÒÅ×: %lu (%s)\n" - -#: readelf.c:8691 -msgid "Only DWARF 2 and 3 aranges are currently supported.\n" -msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ aganges ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n" - -#: readelf.c:8695 -#, c-format -msgid " Length: %ld\n" -msgstr " äÌÉÎÁ: %ld\n" - -#: readelf.c:8696 -#, c-format -msgid " Version: %d\n" -msgstr " ÷ÅÒÓÉÑ: %d\n" - -#: readelf.c:8697 -#, c-format -msgid " Offset into .debug_info: %lx\n" -msgstr " óÍÅÝÅÎÉÅ × .debug_info: %lx\n" - -#: readelf.c:8698 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " òÁÚÍ. ÕËÁÚÁÔ: %d\n" - -#: readelf.c:8699 -#, c-format -msgid " Segment Size: %d\n" -msgstr " òÁÚÍ. ÓÅÇÍ.: %d\n" - -#: readelf.c:8701 -msgid "" -"\n" -" Address Length\n" -msgstr "" -"\n" -" áÄÒÅÓ äÌÉÎÁ\n" - -#: readelf.c:8903 -#, c-format -msgid "The section %s contains:\n" -msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n" - -#: readelf.c:9538 -#, c-format -msgid "Displaying the debug contents of section %s is not yet supported.\n" -msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ %s ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.\n" - -#: readelf.c:9634 -#, c-format -msgid "" -"\n" -"Section '%s' has no debugging data.\n" -msgstr "" -"\n" -"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÏÔÌÁÄÏÞÎÙÈ ÄÁÎÎÙÈ.\n" - -#: readelf.c:9639 readelf.c:9701 -msgid "debug section data" -msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ ÏÔÌÁÄËÉ" - -#: readelf.c:9655 -#, c-format -msgid "Unrecognized debug section: %s\n" -msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÒÁÚÄÅÌ ÏÔÌÁÄËÉ: %s\n" - -#: readelf.c:9729 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "äÌÑ ÎÅËÏÔÏÒÙÈ ÒÁÚÄÅÌÏ× ÎÅ ÂÙÌ ×ÙÐÏÌÎÅÎ ÄÁÍÐ, ÐÏÔÏÍÕ ÞÔÏ ÏÎÉ ÎÅ ÓÕÝÅÓÔ×ÕÀÔ!\n" - -#: readelf.c:9806 readelf.c:10170 -msgid "liblist" -msgstr "liblist" - -#: readelf.c:9891 -msgid "options" -msgstr "ÏÐÃÉÉ" - -#: readelf.c:9922 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" -"\n" -"òÁÚÄÅÌ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n" - -#: readelf.c:10083 -msgid "conflict list found without a dynamic symbol table" -msgstr "ÓÐÉÓÏË ËÏÎÆÌÉËÔÏ× ÎÁÊÄÅÎ ÂÅÚ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×" - -#: readelf.c:10101 readelf.c:10117 -msgid "conflict" -msgstr "ËÏÎÆÌÉËÔ" - -#: readelf.c:10127 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" -"\n" -"òÁÚÄÅÌ '.conflict' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" - -#: readelf.c:10129 -msgid " Num: Index Value Name" -msgstr " îÏÍ: éÎÄÅËÓ úÎÁÞ. éÍÑ" - -#: readelf.c:10178 -msgid "liblist string table" -msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË liblist" - -#: readelf.c:10187 -#, c-format -msgid "" -"\n" -"Library list section '%s' contains %lu entries:\n" -msgstr "" -"\n" -"òÁÚÄÅÌ ÓÐÉÓËÁ ÂÉÂÌÉÏÔÅË '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n" - -#: readelf.c:10236 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (ÓÔÒÕËÔÕÒÁ prstatus)" - -#: readelf.c:10237 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)" - -#: readelf.c:10238 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (ÓÔÒÕËÔÕÒÁ prpsinfo)" - -#: readelf.c:10239 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (ÓÔÒÕËÔÕÒÁ task)" - -#: readelf.c:10240 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (ÓÔÒÕËÔÕÒÁ user_xfpregs)" - -#: readelf.c:10241 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (ÓÔÒÕËÔÕÒÁ pstatus)" - -#: readelf.c:10242 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)" - -#: readelf.c:10243 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (ÓÔÒÕËÔÕÒÁ psinfo)" - -#: readelf.c:10244 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (ÓÔÒÕËÔÕÒÁ lwpstatus_t)" - -#: readelf.c:10245 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (ÓÔÒÕËÔÕÒÁ lwpsinfo_t)" - -#: readelf.c:10246 -msgid "NT_WIN32PSTATUS (win32_pstatus structure)" -msgstr "NT_WIN32PSTATUS (ÓÔÒÕËÔÕÒÁ win32_pstatus)" - -#: readelf.c:10248 readelf.c:10272 -#, c-format -msgid "Unknown note type: (0x%08x)" -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ËÏÍÍÅÎÔÁÒÉÑ: (0x%08x)" - -#. NetBSD core "procinfo" structure. -#: readelf.c:10262 -msgid "NetBSD procinfo structure" -msgstr "óÔÒÕËÔÕÒÁ procinfo NetBSD" - -#: readelf.c:10289 readelf.c:10303 -msgid "PT_GETREGS (reg structure)" -msgstr "PT_GETREGS (ÓÔÒÕËÔÕÒÁ reg)" - -#: readelf.c:10291 readelf.c:10305 -msgid "PT_GETFPREGS (fpreg structure)" -msgstr "PT_GETFPREGS (ÓÔÒÕËÔÕÒÁ fpreg)" - -#: readelf.c:10311 -#, c-format -msgid "PT_FIRSTMACH+%d" -msgstr "PT_FIRSTMACH+%d" - -#: readelf.c:10365 -msgid "notes" -msgstr "ËÏÍÍÅÎÔÁÒÉÉ" - -#: readelf.c:10371 -#, c-format -msgid "" -"\n" -"Notes at offset 0x%08lx with length 0x%08lx:\n" -msgstr "" -"\n" -"ëÏÍÍÅÎÔÁÒÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%08lx ÄÌÉÎÏÊ 0x%08lx:\n" - -#: readelf.c:10373 -msgid " Owner\t\tData size\tDescription\n" -msgstr " ÷ÌÁÄÅÌÅÃ\t\tòÁÚÍÅÒ ÄÁÎÎÙÈ\tïÐÉÓÁÎÉÅ\n" - -#: readelf.c:10392 -#, c-format -msgid "corrupt note found at offset %x into core notes\n" -msgstr "ÎÁÊÄÅÎ ÐÏ×ÒÅÖÄÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ ÓÏ ÓÍÅÝÅÎÉÅÍ %x × ÈÒÁÎÉÌÉÝÅ ËÏÍÍÅÎÔÁÒÉÅ×\n" - -#: readelf.c:10394 -#, c-format -msgid " type: %x, namesize: %08lx, descsize: %08lx\n" -msgstr " ÔÉÐ: %x, ÒÁÚÍ_ÉÍÅÎÉ: %08lx, ÒÁÚÍ_ÏÐÉÓ: %08lx\n" - -#: readelf.c:10476 -msgid "No note segments present in the core file.\n" -msgstr "÷ ÆÁÊÌÅ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÓÕÔÓÔ×ÕÀÔ ÓÅÇÍÅÎÔÙ ËÏÍÍÅÎÔÁÒÉÅ×.\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 "" -"üÔÁ ËÏÐÉÑ readelf ÂÙÌÁ ÓÏÂÒÁÎÁ ÂÅÚ ÐÏÄÄÅÒÖËÉ 64-ÂÉÔÎÏÇÏ ÔÉÐÁ\n" -"ÄÁÎÎÙÈ, É ÐÏÜÔÏÍÕ ÏÎÁ ÎÅ ÍÏÖÅÔ ÞÉÔÁÔØ 64-ÂÉÔÎÙÅ ÆÁÊÌÙ ELF.\n" - -#: readelf.c:10606 -#, c-format -msgid "Cannot stat input file %s.\n" -msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ %s.\n" - -#: readelf.c:10613 -#, c-format -msgid "Input file %s not found.\n" -msgstr "÷ÈÏÄÎÏÊ ÆÁÊÌ %s ÎÅ ÎÁÊÄÅÎ.\n" - -#: readelf.c:10619 -#, c-format -msgid "%s: Failed to read file header\n" -msgstr "%s: óÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ\n" - -#: readelf.c:10633 -#, c-format -msgid "" -"\n" -"File: %s\n" -msgstr "" -"\n" -"æÁÊÌ: %s\n" - -#: rename.c:132 -#, c-format -msgid "%s: cannot set time: %s" -msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ: %s" - -#. We have to clean up here. -#: rename.c:171 rename.c:204 -#, c-format -msgid "%s: rename: %s" -msgstr "%s: ÐÅÒÅÉÍÅÎÏ×ÁÔØ: %s" - -#: rename.c:212 -#, c-format -msgid "%s: simple_copy: %s" -msgstr "%s: ÐÒÏÓÔÏ_ÓËÏÐÉÒÏ×ÁÔØ: %s" - -#: resbin.c:134 -#, c-format -msgid "%s: not enough binary data" -msgstr "%s: ÎÅÄÏÓÔÁÔÏÞÎÏ Ä×ÏÉÞÎÙÈ ÄÁÎÎÙÈ" - -#: resbin.c:153 -msgid "null terminated unicode string" -msgstr "ÓÔÒÏËÁ unicode, ÚÁ×ÅÒÛÅÎÎÁÑ `0'" - -#: 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 "ÚÁÇÏÌÏ×ÏË menu" - -#: resbin.c:284 -msgid "menuex header" -msgstr "ÚÁÇÏÌÏ×ÏË menuex" - -#: resbin.c:288 -msgid "menuex offset" -msgstr "ÓÍÅÝÅÎÉÅ menuex" - -#: resbin.c:295 -#, c-format -msgid "unsupported menu version %d" -msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÁÑ ×ÅÒÓÉÑ menu %d" - -#: resbin.c:323 resbin.c:338 resbin.c:404 -msgid "menuitem header" -msgstr "ÚÁÇÏÌÏ×ÏË menuitem" - -#: resbin.c:434 -msgid "menuitem" -msgstr "menuitem" - -#: resbin.c:475 resbin.c:503 -msgid "dialog header" -msgstr "ÚÁÇÏÌÏ×ÏË ÄÉÁÌÏÇÁ" - -#: resbin.c:493 -#, c-format -msgid "unexpected DIALOGEX version %d" -msgstr "ÎÅÐÒÅÄ×ÉÄÅÎÎÁÑ ×ÅÒÓÉÑ DIALOGEX %d" - -#: resbin.c:538 -msgid "dialog font point size" -msgstr "ÒÁÚÍÅÒ × ÐÕÎËÔÁÈ ÛÒÉÆÔÁ ÄÉÁÌÏÇÁ" - -#: resbin.c:546 -msgid "dialogex font information" -msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÛÒÉÆÔÅ dialogex" - -#: resbin.c:572 resbin.c:590 -msgid "dialog control" -msgstr "ÕÐÒÁ×ÌÅÎÉÅ ÄÉÁÌÏÇÏÍ" - -#: resbin.c:582 -msgid "dialogex control" -msgstr "ÕÐÒÁ×ÌÅÎÉÅ dialogex" - -#: resbin.c:611 -msgid "dialog control end" -msgstr "ËÏÎÅà ÕÐÒÁ×ÌÅÎÉÑ ÄÉÁÌÏÇÏÍ" - -#: resbin.c:623 -msgid "dialog control data" -msgstr "ÄÁÎÎÙÅ ÕÐÒÁ×ÌÅÎÉÑ ÄÉÁÌÏÇÏÍ" - -#: resbin.c:666 -msgid "stringtable string length" -msgstr "ÄÌÉÎÁ ÓÔÒÏËÉ stringtable" - -#: resbin.c:676 -msgid "stringtable string" -msgstr "ÓÔÒÏËÁ stringtable" - -#: resbin.c:709 -msgid "fontdir header" -msgstr "ÚÁÇÏÌÏ×ÏË fontdir" - -#: resbin.c:722 -msgid "fontdir" -msgstr "fontdir" - -#: resbin.c:738 -msgid "fontdir device name" -msgstr "ÉÍÑ ÕÓÔÒÏÊÓÔ×Á fontdir" - -#: resbin.c:744 -msgid "fontdir face name" -msgstr "ÉÍÑ ÇÁÒÎÉÔÕÒÙ fontdir" - -#: 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 "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÉÎÆÏÒÍÁÃÉÉ Ï ÆÉËÓÉÒÏ×ÁÎÎÏÊ ×ÅÒÓÉÉ %d" - -#: 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 "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ stringfileinfo %d" - -#: resbin.c:1116 -#, c-format -msgid "unexpected version stringtable value length %d" -msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ ×ÅÒÓÉÉ stringtable %d" - -#: 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 "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ varfileinfo %d" - -#: resbin.c:1197 -msgid "version varfileinfo" -msgstr "×ÅÒÓÉÑ varfileinfo" - -#: 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 "ID ÜÌÅÍÅÎÔÁ ËÁÔÁÌÏÇÁ" - -#: rescoff.c:294 -msgid "ID subdirectory" -msgstr "ID ÐÏÄËÁÔÁÌÏÇÁ" - -#: rescoff.c:302 -msgid "ID resource" -msgstr "ID ÒÅÓÕÒÓÁ" - -#: 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 "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÎÁÐÒÁ×ÉÔØ stdout: `%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 "ïÐÒÏÂÏ×ÁÎ `%s'\n" - -#: 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:905 resrc.c:1178 resrc.c:1332 -#, c-format -msgid "stat failed on bitmap file `%s': %s" -msgstr "stat ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ ÄÌÑ ÆÁÊÌÁ ÂÉÔÏ×ÏÇÏ ÏÂÒÁÚÁ `%s': %s" - -#: resrc.c:703 -#, c-format -msgid "cursor file `%s' does not contain cursor data" -msgstr "ÆÁÊÌ ËÕÒÓÏÒÁ `%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ËÕÒÓÏÒÁ" - -#: resrc.c:735 resrc.c:1049 -#, c-format -msgid "%s: fseek to %lu failed: %s" -msgstr "%s: fseek ÄÌÑ %lu ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" - -#: resrc.c:873 -msgid "help ID requires DIALOGEX" -msgstr "ÄÌÑ ID ÓÐÒÁ×ËÉ ÔÒÅÂÕÅÔÓÑ DIALOGEX" - -#: resrc.c:875 -msgid "control data requires DIALOGEX" -msgstr "ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ ÄÁÎÎÙÍÉ ÔÒÅÂÕÅÔÓÑ DIALOGEX" - -#: resrc.c:1018 -#, c-format -msgid "icon file `%s' does not contain icon data" -msgstr "ÆÁÊÌ ÚÎÁÞËÁ `%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÚÎÁÞËÁ" - -#: resrc.c:1537 -#, 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|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n" -" -t --totals Display the total sizes (Berkeley only)\n" -" --target= 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" -" ÉÌÉ ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÍ ÆÏÒÍÁÔÅ\n" -" -t --totals ÷Ù×ÏÄ ÓÕÍÍÁÒÎÙÈ ÒÁÚÍÅÒÏ× (ÔÏÌØËÏ Berkeley)\n" -" --target= õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\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: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:346 stabs.c:1755 -msgid "numeric overflow" -msgstr "ÞÉÓÌÏ×ÏÅ ÐÅÒÅÐÏÌÎÅÎÉÅ" - -#: stabs.c:357 -#, c-format -msgid "Bad stab: %s\n" -msgstr "ðÌÏÈÏÊ stab: %s\n" - -#: stabs.c:367 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: %s: %s\n" - -#: stabs.c:488 -msgid "N_LBRAC not within function\n" -msgstr "N_LBRAC ×ÎÅ ÆÕÎËÃÉÉ\n" - -#: stabs.c:527 -msgid "Too many N_RBRACs\n" -msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ N_RBRACs\n" - -#: stabs.c:773 -msgid "unknown C++ encoded name" -msgstr "ÎÅÉÚ×ÅÓÔÎÏÅ ËÏÄÉÒÏ×ÁÎÎÏÅ ÉÍÑ C++" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1293 -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:1847 -msgid "missing index type" -msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÉÎÄÅËÓÎÙÊ ÔÉÐ" - -#: stabs.c:2174 -msgid "unknown virtual character for baseclass" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ×ÉÒÔÕÁÌØÎÙÊ ÓÉÍ×ÏÌ ÄÌÑ baseclass" - -#: stabs.c:2192 -msgid "unknown visibility character for baseclass" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ ×ÉÄÉÍÏÓÔÉ ÄÌÑ baseclass" - -#: stabs.c:2384 -msgid "unnamed $vb type" -msgstr "ÂÅÚÙÍÑÎÎÙÊ ÔÉÐ $vb" - -#: stabs.c:2390 -msgid "unrecognized C++ abbreviation" -msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÁÂÂÒÅ×ÉÁÔÕÒÁ C++" - -#: stabs.c:2470 -msgid "unknown visibility character for field" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ ×ÉÄÉÍÏÓÔÉ ÄÌÑ field" - -#: stabs.c:2726 -msgid "const/volatile indicator missing" -msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÉÎÄÉËÁÔÏÒ ÐÏÓÔÏÑÎÎÏÊ/ÐÅÒÅÍÅÎÎÏÊ" - -#: stabs.c:2967 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "îÅÔ ËÏÄÉÒÏ×ÁÎÉÑ ÄÌÑ \"%s\"\n" - -#: stabs.c:3281 -msgid "Undefined N_EXCL" -msgstr "îÅÏÐÒÅÄÅÌÅÎÎÙÊ N_EXCL" - -#: stabs.c:3369 -#, c-format -msgid "Type file number %d out of range\n" -msgstr "îÏÍÅÒ ÆÁÊÌÁ ÔÉÐÁ %d ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ\n" - -#: stabs.c:3374 -#, c-format -msgid "Type index number %d out of range\n" -msgstr "îÏÍÅÒ ÉÎÄÅËÓÁ ÔÉÐÁ %d ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ\n" - -#: stabs.c:3461 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ XCOFF %d\n" - -#: stabs.c:3762 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "ÐÌÏÈÏÅ ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÏÅ ÉÍÑ `%s'\n" - -#: stabs.c:3859 -msgid "no argument types in mangled string\n" -msgstr "ÎÅÔ ÔÉÐÏ× ÁÒÇÕÍÅÎÔÏ× × ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÏÊ ÓÔÒÏËÅ\n" - -#: strings.c:208 -#, c-format -msgid "invalid number %s" -msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ %s" - -#: strings.c:647 -#, c-format -msgid "invalid integer argument %s" -msgstr "ÎÅ×ÅÒÎÙÊ ÃÅÌÏÞÉÓÌÅÎÎÙÊ ÁÒÇÕÍÅÎÔ %s" - -#: strings.c:658 -msgid " Display printable strings in [file(s)] (stdin by default)\n" -msgstr " ÷Ù×ÏÄÉÔ ÐÒÉÇÏÄÎÙÅ ÄÌÑ ÐÅÞÁÔÉ ÓÔÒÏËÉ × [ÆÁÊÌ(ÁÈ)] (ÐÏ ÕÍÏÌÞÁÎÉÀ stdin)\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" -" - 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= 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=[ÞÉÓÌÏ] ïÂÎÁÒÕÖÅÎÉÅ É ×Ù×ÏÄ ÌÀÂÙÈ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÅÊ Ó ÚÁ×ÅÒÛÁÀÝÉÍ\n" -" -<ÞÉÓÌÏ> ÎÕÌÅÍ ÄÌÉÎÏÊ × [ÞÉÓÌÏ] ÓÉÍ×ÏÌÏ× (ÐÏ ÕÍÏÌÞÁÎÉÀ 4).\n" -" -t --radix={o,x,d} ÷Ù×ÏÄ ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ ÓÔÒÏËÉ ÐÏ ÏÓÎÏ×ÁÎÉÀ 8, 10 ÉÌÉ 16\n" -" -o áÌÉÁÓ ÄÌÑ --radix=o\n" -" -T --target= õËÁÚÁÎÉÅ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" -" -e --encoding={s,S,b,l,B,L} ÷ÙÂÏÒ ÒÁÚÍÅÒÁ ÓÉÍ×ÏÌÁ É endianness:\n" -" s = 7-ÂÉÔ, S = 8-ÂÉÔ, {b,l} = 16-ÂÉÔ, {B,L} = 32-ÂÉÔ\n" -" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" -" -v --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" - -#: 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: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 "" -"üÔÁ ÐÒÏÇÒÁÍÍÁ Ñ×ÌÑÅÔÓÑ ÏÔËÒÙÔÙÍ ÐÒÏÇÒÁÍÍÎÙÍ ÏÂÅÓÐÅÞÅÎÉÅÍ; ×Ù ÍÏÖÅÔÅ\n" -"ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÅ ÄÁÌÅÅ ÓÏÇÌÁÓÎÏ ÕÓÌÏ×ÉÑÍÉ GNU General Public License.\n" -"üÔÁ ÐÒÏÇÒÁÍÍÁ ÎÅ ÉÍÅÅÔ ÁÂÓÏÌÀÔÎÏ ÎÉËÁËÉÈ ÇÁÒÁÎÔÉÊ.\n" - -#: windres.c:205 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s `%s': %s " - -#: windres.c:384 -msgid ": expected to be a directory\n" -msgstr ": ÏÖÉÄÁÌÏÓØ, ÞÔÏ ÜÔÏ ËÁÔÁÌÏÇ\n" - -#: windres.c:396 -msgid ": expected to be a leaf\n" -msgstr ": ÏÖÉÄÁÌÏÓØ, ÞÔÏ ÜÔÏ leaf\n" - -#: windres.c:405 -#, c-format -msgid "%s: warning: " -msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: " - -#: windres.c:407 -msgid ": duplicate value\n" -msgstr ": ÐÏ×ÔÏÒÑÀÝÅÅÓÑ ÚÎÁÞÅÎÉÅ\n" - -#: windres.c:569 -#, c-format -msgid "unknown format type `%s'" -msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÏÒÍÁÔÁ `%s'" - -#: windres.c:570 -#, c-format -msgid "%s: supported formats:" -msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ:" - -#. Otherwise, we give up. -#: windres.c:655 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÉÐ ÆÁÊÌÁ `%s'; ÉÓÐÏÌØÚÕÊÔÅ ÏÐÃÉÀ -I" - -#: windres.c:669 -#, c-format -msgid "Usage: %s [option(s)] [input-file] [output-file]\n" -msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [×ÈÏÄÎÏÊ_ÆÁÊÌ] [×ÙÈÏÄÎÏÊ_ÆÁÊÌ]\n" - -#: windres.c:671 -msgid "" -" The options are:\n" -" -i --input= Name input file\n" -" -o --output= Name output file\n" -" -J --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" -I --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -U --undefine Undefine SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" -l --language= 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" -" -I --include-dir=<ËÁÔÁÌÏÇ> ÷ËÌÀÞÁÅÍÙÊ ËÁÔÁÌÏÇ ÐÒÉ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÅ ÆÁÊÌÁ rc\n" -" -D --define [=<ÚÎÁÞ>] ïÐÒÅÄÅÌÅÎÉÅ SYM ÐÒÉ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÅ ÆÁÊÌÁ rc\n" -" -U --undefine ïÔÍÅÎÁ ÏÐÒÅÄÅÌÅÎÉÑ SYM ÐÒÉ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÅ ÆÁÊÌÁ rc\n" -" -v --verbose ðÏÄÒÏÂÎÏ - ÓÏÏÂÝÁÅÔ ×ÁÍ Ï ×ÓÅÈ Ó×ÏÉÈ ÄÅÊÓÔ×ÉÑÈ\n" -" -l --language=<ÚÎÁÞ> õÓÔÁÎÏ×ËÁ ÑÚÙËÁ ÐÒÉ ÞÔÅÎÉÉ ÆÁÊÌÁ rc\n" -" --use-temp-file éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÒÅÍÅÎÎÏÇÏ ÆÁÊÌÁ ×ÍÅÓÔÏ popen\n" -" ÄÌÑ ÞÔÅÎÉÑ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ ÐÒÅÐÒÏÃÅÓÓÏÒÁ\n" -" --no-use-temp-file éÓÐÏÌØÚÏ×ÁÎÉÅ popen (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n" - -#: windres.c:687 -msgid " --yydebug Turn on parser debugging\n" -msgstr " --yydebug ÷ËÌÀÞÅÎÉÅ ÏÔÌÁÄËÉ ÐÁÒÓÅÒÁ\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 ðÒÏÐÕÝÅÎÁ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó rc\n" -" -h --help ÷Ù×ÏÄ ÜÔÏÇÏ ÓÐÒÁ×ÏÞÎÏÇÏ ÓÏÏÂÝÅÎÉÑ\n" -" -V --version ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ\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 Ñ×ÌÑÅÔÓÑ ÏÄÎÉÍ ÉÚ rc, res ÉÌÉ coff, É ÏÐÒÅÄÅÌÑÅÔÓÑ ÐÏ ÒÁÓÛÉÒÅÎÉÀ\n" -"ÉÍÅÎÉ ÆÁÊÌÁ, ÅÓÌÉ ÎÅ ÂÙÌ ÕËÁÚÁÎ. ïÄÉÎÏÞÎÏÅ ÉÍÑ ÆÁÊÌÁ Ñ×ÌÑÅÔÓÑ ×ÈÏÄÎÙÍ ÆÁÊÌÏÍ.\n" -"âÅÚ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÉÓÐÏÌØÚÕÅÔ stdin, ÐÏ ÕÍÏÌÞÁÎÉÀ rc. âÅÚ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ\n" -"ÉÓÐÏÌØÚÕÅÔÓÑ stdout, ÐÏ ÕÍÏÌÞÁÎÉÀ rc.\n" - -#: windres.c:833 -msgid "invalid option -f\n" -msgstr "ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -f\n" - -#: windres.c:838 -msgid "No filename following the -fo option.\n" -msgstr "îÅÔ ÉÍÅÎÉ ÆÁÊÌÁ ÐÏÓÌÅ ÏÐÃÉÉ -fo.\n" - -#: windres.c:896 -msgid "Option -I is deprecated for setting the input format, please use -J instead.\n" -msgstr "ïÐÃÉÑ -I ËÒÁÊÎÅ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ×ÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ, ÐÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ -J.\n" - -#: windres.c:1014 -msgid "no resources" -msgstr "ÎÅÔ ÒÅÓÕÒÓÏ×" - -#: wrstabs.c:395 wrstabs.c:2055 -#, c-format -msgid "string_hash_lookup failed: %s" -msgstr "string_hash_lookup ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" - -#: wrstabs.c:695 -#, c-format -msgid "stab_int_type: bad size %u" -msgstr "stab_int_type: ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ %u" - -#: wrstabs.c:1495 -#, c-format -msgid "%s: warning: unknown size for field `%s' in struct" -msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅÉÚ×ÅÓÔÎÙÊ ÒÁÚÍÅÒ ÐÏÌÑ `%s' × struct" diff --git a/binutils/po/sv.po b/binutils/po/sv.po deleted file mode 100644 index 5f37fb53b..000000000 --- a/binutils/po/sv.po +++ /dev/null @@ -1,5571 +0,0 @@ -# Swedish messages for binutils. -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# Tommy Pettersson , 2001, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: binutils 2.12.1\n" -"POT-Creation-Date: 2002-01-17 13:58+0000\n" -"PO-Revision-Date: 2002-08-05 00:03+0200\n" -"Last-Translator: Tommy Pettersson \n" -"Language-Team: Swedish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -# -#: addr2line.c:73 -#, c-format -msgid "" -"Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" -" [-e executable] [--exe=executable] [--demangle[=style]]\n" -" [--basenames] [--functions] [addr addr ...]\n" -msgstr "" -"Användning: %s [-CfsHV] [-b bfd-namn] [--target=bfd-namn]\n" -" [-e programfil] [--exe=programfil] [--demangle[=stil]]\n" -" [--basenames] [--functions] [adress adress ...]\n" - -# -#: addr2line.c:80 ar.c:289 nlmconv.c:1121 objcopy.c:423 objcopy.c:455 -#: readelf.c:2181 size.c:91 strings.c:655 windres.c:737 -#, c-format -msgid "Report bugs to %s\n" -msgstr "" -"Rapportera fel till %s\n" -"Skicka synpunkter på översättningen till sv@li.org\n" - -# -#: addr2line.c:240 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: kommer inte åt adresserna i arkivet" - -# -#: addr2line.c:312 nm.c:447 objdump.c:2800 -#, c-format -msgid "unknown demangling style `%s'" -msgstr "okänd avkodningsstil \"%s\"" - -# -#: ar.c:237 -#, c-format -msgid "no entry %s in archive\n" -msgstr "ingen post %s i arkivet\n" - -# -#: ar.c:254 -#, c-format -msgid "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" -msgstr "Användning: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [medlemsnamn] [nummer] arkivfil fil...\n" - -# -#: ar.c:257 -#, c-format -msgid " %s -M [\n" -"\n" -msgstr "" -"\n" -"\n" -"\n" - -# -#: ar.c:850 ar.c:918 -#, c-format -msgid "%s is not a valid archive" -msgstr "%s är inte ett giltigt arkiv" - -# -#: ar.c:886 -#, c-format -msgid "stat returns negative size for %s" -msgstr "stat returnerar negativ storlek på %s" - -# -#: ar.c:1013 -#, c-format -msgid "%s is not an archive" -msgstr "%s är inte ett arkiv" - -# -#: ar.c:1020 -#, c-format -msgid "creating %s" -msgstr "skapar %s" - -# -#: ar.c:1226 -#, c-format -msgid "No member named `%s'\n" -msgstr "Ingen medlem heter \"%s\"\n" - -# -#: ar.c:1278 -#, 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:1439 -#, c-format -msgid "%s: no archive map to update" -msgstr "%s: inget arkivindex att uppdatera" - -# -#: arsup.c:88 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "Ingen post %s i arkivet.\n" - -# -#: arsup.c:120 -#, c-format -msgid "Can't open file %s\n" -msgstr "Kan inte öppna fil %s\n" - -# -#: arsup.c:171 -#, c-format -msgid "%s: Can't open output archive %s\n" -msgstr "%s: Kan inte öppna utdataarkiv %s\n" - -# -#: arsup.c:183 -#, c-format -msgid "%s: Can't open input archive %s\n" -msgstr "%s: Kan inte öppna indataarkiv %s\n" - -# -#: arsup.c:189 -#, c-format -msgid "%s: file %s is not an archive\n" -msgstr "%s: fil %s är inte ett arkiv\n" - -# -#: arsup.c:230 -#, c-format -msgid "%s: no output archive specified yet\n" -msgstr "%s: inget utdataarkiv angivet än\n" - -# -#: arsup.c:250 arsup.c:285 arsup.c:321 arsup.c:341 arsup.c:399 -#, c-format -msgid "%s: no open output archive\n" -msgstr "%s: inget öppet utdataarkiv\n" - -# -#: arsup.c:258 arsup.c:359 arsup.c:379 -#, 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:306 arsup.c:375 arsup.c:454 -#, c-format -msgid "%s: can't find module file %s\n" -msgstr "%s: hittar inte modulfil %s\n" - -# -#: arsup.c:406 -#, c-format -msgid "Current open archive is %s\n" -msgstr "Det aktuella öppna arkivet är %s\n" - -# -# BUGG: dubbelt blanksteg -#: arsup.c:433 -#, c-format -msgid "%s: no open archive\n" -msgstr "%s: inget öppet arkiv\n" - -# -#: bucomm.c:106 -#, 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:118 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: Passande format:" - -# -#: bucomm.c:135 -msgid "Supported targets:" -msgstr "Mål som hanteras:" - -# -#: bucomm.c:137 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: mål som hanteras:" - -# -#: bucomm.c:153 -msgid "Supported architectures:" -msgstr "Arkitekturer som hanteras:" - -# -#: bucomm.c:155 -#, c-format -msgid "%s: supported architectures:" -msgstr "%s: arkitekturer som hanteras:" - -# -#: bucomm.c:262 -#, c-format -msgid "%s: bad number: %s" -msgstr "%s: felaktigt tal: %s" - -# -#: coffdump.c:106 -#, c-format -msgid "#lines %d " -msgstr "#rader %d " - -# -#: coffdump.c:468 sysdump.c:740 -#, c-format -msgid "%s: Print a human readable interpretation of a SYSROFF object file\n" -msgstr "%s: Skriv en mänskligt läsbar tolkning av en SYSROFF-objektfil\n" - -# -#: coffdump.c:531 srconv.c:2029 sysdump.c:799 -msgid "no input file specified" -msgstr "ingen indatafil angavs" - -# -#: debug.c:653 -msgid "debug_add_to_current_namespace: no current file" -msgstr "debug_add_to_current_namespace: ingen aktuell fil" - -# -#: debug.c:736 -msgid "debug_start_source: no debug_set_filename call" -msgstr "debug_start_source: inget anrop till debug_set_filename" - -# -#: debug.c:795 -msgid "debug_record_function: no debug_set_filename call" -msgstr "debug_record_function: inget anrop till debug_set_filename" - -# -#: debug.c:851 -msgid "debug_record_parameter: no current function" -msgstr "debug_record_parameter: ingen aktuell funktion" - -# -#: debug.c:885 -msgid "debug_end_function: no current function" -msgstr "debug_end_function: ingen aktuell funktion" - -# -#: debug.c:891 -msgid "debug_end_function: some blocks were not closed" -msgstr "debug_end_function: några block avslutades inte" - -# -#: debug.c:921 -msgid "debug_start_block: no current block" -msgstr "debug_start_block: inget aktuellt block" - -# -#: debug.c:959 -msgid "debug_end_block: no current block" -msgstr "debug_end_block: inget aktuellt block" - -# -#: debug.c:966 -msgid "debug_end_block: attempt to close top level block" -msgstr "debug_end_block: försök gjordes att avsluta yttersta blocket" - -# -#: debug.c:992 -msgid "debug_record_line: no current unit" -msgstr "debug_record_line: ingen aktuell kompileringsenhet" - -# -#. FIXME -#: debug.c:1046 -msgid "debug_start_common_block: not implemented" -msgstr "debug_start_common_block: inte implementerat" - -# -#. FIXME -#: debug.c:1058 -msgid "debug_end_common_block: not implemented" -msgstr "debug_end_common_block: inte implementerat" - -# -# BUGG: Kolon saknas antagligen -#. FIXME. -#: debug.c:1152 -msgid "debug_record_label not implemented" -msgstr "debug_record_label: inte implementerat" - -# -#: debug.c:1178 -msgid "debug_record_variable: no current file" -msgstr "debug_record_variable: ingen aktuell fil" - -# -#: debug.c:1194 -msgid "debug_record_variable: no current block" -msgstr "debug_record_variable: inget aktuellt block" - -# -#: debug.c:1764 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "debug_make_undefined_type: sorten kan inte hanteras" - -# -#: debug.c:1970 -msgid "debug_name_type: no current file" -msgstr "debug_name_type: ingen aktuell fil" - -# -#: debug.c:2018 -msgid "debug_tag_type: no current file" -msgstr "debug_tag_type: ingen aktuell fil" - -# -#: debug.c:2026 -msgid "debug_tag_type: extra tag attempted" -msgstr "debug_tag_type: försök gjordes att sätta en extra tagg" - -# -#: debug.c:2066 -#, 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:2090 -msgid "debug_find_named_type: no current compilation unit" -msgstr "debug_find_named_type: ingen aktuell kompileringsenhet" - -# -#: debug.c:2197 -#, 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:2662 -msgid "debug_write_type: illegal type encountered" -msgstr "debug_write_type: påträffade en ogiltig typ" - -# -#: dlltool.c:743 dlltool.c:768 dlltool.c:794 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "Internt fel: Okänd maskintyp: %d" - -# -#: dlltool.c:831 -#, c-format -msgid "Can't open def file: %s" -msgstr "Kan inte öppna def-fil: %s" - -# -# Här parsas def-filen bara, så den bearbetas inte -#: dlltool.c:836 -#, c-format -msgid "Processing def file: %s" -msgstr "Behandlar def-fil: %s" - -# -#: dlltool.c:840 -msgid "Processed def file" -msgstr "Def-filen är behandlad" - -# -#: dlltool.c:866 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "Syntaktiskt fel i def-fil %s:%d" - -# -#: dlltool.c:905 -#, c-format -msgid "NAME: %s base: %x" -msgstr "NAME: %s bas: %x" - -# -#: dlltool.c:908 dlltool.c:927 -msgid "Can't have LIBRARY and NAME" -msgstr "Kan inte ha både LIBRARY och NAME" - -# -#: dlltool.c:924 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "LIBRARY: %s bas: %x" - -# -#: dlltool.c:1182 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "wait: %s" - -# -#: dlltool.c:1187 dllwrap.c:455 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "barnprocessen fick fatal signal %d" - -# -#: dlltool.c:1193 dllwrap.c:462 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s avslutade med status %d" - -# -#: dlltool.c:1225 -#, c-format -msgid "Sucking in info from %s section in %s" -msgstr "Suger åt mig info från sektion %s i %s" - -# -#: dlltool.c:1349 -#, c-format -msgid "Excluding symbol: %s" -msgstr "Undantar symbol: %s" - -# -#: dlltool.c:1444 dlltool.c:1455 nm.c:958 nm.c:969 objdump.c:383 objdump.c:400 -#, c-format -msgid "%s: no symbols" -msgstr "%s: inga symboler" - -# -#. FIXME: we ought to read in and block out the base relocations -#: dlltool.c:1482 -#, c-format -msgid "Done reading %s" -msgstr "Klar med att läsa %s" - -# -#: dlltool.c:1493 -#, c-format -msgid "Unable to open object file: %s" -msgstr "Kan inte öppna objektfil: %s" - -# -#: dlltool.c:1496 -#, c-format -msgid "Scanning object file %s" -msgstr "Genomsöker objektfil %s" - -# -#: dlltool.c:1511 -#, 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:1603 -msgid "Adding exports to output file" -msgstr "Lägger till exporter till utdatafilen" - -# -#: dlltool.c:1648 -msgid "Added exports to output file" -msgstr "La till exporter till utdatafilen" - -# -#: dlltool.c:1772 -#, c-format -msgid "Generating export file: %s" -msgstr "Genererar exportfil: %s" - -# -#: dlltool.c:1777 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "Kan inte öppna temporär assemblerfil: %s" - -# -#: dlltool.c:1780 -#, c-format -msgid "Opened temporary file: %s" -msgstr "Öppnade temporär fil: %s" - -# -#: dlltool.c:2004 -msgid "Generated exports file" -msgstr "Genererade exportfil" - -# -#: dlltool.c:2266 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "bfd_open misslyckades att öppna stubbfil: %s" - -# -#: dlltool.c:2269 -#, c-format -msgid "Creating stub file: %s" -msgstr "Skapar stubbfil: %s" - -# -#: dlltool.c:2658 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "misslyckades att öppna temporär huvudfil: %s" - -# -#: dlltool.c:2717 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "misslyckades att öppna temporär svansfil: %s" - -# -#: dlltool.c:2785 -#, c-format -msgid "Can't open .lib file: %s" -msgstr "Kan inte öppna .lib-fil: %s" - -# -#: dlltool.c:2788 -#, c-format -msgid "Creating library file: %s" -msgstr "Skapar biblioteksfil: %s" - -# -#: dlltool.c:2847 -#, c-format -msgid "cannot delete %s: %s" -msgstr "kan inte ta bort %s: %s" - -# -#: dlltool.c:2851 -msgid "Created lib file" -msgstr "Skapade biblioteksfilen" - -# -#: dlltool.c:2956 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "Varning, ignorerar dubbel EXPORT %s %d,%d" - -# -#: dlltool.c:2962 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "Fel, dubbel EXPORT med ordningstal: %s" - -# -# Här bearbetas definitionerna (sorteras bl.a.) -#: dlltool.c:3089 -msgid "Processing definitions" -msgstr "Bearbetar definitioner" - -# -#: dlltool.c:3127 -msgid "Processed definitions" -msgstr "Definitionerna är bearbetade" - -# -# BUGG: Kolon fattas -#. xgetext:c-format -#: dlltool.c:3138 dllwrap.c:519 -#, c-format -msgid "Usage %s \n" -msgstr "Användning: %s \n" - -# -#. xgetext:c-format -#: dlltool.c:3140 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine Skapa som DLL för . [förval: %s]\n" - -# -#: dlltool.c:3141 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " möjliga : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -# -#: dlltool.c:3142 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp Generera en exportfil.\n" - -# -#: dlltool.c:3143 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib Generera ett gränssnittsbibliotek.\n" - -# -#: dlltool.c:3144 -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:3145 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname Namn på indata-dll att infoga i gränssnittsbiblioteket.\n" - -# -#: dlltool.c:3146 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def Namn på .def-fil att läsa in.\n" - -# -#: dlltool.c:3147 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def Namn på .def-fil att skapa.\n" - -# -#: dlltool.c:3148 -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:3149 -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:3150 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols Exportera inte symboler i \n" - -# -#: dlltool.c:3151 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr " --no-default-excludes Inga automatiskt undantagna symboler\n" - -# -#: dlltool.c:3152 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file Läs den länkargenererade basfilen.\n" - -# -#: dlltool.c:3153 -msgid " -x --no-idata4 Don't generate idata$4 section.\n" -msgstr " -x --no-idata4 Generera ingen idata$4-sektion.\n" - -# -#: dlltool.c:3154 -msgid " -c --no-idata5 Don't generate idata$5 section.\n" -msgstr " -c --no-idata5 Generera ingen idata$5-sektion.\n" - -# -#: dlltool.c:3155 -msgid " -U --add-underscore Add underscores to symbols in interface library.\n" -msgstr " -U --add-underscore Lägg till understreck på symboler i gränssnittsbiblioteket.\n" - -# -#: dlltool.c:3156 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at Utplåna @ från exporterade namn.\n" - -# -#: dlltool.c:3157 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias Lägg till alias utan @.\n" - -# -#: dlltool.c:3158 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as Använd som assemblerare.\n" - -# -#: dlltool.c:3159 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags Skicka till assembleraren.\n" - -# -#: dlltool.c:3160 -msgid " -C --compat-implib Create backward compatible import library.\n" -msgstr " -C --compat-implib Skapa bakåtkompatibelt importbibliotek.\n" - -# -#: dlltool.c:3161 -msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" -msgstr " -n --no-delete Behåll temp.-filer (repetera för ökat antal).\n" - -# -#: dlltool.c:3162 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose Var mångordig.\n" - -# -#: dlltool.c:3163 -msgid " -V --version Display the program version.\n" -msgstr " -V --version Visa versionsinformation om programmet.\n" - -# -#: dlltool.c:3164 -msgid " -h --help Display this information.\n" -msgstr " -h --help Visa den här informationen.\n" - -# -#: dlltool.c:3166 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf Behandla mcore-elf-objektfiler till .\n" - -# -#: dlltool.c:3167 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker Använd som länkare.\n" - -# -# Justeringen blir fel här för flaggan är för lång. -#: dlltool.c:3168 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags Skicka till länkaren.\n" - -# -#: dlltool.c:3315 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "Kan inte öppna basfilen: %s" - -# -#: dlltool.c:3344 -#, c-format -msgid "Machine '%s' not supported" -msgstr "Maskin \"%s\" hanteras inte" - -# -#: dlltool.c:3447 dllwrap.c:240 -#, c-format -msgid "Tried file: %s" -msgstr "Provade fil: %s" - -# -#: dlltool.c:3454 dllwrap.c:247 -#, c-format -msgid "Using file: %s" -msgstr "Använder fil: %s" - -# -#: dllwrap.c:334 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "Behåller temporär basfil %s" - -# -#: dllwrap.c:336 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "Tar bort temporär basfil %s" - -# -#: dllwrap.c:350 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "Behåller temporär exportfil %s" - -# -#: dllwrap.c:352 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "Tar bort temporär exportfil %s" - -# -#: dllwrap.c:365 -#, c-format -msgid "Keeping temporary def file %s" -msgstr "Behåller temporär def-fil %s" - -# -#: dllwrap.c:367 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "Tar bort temporär def-fil %s" - -# -#: dllwrap.c:520 -msgid " Generic options:\n" -msgstr " Generella flaggor:\n" - -# -#: dllwrap.c:521 -msgid " --quiet, -q Work quietly\n" -msgstr " --quiet, -q Arbeta under tystnad\n" - -# -#: dllwrap.c:522 -msgid " --verbose, -v Verbose\n" -msgstr " --verbose, -v Mångordig\n" - -# -#: dllwrap.c:523 -msgid " --version Print dllwrap version\n" -msgstr " --version Visa versionsinformation för dllwrap\n" - -# -#: dllwrap.c:524 -msgid " --implib Synonym for --output-lib\n" -msgstr " --implib Synonym för --output-lib\n" - -# -#: dllwrap.c:525 -#, c-format -msgid " Options for %s:\n" -msgstr " Flaggor för %s:\n" - -# -#: dllwrap.c:526 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name Förvald till \"gcc\"\n" - -# -#: dllwrap.c:527 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags Förbigå förvalda flaggor för ld\n" - -# -#: dllwrap.c:528 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name Förvalt till \"dlltool\"\n" - -# -#: dllwrap.c:529 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry Ange alternativ ingångspunkt i DLL:en\n" - -# -#: dllwrap.c:530 -msgid " --image-base Specify image base address\n" -msgstr " --image-base Ange bildens basadress\n" - -# -#: dllwrap.c:531 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target i386-cygwin32 eller i386-mingw32\n" - -# -#: dllwrap.c:532 -msgid " --dry-run Show what needs to be run\n" -msgstr " --dry-run Gör inget annat än att visa vad som måste köras\n" - -# -#: dllwrap.c:533 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr " --mno-cygwin Skapa Mingw-DLL\n" - -# -#: dllwrap.c:534 -msgid " Options passed to DLLTOOL:\n" -msgstr " Flaggor som skickas till DLLVERKTYG:\n" - -# -#: dllwrap.c:535 -msgid " --machine \n" -msgstr " --machine \n" - -# -#: dllwrap.c:536 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp Generera exportfil.\n" - -# -#: dllwrap.c:537 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib Generera indatabibliotek.\n" - -# -#: dllwrap.c:538 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr " --add-indirect Lägg till indirekta dll till exportfilen.\n" - -# -#: dllwrap.c:539 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname Namn på indata-dll som ska infogas i utdatabiblioteket.\n" - -# -#: dllwrap.c:540 -msgid " --def Name input .def file\n" -msgstr " --def Namnge .def-indatafilen\n" - -# -#: dllwrap.c:541 -msgid " --output-def Name output .def file\n" -msgstr " --output-def Namnge .def-utdatafilen\n" - -# -#: dllwrap.c:542 -msgid " --export-all-symbols Export all symbols to .def\n" -msgstr " --export-all-symbols Exportera alla symboler till .def\n" - -# -#: dllwrap.c:543 -msgid " --no-export-all-symbols Only export .drectve symbols\n" -msgstr " --no-export-all-symbols Exportera endast .drectve-symboler\n" - -# -#: dllwrap.c:544 -msgid " --exclude-symbols Exclude from .def\n" -msgstr " --exclude-symbols Undanta symbolerna i från .def\n" - -# -#: dllwrap.c:545 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes Inga automatiskt undantagna symboler\n" - -# -#: dllwrap.c:546 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file Läs länkargenererad basfil\n" - -# -#: dllwrap.c:547 -msgid " --no-idata4 Don't generate idata$4 section\n" -msgstr " --no-idata4 Generera ingen idata$4-sektion\n" - -# -#: dllwrap.c:548 -msgid " --no-idata5 Don't generate idata$5 section\n" -msgstr " --no-idata5 Generera ingen idata$5-sektion\n" - -# -#: dllwrap.c:549 -msgid " -U Add underscores to .lib\n" -msgstr " -U Lägg till understreck i .lib\n" - -# -#: dllwrap.c:550 -msgid " -k Kill @ from exported names\n" -msgstr " -k Utplåna @ från exporterade namn\n" - -# -#: dllwrap.c:551 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias Lägg till alias utan @\n" - -# -#: dllwrap.c:552 -msgid " --as Use for assembler\n" -msgstr " --as Använd som assemblerare\n" - -# -#: dllwrap.c:553 -msgid " --nodelete Keep temp files.\n" -msgstr " --nodelete Behåll temporära filer.\n" - -# -#: dllwrap.c:554 -msgid " Rest are passed unmodified to the language driver\n" -msgstr " Övriga flaggor skickas oförändrade till programspråksenheten\n" - -# -#: dllwrap.c:824 -msgid "Must provide at least one of -o or --dllname options" -msgstr "Ange minst en av flaggorna -o eller --dllname" - -# -#: dllwrap.c:852 -msgid "" -"no export definition file provided.\n" -"Creating one, but that may not be what you want" -msgstr "" -"ingen export-definitionsfil angavs.\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:1014 -#, 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:1015 -#, 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:1016 -#, c-format -msgid "DRIVER name : %s\n" -msgstr "DRIVRUTIN namn : %s\n" - -# -# Indenteringen är ökad för att översättningen ska få plats framför -# kolonet på alla 4 strängar. -#: dllwrap.c:1017 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "DRIVRUTIN flaggor : %s\n" - -# -#: ieee.c:317 -msgid "unexpected end of debugging information" -msgstr "oväntat slut på felsökningsinformationen" - -# -#: ieee.c:412 -msgid "invalid number" -msgstr "ogiltigt tal" - -# -#: ieee.c:471 -msgid "invalid string length" -msgstr "ogiltig stränglängd" - -# -#: ieee.c:528 ieee.c:569 -msgid "expression stack overflow" -msgstr "överspill i uttrycksstacken" - -# -#: ieee.c:548 -msgid "unsupported IEEE expression operator" -msgstr "IEEE-uttrycksoperator som inte stöds" - -# -#: ieee.c:563 -msgid "unknown section" -msgstr "okänd sektion" - -# -#: ieee.c:584 -msgid "expression stack underflow" -msgstr "underspill i uttrycksstacken" - -# -#: ieee.c:598 -msgid "expression stack mismatch" -msgstr "felbalanserad uttrycksstack" - -# -#: ieee.c:637 -msgid "unknown builtin type" -msgstr "okänd inbyggd typ" - -# -#: ieee.c:782 -msgid "BCD float type not supported" -msgstr "flyttalstyp BCD stöds inte" - -# -#: ieee.c:928 -msgid "unexpected number" -msgstr "oväntat tal" - -# -#: ieee.c:935 -msgid "unexpected record type" -msgstr "oväntad posttyp" - -# -#: ieee.c:968 -msgid "blocks left on stack at end" -msgstr "block kvar på stacken på slutet" - -# -#: ieee.c:1233 -msgid "unknown BB type" -msgstr "okänd BB-typ" - -# -#: ieee.c:1242 -msgid "stack overflow" -msgstr "överspill i stacken" - -# -#: ieee.c:1267 -msgid "stack underflow" -msgstr "underspill i stacken" - -# -#: ieee.c:1381 ieee.c:1453 ieee.c:2152 -msgid "illegal variable index" -msgstr "otillåtet variabelindex" - -# -#: ieee.c:1431 -msgid "illegal type index" -msgstr "otillåtet typindex" - -# -#: ieee.c:1441 ieee.c:1478 -msgid "unknown TY code" -msgstr "okänd TY-kod" - -# -#: ieee.c:1460 -msgid "undefined variable in TY" -msgstr "odefinierad variabel i TY" - -# -#. Pascal file name. FIXME. -#: ieee.c:1871 -msgid "Pascal file name not supported" -msgstr "Pascal-filnamn stöds inte" - -# -# BUGG: qualif>i in-file [out-file]\n" -msgstr "Användning: %s indatafil [utdatafil]\n" - -# -#: objcopy.c:364 objcopy.c:433 -msgid " The options are:\n" -msgstr " Flaggorna är:\n" - -# -#: objcopy.c:365 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code 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 Antag indatafilens format är \n" -" -O --output-target Skapa utdatafilen i formatet \n" -" -B --binary-architecture Välj arkitektur för utfil när indata är binär\n" -" -F --target Sätt både in- och utformatet till \n" -" --debugging Konvertera felsökningsinfo, om möjligt\n" -" -p --preserve-dates Kopiera ändrings/åtkomsttider till utdatan\n" -" -j --only-section Kopiera endast sektion till utdatan\n" -" -R --remove-section Ta bort sektion från utdatan\n" -" -S --strip-all Ta bort all symbol- och omlokaliseringsinfo\n" -" -g --strip-debug Ta bort alla felsökningssymboler\n" -" --strip-unneeded Ta bort symboler onödiga för omlokalisering\n" -" -N --strip-symbol Kopiera inte symbol \n" -" -K --keep-symbol Kopiera endast symbol \n" -" -L --localize-symbol Markera symbol som lokal\n" -" -G --keep-global-symbol Gör alla symboler lokala, förutom \n" -" -W --weaken-symbol Markera symbol 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 Kopiera endast en av varje byte\n" -" -b --byte Välj ut :e byten i varje intervall\n" -" --gap-fill Fyll luckor mellan sektionerna med \n" -" --pad-to Fyll ut efter sista sektionen fram till \n" -" --set-start Sätt startadressen till \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} {=|+|-}\n" -" Ändra LMA och VMA på sektion med \n" -" --change-section-lma {=|+|-}\n" -" Ändra LMA på sektion med \n" -" --change-section-vma {=|+|-}\n" -" Ändra VMA på sektion med \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Varna (inte/[no-]) om en sektion inte finns\n" -" --set-section-flags =\n" -" Sätt sektion s attribut till \n" -" --add-section = Lägg till sektion i till utdatan\n" -" --rename-section =[,] Byt namn på sektion till \n" -" --change-leading-char Ändra till utformatets typ av inledningstecken\n" -" --remove-leading-char Ta bort inledningstecken från globala symboler\n" -" --redefine-sym = Definiera om symbolen med namn till \n" -" --srec-len Begränsa längden på genererade S-poster\n" -" --srec-forceS3 Begränsa typen av genererade S-poster till S3\n" -" --strip-symbols -N för alla symboler som listas i \n" -" --keep-symbols -K för alla symboler som listas i \n" -" --localize-symbols -L för alla symboler som listas i \n" -" --keep-global-symbols -G för alla symboler som listas i \n" -" --weaken-symbols -W för alla symboler som listas i \n" -" --alt-machine-code Använd alternativ maskinkod för utdata\n" -" -v --verbose Lista alla förändrade objektfiler\n" -" -V --version Visa programmets versionsinformation\n" -" -h --help Visa denna hjälp\n" - -# -#: objcopy.c:432 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "Användning: %s indatafil(er)\n" - -# -#: objcopy.c:434 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -F --target Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section Remove section from the output\n" -" -s --strip-all Remove all symbol and relocation information\n" -" -g -S --strip-debug Remove all debugging symbols\n" -" --strip-unneeded Remove all symbols not needed by relocations\n" -" -N --strip-symbol Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target Antag indatafilens format är \n" -" -O --output-target Skapa utdatafilen i formatet \n" -" -F --target Sätt både in- och utformatet till \n" -" -p --preserve-dates Kopiera ändrings/åtkomsttider till utdatan\n" -" -R --remove-section Ta bort sektion från utdatan\n" -" -s --strip-all Ta bort all symbol- och omlokaliseringsinfo\n" -" -g -S --strip-debug Ta bort alla felsökningssymboler\n" -" --strip-unneeded Ta bort symboler onödiga för omlokaliseringen\n" -" -N --strip-symbol Kopiera inte symbol \n" -" -K --keep-symbol Kopiera endast symbol \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" -" -o Spara den utrensade utdatan i \n" - -# -#: objcopy.c:504 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "okänd sektionsflagga \"%s\"" - -# -#: objcopy.c:505 -#, c-format -msgid "supported flags: %s" -msgstr "flaggor som hanteras: %s" - -# -#: objcopy.c:582 objcopy.c:2206 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "kan inte ta status: %s: %s" - -# -#: objcopy.c:589 objcopy.c:2224 -#, c-format -msgid "cannot open: %s: %s" -msgstr "kan inte öppna: %s: %s" - -# -#: objcopy.c:592 objcopy.c:2228 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread misslyckades" - -# -#: objcopy.c:665 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "Ignorerar skräp hittat på rad %d i %s" - -# -#: objcopy.c:886 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: Flera omdefinieringar av symbol \"%s\"" - -# -#: objcopy.c:891 -#, c-format -msgid "%s: Symbol \"%s\" is target of more than one redefinition" -msgstr "%s: Symbol \"%s\" är mål för mer än en omdefiniering" - -# -#: objcopy.c:943 -msgid "Unable to change endianness of input file(s)" -msgstr "Kan inte ändra endian-typ på indatafilen(erna)" - -# -#: objcopy.c:951 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "kopierar från %s(%s) till %s(%s)\n" - -# -#: objcopy.c:975 -#, c-format -msgid "Warning: Output file cannot represent architecture %s" -msgstr "Varning: Utdatafilen kan inte representera arkitektur %s" - -# -#: objcopy.c:1002 -#, c-format -msgid "can't create section `%s': %s" -msgstr "kan inte skapa sektion \"%s\": %s" - -# -#: objcopy.c:1088 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "Kan inte fylla luckan efter %s: %s" - -# -#: objcopy.c:1113 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "Kan inte fylla ut efter %s: %s" - -# -#: objcopy.c:1252 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: fel vid kopiering av privat BFD-data: %s" - -# -#: objcopy.c:1265 -msgid "unknown alternate machine code, ignored" -msgstr "okänd alternativ maskinkod, ignorerad" - -# -#: objcopy.c:1295 -#, c-format -msgid "cannot mkdir %s for archive copying (error: %s)" -msgstr "kan inte skapa katalog %s för arkivkopiering (fel: %s)" - -# -#: objcopy.c:1466 -#, c-format -msgid "Multiple renames of section %s" -msgstr "Flera namnbyten på sektion %s" - -# -#: objcopy.c:1550 -msgid "making" -msgstr "tillverkning" - -# -#: objcopy.c:1559 -msgid "size" -msgstr "storlek" - -# -#: objcopy.c:1573 -msgid "vma" -msgstr "vma" - -# -#: objcopy.c:1599 -msgid "alignment" -msgstr "jämn gräns" - -# -#: objcopy.c:1607 -msgid "flags" -msgstr "flaggor" - -# -#: objcopy.c:1624 -msgid "private data" -msgstr "privat data" - -# -#: objcopy.c:1632 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: sektion \"%s\": fel på %s: %s" - -# -#: objcopy.c:1910 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: kan inte skapa felsökningssektion: %s" - -# -#: objcopy.c:1925 -#, 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:1934 -#, 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:2041 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: kan inte ta status: %s" - -# -#: objcopy.c:2092 -msgid "byte number must be non-negative" -msgstr "bytenummer får inte vara negativt" - -# -#: objcopy.c:2102 -msgid "interleave must be positive" -msgstr "intervallstorleken måste vara positiv" - -# -#: objcopy.c:2122 objcopy.c:2130 -#, c-format -msgid "%s both copied and removed" -msgstr "%s både kopierad och borttagen" - -# -#: objcopy.c:2203 objcopy.c:2273 objcopy.c:2373 objcopy.c:2400 objcopy.c:2424 -#: objcopy.c:2428 objcopy.c:2448 -#, c-format -msgid "bad format for %s" -msgstr "felaktigt format på %s" - -# -#: objcopy.c:2342 -#, 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:2494 -msgid "alternate machine code index must be positive" -msgstr "index för alternativ maskinkod måste vara positivt" - -# -#: objcopy.c:2512 -msgid "byte number must be less than interleave" -msgstr "bytenummer måste vara mindre än antalet byte i intervallet" - -# -#: objcopy.c:2539 -#, c-format -msgid "architecture %s unknown" -msgstr "arkitektur %s är okänd" - -# -#: objcopy.c:2543 -msgid "Warning: input target 'binary' required for binary architecture parameter." -msgstr "Varning: indata måste ha formatet \"binary\" för binärarkitektursparametern." - -# -#: objcopy.c:2544 -#, c-format -msgid " Argument %s ignored" -msgstr " Argument %s ignoreras" - -# -#: objcopy.c:2550 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "Kan inte ta status: %s: %s" - -# -#: objcopy.c:2590 objcopy.c:2604 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s %s%c0x%s användes aldrig" - -# -#: objdump.c:164 -#, c-format -msgid "Usage: %s OPTION... FILE...\n" -msgstr "Användning: %s FLAGGA... FIL...\n" - -# -#: objdump.c:165 -msgid "Display information from object FILE.\n" -msgstr "Visa information från en objektFIL.\n" - -# -#: objdump.c:166 -msgid "" -"\n" -" At least one of the following switches must be given:\n" -msgstr "" -"\n" -" Minst en av följande flaggor måste anges:\n" - -# -#: objdump.c:167 -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 (obehandlat) 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 omlokaliseringsposterna i filen\n" -" -R, --dynamic-reloc Visa de dynamiska omlokaliseringsposterna 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:189 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" -"\n" -" Följande flaggor är frivilliga:\n" - -# -#: objdump.c:190 -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=BFDNAMN Ange att målobjektets format är BFDNAMN\n" -" -m, --architecture=MASKIN Ange att målarkitekturen är 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 kodade symbolnamn\n" -" STIL, om angivet, kan vara: \"auto\", \"gnu\",\n" -" \"lucid\", \"arm\", \"hp\", \"edg\", \"gnu-new-abi\"\n" -" -w, --wide Anpassa 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:359 -msgid "Sections:\n" -msgstr "Sektioner:\n" - -# -#: objdump.c:362 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Namn Storlek VMA LMA Filoffs Just" - -# -#: objdump.c:364 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Namn Storlek VMA LMA Filoffs Just" - -# -#: objdump.c:368 -msgid " Flags" -msgstr " Flaggor" - -# -#: objdump.c:418 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: inte ett dynamiskt objekt" - -# -#: objdump.c:434 -#, c-format -msgid "%s: No dynamic symbols" -msgstr "%s: Inga dynamiska symboler" - -# -#: objdump.c:1124 -msgid "Out of virtual memory" -msgstr "Slut på virtuellt minne" - -# -#: objdump.c:1553 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "Kan inte använda den tillhandahållna maskinen %s" - -# -#: objdump.c:1571 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "Kan inte disassemblera för arkitektur %s\n" - -# -#: objdump.c:1653 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "Disassemblering av sektion %s:\n" - -# -#: objdump.c:1828 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" -"Det finns ingen %s-sektion\n" -"\n" - -# -#: objdump.c:1835 -#, c-format -msgid "%s has no %s section" -msgstr "%s har ingen %s-sektion" - -# -#: objdump.c:1849 -#, c-format -msgid "Reading %s section of %s failed: %s" -msgstr "Läsa %s-sektionen i %s misslyckades: %s" - -# -#: objdump.c:1861 -#, c-format -msgid "Reading %s section of %s failed: %s\n" -msgstr "Läsa %s-sektionen i %s misslyckades: %s\n" - -# -#: objdump.c:1904 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" -"Innehåll i %s-sektionen:\n" -"\n" - -# -#: objdump.c:2004 -#, c-format -msgid "architecture: %s, " -msgstr "arkitektur: %s, " - -# -#: objdump.c:2007 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "flaggor 0x%08x:\n" - -# -#: objdump.c:2020 -msgid "" -"\n" -"start address 0x" -msgstr "" -"\n" -"startadress 0x" - -# -#: objdump.c:2052 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" -"\n" -"%s: filformat %s\n" - -# -#: objdump.c:2094 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: visa felsökningsinformationen misslyckades" - -# -#: objdump.c:2171 -#, c-format -msgid "In archive %s:\n" -msgstr "I arkiv %s:\n" - -# -#: objdump.c:2223 -#, c-format -msgid "Contents of section %s:\n" -msgstr "Innehåll i %s-sektionen:\n" - -# -#: objdump.c:2736 -#, c-format -msgid "BFD header file version %s\n" -msgstr "BFD-huvudfil version %s\n" - -# -#: objdump.c:2825 -msgid "unrecognized -E option" -msgstr "okänd -E-flagga" - -# -#: objdump.c:2836 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "okänd --endian-typ \"%s\"" - -# -#: rdcoff.c:205 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "parse_coff_type: Felaktig typkod 0x%x" - -# -#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:730 -#, c-format -msgid "bfd_coff_get_syment failed: %s" -msgstr "bfd_coff_get_syment misslyckades: %s" - -# -#: rdcoff.c:439 rdcoff.c:750 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent misslyckades: %s" - -# -#: rdcoff.c:817 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: .bf saknar inledande funktion" - -# -#: rdcoff.c:867 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "%ld: oväntad .ef\n" - -# -#: rddbg.c:87 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "%s: ingen känd felsökningsinformation" - -# -#: rddbg.c:410 -msgid "Last stabs entries before error:\n" -msgstr "De sista stabs-posterna innan felet:\n" - -# -#: readelf.c:318 -#, c-format -msgid "%s: Error: " -msgstr "%s: Fel: " - -# -#: readelf.c:329 -#, c-format -msgid "%s: Warning: " -msgstr "%s: Varning: " - -# -#: readelf.c:351 -#, c-format -msgid "Unable to seek to %x for %s\n" -msgstr "Kan inte uppsöka %2$s på %1$x\n" - -# -#: readelf.c:362 -#, c-format -msgid "Out of memory allocating %d bytes for %s\n" -msgstr "Slut på minne vid allokering av %d byte för %s\n" - -# -#: readelf.c:370 -#, c-format -msgid "Unable to read in %d bytes of %s\n" -msgstr "Kan inte läsa in %d byte från %s\n" - -# -#: readelf.c:423 readelf.c:581 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "Storlek på data som inte kan behandlas: %d\n" - -# -#: readelf.c:660 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "Vet inte hur man omlokaliserar på den här maskinarkitekturen\n" - -# -#: readelf.c:682 readelf.c:711 readelf.c:757 readelf.c:784 -msgid "relocs" -msgstr "omlokaliseringar" - -# -#: readelf.c:693 readelf.c:722 readelf.c:767 readelf.c:794 -msgid "out of memory parsing relocs" -msgstr "slut på minne vid tolkning av omlokaliseringar" - -# -#: readelf.c:845 -msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" -msgstr " Offset Info Typ Symbolvärde Symbolnamn Tillägg\n" - -# -#: readelf.c:848 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Offset Info Typ Symbolvärde Symbolnamn\n" - -# -#: readelf.c:854 -msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" -msgstr " Offset Info Typ Symbolvärde Symbolnamn Tillägg\n" - -# -#: readelf.c:857 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Offset Info Typ Symbolvärde Symbolnamn\n" - -# -#: readelf.c:1061 readelf.c:1063 -#, c-format -msgid "unrecognised: %-7lx" -msgstr "okänd: %-7lx" - -# -#: readelf.c:1085 -#, c-format -msgid "" -msgstr "" - -# -#: readelf.c:1315 -#, c-format -msgid "Processor Specific: %lx" -msgstr "processorspecifik: %lx" - -# -#: readelf.c:1334 -#, c-format -msgid "Operating System specific: %lx" -msgstr "operativsystemsspecifik: %lx" - -# -#: readelf.c:1337 readelf.c:1961 -#, c-format -msgid ": %lx" -msgstr ": %lx" - -# -#: readelf.c:1351 -msgid "NONE (None)" -msgstr "NONE (ingen)" - -# -#: readelf.c:1352 -msgid "REL (Relocatable file)" -msgstr "REL (omlokaliseringsbar fil)" - -# -#: readelf.c:1353 -msgid "EXEC (Executable file)" -msgstr "EXEC (exekverbar fil)" - -# -#: readelf.c:1354 -msgid "DYN (Shared object file)" -msgstr "DYN (delad objektfil)" - -# -#: readelf.c:1355 -msgid "CORE (Core file)" -msgstr "CORE (minnesfil)" - -# -#: readelf.c:1359 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "processorspecifik: (%x)" - -# -#: readelf.c:1361 -#, c-format -msgid "OS Specific: (%x)" -msgstr "OS-specifik: (%x)" - -# -#: readelf.c:1363 readelf.c:1460 readelf.c:2112 -#, c-format -msgid ": %x" -msgstr ": %x" - -# -#: readelf.c:1376 -msgid "None" -msgstr "ingen" - -# -#: readelf.c:2152 -msgid "Usage: readelf {options} elf-file(s)\n" -msgstr "Användning: readelf {flaggor} elf-fil(er)\n" - -# -#: readelf.c:2153 -msgid " Options are:\n" -msgstr " Flaggorna är:\n" - -# -#: readelf.c:2154 -msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" -msgstr " -a eller --all Samma som: -h -l -S -s -r -d -V -A -I\n" - -# -#: readelf.c:2155 -msgid " -h or --file-header Display the ELF file header\n" -msgstr " -h eller --file-header Visa ELF-filens huvud\n" - -# -#: readelf.c:2156 -msgid " -l or --program-headers or --segments\n" -msgstr " -l eller --program-headers eller --segments\n" - -# -#: readelf.c:2157 -msgid " Display the program headers\n" -msgstr " Visa programhuvudena\n" - -# -#: readelf.c:2158 -msgid " -S or --section-headers or --sections\n" -msgstr " -S eller --section-headers eller --sections\n" - -# -#: readelf.c:2159 -msgid " Display the sections' header\n" -msgstr " Visa sektionernas huvud\n" - -# -#: readelf.c:2160 -msgid " -e or --headers Equivalent to: -h -l -S\n" -msgstr " -e eller --headers Samma som: -h -l -S\n" - -# -#: readelf.c:2161 -msgid " -s or --syms or --symbols Display the symbol table\n" -msgstr "" -" -s eller --syms eller --symbols\n" -" Visa symboltabellen\n" - -# -#: readelf.c:2162 -msgid " -n or --notes Display the core notes (if present)\n" -msgstr " -n eller --notes Visa kommentarer från minnesutskriften (om de finns)\n" - -# -#: readelf.c:2163 -msgid " -r or --relocs Display the relocations (if present)\n" -msgstr " -r eller --relocs Visa omlokaliseringsinformationen (om den finns)\n" - -# -#: readelf.c:2164 -msgid " -u or --unwind Display the unwind info (if present)\n" -msgstr " -u eller --unwind Visa tillbakarullningsinformation (om den finns)\n" - -# -#: readelf.c:2165 -msgid " -d or --dynamic Display the dynamic segment (if present)\n" -msgstr " -d eller --dynamic Visa det dynamiska segmentet (om det finns)\n" - -# -#: readelf.c:2166 -msgid " -V or --version-info Display the version sections (if present)\n" -msgstr " -V eller --version-info Visa versionssektionen (om den finns)\n" - -# -#: readelf.c:2167 -msgid " -A or --arch-specific Display architecture specific information (if any).\n" -msgstr " -A eller --arch-specific Visa arkitekturspecifik information (om den finns)\n" - -# -#: readelf.c:2168 -msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" -msgstr " -D eller --use-dynamic Använd den dynamiska sektionen för att visa symboler\n" - -# -#: readelf.c:2169 -msgid " -x or --hex-dump=\n" -msgstr " -x eller --hex-dump=\n" - -# -#: readelf.c:2170 -msgid " Dump the contents of section \n" -msgstr " Visa innehållet i sektion \n" - -# -#: readelf.c:2171 -msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" -msgstr " -w[liaprmfs] eller --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" - -# -#: readelf.c:2172 -msgid " Display the contents of DWARF2 debug sections\n" -msgstr " Visa innehållet i DWARF2-felsökningssektioner\n" - -# -#: readelf.c:2174 -msgid " -i or --instruction-dump=\n" -msgstr " -i eller --instruction-dump=\n" - -# -#: readelf.c:2175 -msgid " Disassemble the contents of section \n" -msgstr " Disassemblera innehållet i sektion \n" - -# -#: readelf.c:2177 -msgid " -I or --histogram Display histogram of bucket list lengths\n" -msgstr " -I eller --histogram Visa ett histogram över hinkarnas listlängder\n" - -# -#: readelf.c:2178 -msgid " -v or --version Display the version number of readelf\n" -msgstr " -v eller --version Visa versionsinformation om readelf\n" - -# -#: readelf.c:2179 -msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n" -msgstr " -W eller --wide Bryt inga rader och kapa inga symboler för att passa 80 kolumner\n" - -# -#: readelf.c:2180 -msgid " -H or --help Display this information\n" -msgstr " -H eller --help Visa denna hjälp\n" - -# -#: readelf.c:2198 -msgid "Out of memory allocating dump request table." -msgstr "Slut på minne vid allokering av tabell för önskade utskrifter." - -# -#: readelf.c:2357 -#, c-format -msgid "Unrecognised debug option '%s'\n" -msgstr "Okänt felsökningsargument \"%s\"\n" - -# -#: readelf.c:2385 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "Ogiltig flagga \"-%c\"\n" - -# -#: readelf.c:2398 -msgid "Nothing to do.\n" -msgstr "Inget att göra.\n" - -# -#: readelf.c:2411 readelf.c:2428 readelf.c:4700 -msgid "none" -msgstr "ingen" - -# -#: readelf.c:2415 readelf.c:2432 readelf.c:2460 -#, c-format -msgid "" -msgstr "" - -# -#: readelf.c:2429 -msgid "2's complement, little endian" -msgstr "tvåkomplement, little endian" - -# -#: readelf.c:2430 -msgid "2's complement, big endian" -msgstr "tvåkomplement, big endian" - -# -#: readelf.c:2457 -msgid "Standalone App" -msgstr "Självständigt program" - -# -#: readelf.c:2475 -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:2483 -msgid "ELF Header:\n" -msgstr "ELF-huvud:\n" - -# -#: readelf.c:2484 -msgid " Magic: " -msgstr " Magi: " - -# -#: readelf.c:2488 -#, c-format -msgid " Class: %s\n" -msgstr " Klass: %s\n" - -# -#: readelf.c:2490 -#, c-format -msgid " Data: %s\n" -msgstr " Data: %s\n" - -# -#: readelf.c:2492 -#, c-format -msgid " Version: %d %s\n" -msgstr " Version: %d %s\n" - -# -#: readelf.c:2499 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -# -#: readelf.c:2501 -#, c-format -msgid " ABI Version: %d\n" -msgstr " ABI-version: %d\n" - -# -#: readelf.c:2503 -#, c-format -msgid " Type: %s\n" -msgstr " Typ: %s\n" - -# -#: readelf.c:2505 -#, c-format -msgid " Machine: %s\n" -msgstr " Maskin: %s\n" - -# -#: readelf.c:2507 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " Version: 0x%lx\n" - -# -#: readelf.c:2510 -msgid " Entry point address: " -msgstr " Ingångsadress: " - -# -#: readelf.c:2512 -msgid "" -"\n" -" Start of program headers: " -msgstr "" -"\n" -" Start för programhuvuden: " - -# -#: readelf.c:2514 -msgid "" -" (bytes into file)\n" -" Start of section headers: " -msgstr "" -" (byte in i filen)\n" -" Start för sektionshuvuden: " - -# -#: readelf.c:2516 -msgid " (bytes into file)\n" -msgstr " (byte in i filen)\n" - -# -#: readelf.c:2518 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " Flaggor: 0x%lx%s\n" - -# -#: readelf.c:2521 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " Detta huvuds storlek: %ld (byte)\n" - -# -#: readelf.c:2523 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " Programhuvudenas storlek: %ld (byte)\n" - -# -#: readelf.c:2525 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " Antal programhuvuden: %ld\n" - -# -#: readelf.c:2527 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " Sektionshuvudenas storlek: %ld (byte)\n" - -# -#: readelf.c:2529 -#, c-format -msgid " Number of section headers: %ld" -msgstr " Antal sektionshuvuden: %ld" - -# -#: readelf.c:2534 -#, c-format -msgid " Section header string table index: %ld" -msgstr " Sektionshuvudets strängtabellsndx: %ld" - -# -#: readelf.c:2568 readelf.c:2604 -msgid "program headers" -msgstr "programhuvuden" - -# -#: readelf.c:2638 -msgid "" -"\n" -"There are no program headers in this file.\n" -msgstr "" -"\n" -"Det finns inga programhuvuden i denna fil.\n" - -# -#: readelf.c:2644 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" -"\n" -"Elf-filtyp är %s\n" - -# -#: readelf.c:2645 -msgid "Entry point " -msgstr "Ingångspunkt " - -# -#: readelf.c:2647 -#, c-format -msgid "" -"\n" -"There are %d program headers, starting at offset " -msgstr "" -"\n" -"Det finns %d programhuvuden, med början på offset " - -# -#: readelf.c:2658 readelf.c:2883 readelf.c:2929 readelf.c:2992 readelf.c:3059 -#: readelf.c:4087 readelf.c:4130 readelf.c:4310 readelf.c:5246 readelf.c:5260 -#: readelf.c:9246 readelf.c:9286 -msgid "Out of memory\n" -msgstr "Slut på minne\n" - -# -# BUGG: plural-s -#: readelf.c:2676 -#, c-format -msgid "" -"\n" -"Program Header%s:\n" -msgstr "" -"\n" -"Programhuvud%0.s:\n" - -# -#: readelf.c:2680 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Typ Offset VirtAdr FysAdr FilSt MinneSt Flg Just\n" - -# -#: readelf.c:2683 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Typ Offset VirtAdress FysAdress FilStrl MinneSt Flg Just\n" - -# -#: readelf.c:2687 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " Typ Offset VirtAdress FysAdress\n" - -# -#: readelf.c:2689 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " FilStorlek MinneStorlek Flagg Justering\n" - -# -#: readelf.c:2789 -msgid "more than one dynamic segment\n" -msgstr "mer än ett dynamiskt segment\n" - -# -#: readelf.c:2797 -msgid "Unable to find program interpreter name\n" -msgstr "Kan inte hitta namnet på programtolken\n" - -# -#: readelf.c:2804 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" -"\n" -" [Begär programtolkare: %s]" - -# -#: readelf.c:2822 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" -"\n" -" Sektion till segment-avbildning:\n" - -# -#: readelf.c:2823 -msgid " Segment Sections...\n" -msgstr " Segmentsektioner...\n" - -# -#: readelf.c:2874 readelf.c:2920 -msgid "section headers" -msgstr "sektionshuvuden" - -# -#: readelf.c:2968 readelf.c:3035 -msgid "symbols" -msgstr "symboler" - -# -#: readelf.c:2979 readelf.c:3046 -msgid "symtab shndx" -msgstr "symtab shndx" - -# -#: readelf.c:3147 -msgid "" -"\n" -"There are no sections in this file.\n" -msgstr "" -"\n" -"Det finns inga sektioner i denna fil.\n" - -# -#: readelf.c:3153 -#, 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:3170 readelf.c:3479 readelf.c:3826 readelf.c:5397 -msgid "string table" -msgstr "strängtabell" - -# -#: readelf.c:3191 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "Filen innehåller flera tabeller med dynamiska symboler\n" - -# -#: readelf.c:3203 -msgid "File contains multiple dynamic string tables\n" -msgstr "Filen innehåller flera dynamiska strängtabeller\n" - -# -#: readelf.c:3209 -msgid "dynamic strings" -msgstr "dynamiska strängar" - -# -#: readelf.c:3215 -msgid "File contains multiple symtab shndx tables\n" -msgstr "Filen innehåller flera symtab-shndx-tabeller\n" - -# -# BUGG: plural-s -#: readelf.c:3250 -#, c-format -msgid "" -"\n" -"Section Header%s:\n" -msgstr "" -"\n" -"Sektionshuvud%0.s:\n" - -# -#: readelf.c:3254 -msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" -msgstr " [Nr] Namn Typ Adress Off Strl PS Flg Lk Inf Ju\n" - -# -#: readelf.c:3257 -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:3260 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [Nr] Namn Typ Adress Offset\n" - -# -#: readelf.c:3261 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " Storlek Poststorlek Flagg Länk Info Just\n" - -# -#: readelf.c:3356 -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:3417 -#, c-format -msgid "" -"\n" -"Relocation section at offset 0x%lx contains %ld bytes:\n" -msgstr "" -"\n" -"Omlokaliseringssektionen på offset 0x%lx innehåller %ld byte:\n" - -# -#: readelf.c:3424 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" -"\n" -"Det finns inga dynamiska omlokaliseringar i denna fil.\n" - -# -#: readelf.c:3451 -msgid "" -"\n" -"Relocation section " -msgstr "" -"\n" -"Omlokaliseringssektion " - -# -#: readelf.c:3458 readelf.c:3905 -#, c-format -msgid " at offset 0x%lx contains %lu entries:\n" -msgstr " på offset 0x%lx innehåller %lu poster:\n" - -# -#: readelf.c:3496 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" -"\n" -"Det finns inga omlokaliseringar i denna fil.\n" - -# -#: readelf.c:3692 -msgid "unwind table" -msgstr "tillbakarullningstabell" - -# -#: readelf.c:3743 readelf.c:3755 readelf.c:7608 readelf.c:7619 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "Hoppar över oväntad symboltyp %u\n" - -# -#: readelf.c:3763 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "Hoppar över oväntad omlokaliseringstyp %s\n" - -# -#: readelf.c:3808 readelf.c:3833 -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:3884 -msgid "" -"\n" -"Could not find unwind info section for " -msgstr "" -"\n" -"Kunde inte hitta tillbakarullningssektion till " - -# -#: readelf.c:3896 -msgid "unwind info" -msgstr "tillbakarullningsinfo" - -# -#: readelf.c:3898 -msgid "" -"\n" -"Unwind section " -msgstr "" -"\n" -"Tillbakarullningssektion " - -# -#: readelf.c:4071 readelf.c:4114 -msgid "dynamic segment" -msgstr "dynamiskt segment" - -# -#: readelf.c:4183 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" -"\n" -"Det finns inget dynamiskt segment i denna fil.\n" - -# -#: readelf.c:4217 -msgid "Unable to seek to end of file!" -msgstr "Kan inte uppsöka slutet av filen!" - -# -#: readelf.c:4228 -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:4258 -msgid "Unable to seek to end of file\n" -msgstr "Kan inte uppsöka slutet av filen\n" - -# -#: readelf.c:4264 -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:4269 -msgid "dynamic string table" -msgstr "dynamisk strängtabell" - -# -#: readelf.c:4303 -msgid "symbol information" -msgstr "symbolinformation" - -# -#: readelf.c:4327 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%x contains %ld entries:\n" -msgstr "" -"\n" -"Dynamiskt segment på offset 0x%x innehåller %ld poster:\n" - -# -#: readelf.c:4330 -msgid " Tag Type Name/Value\n" -msgstr " Tagg Typ Namn/Värde\n" - -# -#: readelf.c:4366 -msgid "Auxiliary library" -msgstr "yttre bibliotek" - -# -#: readelf.c:4370 -msgid "Filter library" -msgstr "filterbibliotek" - -# -#: readelf.c:4374 -msgid "Configuration file" -msgstr "konfigurationsfil" - -# -#: readelf.c:4378 -msgid "Dependency audit library" -msgstr "beroendövervakningsbibliotek" - -# -#: readelf.c:4382 -msgid "Audit library" -msgstr "övervakningsbibliotek" - -# -#: readelf.c:4400 readelf.c:4426 readelf.c:4452 -msgid "Flags:" -msgstr "flaggor:" - -# -#: readelf.c:4402 readelf.c:4428 readelf.c:4454 -msgid " None\n" -msgstr " inga\n" - -# -#: readelf.c:4573 -#, c-format -msgid "Shared library: [%s]" -msgstr "delat bibliotek: [%s]" - -# -#: readelf.c:4576 -msgid " program interpreter" -msgstr " programtolk" - -# -#: readelf.c:4580 -#, c-format -msgid "Library soname: [%s]" -msgstr "biblioteks so-namn: [%s]" - -# -#: readelf.c:4584 -#, c-format -msgid "Library rpath: [%s]" -msgstr "bibliotekets rpath: [%s]" - -# -#: readelf.c:4588 -#, c-format -msgid "Library runpath: [%s]" -msgstr "bibliotekets runpath: [%s]" - -# -#: readelf.c:4649 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "onödigt objekt: [%s]\n" - -# -#: readelf.c:4746 -#, c-format -msgid "" -"\n" -"Version definition section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"Versiondefinitionssektion \"%s\" innehåller %ld poster:\n" - -# -#: readelf.c:4749 -msgid " Addr: 0x" -msgstr " Adr: 0x" - -# -#: readelf.c:4751 readelf.c:4946 -#, c-format -msgid " Offset: %#08lx Link: %lx (%s)\n" -msgstr " Offset: %#08lx Länk: %lx (%s)\n" - -# -#: readelf.c:4758 -msgid "version definition section" -msgstr "versiondefinitionssektion" - -# -#: readelf.c:4784 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: Rev: %d Flaggor: %s" - -# -#: readelf.c:4787 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " Index: %d Ant: %d " - -# -#: readelf.c:4798 -#, c-format -msgid "Name: %s\n" -msgstr "Namn: %s\n" - -# -#: readelf.c:4800 -#, c-format -msgid "Name index: %ld\n" -msgstr "Namnindex: %ld\n" - -# -#: readelf.c:4815 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: Förälder %d: %s\n" - -# -#: readelf.c:4818 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: Förälder %d, namnindex: %ld\n" - -# -#: readelf.c:4837 -#, c-format -msgid "" -"\n" -"Version needs section '%s' contains %ld entries:\n" -msgstr "" -"\n" -"Versionbehovssektion \"%s\" innehåller %ld poster:\n" - -# -#: readelf.c:4840 -msgid " Addr: 0x" -msgstr " Adr: 0x" - -# -#: readelf.c:4842 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr " Offset: %#08lx Länk till sektion: %ld (%s)\n" - -# -#: readelf.c:4848 -msgid "version need section" -msgstr "versionsbehovssektion" - -# -#: readelf.c:4870 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: Version: %d" - -# -#: readelf.c:4873 -#, c-format -msgid " File: %s" -msgstr " Fil: %s" - -# -#: readelf.c:4875 -#, c-format -msgid " File: %lx" -msgstr " Fil: %lx" - -# -#: readelf.c:4877 -#, c-format -msgid " Cnt: %d\n" -msgstr " Ant: %d\n" - -# -#: readelf.c:4895 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: Namn: %s" - -# -#: readelf.c:4898 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: Namnindex: %lx" - -# -#: readelf.c:4901 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " Flaggor: %s Version: %d\n" - -# -#: readelf.c:4937 -msgid "version string table" -msgstr "versionssträngtabell" - -# -#: readelf.c:4941 -#, c-format -msgid "" -"\n" -"Version symbols section '%s' contains %d entries:\n" -msgstr "" -"\n" -"Versionsymbolssektion \"%s\" innehåller %d poster:\n" - -# -#: readelf.c:4944 -msgid " Addr: " -msgstr " Adr: " - -# -#: readelf.c:4954 -msgid "version symbol data" -msgstr "versionsymbolsdata" - -# -#: readelf.c:4981 -msgid " 0 (*local*) " -msgstr " 0 (*lokal*) " - -# -#: readelf.c:4985 -msgid " 1 (*global*) " -msgstr " 1 (*global*) " - -# -#: readelf.c:5020 readelf.c:5454 -msgid "version need" -msgstr "versionsbehov" - -# -#: readelf.c:5030 -msgid "version need aux (2)" -msgstr "yttre versionsbehov (2)" - -# -#: readelf.c:5071 readelf.c:5516 -msgid "version def" -msgstr "versionsdef." - -# -#: readelf.c:5090 readelf.c:5531 -msgid "version def aux" -msgstr "yttre versionsdef." - -# -#: readelf.c:5121 -msgid "" -"\n" -"No version information found in this file.\n" -msgstr "" -"\n" -"Det fanns ingen versionsinformation i denna fil.\n" - -# -#: readelf.c:5139 readelf.c:5174 -#, c-format -msgid ": %d" -msgstr ": %d" - -# -#: readelf.c:5141 readelf.c:5186 -#, c-format -msgid ": %d" -msgstr ": %d" - -# -#: readelf.c:5143 readelf.c:5189 -#, c-format -msgid ": %d" -msgstr ": %d" - -# -#: readelf.c:5252 -msgid "Unable to read in dynamic data\n" -msgstr "Kan inte läsa in dynamisk data\n" - -# -#: readelf.c:5294 -msgid "Unable to seek to start of dynamic information" -msgstr "Kan inte uppsöka början av den dynamiska informationen" - -# -#: readelf.c:5300 -msgid "Failed to read in number of buckets\n" -msgstr "Misslyckades läsa in antalet hinkar\n" - -# -#: readelf.c:5306 -msgid "Failed to read in number of chains\n" -msgstr "Misslyckades Läsa in antalet kedjor\n" - -# -#: readelf.c:5326 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" -"\n" -"Symboltabell för filbilden:\n" - -# -#: readelf.c:5328 -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:5330 -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:5375 -#, c-format -msgid "" -"\n" -"Symbol table '%s' contains %lu entries:\n" -msgstr "" -"\n" -"Symboltabell \"%s\" innehåller %lu poster:\n" - -# -#: readelf.c:5379 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Nr: Värde Strl Typ Bind Synl Idx Namn\n" - -# -#: readelf.c:5381 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Nr: Värde Strl Typ Bind Synl Idx Namn\n" - -# -#: readelf.c:5427 -msgid "version data" -msgstr "versionsdata" - -# -#: readelf.c:5467 -msgid "version need aux (3)" -msgstr "yttre versionsbehov (3)" - -# -#: readelf.c:5492 -msgid "bad dynamic symbol" -msgstr "felaktig dynamisk symbol" - -# -#: readelf.c:5554 -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:5566 -#, 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:5568 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr " Längd Nummer %% av alla Täckning\n" - -# -#: readelf.c:5573 readelf.c:5592 readelf.c:8825 readelf.c:9017 -msgid "Out of memory" -msgstr "Slut på minne" - -# -#: readelf.c:5641 -#, 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:5644 -msgid " Num: Name BoundTo Flags\n" -msgstr " Nr: Namn BundenTill Flaggor\n" - -# -#: readelf.c:5696 -#, c-format -msgid "" -"\n" -"Assembly dump of section %s\n" -msgstr "" -"\n" -"Disassembleringsutskrift av sektion %s\n" - -# -#: readelf.c:5719 -#, 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:5724 -#, c-format -msgid "" -"\n" -"Hex dump of section '%s':\n" -msgstr "" -"\n" -"Hexadecimal utskrift av sektion \"%s\":\n" - -# -#: readelf.c:5729 -msgid "section data" -msgstr "sektionsdata" - -# -#: readelf.c:5878 -msgid "badly formed extended line op encountered!\n" -msgstr "felaktigt utformad utökad rad-op påträffades!\n" - -# -#: readelf.c:5885 -#, c-format -msgid " Extended opcode %d: " -msgstr " Utökad op-kod %d: " - -# -#: readelf.c:5890 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" -"Slut på sekvensen\n" -"\n" - -# -#: readelf.c:5896 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "sätt Adress till 0x%lx\n" - -# -#: readelf.c:5901 -msgid " define new File Table entry\n" -msgstr " definiera ny filtabellspost\n" - -# -#: readelf.c:5902 readelf.c:6031 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " Post\tKatalog\tTid\tStorl.\tNamn\n" - -# -#: readelf.c:5904 -#, c-format -msgid " %d\t" -msgstr " %d\t" - -# -#: readelf.c:5907 readelf.c:5909 readelf.c:5911 readelf.c:6043 readelf.c:6045 -#: readelf.c:6047 -#, c-format -msgid "%lu\t" -msgstr "%lu\t" - -# -#: readelf.c:5912 -#, c-format -msgid "" -"%s\n" -"\n" -msgstr "" -"%s\n" -"\n" - -# -#: readelf.c:5916 -#, c-format -msgid "UNKNOWN: length %d\n" -msgstr "OKÄND: längd %d\n" - -# -#: readelf.c:5942 -#, 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:5954 -msgid "64-bit DWARF line info is not supported yet.\n" -msgstr "64-bitars DWARF-radinformation stöds inte än.\n" - -# -#: readelf.c:5961 -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:5969 -msgid "Only DWARF version 2 line info is currently supported.\n" -msgstr "Endast DWARF version 2:s radinfo stöds för närvarande.\n" - -# -#: readelf.c:5984 -#, c-format -msgid " Length: %ld\n" -msgstr " längd: %ld\n" - -# -#: readelf.c:5985 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " DWARF version: %d\n" - -# -#: readelf.c:5986 -#, c-format -msgid " Prologue Length: %d\n" -msgstr " prologlängd: %d\n" - -# -#: readelf.c:5987 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " minsta instruktionslängd: %d\n" - -# -# BUGG: Ska det inte vara `' på engelska? -#: readelf.c:5988 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " initialvärde på \"is_stmt\": %d\n" - -# -#: readelf.c:5989 -#, c-format -msgid " Line Base: %d\n" -msgstr " radbas: %d\n" - -# -#: readelf.c:5990 -#, c-format -msgid " Line Range: %d\n" -msgstr " radintervall: %d\n" - -# -#: readelf.c:5991 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " op-kodbas: %d\n" - -# -#: readelf.c:6000 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" -"\n" -" Op-koder:\n" - -# -#: readelf.c:6003 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " Op-kod %d har %d argument\n" - -# -#: readelf.c:6009 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" -"\n" -" Katalogtabellen är tom.\n" - -# -#: readelf.c:6012 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" -"\n" -" Katalogtabellen:\n" - -# -#: readelf.c:6016 -#, c-format -msgid " %s\n" -msgstr " %s\n" - -# -#: readelf.c:6027 -msgid "" -"\n" -" The File Name Table is empty.\n" -msgstr "" -"\n" -" Filnamnstabellen är tom.\n" - -# -#: readelf.c:6030 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" -"\n" -" Filnamnstabellen:\n" - -# -#: readelf.c:6038 -#, c-format -msgid " %d\t" -msgstr " %d\t" - -# -#: readelf.c:6049 -#, c-format -msgid "%s\n" -msgstr "%s\n" - -# -#. Now display the statements. -#: readelf.c:6057 -msgid "" -"\n" -" Line Number Statements:\n" -msgstr "" -"\n" -" Radnummersatser:\n" - -# -#: readelf.c:6073 -#, 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:6077 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " och radnumret med %d till %d\n" - -# -#: readelf.c:6088 -msgid " Copy\n" -msgstr " Kopiera\n" - -# -#: readelf.c:6095 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " Öka PC med %d till %lx\n" - -# -#: readelf.c:6103 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " Öka radnumret med %d till %d\n" - -# -#: readelf.c:6110 -#, 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:6118 -#, c-format -msgid " Set column to %d\n" -msgstr " Sätt kolumnen till %d\n" - -# -#: readelf.c:6125 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " Sätt is_stmt till %d\n" - -# -#: readelf.c:6130 -msgid " Set basic block\n" -msgstr " Sätt basblocket\n" - -# -#: readelf.c:6138 -#, c-format -msgid " Advance PC by constant %d to 0x%lx\n" -msgstr " Öka PC med konstant %d till 0x%lx\n" - -# -#: readelf.c:6146 -#, c-format -msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " Öka PC med fastlängdsantal %d till 0x%lx\n" - -# -#: readelf.c:6151 -msgid " Set prologue_end to true\n" -msgstr " Sätt prologue_end till sannt\n" - -# -#: readelf.c:6155 -msgid " Set epilogue_begin to true\n" -msgstr " Sätt epilogue_begin till sannt\n" - -# -#: readelf.c:6161 -#, c-format -msgid " Set ISA to %d\n" -msgstr " Sätt ISA till %d\n" - -# -#: readelf.c:6165 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr " Okänd op-kod %d med operand: " - -# -#: readelf.c:6197 readelf.c:6658 readelf.c:6730 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" -"%s-sektionens innehåll:\n" -"\n" - -# -#: readelf.c:6216 -msgid "64-bit DWARF pubnames are not supported yet.\n" -msgstr "64-bitars publika DWARF-namn stöds inte än.\n" - -# -#: readelf.c:6226 -msgid "Only DWARF 2 pubnames are currently supported\n" -msgstr "Endast publika DWARF 2-namn stöds för närvarande\n" - -# -#: readelf.c:6233 -#, c-format -msgid " Length: %ld\n" -msgstr " längd: %ld\n" - -# -#: readelf.c:6235 -#, c-format -msgid " Version: %d\n" -msgstr " version: %d\n" - -# -#: readelf.c:6237 -#, c-format -msgid " Offset into .debug_info section: %ld\n" -msgstr " offset i .debug_info-sektionen: %ld\n" - -# -#: readelf.c:6239 -#, c-format -msgid " Size of area in .debug_info section: %ld\n" -msgstr " storl. på omr. i .debug_info-sekt.: %ld\n" - -# -#: readelf.c:6242 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" -"\n" -" Offset\tNamn\n" - -# -#: readelf.c:6333 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "Okänt TAG-värde: %lx" - -# -#: readelf.c:6443 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "Okänt AT-värde: %lx" - -# -#: readelf.c:6480 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "Okänt FORM-värde: %lx" - -# -#: readelf.c:6679 -#, c-format -msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" -msgstr " DW_MACINFO_start_file - rad: %d filnummer: %d\n" - -# -#: readelf.c:6684 -msgid " DW_MACINFO_end_file\n" -msgstr " DW_MACINFO_end_file\n" - -# -#: readelf.c:6692 -#, c-format -msgid " DW_MACINFO_define - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_define - rad: %d makro: %s\n" - -# -#: readelf.c:6700 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_undef - rad: %d makro: %s\n" - -# -#: readelf.c:6711 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr " DW_MACINFO_vendor_ext - konstant: %d sträng: %s\n" - -# -# Detta är ett tabellhuvud med två kolumner. -#: readelf.c:6739 -msgid " Number TAG\n" -msgstr " Nummer TAGG\n" - -# -#: readelf.c:6745 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -# -#: readelf.c:6748 -msgid "has children" -msgstr "har barn" - -# -#: readelf.c:6748 -msgid "no children" -msgstr "inga barn" - -# -#: readelf.c:6752 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -# -#: readelf.c:6773 -#, c-format -msgid " %lu byte block: " -msgstr " %lu byte-block: " - -# -#: readelf.c:7096 -msgid "(User defined location op)" -msgstr "(användardefinierad plats-op)" - -# -#: readelf.c:7098 -msgid "(Unknown location op)" -msgstr "(okänd plats-op)" - -# -#: readelf.c:7137 -msgid "debug_str section data" -msgstr "debug_str sektionsdata" - -# -#: readelf.c:7156 -msgid "" -msgstr "" - -# -#: readelf.c:7159 -msgid "" -msgstr "" - -# -#: readelf.c:7179 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" -"\n" -".debug_str-sektionen är tom.\n" - -# -#: readelf.c:7183 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" -"Innehåll i .debug_str-sektionen:\n" -"\n" - -# -#: readelf.c:7354 -#, c-format -msgid " (indirect string, offset: 0x%lx): " -msgstr " (indirekt sträng, offset: 0x%lx): " - -# -#: readelf.c:7363 -#, c-format -msgid "Unrecognised form: %d\n" -msgstr "Okänt formulär: %d\n" - -# -#: readelf.c:7376 -msgid "(not inlined)" -msgstr "(inte inlajnad)" - -# -#: readelf.c:7377 -msgid "(inlined)" -msgstr "(inlajnad)" - -# -#: readelf.c:7378 -msgid "(declared as inline but ignored)" -msgstr "(deklarerad som inlajn men ignorerad)" - -# -#: readelf.c:7379 -msgid "(declared as inline and inlined)" -msgstr "(deklarerad som inlajn och inlajnad)" - -# -#: readelf.c:7380 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (okänt inlajnattributvärde: %lx)" - -# -#: readelf.c:7545 readelf.c:7746 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" -"Sektion %s innehåller:\n" -"\n" - -# -#: readelf.c:7568 -msgid "64-bit DWARF debug info is not supported yet.\n" -msgstr "64-bitars DWARF-felsökningsinfo stöds inte än.\n" - -# -#: readelf.c:7637 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " Kompileringsenhet @ %lx:\n" - -# -#: readelf.c:7638 -#, c-format -msgid " Length: %ld\n" -msgstr " längd: %ld\n" - -# -#: readelf.c:7639 -#, c-format -msgid " Version: %d\n" -msgstr " version: %d\n" - -# -#: readelf.c:7640 -#, c-format -msgid " Abbrev Offset: %ld\n" -msgstr " förk.-offset: %ld\n" - -# -#: readelf.c:7641 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " pekarstorlek: %d\n" - -# -#: readelf.c:7645 -msgid "Only version 2 DWARF debug information is currently supported.\n" -msgstr "Endast version 2 av DWARF-felsökningsinformation stöds för närvarande.\n" - -# -#: readelf.c:7666 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr "Kan inte hitta någon .debug_abbrev-sektion!\n" - -# -#: readelf.c:7672 -msgid "debug_abbrev section data" -msgstr "debug_abbrev-sektionsdata" - -# -#: readelf.c:7709 -#, 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:7714 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%lx>: Förkortningsnummer: %lu (%s)\n" - -# -#: readelf.c:7767 -msgid "64-bit DWARF aranges are not supported yet.\n" -msgstr "64-bitars DWARF-a-intervall stöds inte än.\n" - -# -#: readelf.c:7773 -msgid "Only DWARF 2 aranges are currently supported.\n" -msgstr "Endast DWARF2:s a-intervall stöds för närvarande.\n" - -# -#: readelf.c:7777 -#, c-format -msgid " Length: %ld\n" -msgstr " längd: %ld\n" - -# -#: readelf.c:7778 -#, c-format -msgid " Version: %d\n" -msgstr " version: %d\n" - -# -#: readelf.c:7779 -#, c-format -msgid " Offset into .debug_info: %lx\n" -msgstr " offset i .debug_info: %lx\n" - -# -#: readelf.c:7780 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " pekarstorlek: %d\n" - -# -#: readelf.c:7781 -#, c-format -msgid " Segment Size: %d\n" -msgstr " segmentstorlek: %d\n" - -# -#: readelf.c:7783 -msgid "" -"\n" -" Address Length\n" -msgstr "" -"\n" -" adresslängd\n" - -# -#: readelf.c:7965 -#, c-format -msgid "The section %s contains:\n" -msgstr "Sektion %s innehåller:\n" - -# -#: readelf.c:7988 -msgid "64-bit DWARF format frames are not supported yet.\n" -msgstr "64-bitars DWARF-formatmallar stöds inte än.\n" - -# -#: readelf.c:8499 -#, c-format -msgid "Displaying the debug contents of section %s is not yet supported.\n" -msgstr "Visa felsökningsinnehållet i sektion %s stöds inte än.\n" - -# -#: readelf.c:8565 -#, c-format -msgid "" -"\n" -"Section '%s' has no debugging data.\n" -msgstr "" -"\n" -"Sektion \"%s\" innehåller ingen felsökningsdata.\n" - -# -#: readelf.c:8570 readelf.c:8632 -msgid "debug section data" -msgstr "felsökningssektionsdata" - -# -#: readelf.c:8586 -#, c-format -msgid "Unrecognised debug section: %s\n" -msgstr "Okänd felsökningssektion: %s\n" - -# -#: readelf.c:8660 -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:8733 -msgid "liblist" -msgstr "bibliotekslista" - -# -#: readelf.c:8818 -msgid "options" -msgstr "flaggor" - -# -#: readelf.c:8849 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" -"\n" -"Sektion \"%s\" innehåller %d poster:\n" - -# -# BUGG: Fel i originalet? -#: readelf.c:9010 -msgid "conflict list with without table" -msgstr "konfliktlista utan tabell" - -# -#: readelf.c:9028 readelf.c:9044 -msgid "conflict" -msgstr "konflikt" - -# -#: readelf.c:9054 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" -"\n" -"Sektion \".conflict\" innehåller %ld poster:\n" - -# -#: readelf.c:9056 -msgid " Num: Index Value Name" -msgstr " Num: Index Värde Namn" - -# -#: readelf.c:9083 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (prstatus-struktur)" - -# -#: readelf.c:9084 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (flyttalsregister)" - -# -#: readelf.c:9085 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (prpsinfo-struktur)" - -# -#: readelf.c:9086 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (uppgiftsstruktur)" - -# -#: readelf.c:9087 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (user_xfpregs-struktur)" - -# -#: readelf.c:9088 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (pstatus-struktur)" - -# -#: readelf.c:9089 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (flyttalsregister)" - -# -#: readelf.c:9090 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (psinfo-struktur)" - -# -#: readelf.c:9091 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (lwpstatus_t-struktur)" - -# -#: readelf.c:9092 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (lwpsinfo_t-struktur)" - -# -# BUGG: Stavfel i originalet (str>uc, 2003. -# -msgid "" -msgstr "" -"Project-Id-Version: binutils 2.14rel030712\n" -"POT-Creation-Date: 2003-07-11 13:56+0930\n" -"PO-Revision-Date: 2003-08-17 14:37+0300\n" -"Last-Translator: Deniz Akkus Kanca \n" -"Language-Team: Turkish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.0\n" - -#: addr2line.c:74 -#, c-format -msgid "Usage: %s [option(s)] [addr(s)]\n" -msgstr "Kullanım: %s [seçenekler] [adresler]\n" - -#: addr2line.c:75 -msgid " Convert addresses into line number/file name pairs.\n" -msgstr " adresleri satır numarası/dosya adı çiftlerine çevirir.\n" - -#: addr2line.c:76 -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:77 -msgid "" -" The options are:\n" -" -b --target= Set the binary file format\n" -" -e --exe= 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= İ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: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 "Yazılım hatalarını %s adresine, çeviri hatalarını adresine gönderin\n" - -#: addr2line.c:245 -#, c-format -msgid "%s: can not get addresses from archive" -msgstr "%s: arşivden adresler alınamadı" - -#: addr2line.c:317 nm.c:433 objdump.c:2693 -#, c-format -msgid "unknown demangling style `%s'" -msgstr "bilinmeyen düzeltme tarzı '%s'" - -#: ar.c:238 -#, c-format -msgid "no entry %s in archive\n" -msgstr "arşivde %s girdisi yok\n" - -#: ar.c:255 -#, 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:258 -#, c-format -msgid " %s -M [\n" -"\n" -msgstr "" -"\n" -"<üye %s>\n" -"\n" - -#: ar.c:857 ar.c:925 -#, c-format -msgid "%s is not a valid archive" -msgstr "%s geçerli bir arşiv değil" - -#: ar.c:893 -#, c-format -msgid "stat returns negative size for %s" -msgstr "stat komutu, %s için negatif büyüklük gösteriyor" - -#: ar.c:1020 -#, c-format -msgid "%s is not an archive" -msgstr "%s bir arşiv değil" - -#: ar.c:1027 -#, c-format -msgid "creating %s" -msgstr "%s oluşturuluyor" - -#: ar.c:1233 -#, c-format -msgid "No member named `%s'\n" -msgstr "`%s' adında bir üye yok\n" - -#: ar.c:1285 -#, c-format -msgid "no entry %s in archive %s!" -msgstr "arşiv %2$s içerisinde %1$s girdisi yok!" - -#: ar.c:1422 -#, c-format -msgid "%s: no archive map to update" -msgstr "%s: güncellenecek arşiv eşlemesi yok" - -#: arsup.c:86 -#, c-format -msgid "No entry %s in archive.\n" -msgstr "Arşiv içinde %s girdisi yok.\n" - -#: arsup.c:117 -#, c-format -msgid "Can't open file %s\n" -msgstr "%s dosyası açılamadı\n" - -#: arsup.c:172 -#, c-format -msgid "%s: Can't open output archive %s\n" -msgstr "%s: Çıktı arşivi %s açılamadı\n" - -#: arsup.c:189 -#, c-format -msgid "%s: Can't open input archive %s\n" -msgstr "%s: Girdi arşivi %s açılamadı\n" - -#: arsup.c:198 -#, c-format -msgid "%s: file %s is not an archive\n" -msgstr "%s: %s dosyası bir arşiv değil\n" - -#: arsup.c:241 -#, c-format -msgid "%s: no output archive specified yet\n" -msgstr "%s: henüz bir çıktı arşivi belirtilmedi\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: açık çıktı arşivi yok\n" - -#: arsup.c:273 arsup.c:385 arsup.c:411 -#, c-format -msgid "%s: can't open file %s\n" -msgstr "%s: %s dosyası açılamadı\n" - -#: arsup.c:328 arsup.c:407 arsup.c:489 -#, c-format -msgid "%s: can't find module file %s\n" -msgstr "%s: modül dosyası %s bulunamadı\n" - -#: arsup.c:439 -#, c-format -msgid "Current open archive is %s\n" -msgstr "Şimdiki açık arşiv %s\n" - -#: arsup.c:464 -#, c-format -msgid "%s: no open archive\n" -msgstr "%s: açık arşiv yok\n" - -#: binemul.c:39 -#, c-format -msgid " No emulation specific options\n" -msgstr " Öykünüme özgü seçenekler yok\n" - -#. Macros for common output. -#: binemul.h:52 -#, c-format -msgid " emulation options: \n" -msgstr " öykünüm seçenekleri: \n" - -#: bucomm.c:113 -#, c-format -msgid "can't set BFD default target to `%s': %s" -msgstr "BFD öntanımlı hedef `%s' olarak atanamadı: %s" - -#: bucomm.c:125 -#, c-format -msgid "%s: Matching formats:" -msgstr "%s: Eşleşen biçemler:" - -#: bucomm.c:142 -msgid "Supported targets:" -msgstr "Desteklenen hedefler:" - -#: bucomm.c:144 -#, c-format -msgid "%s: supported targets:" -msgstr "%s: desteklenen hedefler:" - -#: bucomm.c:162 -msgid "Supported architectures:" -msgstr "Desteklenen platformlar:" - -#: bucomm.c:164 -#, c-format -msgid "%s: supported architectures:" -msgstr "%s: desteklenen platformlar:" - -#: bucomm.c:360 -#, c-format -msgid "BFD header file version %s\n" -msgstr "BFD başlık dosyası sürümü %s\n" - -#: bucomm.c:467 -#, c-format -msgid "%s: bad number: %s" -msgstr "%s: hatalı sayı: %s" - -#: coffdump.c:107 -#, c-format -msgid "#lines %d " -msgstr "#satırlar %d " - -#: coffdump.c:471 sysdump.c:767 -#, c-format -msgid "Usage: %s [option(s)] in-file\n" -msgstr "Kullanım: %s girdi-dosya(ları)\n" - -#: coffdump.c:472 -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:473 -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:541 srconv.c:2052 sysdump.c:831 -msgid "no input file specified" -msgstr "girdi dosyası belirtilmedi" - -#: debug.c:654 -msgid "debug_add_to_current_namespace: no current file" -msgstr "hata_ayıkla_mevcut_isim_uzayına_ekle: mevcut dosya yok" - -#: debug.c:737 -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:796 -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:852 -msgid "debug_record_parameter: no current function" -msgstr "hata_ayıkla_kayıt_parametresi: mevcut işlev yok" - -#: debug.c:886 -msgid "debug_end_function: no current function" -msgstr "hata_ayıkla_son_işlev: mevcut işlev yok" - -#: debug.c:892 -msgid "debug_end_function: some blocks were not closed" -msgstr "hata_ayıkla_son_işlev: bazı bloklar kapatılmamış" - -#: debug.c:922 -msgid "debug_start_block: no current block" -msgstr "hata_ayıkla_başla_blok: mevcut blok yok" - -#: debug.c:960 -msgid "debug_end_block: no current block" -msgstr "hata_ayıkla_son_blok: mevcut blok yok" - -#: debug.c:967 -msgid "debug_end_block: attempt to close top level block" -msgstr "hata_ayıkla_son_blok: tepe seviye bloğu kapama denemesi" - -#: debug.c:993 -msgid "debug_record_line: no current unit" -msgstr "hata_ayıkla_kayıt_satır: mevcut birim yok" - -#. FIXME -#: debug.c:1047 -msgid "debug_start_common_block: not implemented" -msgstr "hata_ayıkla_ortak_blok_başla: henüz tamamlanmamış" - -#. FIXME -#: debug.c:1059 -msgid "debug_end_common_block: not implemented" -msgstr "hata_ayıkla_ortak_blok_son: henüz tamamlanmamış" - -#. FIXME. -#: debug.c:1153 -msgid "debug_record_label: not implemented" -msgstr "hata_ayıkla_kayıt_etiket: henüz tamamlanmamış" - -#: debug.c:1179 -msgid "debug_record_variable: no current file" -msgstr "hata_ayıkla_kayıt_değişken: mevcut dosya yok" - -#: debug.c:1762 -msgid "debug_make_undefined_type: unsupported kind" -msgstr "hata_ayıkla_tanımlanmamış_tip: desteklenmeyen tip" - -#: debug.c:1963 -msgid "debug_name_type: no current file" -msgstr "hata_ayıkla_isim_tipi: mevcut dosya yok" - -#: debug.c:2011 -msgid "debug_tag_type: no current file" -msgstr "hata_ayıkla_etiket_tipi: mevcut dosya yok" - -#: debug.c:2019 -msgid "debug_tag_type: extra tag attempted" -msgstr "hata_ayıkla_etiket_tipi: fazla etiketleme denendi" - -#: debug.c:2058 -#, 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:2082 -msgid "debug_find_named_type: no current compilation unit" -msgstr "hata_ayıkla_isimli_tipi_bul: mevcut derleme birimi yok" - -#: debug.c:2189 -#, 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:2650 -msgid "debug_write_type: illegal type encountered" -msgstr "hata_ayıkla_yaz_tipi: geçersiz tip bulundu" - -#: dlltool.c:812 dlltool.c:837 dlltool.c:863 -#, c-format -msgid "Internal error: Unknown machine type: %d" -msgstr "İç hata: Bilinmeyen makina tipi: %d" - -#: dlltool.c:900 -#, c-format -msgid "Can't open def file: %s" -msgstr "Tanım dosyası açılamadı: %s" - -#: dlltool.c:905 -#, c-format -msgid "Processing def file: %s" -msgstr "Tanım dosyası işleniyor: %s" - -#: dlltool.c:909 -msgid "Processed def file" -msgstr "Tanım dosyası işlendi" - -#: dlltool.c:935 -#, c-format -msgid "Syntax error in def file %s:%d" -msgstr "Tanım dosyası %s'nda sözdizim hatası:%d" - -#: dlltool.c:974 -#, c-format -msgid "NAME: %s base: %x" -msgstr "İSİM: %s temel: %x" - -#: dlltool.c:977 dlltool.c:996 -msgid "Can't have LIBRARY and NAME" -msgstr "KİTAPLIK ve İSİM beraber olamaz" - -#: dlltool.c:993 -#, c-format -msgid "LIBRARY: %s base: %x" -msgstr "KİTAPLIK: %s temel: %x" - -#: dlltool.c:1251 resrc.c:271 -#, c-format -msgid "wait: %s" -msgstr "bekle: %s" - -#: dlltool.c:1256 dllwrap.c:430 resrc.c:276 -#, c-format -msgid "subprocess got fatal signal %d" -msgstr "Ast-işlem %d ölümcül sinyalini aldı" - -#: dlltool.c:1262 dllwrap.c:437 resrc.c:283 -#, c-format -msgid "%s exited with status %d" -msgstr "%s %d durumu ile çıktı" - -#: dlltool.c:1294 -#, 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:1423 -#, c-format -msgid "Excluding symbol: %s" -msgstr "Sembol dışlandı: %s" - -#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015 -#, c-format -msgid "%s: no symbols" -msgstr "%s: sembol yok" - -#. FIXME: we ought to read in and block out the base relocations. -#: dlltool.c:1556 -#, c-format -msgid "Done reading %s" -msgstr "%s okundu" - -#: dlltool.c:1567 -#, c-format -msgid "Unable to open object file: %s" -msgstr "Nesne dosyası açılamadı: %s" - -#: dlltool.c:1570 -#, c-format -msgid "Scanning object file %s" -msgstr "Nesne dosyası %s taranıyor" - -#: dlltool.c:1585 -#, 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:1677 -msgid "Adding exports to output file" -msgstr "Çıktı dosyasına ihraçlar ekleniyor" - -#: dlltool.c:1724 -msgid "Added exports to output file" -msgstr "Çıktı dosyasına ihraçlar eklendi" - -#: dlltool.c:1848 -#, c-format -msgid "Generating export file: %s" -msgstr "İhraç dosyası oluşturuluyor: %s" - -#: dlltool.c:1853 -#, c-format -msgid "Unable to open temporary assembler file: %s" -msgstr "Geçiçi üretici dosyası açılamadı: %s" - -#: dlltool.c:1856 -#, c-format -msgid "Opened temporary file: %s" -msgstr "Geçici dosya açıldı: %s" - -#: dlltool.c:2086 -msgid "Generated exports file" -msgstr "İhraç dosyası oluşturuldu" - -#: dlltool.c:2378 -#, c-format -msgid "bfd_open failed open stub file: %s" -msgstr "koçan dosyası bfd_open ile açılamadı: %s" - -#: dlltool.c:2381 -#, c-format -msgid "Creating stub file: %s" -msgstr "Koçan dosyası oluşturuluyor: %s" - -#: dlltool.c:2766 -#, c-format -msgid "failed to open temporary head file: %s" -msgstr "geçici başlık dosyası açılamadı: %s" - -#: dlltool.c:2825 -#, c-format -msgid "failed to open temporary tail file: %s" -msgstr "geçici kuyruk dosyası açılamadı: %s" - -#: dlltool.c:2892 -#, c-format -msgid "Can't open .lib file: %s" -msgstr ".lib dosyası açılamadı: %s" - -#: dlltool.c:2895 -#, c-format -msgid "Creating library file: %s" -msgstr "Kitaplık dosyası açılamadı: %s" - -#: dlltool.c:2951 -#, c-format -msgid "cannot delete %s: %s" -msgstr "%s silinemedi: %s" - -#: dlltool.c:2955 -msgid "Created lib file" -msgstr "Lib dosyası oluşturuldu" - -#: dlltool.c:3062 -#, c-format -msgid "Warning, ignoring duplicate EXPORT %s %d,%d" -msgstr "Uyarı, EXPORT tekrarı %s %d,%d yoksayıldı" - -#: dlltool.c:3068 -#, c-format -msgid "Error, duplicate EXPORT with oridinals: %s" -msgstr "Hata, orjinal hali ile EXPORT tekrarı: %s" - -#: dlltool.c:3191 -msgid "Processing definitions" -msgstr "Tanımlar işleniyor" - -#: dlltool.c:3223 -msgid "Processed definitions" -msgstr "Tanımlar işlendi" - -#. xgetext:c-format -#: dlltool.c:3234 dllwrap.c:495 -#, c-format -msgid "Usage %s \n" -msgstr "Kullanım %s \n" - -#. xgetext:c-format -#: dlltool.c:3236 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine için DLL olarak oluştur. [öntanımlı: %s]\n" - -#: dlltool.c:3237 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " tanımlı : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" - -#: dlltool.c:3238 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp <çıktıadı> İhraç dosyası oluşturur.\n" - -#: dlltool.c:3239 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib <çıktıadı> Arayüz kitaplığı oluşturur.\n" - -#: dlltool.c:3240 -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:3241 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr " -D --dllname Arayüz kitaplığına eklenecek girdi dll adı.\n" - -#: dlltool.c:3242 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def Okunacak .def dosyasının adı.\n" - -#: dlltool.c:3243 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def Oluşturulacak .def dosyasının adı.\n" - -#: dlltool.c:3244 -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:3245 -msgid " --no-export-all-symbols Only export listed symbols\n" -msgstr " --no-export-all-symbols Yalnızca listelenmiş sembolleri ihraç eder\n" - -#: dlltool.c:3246 -msgid " --exclude-symbols Don't export \n" -msgstr " --exclude-symbols 'yi ihraç etmez\n" - -#: dlltool.c:3247 -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:3248 -msgid " -b --base-file Read linker generated base file.\n" -msgstr " -b --base-file Bağlayıcının oluşturduğu temel dosyayı okur.\n" - -#: dlltool.c:3249 -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:3250 -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:3251 -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:3252 -msgid " -k --kill-at Kill @ from exported names.\n" -msgstr " -k --kill-at İhraç edilmiş isimlerden @'da öldürür.\n" - -#: dlltool.c:3253 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias Rumuzları @ içermeksizin ekler.\n" - -#: dlltool.c:3254 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as Üretici olarak kullanır.\n" - -#: dlltool.c:3255 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-flags Üreticiye i geçirir.\n" - -#: dlltool.c:3256 -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:3257 -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:3258 -msgid " -v --verbose Be verbose.\n" -msgstr " -v --verbose Açıklama verir.\n" - -#: dlltool.c:3259 -msgid " -V --version Display the program version.\n" -msgstr " -V --version Sürüm bilgilerini gösterir.\n" - -#: dlltool.c:3260 -msgid " -h --help Display this information.\n" -msgstr " -h --help Bu yardımı gösterir.\n" - -#: dlltool.c:3262 -msgid " -M --mcore-elf Process mcore-elf object files into .\n" -msgstr " -M --mcore-elf <çıktı_adı> mcore-elf nesne dosyalarını <çıktı_adı>'na işler.\n" - -#: dlltool.c:3263 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker Bağlayıcı olarak kullanır.\n" - -#: dlltool.c:3264 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-flags i bağlayıcıya geçirir.\n" - -#: dlltool.c:3418 -#, c-format -msgid "Unable to open base-file: %s" -msgstr "Temel-dosyası açılamadı: %s" - -#: dlltool.c:3450 -#, c-format -msgid "Machine '%s' not supported" -msgstr "'%s' makinası desteklenmiyor" - -#: dlltool.c:3553 dllwrap.c:214 -#, c-format -msgid "Tried file: %s" -msgstr "Dosya denendi: %s" - -#: dlltool.c:3560 dllwrap.c:221 -#, c-format -msgid "Using file: %s" -msgstr "Dosya kullanılıyor: %s" - -#: dllwrap.c:308 -#, c-format -msgid "Keeping temporary base file %s" -msgstr "Geçici temel dosya %s tutuldu" - -#: dllwrap.c:310 -#, c-format -msgid "Deleting temporary base file %s" -msgstr "Geçici temel dosya %s silindi" - -#: dllwrap.c:324 -#, c-format -msgid "Keeping temporary exp file %s" -msgstr "Geçici ihraç dosyası %s tutuldu" - -#: dllwrap.c:326 -#, c-format -msgid "Deleting temporary exp file %s" -msgstr "Geçici ihraç dosyası %s silindi" - -#: dllwrap.c:339 -#, c-format -msgid "Keeping temporary def file %s" -msgstr "Geçici tanım dosyası %s tutuldu" - -#: dllwrap.c:341 -#, c-format -msgid "Deleting temporary def file %s" -msgstr "Geçici tanım dosyası %s silindi" - -#: dllwrap.c:496 -msgid " Generic options:\n" -msgstr " Genel seçenekler: \n" - -#: dllwrap.c:497 -msgid " --quiet, -q Work quietly\n" -msgstr " --quiet, -q Sessiz çalışır\n" - -#: dllwrap.c:498 -msgid " --verbose, -v Verbose\n" -msgstr " --verbose, -v Açıklamalı\n" - -#: dllwrap.c:499 -msgid " --version Print dllwrap version\n" -msgstr " --version dllwrap sürümünü yazdırır\n" - -#: dllwrap.c:500 -msgid " --implib Synonym for --output-lib\n" -msgstr " --implib <çıktı_adı> --output-lib ile eşanlamlı\n" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr " %s için seçenekler:\n" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name \"gcc\"ye öntanımlı\n" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags Öntanımlı ld seçeneklerinin yerine geçer\n" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name \"dlltool\"a öntanımlı\n" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr " --entry Alternatif DLL giriş noktası belirtir\n" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr " --image-base İmaj temel adresini belirtir\n" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target hedef makina, i386-cygwin32 veya i386-mingw32\n" - -#: dllwrap.c:508 -msgid " --dry-run Show what needs to be run\n" -msgstr " --dry-run Çalıştırılması gerekenleri gösterir\n" - -#: dllwrap.c:509 -msgid " --mno-cygwin Create Mingw DLL\n" -msgstr " --mno-cygwin Mingw DLL oluşturur\n" - -#: dllwrap.c:510 -msgid " Options passed to DLLTOOL:\n" -msgstr " DLLTOOL'a geçirilen seçenekler:\n" - -#: dllwrap.c:511 -msgid " --machine \n" -msgstr " --machine \n" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp <çıktı_adı> İhraç dosyası oluşturur.\n" - -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib <çıktı_adı> Girdi kitaplığı oluşturur.\n" - -#: dllwrap.c:514 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr " --add-indirect Dll yönlendirmelerini ihraç dosyasına ekler.\n" - -#: dllwrap.c:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr " --dllname Çıktı kitaplığına konulacak girdi dll adı.\n" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr " --def Girdi .def dosyası adı\n" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr " --output-def Çıktı .def dosyasının adı\n" - -#: dllwrap.c:518 -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:519 -msgid " --no-export-all-symbols Only export .drectve symbols\n" -msgstr " --no-export-all-symbols Yalnızca .drectve sembollerini ihraç eder\n" - -#: dllwrap.c:520 -msgid " --exclude-symbols Exclude from .def\n" -msgstr " --exclude-symbols deki sembolleri .def'e ihraç etmez\n" - -#: dllwrap.c:521 -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:522 -msgid " --base-file Read linker generated base file\n" -msgstr " --base-file Bağlayıcı tarafından oluşturulan temel dosyayı okur\n" - -#: dllwrap.c:523 -msgid " --no-idata4 Don't generate idata$4 section\n" -msgstr " --no-idata4 idata$4 bölümünü oluşturmaz\n" - -#: dllwrap.c:524 -msgid " --no-idata5 Don't generate idata$5 section\n" -msgstr " --no-idata5 idata$5 bölümünü oluşturmaz\n" - -#: dllwrap.c:525 -msgid " -U Add underscores to .lib\n" -msgstr " -U .lib'e alt-tire ekler\n" - -#: dllwrap.c:526 -msgid " -k Kill @ from exported names\n" -msgstr " -k @'i ihraç edilmiş isimlerden çıkartır\n" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias Rumuzları @ olmaksızın ekler\n" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr " --as Üretici olarak 'i kullanır\n" - -#: dllwrap.c:529 -msgid " --nodelete Keep temp files.\n" -msgstr " --nodelete Geçici dosyaları tutar.\n" - -#: dllwrap.c:530 -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:802 -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:830 -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:992 -#, c-format -msgid "DLLTOOL name : %s\n" -msgstr "DLLTOOL adı : %s\n" - -#: dllwrap.c:993 -#, c-format -msgid "DLLTOOL options : %s\n" -msgstr "DLLTOOL seçenekleri : %s\n" - -#: dllwrap.c:994 -#, c-format -msgid "DRIVER name : %s\n" -msgstr "SÜRÜCÜ adı : %s\n" - -#: dllwrap.c:995 -#, c-format -msgid "DRIVER options : %s\n" -msgstr "SÜRÜCÜ seçenekleri : %s\n" - -#: emul_aix.c:58 -#, c-format -msgid " [-g] - 32 bit small archive\n" -msgstr " [-g] - 32 bitlik küçük arşiv\n" - -#: emul_aix.c:59 -msgid " [-X32] - ignores 64 bit objects\n" -msgstr " [-X32] - 64 bitlik nesneleri yok sayar\n" - -#: emul_aix.c:60 -msgid " [-X64] - ignores 32 bit objects\n" -msgstr " [-X64] - 32 bitlik nesneleri yok sayar\n" - -#: emul_aix.c:61 -msgid " [-X32_64] - accepts 32 and 64 bit objects\n" -msgstr " [-X32_64] - 32 ve 64 bitlik nesneleri kabul eder\n" - -#: ieee.c:326 -msgid "unexpected end of debugging information" -msgstr "hata ayıklama bilgilerinde beklenmeyen son" - -#: ieee.c:421 -msgid "invalid number" -msgstr "geçersiz sayı" - -#: ieee.c:480 -msgid "invalid string length" -msgstr "geçersiz dizge uzunluğu" - -#: ieee.c:537 ieee.c:578 -msgid "expression stack overflow" -msgstr "ifade yığıtında taşma" - -#: ieee.c:557 -msgid "unsupported IEEE expression operator" -msgstr "desteklenmeyen IEEE ifade işlemimi" - -#: ieee.c:572 -msgid "unknown section" -msgstr "bilinmeyen bölüm" - -#: ieee.c:593 -msgid "expression stack underflow" -msgstr "ifade yığıt taşması" - -#: ieee.c:607 -msgid "expression stack mismatch" -msgstr "ifade yığıtı uyumsuzluğu" - -#: ieee.c:646 -msgid "unknown builtin type" -msgstr "bilinmeyen oluşumiçi tip" - -#: ieee.c:791 -msgid "BCD float type not supported" -msgstr "BCD gerçel tipi desteklenmiyor" - -#: ieee.c:937 -msgid "unexpected number" -msgstr "beklenmeyen sayı" - -#: ieee.c:944 -msgid "unexpected record type" -msgstr "beklenmeyen kayıt tipi" - -#: ieee.c:977 -msgid "blocks left on stack at end" -msgstr "yığıt üzerinde bloklar kaldı" - -#: ieee.c:1242 -msgid "unknown BB type" -msgstr "bilinmeyen BB tipi" - -#: ieee.c:1251 -msgid "stack overflow" -msgstr "yığıt taşması" - -#: ieee.c:1276 -msgid "stack underflow" -msgstr "yığıt alt taşması" - -#: ieee.c:1390 ieee.c:1462 ieee.c:2161 -msgid "illegal variable index" -msgstr "geçersiz değişken endeksi" - -#: ieee.c:1440 -msgid "illegal type index" -msgstr "geçersiz tip endeksi" - -#: ieee.c:1450 ieee.c:1487 -msgid "unknown TY code" -msgstr "bilinmeyen TY kodu" - -#: ieee.c:1469 -msgid "undefined variable in TY" -msgstr "TY'de tanımsız değişken" - -#. Pascal file name. FIXME. -#: ieee.c:1880 -msgid "Pascal file name not supported" -msgstr "Pascal dosya adı desteklenmiyor" - -#: ieee.c:1928 -msgid "unsupported qualifier" -msgstr "desteklenmeyen niteleyici" - -#: ieee.c:2199 -msgid "undefined variable in ATN" -msgstr "ATN'de tanımsız değişken" - -#: ieee.c:2242 -msgid "unknown ATN type" -msgstr "bilinmeyen ATN tipi" - -#. Reserved for FORTRAN common. -#: ieee.c:2364 -msgid "unsupported ATN11" -msgstr "desteklenmeyen ATN11" - -#. We have no way to record this information. FIXME. -#: ieee.c:2391 -msgid "unsupported ATN12" -msgstr "desteklenmeyen ATN12" - -#: ieee.c:2451 -msgid "unexpected string in C++ misc" -msgstr "C++ misc içinde beklenmeyen dizge" - -#: ieee.c:2464 -msgid "bad misc record" -msgstr "hatalı misc kaydı" - -#: ieee.c:2507 -msgid "unrecognized C++ misc record" -msgstr "bilinmeyen C++ misc kaydı" - -#: ieee.c:2624 -msgid "undefined C++ object" -msgstr "tanımlanmamış C++ nesnesi" - -#: ieee.c:2658 -msgid "unrecognized C++ object spec" -msgstr "bilinmeyen C++ nesne tanımı" - -#: ieee.c:2694 -msgid "unsupported C++ object type" -msgstr "desteklenmeyen C++ nesne tipi" - -#: ieee.c:2704 -msgid "C++ base class not defined" -msgstr "C++ temel sınıfı tanımlanmamış" - -#: ieee.c:2716 ieee.c:2821 -msgid "C++ object has no fields" -msgstr "C++ nesnesinde hiç alan yok" - -#: ieee.c:2735 -msgid "C++ base class not found in container" -msgstr "C++ temel sınıfı taşıyıcı içinde bulunamadı" - -#: ieee.c:2842 -msgid "C++ data member not found in container" -msgstr "C++ veri üyesi taşıyıcı içinde bulunamadı" - -#: ieee.c:2883 ieee.c:3033 -msgid "unknown C++ visibility" -msgstr "bilinmeyen C++ görünürlüğü" - -#: ieee.c:2917 -msgid "bad C++ field bit pos or size" -msgstr "hatalı C++ alan biti konum veya boyu" - -#: ieee.c:3009 -msgid "bad type for C++ method function" -msgstr "C++ yöntem işlevi için hatalı tip" - -#: ieee.c:3019 -msgid "no type information for C++ method function" -msgstr "C++ yöntem işlevi için tip bilgisi yok" - -#: ieee.c:3058 -msgid "C++ static virtual method" -msgstr "C++ statik sanal yöntem" - -#: ieee.c:3153 -msgid "unrecognized C++ object overhead spec" -msgstr "bilinmeyen C++ nesne masraf tanımı" - -#: ieee.c:3192 -msgid "undefined C++ vtable" -msgstr "tanımlanmamış C++ vtablosu" - -#: ieee.c:3263 -msgid "C++ default values not in a function" -msgstr "C++ öntanımlı değerleri işlev içerisinde değil" - -#: ieee.c:3303 -msgid "unrecognized C++ default type" -msgstr "bilinmeyen öntanımlı C++ tipi" - -#: ieee.c:3334 -msgid "reference parameter is not a pointer" -msgstr "referans parametresi imleyici değil" - -#: ieee.c:3419 -msgid "unrecognized C++ reference type" -msgstr "bilinmeyen C++ referans tipi" - -#: ieee.c:3501 -msgid "C++ reference not found" -msgstr "C++ referansı bulunamadı" - -#: ieee.c:3509 -msgid "C++ reference is not pointer" -msgstr "C++ referansı imleyici değil" - -#: ieee.c:3538 ieee.c:3546 -msgid "missing required ASN" -msgstr "Gerekli ASN yok" - -#: ieee.c:3576 ieee.c:3584 -msgid "missing required ATN65" -msgstr "Gerekli ATN65 yok" - -#: ieee.c:3598 -msgid "bad ATN65 record" -msgstr "hatalı ATN65 kaydı" - -#: ieee.c:4286 -msgid "IEEE numeric overflow: 0x" -msgstr "IEEE sayısal taşma: 0x" - -#: ieee.c:4332 -#, c-format -msgid "IEEE string length overflow: %u\n" -msgstr "IEEE dizge uzunluk taşması: %u\n" - -#: ieee.c:5382 -#, c-format -msgid "IEEE unsupported integer type size %u\n" -msgstr "IEEE desteklenmeyen tamsayı tip boyu %u\n" - -#: ieee.c:5418 -#, c-format -msgid "IEEE unsupported float type size %u\n" -msgstr "IEEE desteklenmeyen gerçel tip boyu %u\n" - -#: ieee.c:5454 -#, c-format -msgid "IEEE unsupported complex type size %u\n" -msgstr "IEEE desteklenmeyen karmaşık tip boyu %u\n" - -#: nlmconv.c:282 srconv.c:2043 -msgid "input and output files must be different" -msgstr "girdi ve çıktı dosyaları farklı olmalı" - -#: nlmconv.c:329 -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:338 -msgid "no input file" -msgstr "girdi dosyası yok" - -#: nlmconv.c:368 -msgid "no name for output file" -msgstr "çıktı dosyası için isim yok" - -#: nlmconv.c:382 -msgid "warning: input and output formats are not compatible" -msgstr "uyarı: girdi ve çıktı biçemleri uyumlu değil" - -#: nlmconv.c:411 -msgid "make .bss section" -msgstr ".bss bölümü oluştur" - -#: nlmconv.c:420 -msgid "make .nlmsections section" -msgstr ".nlmsections bölümü oluştur" - -#: nlmconv.c:422 -msgid "set .nlmsections flags" -msgstr ".nlmsections seçenekleri atar" - -#: nlmconv.c:450 -msgid "set .bss vma" -msgstr ".bss vma atar" - -#: nlmconv.c:457 -msgid "set .data size" -msgstr ".data boyu atar" - -#: nlmconv.c:637 -#, 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:657 -msgid "set start address" -msgstr "başlangıç adresini atar" - -#: nlmconv.c:706 -#, c-format -msgid "warning: START procedure %s not defined" -msgstr "uyarı: START altyordamı %s tanımsız" - -#: nlmconv.c:708 -#, c-format -msgid "warning: EXIT procedure %s not defined" -msgstr "uyarı: EXIT altyordamı %s tanımsız" - -#: nlmconv.c:710 -#, c-format -msgid "warning: CHECK procedure %s not defined" -msgstr "warning: CHECK altyordamı %s tanımsız" - -#: nlmconv.c:731 nlmconv.c:920 -msgid "custom section" -msgstr "özel bölüm" - -#: nlmconv.c:752 nlmconv.c:949 -msgid "help section" -msgstr "yardım bölümü" - -#: nlmconv.c:774 nlmconv.c:967 -msgid "message section" -msgstr "ileti bölümü" - -#: nlmconv.c:790 nlmconv.c:1000 -msgid "module section" -msgstr "modül bölümü" - -#: nlmconv.c:810 nlmconv.c:1016 -msgid "rpc section" -msgstr "rpc bölümü" - -#. 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: uyarı: paylaşımlı kitaplıklar öndeğer atanmamış veri kapsayamaz" - -#: nlmconv.c:867 nlmconv.c:1035 -msgid "shared section" -msgstr "paylaşımlı bölüm" - -#: nlmconv.c:875 -msgid "warning: No version number given" -msgstr "uyarı: Sürüm numarası verilmemiş" - -#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030 -#, c-format -msgid "%s: read: %s" -msgstr "%s: okundu: %s" - -#: nlmconv.c:937 -msgid "warning: MAP and FULLMAP are not supported; try ld -M" -msgstr "uyarı: MAP ve FULLMAP desteklenmiyor; ld -M komutunu deneyin" - -#: nlmconv.c:1109 -#, 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:1110 -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:1111 -msgid "" -" The options are:\n" -" -I --input-target= Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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= Girdi ikilik dosya biçemini belirler\n" -" -O --output-target= Çıktı ikilik dosya biçemini belirler\n" -" -T --header-file= NLM başlık bilgilerini dan okur\n" -" -l --linker= Bağlama işlemi için 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:1153 -#, c-format -msgid "support not compiled in for %s" -msgstr "%s için destek derlenmemiş" - -#: nlmconv.c:1193 -msgid "make section" -msgstr "bölüm oluştur" - -#: nlmconv.c:1207 -msgid "set section size" -msgstr "bölüm boyu belirtir" - -#: nlmconv.c:1213 -msgid "set section alignment" -msgstr "bölüm hizalanması atar" - -#: nlmconv.c:1217 -msgid "set section flags" -msgstr "bölüm seçeneklerini atar" - -#: nlmconv.c:1228 -msgid "set .nlmsections size" -msgstr ".nlmsections boyunu atar" - -#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 -msgid "set .nlmsection contents" -msgstr ".nlmsection içeriğini atar" - -#: nlmconv.c:1839 -msgid "stub section sizes" -msgstr "koçan bölüm boyları" - -#: nlmconv.c:1888 -msgid "writing stub" -msgstr "koçan yazılıyor" - -#: nlmconv.c:1977 -#, c-format -msgid "unresolved PC relative reloc against %s" -msgstr "%s'e göreli PC yer değiştirme çözümlenemedi" - -#: nlmconv.c:2041 -#, 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:2158 -#, c-format -msgid "%s: execution of %s failed: " -msgstr "%s: %s'in çalıştırılması başarısız oldu: " - -#: nlmconv.c:2173 -#, c-format -msgid "Execution of %s failed" -msgstr "%s'in çalıştırılması başarısız oldu" - -#: nm.c:283 size.c:85 strings.c:657 -#, c-format -msgid "Usage: %s [option(s)] [file(s)]\n" -msgstr "Kullanım: %s [seçenekler] [dosya(lar)]\n" - -#: nm.c:284 -msgid " List symbols in [file(s)] (a.out by default).\n" -msgstr " [dosya(lar)]daki sembolleri listeler (öntanımlı a.out).\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 "" -" 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' veya 'gnu-new-abi' 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. BİÇEM, 'bsd' (öntanımlı),\n" -" `sysv' veya `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" -" -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:319 objdump.c:250 -#, c-format -msgid "Report bugs to %s.\n" -msgstr "" -"Hataları %s adresine, \n" -"çeviri hatalarını adresine bildiriniz.\n" - -#: nm.c:352 -#, c-format -msgid "%s: invalid radix" -msgstr "%s: geçersiz radix" - -#: nm.c:377 -#, c-format -msgid "%s: invalid output format" -msgstr "%s: geçersiz çıktı biçemi" - -#: nm.c:494 -msgid "Only -X 32_64 is supported" -msgstr "Yalnız -X 32_64 destekleniyor" - -#: nm.c:514 -msgid "Using the --size-sort and --undefined-only options together" -msgstr "--size-sort ve --undefined-only seçenekleri beraber kullanılıyor" - -#: nm.c:515 -msgid "will produce no output, since undefined symbols have no size." -msgstr "tanımsız sembollerin boyları olmadığından çıktı üretilmeyecek." - -#: nm.c:543 -#, c-format -msgid "data size %ld" -msgstr "veri büyüklüğü %ld" - -#: nm.c:568 readelf.c:5809 readelf.c:5845 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:570 readelf.c:5811 readelf.c:5857 -#, c-format -msgid ": %d" -msgstr "<İS'e özel>: %d" - -#: nm.c:572 readelf.c:5813 readelf.c:5860 -#, c-format -msgid ": %d" -msgstr ": %d" - -#: nm.c:1376 -#, c-format -msgid "" -"\n" -"\n" -"Undefined symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"%s'de tanımlanmamış semboller:\n" -"\n" - -#: nm.c:1378 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" -"\n" -"\n" -"%s'de semboller:\n" -"\n" - -#: nm.c:1380 nm.c:1438 -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:1383 nm.c:1441 -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:1434 -#, 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:1436 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" -"\n" -"\n" -"%s[%s]'de semboller:\n" -"\n" - -#: nm.c:1658 -msgid "" -"\n" -"Archive index:\n" -msgstr "" -"\n" -"Arşiv endeksi:\n" - -#: objcopy.c:414 srconv.c:1952 -#, 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:415 -msgid " Copies a binary file, possibly transforming it in the process\n" -msgstr " İkilik dosyayı, muhtemelen değiştirerek kopyalar\n" - -#: objcopy.c:416 objcopy.c:495 -msgid " The options are:\n" -msgstr " Seçenekler:\n" - -#: objcopy.c:417 -msgid "" -" -I --input-target Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" --add-gnu-debuglink= Add section .gnu_debuglink linking to \n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --redefine-syms --redefine-sym for all symbol pairs \n" -" listed in \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code Use alternate machine code for output\n" -" --prefix-symbols Add to start of every symbol name\n" -" --prefix-sections Add to start of every section name\n" -" --prefix-alloc-sections \n" -" Add 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 Girdi dosyasının biçeminde\n" -" olduğunu varsayar\n" -" -O --output-target Çıktı dosyasını biçeminde\n" -" oluşturur\n" -" -B --binary-architecture Girdi ikilik biçeminde olduğu zaman çıktı\n" -" dosyasının platformunu belirler.\n" -" -F --target Hem girdi, hem de çıktı biçemini \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 Çıktıya yalnızca bölümünü kopyalar\n" -" --add-gnu-debuglink=....gnu_debuglink bölümünü 'ya ekler\n" -" -R --remove-section Çıktıdan 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 sembolünü kopyalamaz\n" -" -K --keep-symbol Yalnızca sembolünü kopyalar\n" -" -L --localize-symbol sembolünün yerel olarak\n" -" tanımlanmasını sağlar\n" -" -G --keep-global-symbol haricindeki bütün sembolleri\n" -" yerelleştirir.\n" -" -W --weaken-symbol 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" -" -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 Her bayttan yalnız birini kopyalar\n" -" -b --byte Her serpiştirilmiş bloktan numaralı\n" -" baytı seçer\n" -" --gap-fill Bölümler arası boşlukları ile\n" -" doldurur\n" -" --pad-to Son bölümü e kadar boşlukla doldurur\n" -" --set-start Başlangıç adresini olarak belirtir\n" -" {--change-start|--adjust-start} \n" -" Başlangıç adresine ekler\n" -" {--change-addresses|--adjust-vma} \n" -" LMA, VMA ve başlangıç adreslerine \n" -" ekler\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" bölümünün LMA ve VMA'sını \n" -" kadar değiştirir\n" -" --change-section-lma {=|+|-}\n" -" bölümünün LMA'sını kadar\n" -" değiştirir\n" -" --change-section-vma {=|+|-}\n" -" bölümünün VMA'sını 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 =\n" -" bölümünün özniteliklerini\n" -" e ayarlar\n" -" --add-section = içinde bulunan bölümünü\n" -" çıktıya ekler\n" -" --rename-section =[,] bölümünü 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 = isimli sembolü isimli olarak\n" -" yeniden tanımlar\n" -" --redefine-syms içinde tanımlı bütün sembol\n" -" çiftleri için --redefine-sym uygular\n" -" --srec-len 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 daki bütün semboller için -N uygular\n" -" --keep-symbols daki bütün semboller için -K uygular\n" -" --localize-symbols daki bütün semboller için -L uygular\n" -" --keep-global-symbols daki bütün semboller için -G uygular\n" -" --weaken-symbols daki bütün semboller için -W uygular\n" -" --alt-machine-code Çıktı için alternatif makina kodu kullanır\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:493 -#, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "Kullanım: %s girdi-dosya(ları)\n" - -#: objcopy.c:494 -msgid " Removes symbols and sections from files\n" -msgstr " Dosyalardan sembol ve bölümleri çıkarır\n" - -#: objcopy.c:496 -msgid "" -" -I --input-target= Assume input file is in format \n" -" -O --output-target= Create an output file in format \n" -" -F --target= Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target= Girdi dosyasının biçeminde \n" -" olduğunu varsayar\n" -" -O --output-target= Çıktı dosyasını biçeminde \n" -" oluşturur\n" -" -F --target= Girdi ve çıktı biçemlerini olarak\n" -" atar\n" -" -p --preserve-dates Çıktıya değişim/erişim zaman damgalarını \n" -" kopyalar\n" -" -R --remove-section= Çıktıdan 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" -" -N --strip-symbol= sembolünü kopyalamaz\n" -" -K --keep-symbol= Yalnızca sembolünü kopyalar\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 Sembolleri silinmiş çıktıyı ya \n" -" yerleştirir\n" - -#: objcopy.c:567 -#, c-format -msgid "unrecognized section flag `%s'" -msgstr "bilinmeyen bölüm seçeneği `%s'" - -#: objcopy.c:568 -#, c-format -msgid "supported flags: %s" -msgstr "desteklenen seçenekler: %s" - -#: objcopy.c:645 objcopy.c:2526 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "durumlanamadı: %s: %s" - -#: objcopy.c:652 objcopy.c:2544 -#, c-format -msgid "cannot open: %s: %s" -msgstr "açılamadı: %s: %s" - -#: objcopy.c:655 objcopy.c:2548 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread başarısız" - -#: objcopy.c:728 -#, c-format -msgid "Ignoring rubbish found on line %d of %s" -msgstr "%2$s içinde %1$d satırında bulunan bozukluk yoksayıldı" - -#: objcopy.c:979 -#, c-format -msgid "%s: Multiple redefinition of symbol \"%s\"" -msgstr "%s: \"%s\" sembolü tekrar tanımlanmış" - -#: objcopy.c:983 -#, 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:1010 -#, 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:1088 -#, c-format -msgid "%s: garbage at end of line %d" -msgstr "%s: %d satırının sonu bozuk" - -#: objcopy.c:1091 -#, c-format -msgid "%s: missing new symbol name at line %d" -msgstr "%s: %d satırında yeni sembol adı eksik" - -#: objcopy.c:1101 -#, c-format -msgid "%s: premature end of file at line %d" -msgstr "%s: %d satırında erken sonlanmış dosya" - -#: objcopy.c:1147 -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:1155 -#, c-format -msgid "copy from %s(%s) to %s(%s)\n" -msgstr "%s(%s)'dan %s(%s)'a kopyalar\n" - -#: objcopy.c:1182 -#, 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:1304 -#, c-format -msgid "Can't fill gap after %s: %s" -msgstr "%s'den sonraki boşluk doldurulamadı: %s" - -#: objcopy.c:1329 -#, c-format -msgid "Can't add padding to %s: %s" -msgstr "%s'ye dolgu eklenemedi: %s" - -#: objcopy.c:1485 -#, c-format -msgid "%s: error copying private BFD data: %s" -msgstr "%s: özel BFD verisi kopyalanırken hata: %s" - -#: objcopy.c:1498 -msgid "unknown alternate machine code, ignored" -msgstr "bilinmeyen alternatif makina kodu, yoksayıldı" - -#: objcopy.c:1531 objcopy.c:1561 -#, 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:1749 -#, c-format -msgid "Multiple renames of section %s" -msgstr "%s bölümünde birden fazla yeniden isimleme" - -#: objcopy.c:1840 -msgid "making" -msgstr "oluşturuluyor" - -#: objcopy.c:1849 -msgid "size" -msgstr "boyut" - -#: objcopy.c:1863 -msgid "vma" -msgstr "vma" - -#: objcopy.c:1888 -msgid "alignment" -msgstr "hizalama" - -#: objcopy.c:1896 -msgid "flags" -msgstr "seçenekler" - -#: objcopy.c:1918 -msgid "private data" -msgstr "özel veri" - -#: objcopy.c:1926 -#, c-format -msgid "%s: section `%s': error in %s: %s" -msgstr "%s: bölüm `%s': %s'da hata: %s" - -#: objcopy.c:2199 -#, c-format -msgid "%s: can't create debugging section: %s" -msgstr "%s: hata ayıklama bölümü oluşturulamadı: %s" - -#: objcopy.c:2214 -#, 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:2223 -#, 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:2346 -#, c-format -msgid "%s: cannot stat: %s" -msgstr "%s: durumlanamadı: %s" - -#: objcopy.c:2400 -msgid "byte number must be non-negative" -msgstr "bayt numarası negatif olmamalı" - -#: objcopy.c:2410 -msgid "interleave must be positive" -msgstr "serpiştirme pozitif olmalı" - -#: objcopy.c:2430 objcopy.c:2438 -#, c-format -msgid "%s both copied and removed" -msgstr "%s hem kopyalandı hem silindi" - -#: 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 "%s için hatalı biçem" - -#: objcopy.c:2662 -#, 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:2818 -msgid "alternate machine code index must be positive" -msgstr "alternatif makina kodu indeksi pozitif olmalı" - -#: objcopy.c:2856 -msgid "byte number must be less than interleave" -msgstr "bayt numarası serpiştirmeden daha küçük olmalı" - -#: objcopy.c:2883 -#, c-format -msgid "architecture %s unknown" -msgstr "%s platformu bilinmiyor" - -#: objcopy.c:2887 -msgid "Warning: input target 'binary' required for binary architecture parameter." -msgstr "Uyarı: ikilik platform parametresi için ikilik (`binary') girdi hedefi gerekli." - -#: objcopy.c:2888 -#, c-format -msgid " Argument %s ignored" -msgstr " %s argümanı yoksayıldı" - -#: objcopy.c:2894 -#, c-format -msgid "Cannot stat: %s: %s" -msgstr "Durumlanamadı: %s: %s" - -#: objcopy.c:2934 objcopy.c:2948 -#, c-format -msgid "%s %s%c0x%s never used" -msgstr "%s %s%c0x%s hiç kullanılmadı" - -#: objdump.c:197 -#, c-format -msgid "Usage: %s \n" -msgstr "Kullanım: %s \n" - -#: objdump.c:198 -msgid " Display information from object .\n" -msgstr "Nesne 'sından bilgi gösterir.\n" - -#: objdump.c:199 -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: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 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" -" -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:222 -msgid "" -"\n" -" The following switches are optional:\n" -msgstr "" -"\n" -" Aşağıdaki seçenekler isteğe bağlı:\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=BFD_ADI Hedef nesne biçemini BFD_ADI olarak belirtir\n" -" -m, --architecture=MAKİNA Hedef mimariyi MAKİNA 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" -" -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" -"\n" - -#: objdump.c:391 -msgid "Sections:\n" -msgstr "Bölümler:\n" - -#: objdump.c:394 objdump.c:398 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Adı Boy VMA LMA Dosya of Hiza" - -#: objdump.c:400 -msgid "Idx Name Size VMA LMA File off Algn" -msgstr "Idx Adı Boy VMA LMA Dosya of Hiza" - -#: objdump.c:404 -msgid " Flags" -msgstr " Seçenekler" - -#: objdump.c:406 -msgid " Pg" -msgstr " Pg" - -#: objdump.c:451 -#, c-format -msgid "%s: not a dynamic object" -msgstr "%s: dinamik nesne değil" - -#: objdump.c:1144 -msgid "Out of virtual memory" -msgstr "Sanal bellek tükendi" - -#: objdump.c:1574 -#, c-format -msgid "Can't use supplied machine %s" -msgstr "Verilen makina %s kullanılamadı" - -#: objdump.c:1592 -#, c-format -msgid "Can't disassemble for architecture %s\n" -msgstr "%s mimarisi için karşıt çevirim yapılamadı\n" - -#: objdump.c:1682 -#, c-format -msgid "Disassembly of section %s:\n" -msgstr "%s bölümünün karşıt çevrimi:\n" - -#: objdump.c:1847 -#, c-format -msgid "" -"No %s section present\n" -"\n" -msgstr "" -"%s bölümü yok\n" -"\n" - -#: objdump.c:1854 -#, c-format -msgid "%s has no %s section" -msgstr "%s %s bölümü yok" - -#: objdump.c:1868 -#, 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:1880 -#, c-format -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" - -#: objdump.c:1923 -#, c-format -msgid "" -"Contents of %s section:\n" -"\n" -msgstr "" -"%s bölümünün içeriği:\n" -"\n" - -#: objdump.c:2021 -#, c-format -msgid "architecture: %s, " -msgstr "mimari: %s," - -#: objdump.c:2024 -#, c-format -msgid "flags 0x%08x:\n" -msgstr "seçenekler 0x%08x:\n" - -#: objdump.c:2038 -msgid "" -"\n" -"start address 0x" -msgstr "" -"\n" -"başlangıç adresi 0x" - -#: objdump.c:2071 -#, c-format -msgid "" -"\n" -"%s: file format %s\n" -msgstr "" -"\n" -"%s: %s dosya biçemi\n" - -#: objdump.c:2111 -#, c-format -msgid "%s: printing debugging information failed" -msgstr "%s: hata ayıklama bilgisinin yazdırılması başarısız" - -#: objdump.c:2190 -#, c-format -msgid "In archive %s:\n" -msgstr "%s arşivi içinde:\n" - -#: objdump.c:2249 -#, c-format -msgid "Contents of section %s:\n" -msgstr "%s bölümünün içeriği:\n" - -#: objdump.c:2369 -msgid "no symbols\n" -msgstr "sembol yok\n" - -#: objdump.c:2718 -msgid "unrecognized -E option" -msgstr "tanınmayan -E seçeneği" - -#: objdump.c:2729 -#, c-format -msgid "unrecognized --endian type `%s'" -msgstr "tanınmayan --endian tipi `%s'" - -#: rdcoff.c:206 -#, c-format -msgid "parse_coff_type: Bad type code 0x%x" -msgstr "parse_coff_type: Kötü tip kodu 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 başarısız: %s" - -#: rdcoff.c:440 rdcoff.c:751 -#, c-format -msgid "bfd_coff_get_auxent failed: %s" -msgstr "bfd_coff_get_auxent başarısız: %s" - -#: rdcoff.c:818 -#, c-format -msgid "%ld: .bf without preceding function" -msgstr "%ld: öncesinde işlev olmadan .bf" - -#: rdcoff.c:868 -#, c-format -msgid "%ld: unexpected .ef\n" -msgstr "%ld: beklenmeyen .ef\n" - -#: rddbg.c:91 -#, c-format -msgid "%s: no recognized debugging information" -msgstr "%s: tanınan hata ayıklama bilgisi yok" - -#: rddbg.c:415 -msgid "Last stabs entries before error:\n" -msgstr "Hata öncesi son stabs girdileri:\n" - -#: readelf.c:455 -#, c-format -msgid "%s: Error: " -msgstr "%s: Hata: " - -#: readelf.c:466 -#, c-format -msgid "%s: Warning: " -msgstr "%s: Uyarı: " - -#: readelf.c:488 -#, 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:499 -#, 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:507 -#, 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:560 readelf.c:614 readelf.c:798 readelf.c:833 -#, c-format -msgid "Unhandled data length: %d\n" -msgstr "Desteklenmeyen veri uzunluğu: %d\n" - -#: readelf.c:924 -msgid "Don't know about relocations on this machine architecture\n" -msgstr "Bu makina mimarisi üzerinde yer değiştirmeler konusunda bilgi yok\n" - -#: readelf.c:946 readelf.c:975 readelf.c:1021 readelf.c:1049 -msgid "relocs" -msgstr "yerdeğişimler" - -#: readelf.c:957 readelf.c:986 readelf.c:1031 readelf.c:1059 -msgid "out of memory parsing relocs" -msgstr "yer değiştirmeleri tararken bellek tükendi" - -#: readelf.c:1112 -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:1114 -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:1119 -msgid " Offset Info Type Sym. Value Symbol's Name\n" -msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\n" - -#: readelf.c:1121 -msgid " Offset Info Type Sym.Value Sym. Name\n" -msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\n" - -#: readelf.c:1129 -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:1131 -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:1136 -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:1138 -msgid " Offset Info Type Sym. Value Sym. Name\n" -msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\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 "bilinmeyen: %-7lx" - -#: readelf.c:1466 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:1743 -#, c-format -msgid "Processor Specific: %lx" -msgstr "İşlemciye Özel: %lx" - -#: readelf.c:1762 -#, c-format -msgid "Operating System specific: %lx" -msgstr "İşletim Sistemine Özel: %lx" - -#: readelf.c:1765 readelf.c:2417 -#, c-format -msgid ": %lx" -msgstr ": %lx" - -#: readelf.c:1779 -msgid "NONE (None)" -msgstr "HİÇBİRİ (Hiçbiri)" - -#: readelf.c:1780 -msgid "REL (Relocatable file)" -msgstr "YER (Yer değiştirebilen dosya)" - -#: readelf.c:1781 -msgid "EXEC (Executable file)" -msgstr "UYGU (Uygulama dosyası)" - -#: readelf.c:1782 -msgid "DYN (Shared object file)" -msgstr "DİN (Paylaşımlı nesne dosyası)" - -#: readelf.c:1783 -msgid "CORE (Core file)" -msgstr "CORE (Core dosyası)" - -#: readelf.c:1787 -#, c-format -msgid "Processor Specific: (%x)" -msgstr "İşlemciye Özel: (%x)" - -#: readelf.c:1789 -#, c-format -msgid "OS Specific: (%x)" -msgstr "İşletim Sistemine Özel: (%x)" - -#: readelf.c:1791 readelf.c:1898 readelf.c:2574 -#, c-format -msgid ": %x" -msgstr ": %x" - -#: readelf.c:1804 -msgid "None" -msgstr "Hiçbiri" - -#: readelf.c:2616 -msgid "Usage: readelf elf-file(s)\n" -msgstr "Kullanım: readelf elf-dosya(ları)\n" - -#: readelf.c:2617 -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: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= Dump the contents of section \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 "" -" 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" -" -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' dosyası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= no'lu bölümün içeriğini gösterir\n" -" -w[liaprmfFso] veya\n" -" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" -" DWARF2 hata ayıklama bölümlerinin içeriğini gösterir\n" - -#: readelf.c:2640 -msgid "" -" -i --instruction-dump=\n" -" Disassemble the contents of section \n" -msgstr "" -" -i --instruction-dump=\n" -" bölümünün içeriğini karşıt-çevirir\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 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:2666 readelf.c:10765 -msgid "Out of memory allocating dump request table." -msgstr "Döküm istek tablosu ayrılırken bellek tükendi." - -#: readelf.c:2830 readelf.c:2906 -#, c-format -msgid "Unrecognized debug option '%s'\n" -msgstr "Tanınmayan hata ayıklama seçeneği '%s'\n" - -#: readelf.c:2940 -#, c-format -msgid "Invalid option '-%c'\n" -msgstr "Geçersiz seçenek '-%c'\n" - -#: readelf.c:2953 -msgid "Nothing to do.\n" -msgstr "Yapılacak bir şey yok.\n" - -#: readelf.c:2966 readelf.c:2983 readelf.c:5366 -msgid "none" -msgstr "yok" - -#: readelf.c:2970 readelf.c:2987 readelf.c:3018 -#, c-format -msgid "" -msgstr "" - -#: readelf.c:2984 -msgid "2's complement, little endian" -msgstr "2's complement, little endian" - -#: readelf.c:2985 -msgid "2's complement, big endian" -msgstr "2's complement, big endian" - -#: readelf.c:3015 -msgid "Standalone App" -msgstr "Tekbaşına Uygulama" - -#: readelf.c:3034 -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:3042 -msgid "ELF Header:\n" -msgstr "ELF Başlığı:\n" - -#: readelf.c:3043 -msgid " Magic: " -msgstr " Sihir: " - -#: readelf.c:3047 -#, c-format -msgid " Class: %s\n" -msgstr " Sınıf: %s\n" - -#: readelf.c:3049 -#, c-format -msgid " Data: %s\n" -msgstr " Veri: %s\n" - -#: readelf.c:3051 -#, c-format -msgid " Version: %d %s\n" -msgstr " Sürüm: %d %s\n" - -#: readelf.c:3058 -#, c-format -msgid " OS/ABI: %s\n" -msgstr " OS/ABI: %s\n" - -#: readelf.c:3060 -#, c-format -msgid " ABI Version: %d\n" -msgstr " ABI Sürümü: %d\n" - -#: readelf.c:3062 -#, c-format -msgid " Type: %s\n" -msgstr " Tip: %s\n" - -#: readelf.c:3064 -#, c-format -msgid " Machine: %s\n" -msgstr " Makina: %s\n" - -#: readelf.c:3066 -#, c-format -msgid " Version: 0x%lx\n" -msgstr " Sürüm: 0x%lx\n" - -#: readelf.c:3069 -msgid " Entry point address: " -msgstr " Girdi noktası adresi: " - -#: readelf.c:3071 -msgid "" -"\n" -" Start of program headers: " -msgstr "" -"\n" -" Yazılım başlıkları başlangıcı: " - -#: readelf.c:3073 -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:3075 -msgid " (bytes into file)\n" -msgstr " (bayt dosya içinde)\n" - -#: readelf.c:3077 -#, c-format -msgid " Flags: 0x%lx%s\n" -msgstr " Seçenekler: 0x%lx%s\n" - -#: readelf.c:3080 -#, c-format -msgid " Size of this header: %ld (bytes)\n" -msgstr " Bu başlığın boyu: %ld (bayt)\n" - -#: readelf.c:3082 -#, c-format -msgid " Size of program headers: %ld (bytes)\n" -msgstr " Yazılım başlık boyu: %ld (bayt)\n" - -#: readelf.c:3084 -#, c-format -msgid " Number of program headers: %ld\n" -msgstr " Yazılım başlık sayısı: %ld\n" - -#: readelf.c:3086 -#, c-format -msgid " Size of section headers: %ld (bytes)\n" -msgstr " Bölüm başlık boyu: %ld (bayt)\n" - -#: readelf.c:3088 -#, c-format -msgid " Number of section headers: %ld" -msgstr " Bölüm başlıkları sayısı: %ld" - -#: readelf.c:3093 -#, c-format -msgid " Section header string table index: %ld" -msgstr " Bölüm başlığı dizge tablo endeksi: %ld" - -#: readelf.c:3127 readelf.c:3163 -msgid "program headers" -msgstr "Yazılım Başlıkları" - -#: 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 "Bellek tükendi\n" - -#: readelf.c:3231 -msgid "" -"\n" -"There are no program headers in this file.\n" -msgstr "" -"\n" -"Bu dosyada yazılım başlığı yok.\n" - -#: readelf.c:3237 -#, c-format -msgid "" -"\n" -"Elf file type is %s\n" -msgstr "" -"\n" -"Elf dosya tipi: %s\n" - -#: readelf.c:3238 -msgid "Entry point " -msgstr "Giriş noktası " - -#: readelf.c:3240 -#, 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:3252 readelf.c:3254 -msgid "" -"\n" -"Program Headers:\n" -msgstr "" -"\n" -"Yazılım Başlıkları:\n" - -#: readelf.c:3258 -msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" -msgstr " Tip Basamak SanalAdr GerçAdrs DosyaBoyBelBoy Seç Hiza\n" - -#: readelf.c:3261 -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:3265 -msgid " Type Offset VirtAddr PhysAddr\n" -msgstr " Tip Basamak SanalAdres GerçekAdres\n" - -#: readelf.c:3267 -msgid " FileSiz MemSiz Flags Align\n" -msgstr " DosyaBoyu BellekBoyu Seç Hiza\n" - -#: readelf.c:3360 -msgid "more than one dynamic segment\n" -msgstr "bir dinamik parçadan fazla\n" - -#: readelf.c:3368 -msgid "Unable to find program interpreter name\n" -msgstr "Yazılım yorumlayıcısı adı bulunamadı\n" - -#: readelf.c:3375 -#, c-format -msgid "" -"\n" -" [Requesting program interpreter: %s]" -msgstr "" -"\n" -" [Yazılım yorumlayıcısı isteniyor: %s]" - -#: readelf.c:3387 -msgid "" -"\n" -" Section to Segment mapping:\n" -msgstr "" -"\n" -" Bölümden parçaya eşleşme:\n" - -#: readelf.c:3388 -msgid " Segment Sections...\n" -msgstr " Parça Bölümleri...\n" - -#: readelf.c:3437 -msgid "Cannot interpret virtual addresses without program headers.\n" -msgstr "Yazılım başlıkları olmadan sanal adresler yorumlanamaz. \n" - -#: readelf.c:3453 -#, 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:3471 readelf.c:3517 -msgid "section headers" -msgstr "Bölüm Başlıkları" - -#: readelf.c:3565 readelf.c:3632 -msgid "symbols" -msgstr "semboller" - -#: 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" -"Bu dosyada bölüm yok.\n" - -#: readelf.c:3751 -#, 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:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070 -msgid "string table" -msgstr "dizge tablosu" - -#: readelf.c:3793 -msgid "File contains multiple dynamic symbol tables\n" -msgstr "Dosyada birden fazla dinamik sembol tablosu var\n" - -#: readelf.c:3805 -msgid "File contains multiple dynamic string tables\n" -msgstr "Dosyada birden fazla dinamik dizge tablosu var\n" - -#: readelf.c:3811 -msgid "dynamic strings" -msgstr "dinamik dizgeler" - -#: readelf.c:3817 -msgid "File contains multiple symtab shndx tables\n" -msgstr "Dosyada birden fazla symtab shndx tablosu var\n" - -#: readelf.c:3855 -msgid "" -"\n" -"Section Headers:\n" -msgstr "" -"\n" -"Bölüm Başlıkları:\n" - -#: readelf.c:3857 -msgid "" -"\n" -"Section Header:\n" -msgstr "" -"\n" -"Bölüm Başlığı:\n" - -#: readelf.c:3861 -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:3864 -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:3867 -msgid " [Nr] Name Type Address Offset\n" -msgstr " [Nr] İsim Tip Adres Basamak\n" - -#: readelf.c:3868 -msgid " Size EntSize Flags Link Info Align\n" -msgstr " Boy EntBoy Seç Bağ Bilgi Hiza\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 "" -"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:4031 -#, 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:4043 -msgid "" -"\n" -"There are no dynamic relocations in this file.\n" -msgstr "" -"\n" -"Bu dosyada dinamik yer değiştirmeler yok.\n" - -#: readelf.c:4070 -msgid "" -"\n" -"Relocation section " -msgstr "" -"\n" -"Yer değiştirme bölümü " - -#: 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 "göreli konum 0x%lx %lu girdi içeriyor:\n" - -#: readelf.c:4115 -msgid "" -"\n" -"There are no relocations in this file.\n" -msgstr "" -"\n" -"Bu dosyada yer değiştirmeler yok.\n" - -#: readelf.c:4299 -msgid "unwind table" -msgstr "geri alma tablosu" - -#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511 -#, c-format -msgid "Skipping unexpected symbol type %u\n" -msgstr "beklenmeyen sembol türü %u atlanıyor\n" - -#: readelf.c:4370 -#, c-format -msgid "Skipping unexpected relocation type %s\n" -msgstr "beklenmeyen yerdeğişim türü %s atlanıyor\n" - -#: readelf.c:4415 readelf.c:4440 -msgid "" -"\n" -"There are no unwind sections in this file.\n" -msgstr "" -"\n" -"Bu dosyada geri alma bölümü yok.\n" - -#: readelf.c:4491 -msgid "" -"\n" -"Could not find unwind info section for " -msgstr "" -"\n" -"Geri alma bilgi bölümü bulunamadı " - -#: readelf.c:4503 -msgid "unwind info" -msgstr "geri alma bilgisi" - -#: readelf.c:4505 -msgid "" -"\n" -"Unwind section " -msgstr "" -"\n" -"Geri alma bölümü " - -#: readelf.c:4699 readelf.c:4742 -msgid "dynamic segment" -msgstr "dinamik bölüm" - -#: readelf.c:4820 -msgid "" -"\n" -"There is no dynamic segment in this file.\n" -msgstr "" -"\n" -"Bu dosyada dinamik parça yok.\n" - -#: readelf.c:4854 -msgid "Unable to seek to end of file!" -msgstr "Dosya sonuna kadar aranamıyor!" - -#: readelf.c:4865 -msgid "Unable to determine the number of symbols to load\n" -msgstr "Yüklenecek sembol sayısı belirlenemedi\n" - -#: readelf.c:4895 -msgid "Unable to seek to end of file\n" -msgstr "Dosyanın sonuna kadar aranamadı\n" - -#: readelf.c:4901 -msgid "Unable to determine the length of the dynamic string table\n" -msgstr "Dinamik dizge tablosunun uzunluğu belirlenemedi\n" - -#: readelf.c:4906 -msgid "dynamic string table" -msgstr "dinamik dizge tablosu" - -#: readelf.c:4941 -msgid "symbol information" -msgstr "sembol bilgisi" - -#: readelf.c:4965 -#, c-format -msgid "" -"\n" -"Dynamic segment at offset 0x%lx contains %ld entries:\n" -msgstr "" -"\n" -"Göreli konum 0x%lx'deki dinamik parça %ld girdi içeriyor:\n" - -#: readelf.c:4968 -msgid " Tag Type Name/Value\n" -msgstr " Etiket Tip İsim/Değer\n" - -#: readelf.c:5004 -msgid "Auxiliary library" -msgstr "Yardımcı kitaplık" - -#: readelf.c:5008 -msgid "Filter library" -msgstr "Filtre kitaplığı" - -#: readelf.c:5012 -msgid "Configuration file" -msgstr "Ayar dosyası" - -#: readelf.c:5016 -msgid "Dependency audit library" -msgstr "Bağımlılık denetim kitaplığı" - -#: readelf.c:5020 -msgid "Audit library" -msgstr "Denetim kitaplığı" - -#: readelf.c:5038 readelf.c:5066 readelf.c:5094 -msgid "Flags:" -msgstr "Seçenekler:" - -#: readelf.c:5041 readelf.c:5069 readelf.c:5096 -msgid " None\n" -msgstr " Hiçbiri\n" - -#: readelf.c:5217 -#, c-format -msgid "Shared library: [%s]" -msgstr "Paylaşımlı kitaplık: [%s]" - -#: readelf.c:5220 -msgid " program interpreter" -msgstr " yazılım yorumlayıcısı" - -#: readelf.c:5224 -#, c-format -msgid "Library soname: [%s]" -msgstr "Kitaplık so_adı: [%s]" - -#: readelf.c:5228 -#, c-format -msgid "Library rpath: [%s]" -msgstr "Kitaplık r_yolu: [%s]" - -#: readelf.c:5232 -#, c-format -msgid "Library runpath: [%s]" -msgstr "Kitaplık çalışım yolu: [%s]" - -#: readelf.c:5296 -#, c-format -msgid "Not needed object: [%s]\n" -msgstr "Gereksiz nesne: [%s]\n" - -#: readelf.c:5412 -#, 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:5415 -msgid " Addr: 0x" -msgstr " Adres: 0x" - -#: readelf.c:5417 readelf.c:5612 -#, c-format -msgid " Offset: %#08lx Link: %lx (%s)\n" -msgstr " Basamak: %#08lx Bağ: %lx (%s)\n" - -#: readelf.c:5424 -msgid "version definition section" -msgstr "sürüm tanımı bölümü" - -#: readelf.c:5450 -#, c-format -msgid " %#06x: Rev: %d Flags: %s" -msgstr " %#06x: Sür: %d Seçenek: %s" - -#: readelf.c:5453 -#, c-format -msgid " Index: %d Cnt: %d " -msgstr " Endeks: %d Sayı: %d " - -#: readelf.c:5464 -#, c-format -msgid "Name: %s\n" -msgstr "İsim: %s\n" - -#: readelf.c:5466 -#, c-format -msgid "Name index: %ld\n" -msgstr "İsim Endeksi: %ld\n" - -#: readelf.c:5481 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr " %#06x: Üst %d: %s\n" - -#: readelf.c:5484 -#, c-format -msgid " %#06x: Parent %d, name index: %ld\n" -msgstr " %#06x: Üst %d, isim endeksi: %ld\n" - -#: readelf.c:5503 -#, 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:5506 -msgid " Addr: 0x" -msgstr " Adres: 0x" - -#: readelf.c:5508 -#, c-format -msgid " Offset: %#08lx Link to section: %ld (%s)\n" -msgstr " Basamak: %#08lx Bölüme bağ: %ld (%s)\n" - -#: readelf.c:5514 -msgid "version need section" -msgstr "Sürüm Gereksinim Bölüm" - -#: readelf.c:5536 -#, c-format -msgid " %#06x: Version: %d" -msgstr " %#06x: Sürüm: %d" - -#: readelf.c:5539 -#, c-format -msgid " File: %s" -msgstr " Dosya: %s" - -#: readelf.c:5541 -#, c-format -msgid " File: %lx" -msgstr " Dosya: %lx" - -#: readelf.c:5543 -#, c-format -msgid " Cnt: %d\n" -msgstr " Sayı: %d\n" - -#: readelf.c:5561 -#, c-format -msgid " %#06x: Name: %s" -msgstr " %#06x: İsim: %s" - -#: readelf.c:5564 -#, c-format -msgid " %#06x: Name index: %lx" -msgstr " %#06x: İsim endeksi: %lx" - -#: readelf.c:5567 -#, c-format -msgid " Flags: %s Version: %d\n" -msgstr " Seçenekler: %s Sürüm: %d\n" - -#: readelf.c:5603 -msgid "version string table" -msgstr "Sürüm Dizge Tablo" - -#: readelf.c:5607 -#, 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:5610 -msgid " Addr: " -msgstr " Adres: " - -#: readelf.c:5622 -msgid "version symbol data" -msgstr "Sürüm Sembol Veri" - -#: readelf.c:5649 -msgid " 0 (*local*) " -msgstr " 0 (*yerel*) " - -#: readelf.c:5653 -msgid " 1 (*global*) " -msgstr " 1 (*evrensel*) " - -#: readelf.c:5689 readelf.c:6129 -msgid "version need" -msgstr "Sürüm Gereksinim" - -#: readelf.c:5699 -msgid "version need aux (2)" -msgstr "Sürüm Gereksinim Yardımcı (2)" - -#: readelf.c:5741 readelf.c:6192 -msgid "version def" -msgstr "sürüm tanımı" - -#: readelf.c:5760 readelf.c:6207 -msgid "version def aux" -msgstr "Sürüm yardımcı tanımı" - -#: readelf.c:5791 -msgid "" -"\n" -"No version information found in this file.\n" -msgstr "" -"\n" -"Bu dosyada sürüm bilgisi yok.\n" - -#: readelf.c:5923 -msgid "Unable to read in dynamic data\n" -msgstr "Dinamik veri okunamadı\n" - -#: readelf.c:5967 -msgid "Unable to seek to start of dynamic information" -msgstr "Dinamik bilginin başlangıcına kadar aranamadı" - -#: readelf.c:5973 -msgid "Failed to read in number of buckets\n" -msgstr "Küme sayısı okunamadı\n" - -#: readelf.c:5979 -msgid "Failed to read in number of chains\n" -msgstr "Zincir sayısı okunamadı\n" - -#: readelf.c:5999 -msgid "" -"\n" -"Symbol table for image:\n" -msgstr "" -"\n" -"İmaj için sembol tablosu:\n" - -#: readelf.c:6001 -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:6003 -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:6048 -#, c-format -msgid "" -"\n" -"Symbol table '%s' contains %lu entries:\n" -msgstr "" -"\n" -"'%s' sembol tablosu %lu girdi içeriyor:\n" - -#: readelf.c:6052 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Num: Değer Boy Tip Bağ Gör Ndx İsim\n" - -#: readelf.c:6054 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr " Num: Değer Boy Tip Bağ Gör Ndx İsim\n" - -#: readelf.c:6101 -msgid "version data" -msgstr "sürüm verisi" - -#: readelf.c:6142 -msgid "version need aux (3)" -msgstr "Sürüm Gereksinim Yardımcı (3)" - -#: readelf.c:6167 -msgid "bad dynamic symbol" -msgstr "hatalı dinamik sembol" - -#: readelf.c:6230 -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:6242 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length (total of %d buckets):\n" -msgstr "" -"\n" -"Küme liste boyu (toplam %d küme) geçmiş grafiği:\n" - -#: readelf.c:6244 -#, c-format -msgid " Length Number %% of total Coverage\n" -msgstr "" -" Length Number %% of total Coverage\n" -" Boy Numara toplam kapsamın %%\n" - -#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090 -msgid "Out of memory" -msgstr "Bellek yetersiz" - -#: readelf.c:6317 -#, 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:6320 -msgid " Num: Name BoundTo Flags\n" -msgstr " Num: İsim Bağlı Seçenekler\n" - -#: readelf.c:6373 -#, 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:6396 -#, 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:6401 -#, 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:6406 -msgid "section data" -msgstr "bölüm verisi" - -#: readelf.c:6555 -msgid "badly formed extended line op encountered!\n" -msgstr "hatalı oluşturulmuş uzun satır işlevi bulundu!\n" - -#: readelf.c:6562 -#, c-format -msgid " Extended opcode %d: " -msgstr " Ek opkod %d: " - -#: readelf.c:6567 -msgid "" -"End of Sequence\n" -"\n" -msgstr "" -"Dizi Sonu\n" -"\n" - -#: readelf.c:6573 -#, c-format -msgid "set Address to 0x%lx\n" -msgstr "Adresi 0x%lx olarak atar\n" - -#: readelf.c:6578 -msgid " define new File Table entry\n" -msgstr " yeni Dosya Tablosu girdisi tanımlar\n" - -#: readelf.c:6579 readelf.c:6726 -msgid " Entry\tDir\tTime\tSize\tName\n" -msgstr " Girdi\tDizin\tZaman\tBoy\tİsim\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 "TANIMSIZ: uzunluk %d\n" - -#: readelf.c:6621 -#, 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:6649 -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:6658 -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:6679 -#, c-format -msgid " Length: %ld\n" -msgstr " Uzunluk: %ld\n" - -#: readelf.c:6680 -#, c-format -msgid " DWARF Version: %d\n" -msgstr " DWARF Sürümü: %d\n" - -#: readelf.c:6681 -#, c-format -msgid " Prologue Length: %d\n" -msgstr " Giriş Uzunluğu: %d\n" - -#: readelf.c:6682 -#, c-format -msgid " Minimum Instruction Length: %d\n" -msgstr " Minimum İşlem Uzunluğu: %d\n" - -#: readelf.c:6683 -#, c-format -msgid " Initial value of 'is_stmt': %d\n" -msgstr " 'is_stmt' başlangıç değeri: %d\n" - -#: readelf.c:6684 -#, c-format -msgid " Line Base: %d\n" -msgstr " Satır Temeli: %d\n" - -#: readelf.c:6685 -#, c-format -msgid " Line Range: %d\n" -msgstr " Satır Aralığı: %d\n" - -#: readelf.c:6686 -#, c-format -msgid " Opcode Base: %d\n" -msgstr " Opkod Temeli: %d\n" - -#: readelf.c:6695 -msgid "" -"\n" -" Opcodes:\n" -msgstr "" -"\n" -" Opkodlar:\n" - -#: readelf.c:6698 -#, c-format -msgid " Opcode %d has %d args\n" -msgstr " %d opkodunun %d seçeneği var\n" - -#: readelf.c:6704 -msgid "" -"\n" -" The Directory Table is empty.\n" -msgstr "" -"\n" -" Dizin Tablosu boş.\n" - -#: readelf.c:6707 -msgid "" -"\n" -" The Directory Table:\n" -msgstr "" -"\n" -" Dizin Tablosu:\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" -" Dosya Adı Tablosu boş.\n" - -#: readelf.c:6725 -msgid "" -"\n" -" The File Name Table:\n" -msgstr "" -"\n" -" Dosya Adı Tablosu:\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" -" Satır Numarası Deyimleri:\n" - -#: readelf.c:6768 -#, 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:6772 -#, c-format -msgid " and Line by %d to %d\n" -msgstr " ve Satır'ı %2$d'ye kadar %1$d\n" - -#: readelf.c:6783 -msgid " Copy\n" -msgstr " Kopyalar\n" - -#: readelf.c:6790 -#, c-format -msgid " Advance PC by %d to %lx\n" -msgstr " PC'yi %2$lx'ye kadar, %1$d ilerletir\n" - -#: readelf.c:6798 -#, c-format -msgid " Advance Line by %d to %d\n" -msgstr " Satırı %2$d'ye kadar %1$d ilerletir\n" - -#: readelf.c:6805 -#, 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:6813 -#, c-format -msgid " Set column to %d\n" -msgstr " Sütunu %d olarak atar\n" - -#: readelf.c:6820 -#, c-format -msgid " Set is_stmt to %d\n" -msgstr " is_stmt'i %d olarak atar\n" - -#: readelf.c:6825 -msgid " Set basic block\n" -msgstr " Temel bloğu atar\n" - -#: readelf.c:6833 -#, 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:6841 -#, 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:6846 -msgid " Set prologue_end to true\n" -msgstr " Prologue_end'i doğru (true) olarak atar\n" - -#: readelf.c:6850 -msgid " Set epilogue_begin to true\n" -msgstr " Epilogue_begin'i doğru (true) olarak atar\n" - -#: readelf.c:6856 -#, c-format -msgid " Set ISA to %d\n" -msgstr " ISA'yı %d olarak atar\n" - -#: readelf.c:6860 -#, c-format -msgid " Unknown opcode %d with operands: " -msgstr " Bilinmeyen %d opkodu ve işlenenleri: " - -#: readelf.c:6891 readelf.c:7371 readelf.c:7443 -#, c-format -msgid "" -"Contents of the %s section:\n" -"\n" -msgstr "" -"%s bölümünün içeriği:\n" -"\n" - -#: readelf.c:6931 -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:6938 -#, c-format -msgid " Length: %ld\n" -msgstr " Uzunluk: %ld\n" - -#: readelf.c:6940 -#, c-format -msgid " Version: %d\n" -msgstr " Sürüm: %d\n" - -#: readelf.c:6942 -#, 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:6944 -#, 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:6947 -msgid "" -"\n" -" Offset\tName\n" -msgstr "" -"\n" -" Basamak\tİsim\n" - -#: readelf.c:7042 -#, c-format -msgid "Unknown TAG value: %lx" -msgstr "Bilinmeyen TAG değeri: %lx" - -#: readelf.c:7156 -#, c-format -msgid "Unknown AT value: %lx" -msgstr "Bilinmeyen AT değeri: %lx" - -#: readelf.c:7193 -#, c-format -msgid "Unknown FORM value: %lx" -msgstr "Bilinmeyen FORM değeri: %lx" - -#: readelf.c:7392 -#, 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: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 - satır no : %d makro : %s\n" - -#: readelf.c:7413 -#, c-format -msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" -msgstr " DW_MACINFO_undef - satır no : %d makro : %s\n" - -#: readelf.c:7424 -#, c-format -msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" -msgstr " DW_MACINFO_vendor_ext - sabit : %d dizge : %s\n" - -#: readelf.c:7452 -msgid " Number TAG\n" -msgstr " Sayı TAG\n" - -#: readelf.c:7458 -#, c-format -msgid " %ld %s [%s]\n" -msgstr " %ld %s [%s]\n" - -#: readelf.c:7461 -msgid "has children" -msgstr "astları var" - -#: readelf.c:7461 -msgid "no children" -msgstr "astları yok" - -#: readelf.c:7465 -#, c-format -msgid " %-18s %s\n" -msgstr " %-18s %s\n" - -#: readelf.c:7486 -#, c-format -msgid " %lu byte block: " -msgstr " %lu baytlık blok: " - -#: readelf.c:7814 -msgid "(User defined location op)" -msgstr "(Kullanıcı tanımlı yer yönergesi)" - -#: readelf.c:7816 -msgid "(Unknown location op)" -msgstr "(Bilinmeyen yer yönergesi)" - -#: readelf.c:7855 -msgid "debug_loc section data" -msgstr "hata ayıklama bölüm verisi" - -#: readelf.c:7887 -msgid "" -"\n" -"The .debug_loc section is empty.\n" -msgstr "" -"\n" -".debug_loc bölümü boş.\n" - -#: readelf.c:7891 -msgid "" -"Contents of the .debug_loc section:\n" -"\n" -msgstr "" -".debug_loc bölümünün içeriği:\n" -"\n" - -#: readelf.c:7892 -msgid "" -"\n" -" Offset Begin End Expression\n" -msgstr "" -"\n" -" Görece Başlan. Son İfade\n" - -#: readelf.c:7968 -msgid "debug_str section data" -msgstr "debug_str bölüm verisi" - -#: readelf.c:7987 -msgid "" -msgstr "<.debug_str bölümü yok>" - -#: readelf.c:7990 -msgid "" -msgstr "" - -#: readelf.c:8009 -msgid "" -"\n" -"The .debug_str section is empty.\n" -msgstr "" -"\n" -".debug_str bölümü boş.\n" - -#: readelf.c:8013 -msgid "" -"Contents of the .debug_str section:\n" -"\n" -msgstr "" -".debug_str bölümünün içeriği:\n" -"\n" - -#: readelf.c:8088 -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:8203 -#, c-format -msgid " (indirect string, offset: 0x%lx): %s" -msgstr " (dolaylı dizge, görece: 0x%lx): %s" - -#: readelf.c:8212 -#, c-format -msgid "Unrecognized form: %d\n" -msgstr "Bilinmeyen form: %d\n" - -#: readelf.c:8226 -msgid "(not inlined)" -msgstr "(inline'lanamadı)" - -#: readelf.c:8229 -msgid "(inlined)" -msgstr "(inline'landı)" - -#: readelf.c:8232 -msgid "(declared as inline but ignored)" -msgstr "(inline olarak tanımlandı ama yoksayıldı)" - -#: readelf.c:8235 -msgid "(declared as inline and inlined)" -msgstr "(inline olarak tanımlandı ve inline'landı)" - -#: readelf.c:8238 -#, c-format -msgid " (Unknown inline attribute value: %lx)" -msgstr " (Bilinmeyen inline öznitelik değeri: %lx)" - -#: readelf.c:8419 readelf.c:8646 -#, c-format -msgid "" -"The section %s contains:\n" -"\n" -msgstr "" -"%s bölümü içeriyor:\n" -"\n" - -#: readelf.c:8535 -#, c-format -msgid " Compilation Unit @ %lx:\n" -msgstr " Derleme Birimi @ %lx:\n" - -#: readelf.c:8536 -#, c-format -msgid " Length: %ld\n" -msgstr " Uzunluk: %ld\n" - -#: readelf.c:8537 -#, c-format -msgid " Version: %d\n" -msgstr " Sürüm: %d\n" - -#: readelf.c:8538 -#, c-format -msgid " Abbrev Offset: %ld\n" -msgstr " Kısaltma Basamağı: %ld\n" - -#: readelf.c:8539 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Gösterge Boyu: %d\n" - -#: readelf.c:8543 -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:8563 -msgid "Unable to locate .debug_abbrev section!\n" -msgstr ".debug_abbrev bölümü bulunamadı!\n" - -#: readelf.c:8569 -msgid "debug_abbrev section data" -msgstr "debug_abbrev bölüm verisi" - -#: readelf.c:8606 -#, c-format -msgid "Unable to locate entry %lu in the abbreviation table\n" -msgstr "Kısaltma tablosunda %lu girdisi bulunamadı\n" - -#: readelf.c:8611 -#, c-format -msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%lx>: Kısaltma Numarası: %lu (%s)\n" - -#: readelf.c:8691 -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:8695 -#, c-format -msgid " Length: %ld\n" -msgstr " Uzunluk: %ld\n" - -#: readelf.c:8696 -#, c-format -msgid " Version: %d\n" -msgstr " Sürüm: %d\n" - -#: readelf.c:8697 -#, c-format -msgid " Offset into .debug_info: %lx\n" -msgstr " .debug_info'nun içine göreli konum: %lx\n" - -#: readelf.c:8698 -#, c-format -msgid " Pointer Size: %d\n" -msgstr " Gösterge Boyu: %d\n" - -#: readelf.c:8699 -#, c-format -msgid " Segment Size: %d\n" -msgstr " Parça Boyu: %d\n" - -#: readelf.c:8701 -msgid "" -"\n" -" Address Length\n" -msgstr "" -"\n" -" Adres Uzunluk\n" - -#: readelf.c:8903 -#, c-format -msgid "The section %s contains:\n" -msgstr "%s bölümü içeriyor:\n" - -#: readelf.c:9538 -#, 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:9634 -#, 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:9639 readelf.c:9701 -msgid "debug section data" -msgstr "hata ayıklama bölüm verisi" - -#: readelf.c:9655 -#, c-format -msgid "Unrecognized debug section: %s\n" -msgstr "Tanınmayan hata ayıklama bölümü: %s\n" - -#: readelf.c:9729 -msgid "Some sections were not dumped because they do not exist!\n" -msgstr "Bazı bölümler dökülmedi çünkü mevcut değiller!\n" - -#: readelf.c:9806 readelf.c:10170 -msgid "liblist" -msgstr "liblist" - -#: readelf.c:9891 -msgid "options" -msgstr "seçenekler" - -#: readelf.c:9922 -#, c-format -msgid "" -"\n" -"Section '%s' contains %d entries:\n" -msgstr "" -"\n" -"'%s' bölümü %d girdi içeriyor:\n" - -#: readelf.c:10083 -msgid "conflict list found without a dynamic symbol table" -msgstr "dinamik sembol tablosu olmayan çelişki listesi bulundu" - -#: readelf.c:10101 readelf.c:10117 -msgid "conflict" -msgstr "çakışma" - -#: readelf.c:10127 -#, c-format -msgid "" -"\n" -"Section '.conflict' contains %ld entries:\n" -msgstr "" -"\n" -"'.conflict' bölümü %ld girdi içeriyor:\n" - -#: readelf.c:10129 -msgid " Num: Index Value Name" -msgstr " Num: Endeks Değer İsim" - -#: readelf.c:10178 -msgid "liblist string table" -msgstr "liblist dizge tablosu" - -#: readelf.c:10187 -#, 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:10236 -msgid "NT_PRSTATUS (prstatus structure)" -msgstr "NT_PRSTATUS (prstatus yapısı)" - -#: readelf.c:10237 -msgid "NT_FPREGSET (floating point registers)" -msgstr "NT_FPREGSET (kayan nokta yazmaçları)" - -#: readelf.c:10238 -msgid "NT_PRPSINFO (prpsinfo structure)" -msgstr "NT_PRPSINFO (prpsinfo yapısı)" - -#: readelf.c:10239 -msgid "NT_TASKSTRUCT (task structure)" -msgstr "NT_TASKSTRUCT (görev yapısı)" - -#: readelf.c:10240 -msgid "NT_PRXFPREG (user_xfpregs structure)" -msgstr "NT_PRXFPREG (user_xfpregs yapısı)" - -#: readelf.c:10241 -msgid "NT_PSTATUS (pstatus structure)" -msgstr "NT_PSTATUS (pstatus yapısı)" - -#: readelf.c:10242 -msgid "NT_FPREGS (floating point registers)" -msgstr "NT_FPREGS (kayan nokta yazmaçları)" - -#: readelf.c:10243 -msgid "NT_PSINFO (psinfo structure)" -msgstr "NT_PSINFO (psinfo yapısı)" - -#: readelf.c:10244 -msgid "NT_LWPSTATUS (lwpstatus_t structure)" -msgstr "NT_LWPSTATUS (lwpstatus_t yapısı)" - -#: readelf.c:10245 -msgid "NT_LWPSINFO (lwpsinfo_t structure)" -msgstr "NT_LWPSINFO (lwpsinfo_t yapısı)" - -#: readelf.c:10246 -msgid "NT_WIN32PSTATUS (win32_pstatus structure)" -msgstr "NT_WIN32PSTATUS (win32_pstatus yapısı)" - -#: readelf.c:10248 readelf.c:10272 -#, c-format -msgid "Unknown note type: (0x%08x)" -msgstr "Bilinmeyen not tipi: (0x%08x)" - -#. NetBSD core "procinfo" structure. -#: readelf.c:10262 -msgid "NetBSD procinfo structure" -msgstr "NetBSD procinfo yapısı" - -#: readelf.c:10289 readelf.c:10303 -msgid "PT_GETREGS (reg structure)" -msgstr "PT_GETREGS (yazmaç yapısı)" - -#: readelf.c:10291 readelf.c:10305 -msgid "PT_GETFPREGS (fpreg structure)" -msgstr "PT_GETFPREGS (kayan nokta yazmaç yapısı)" - -#: readelf.c:10311 -#, c-format -msgid "PT_FIRSTMACH+%d" -msgstr "PT_FIRSTMACH+%d" - -#: readelf.c:10365 -msgid "notes" -msgstr "notlar" - -#: readelf.c:10371 -#, 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:10373 -msgid " Owner\t\tData size\tDescription\n" -msgstr " Sahip\t\tVeri Boyu\tAçıklama\n" - -#: readelf.c:10392 -#, 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:10394 -#, c-format -msgid " type: %x, namesize: %08lx, descsize: %08lx\n" -msgstr " tür: %x, isimboyu: %08lx, tanımboyu: %08lx\n" - -#: readelf.c:10476 -msgid "No note segments present in the core file.\n" -msgstr "Core dosyasında not parçaları yok.\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 "" -"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:10606 -#, c-format -msgid "Cannot stat input file %s.\n" -msgstr "%s girdi dosyası durumlanamadı.\n" - -#: readelf.c:10613 -#, c-format -msgid "Input file %s not found.\n" -msgstr "Girdi dosyası %s bulunamadı.\n" - -#: readelf.c:10619 -#, c-format -msgid "%s: Failed to read file header\n" -msgstr "%s: Dosya başlığı okunamadı\n" - -#: readelf.c:10633 -#, c-format -msgid "" -"\n" -"File: %s\n" -msgstr "" -"\n" -"Dosya: %s\n" - -#: rename.c:132 -#, c-format -msgid "%s: cannot set time: %s" -msgstr "%s: zaman atanamadı: %s" - -#. We have to clean up here. -#: rename.c:171 rename.c:204 -#, c-format -msgid "%s: rename: %s" -msgstr "%s: yeniden adlandırma: %s" - -#: rename.c:212 -#, c-format -msgid "%s: simple_copy: %s" -msgstr "%s: simple_copy: %s" - -#: resbin.c:134 -#, c-format -msgid "%s: not enough binary data" -msgstr "%s: yeterli ikilik veri yok" - -#: resbin.c:153 -msgid "null terminated unicode string" -msgstr "boş değerle sonlanmış unicode dizgesi" - -#: resbin.c:183 resbin.c:189 -msgid "resource ID" -msgstr "kaynak ID" - -#: resbin.c:233 -msgid "cursor" -msgstr "gösterge" - -#: resbin.c:267 resbin.c:274 -msgid "menu header" -msgstr "menü başlığı" - -#: resbin.c:284 -msgid "menuex header" -msgstr "menuex başlığı" - -#: resbin.c:288 -msgid "menuex offset" -msgstr "menuex basamağı" - -#: resbin.c:295 -#, c-format -msgid "unsupported menu version %d" -msgstr "desteklenmeyen menü sürümü %d" - -#: resbin.c:323 resbin.c:338 resbin.c:404 -msgid "menuitem header" -msgstr "menü üyesi başlığı" - -#: resbin.c:434 -msgid "menuitem" -msgstr "menü üyesi" - -#: resbin.c:475 resbin.c:503 -msgid "dialog header" -msgstr "diyalog başlığı" - -#: resbin.c:493 -#, c-format -msgid "unexpected DIALOGEX version %d" -msgstr "beklenmeyen DIALOGEX sürümü %d" - -#: resbin.c:538 -msgid "dialog font point size" -msgstr "diyalog yazıtipi büyüklüğü" - -#: resbin.c:546 -msgid "dialogex font information" -msgstr "dialogex yazıtipi bilgisi" - -#: resbin.c:572 resbin.c:590 -msgid "dialog control" -msgstr "diyalog kontrolü" - -#: resbin.c:582 -msgid "dialogex control" -msgstr "dialogex kontrolü" - -#: resbin.c:611 -msgid "dialog control end" -msgstr "diyalog kontrol sonu" - -#: resbin.c:623 -msgid "dialog control data" -msgstr "diyalog kontrol verisi" - -#: resbin.c:666 -msgid "stringtable string length" -msgstr "dizgetablosu dizge uzunluğu" - -#: resbin.c:676 -msgid "stringtable string" -msgstr "dizgetablosu dizgesi" - -#: resbin.c:709 -msgid "fontdir header" -msgstr "yazıtipi dizin başlığı" - -#: resbin.c:722 -msgid "fontdir" -msgstr "yazıtipi dizini" - -#: resbin.c:738 -msgid "fontdir device name" -msgstr "yazıtipi aygıt adı" - -#: resbin.c:744 -msgid "fontdir face name" -msgstr "yazıtipi dizini aile ismi" - -#: resbin.c:787 -msgid "accelerator" -msgstr "hızlandırıcı" - -#: resbin.c:851 -msgid "group cursor header" -msgstr "grup gösterge başlığı" - -#: resbin.c:855 -#, c-format -msgid "unexpected group cursor type %d" -msgstr "beklenmeyen grup gösterge tipi %d" - -#: resbin.c:870 -msgid "group cursor" -msgstr "grup göstergesi" - -#: resbin.c:909 -msgid "group icon header" -msgstr "grup ikon başlığı" - -#: resbin.c:913 -#, c-format -msgid "unexpected group icon type %d" -msgstr "beklenmeyen grup ikon tipi %d" - -#: resbin.c:928 -msgid "group icon" -msgstr "grup ikonu" - -#: resbin.c:999 resbin.c:1218 -msgid "unexpected version string" -msgstr "dizgenin beklenmeyen sürümü" - -#: resbin.c:1033 -#, 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:1037 -#, c-format -msgid "unexpected version type %d" -msgstr "beklenmeyen sürüm tipi %d" - -#: resbin.c:1049 -#, c-format -msgid "unexpected fixed version information length %d" -msgstr "beklenmeyen sabit sürüm bilgi uzunluğu %d" - -#: resbin.c:1052 -msgid "fixed version info" -msgstr "sabit sürüm bilgisi" - -#: resbin.c:1056 -#, c-format -msgid "unexpected fixed version signature %lu" -msgstr "beklenmeyen sabit sürüm imzası %lu" - -#: resbin.c:1060 -#, c-format -msgid "unexpected fixed version info version %lu" -msgstr "beklenmeyen sabit sürüm bilgisi sürümü %lu" - -#: resbin.c:1089 -msgid "version var info" -msgstr "sürüm değişken bilgisi" - -#: resbin.c:1106 -#, c-format -msgid "unexpected stringfileinfo value length %d" -msgstr "beklenmeyen dizge dosya bilgi değer uzunluğu %d" - -#: resbin.c:1116 -#, c-format -msgid "unexpected version stringtable value length %d" -msgstr "beklenmeyen sürüm dizge tablo değer uzunluğu %d" - -#: resbin.c:1150 -#, c-format -msgid "unexpected version string length %d != %d + %d" -msgstr "beklenmeyen sürüm dizge uzunluğu %d != %d + %d" - -#: resbin.c:1161 -#, c-format -msgid "unexpected version string length %d < %d" -msgstr "beklenmeyen sürüm dizge uzunluğu %d < %d" - -#: resbin.c:1178 -#, c-format -msgid "unexpected varfileinfo value length %d" -msgstr "beklenmeyen değişken dosya bilgi değer uzunluğu %d" - -#: resbin.c:1197 -msgid "version varfileinfo" -msgstr "değişken dosya bilgi sürümü" - -#: resbin.c:1212 -#, c-format -msgid "unexpected version value length %d" -msgstr "beklenmeyen sürüm değer uzunluğu %d" - -#: rescoff.c:128 -msgid "filename required for COFF input" -msgstr "COFF girdisi için dosya adı gerekli" - -#: rescoff.c:145 -#, c-format -msgid "%s: no resource section" -msgstr "%s: kaynak bölümü yok" - -#: rescoff.c:152 -msgid "can't read resource section" -msgstr "kaynak bölümü okunamıyor" - -#: rescoff.c:178 -#, c-format -msgid "%s: %s: address out of bounds" -msgstr "%s: %s: adres sınırların dışında" - -#: rescoff.c:197 -msgid "directory" -msgstr "dizin" - -#: rescoff.c:225 -msgid "named directory entry" -msgstr "isimli dizin girdisi" - -#: rescoff.c:234 -msgid "directory entry name" -msgstr "dizin girdi ismi" - -#: rescoff.c:254 -msgid "named subdirectory" -msgstr "isimli altdizin" - -#: rescoff.c:262 -msgid "named resource" -msgstr "isimli kaynak" - -#: rescoff.c:277 -msgid "ID directory entry" -msgstr "ID dizin girdisi" - -#: rescoff.c:294 -msgid "ID subdirectory" -msgstr "ID altdizini" - -#: rescoff.c:302 -msgid "ID resource" -msgstr "ID kaynağı" - -#: rescoff.c:328 -msgid "resource type unknown" -msgstr "kaynak tipi bilinmiyor" - -#: rescoff.c:331 -msgid "data entry" -msgstr "veri girdisi" - -#: rescoff.c:339 -msgid "resource data" -msgstr "kaynak verisi" - -#: rescoff.c:344 -msgid "resource data size" -msgstr "kaynak veri boyu" - -#: rescoff.c:439 -msgid "filename required for COFF output" -msgstr "COFF çıktı için dosya adı gerekli" - -#: rescoff.c:738 -msgid "can't get BFD_RELOC_RVA relocation type" -msgstr "BFD_RELOC_RVA yer değiştirme tipi alınamıyor" - -#: resrc.c:240 resrc.c:312 -#, c-format -msgid "can't open temporary file `%s': %s" -msgstr "`%s' geçici dosyası açılamıyor: %s" - -#: resrc.c:246 -#, c-format -msgid "can't redirect stdout: `%s': %s" -msgstr "standart çıktı yönlendirilemiyor: `%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' çalıştırılamıyor: %s" - -#: resrc.c:317 -#, 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:324 -#, c-format -msgid "can't popen `%s': %s" -msgstr "`%s' popen yapılamıyor: %s" - -#: resrc.c:326 -msgid "Using popen to read preprocessor output\n" -msgstr "Önişlemci çıktısı popen ile okunuyor\n" - -#: resrc.c:369 -#, c-format -msgid "Tried `%s'\n" -msgstr "`%s' denendi\n" - -#: resrc.c:380 -#, c-format -msgid "Using `%s'\n" -msgstr "`%s' kullanılıyor\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: beklenmeyen dosya sonu" - -#: resrc.c:608 -#, c-format -msgid "%s: read of %lu returned %lu" -msgstr "%s: %lu'nun okunması %lu döndürdü" - -#: resrc.c:650 resrc.c:905 resrc.c:1178 resrc.c:1332 -#, c-format -msgid "stat failed on bitmap file `%s': %s" -msgstr "`%s' bitmap dosyası durumlanamadı: %s" - -#: resrc.c:703 -#, c-format -msgid "cursor file `%s' does not contain cursor data" -msgstr "gösterge dosyası '%s' gösterge verisi içermiyor" - -#: resrc.c:735 resrc.c:1049 -#, c-format -msgid "%s: fseek to %lu failed: %s" -msgstr "%s: %lu'ya fseek başarısız: %s" - -#: resrc.c:873 -msgid "help ID requires DIALOGEX" -msgstr "yardım ID için DIALOGEX gerekli" - -#: resrc.c:875 -msgid "control data requires DIALOGEX" -msgstr "kontrol verisi için DIALOGEX gerekli" - -#: resrc.c:1018 -#, c-format -msgid "icon file `%s' does not contain icon data" -msgstr "ikon dosyası '%s' ikon verisi içermiyor" - -#: resrc.c:1537 -#, c-format -msgid "can't open `%s' for output: %s" -msgstr "'%s' çıktı için açılamadı: %s" - -#: size.c:86 -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:87 -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: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= 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= İ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:160 -#, c-format -msgid "invalid argument to --format: %s" -msgstr "--format'a geçersiz seçenek: %s" - -#: size.c:187 -#, c-format -msgid "Invalid radix: %s\n" -msgstr "Geçersiz radix: %s\n" - -#: srconv.c:1953 -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: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 "" -" 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:2099 -#, c-format -msgid "unable to open output file %s" -msgstr "çıktı dosyası %s açılamadı" - -#: stabs.c:346 stabs.c:1755 -msgid "numeric overflow" -msgstr "sayısal taşma" - -#: stabs.c:357 -#, c-format -msgid "Bad stab: %s\n" -msgstr "Kötü stab: %s\n" - -#: stabs.c:367 -#, c-format -msgid "Warning: %s: %s\n" -msgstr "Uyarı: %s: %s\n" - -#: stabs.c:488 -msgid "N_LBRAC not within function\n" -msgstr "N_LBRAC işlev içerisinde değil\n" - -#: stabs.c:527 -msgid "Too many N_RBRACs\n" -msgstr "Fazla sayıda N_RBRAC\n" - -#: stabs.c:773 -msgid "unknown C++ encoded name" -msgstr "Bilinmeyen C++ şifreli ismi" - -#. Complain and keep going, so compilers can invent new -#. cross-reference types. -#: stabs.c:1293 -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:1847 -msgid "missing index type" -msgstr "eksik endeks tipi" - -#: stabs.c:2174 -msgid "unknown virtual character for baseclass" -msgstr "temel sınıf için bilinmeyen sanal karakter" - -#: stabs.c:2192 -msgid "unknown visibility character for baseclass" -msgstr "temel sınıf için bilinmeyen görünebilirlik karakteri" - -#: stabs.c:2384 -msgid "unnamed $vb type" -msgstr "isimlenmemiş $vb tipi" - -#: stabs.c:2390 -msgid "unrecognized C++ abbreviation" -msgstr "tanınmayan C++ kısaltması" - -#: stabs.c:2470 -msgid "unknown visibility character for field" -msgstr "alan için bilinmeyen görünürlük karakteri" - -#: stabs.c:2726 -msgid "const/volatile indicator missing" -msgstr "sabit/değişken belirteci eksik" - -#: stabs.c:2967 -#, c-format -msgid "No mangling for \"%s\"\n" -msgstr "\"%s\" için karıştırma yok\n" - -#: stabs.c:3281 -msgid "Undefined N_EXCL" -msgstr "N_EXCL tanımsız" - -#: stabs.c:3369 -#, c-format -msgid "Type file number %d out of range\n" -msgstr "Tip dosya numarası %d aralık dışı\n" - -#: stabs.c:3374 -#, c-format -msgid "Type index number %d out of range\n" -msgstr "Tip endeks numarası %d aralık dışı\n" - -#: stabs.c:3461 -#, c-format -msgid "Unrecognized XCOFF type %d\n" -msgstr "Bilinmeyen XCOFF tipi %d\n" - -#: stabs.c:3762 -#, c-format -msgid "bad mangled name `%s'\n" -msgstr "kötü karıştırılmış isim '%s'\n" - -#: stabs.c:3859 -msgid "no argument types in mangled string\n" -msgstr "karıştırılmış dizgede argüman tipi yok\n" - -#: strings.c:208 -#, c-format -msgid "invalid number %s" -msgstr "geçersiz sayı %s" - -#: strings.c:647 -#, c-format -msgid "invalid integer argument %s" -msgstr "geçersiz tamsayı argümanı %s" - -#: strings.c:658 -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: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" -" - 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= 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" -" - bütün dizgeleri yazdırır (öntanımlı 4)\n" -" -t --radix={o,x,d} 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= İ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:768 -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:769 -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:836 -#, c-format -msgid "cannot open input file %s" -msgstr "%s girdi dosyası açılamadı" - -#: version.c:36 -msgid "Copyright 2002 Free Software Foundation, Inc.\n" -msgstr "Telif Hakkı (c) 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 "" -"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:205 -#, c-format -msgid "can't open %s `%s': %s" -msgstr "%s `%s' açılamadı: %s" - -#: windres.c:384 -msgid ": expected to be a directory\n" -msgstr ": dizin beklendi\n" - -#: windres.c:396 -msgid ": expected to be a leaf\n" -msgstr ": yaprak beklendi\n" - -#: windres.c:405 -#, c-format -msgid "%s: warning: " -msgstr "%s: uyarı: " - -#: windres.c:407 -msgid ": duplicate value\n" -msgstr ": çift değer\n" - -#: windres.c:569 -#, c-format -msgid "unknown format type `%s'" -msgstr "bilinmeyen biçem tipi `%s'" - -#: windres.c:570 -#, c-format -msgid "%s: supported formats:" -msgstr "%s: desteklenen biçemler:" - -#. Otherwise, we give up. -#: windres.c:655 -#, c-format -msgid "can not determine type of file `%s'; use the -I option" -msgstr "`%s' dosyasının tipi belirlenemedi; -I seçeneğini kullanın" - -#: windres.c:669 -#, 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:671 -msgid "" -" The options are:\n" -" -i --input= Name input file\n" -" -o --output= Name output file\n" -" -J --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" -I --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -U --undefine Undefine SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" -l --language= 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= Girdi dosyası ismi\n" -" -o --output= Çıktı dosyası ismi\n" -" -J --input-format= Girdi biçemini belirtir\n" -" -O --output-format= Çıktı biçemini belirtir\n" -" -F --target= COFF hedefini belirtir\n" -" --preprocessor= rc dosyasını önişlemek için kullanılacak yazılım\n" -" -I --include-dir= 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= 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:687 -msgid " --yydebug Turn on parser debugging\n" -msgstr " --yydebug Tarayıcıda hata ayıklamayı etkinleştirir\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 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: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 "" -"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:833 -msgid "invalid option -f\n" -msgstr "Geçersiz seçenek -f\n" - -#: windres.c:838 -msgid "No filename following the -fo option.\n" -msgstr "-fo seçeneğinden sonra dosya adı verilmemiş.\n" - -#: windres.c:896 -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:1014 -msgid "no resources" -msgstr "kaynak yok" - -#: wrstabs.c:395 wrstabs.c:2055 -#, c-format -msgid "string_hash_lookup failed: %s" -msgstr "string_hash_lookup başarısız: %s" - -#: wrstabs.c:695 -#, c-format -msgid "stab_int_type: bad size %u" -msgstr "stab_int_type: hatalı boy %u" - -#: wrstabs.c:1495 -#, 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 "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 or --hex-dump=\n" -#~ msgstr " -x veya --hex-dump=\n" - -#~ msgid " Dump the contents of section \n" -#~ msgstr " 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 or --instruction-dump=\n" -#~ msgstr " -i veya --instruction-dump=\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/po/zh_CN.po b/binutils/po/zh_CN.po deleted file mode 100644 index cf8589825..000000000 --- a/binutils/po/zh_CN.po +++ /dev/null @@ -1,4742 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2003 Free Software Foundation, Inc. -# Wang Li , 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 \n" -"Language-Team: Chinese (simplified) \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= Set the binary file format\n" -" -e --exe= 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= É趨¶þ½øÖÆÎļþ¸ñʽ\n" -" -e --exe= É趨ÊäÈëÎļþÃû (ĬÈÏΪ 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 [\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 \n" -msgstr "Ó÷¨ %s <Ñ¡Ïî> <Ä¿±êÎļþ>\n" - -#. xgetext:c-format -#: dlltool.c:3132 -#, c-format -msgid " -m --machine Create as DLL for . [default: %s]\n" -msgstr " -m --machine Ϊ ´´½¨ DLL¡£[ĬÈÏ£º%s]\n" - -#: dlltool.c:3133 -msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -msgstr " ¿ÉÄÜµÄ £ºarm[_interwork]¡¢i386¡¢mcore[-elf]{-le|-be}¡¢ppc¡¢thumb\n" - -#: dlltool.c:3134 -msgid " -e --output-exp Generate an export file.\n" -msgstr " -e --output-exp Éú³Éµ¼³öÎļþ¡£\n" - -#: dlltool.c:3135 -msgid " -l --output-lib Generate an interface library.\n" -msgstr " -l --output-lib Éú³É½çÃæ¿â¡£\n" - -#: dlltool.c:3136 -msgid " -a --add-indirect Add dll indirects to export file.\n" -msgstr "" - -#: dlltool.c:3137 -msgid " -D --dllname Name of input dll to put into interface lib.\n" -msgstr "" - -#: dlltool.c:3138 -msgid " -d --input-def Name of .def file to be read in.\n" -msgstr " -d --input-def Ðè¶ÁÈëµÄ .def ÎļþÃû¡£\n" - -#: dlltool.c:3139 -msgid " -z --output-def Name of .def file to be created.\n" -msgstr " -z --output-def Ðè´´½¨µÄ .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 Don't export \n" -msgstr " --exclude-symbols ²»Òªµ¼³ö \n" - -#: dlltool.c:3143 -msgid " --no-default-excludes Clear default exclude symbols\n" -msgstr "" - -#: dlltool.c:3144 -msgid " -b --base-file 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 @ from exported names.\n" -msgstr "" - -#: dlltool.c:3149 -msgid " -A --add-stdcall-alias Add aliases without @.\n" -msgstr " -A --add-stdcall-alias Ìí¼Ó²»´ø @ µÄ±ðÃû¡£\n" - -#: dlltool.c:3150 -msgid " -S --as Use for assembler.\n" -msgstr " -S --as ½« ÓÃ×÷»ã±à³ÌÐò¡£\n" - -#: dlltool.c:3151 -msgid " -f --as-flags Pass to the assembler.\n" -msgstr " -f --as-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 Process mcore-elf object files into .\n" -msgstr "" - -#: dlltool.c:3159 -msgid " -L --linker Use as the linker.\n" -msgstr " -L --linker ½« ÓÃ×÷Á¬½ÓÆ÷¡£\n" - -#: dlltool.c:3160 -msgid " -F --linker-flags Pass to the linker.\n" -msgstr " -F --linker-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 Synonym for --output-lib\n" -msgstr " --implib --output-lib µÄͬÒåÓï\n" - -#: dllwrap.c:501 -#, c-format -msgid " Options for %s:\n" -msgstr " %s µÄÑ¡Ï\n" - -#: dllwrap.c:502 -msgid " --driver-name Defaults to \"gcc\"\n" -msgstr " --driver-name ĬÈÏΪ¡°gcc¡±\n" - -#: dllwrap.c:503 -msgid " --driver-flags Override default ld flags\n" -msgstr " --driver-flags ¸²¸ÇĬÈ쵀 ld ±êÖ¾\n" - -#: dllwrap.c:504 -msgid " --dlltool-name Defaults to \"dlltool\"\n" -msgstr " --dlltool-name ĬÈÏΪ¡°dlltool¡±\n" - -#: dllwrap.c:505 -msgid " --entry Specify alternate DLL entry point\n" -msgstr "" - -#: dllwrap.c:506 -msgid " --image-base Specify image base address\n" -msgstr "" - -#: dllwrap.c:507 -msgid " --target i386-cygwin32 or i386-mingw32\n" -msgstr " --target 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 \n" -msgstr " --machine \n" - -#: dllwrap.c:512 -msgid " --output-exp Generate export file.\n" -msgstr " --output-exp Éú³Éµ¼³öÎļþ¡£\n" - -#: dllwrap.c:513 -msgid " --output-lib Generate input library.\n" -msgstr " --output-lib Éú³ÉÊäÈë¿â¡£\n" - -#: dllwrap.c:514 -msgid " --add-indirect Add dll indirects to export file.\n" -msgstr "" - -#: dllwrap.c:515 -msgid " --dllname Name of input dll to put into output lib.\n" -msgstr "" - -#: dllwrap.c:516 -msgid " --def Name input .def file\n" -msgstr " --def ÊäÈë .def ÎļþµÄÎļþÃû\n" - -#: dllwrap.c:517 -msgid " --output-def Name output .def file\n" -msgstr " --output-def Êä³ö .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 Exclude from .def\n" -msgstr " --exclude-symbols ´Ó .def ÖÐÅųý \n" - -#: dllwrap.c:521 -msgid " --no-default-excludes Zap default exclude symbols\n" -msgstr " --no-default-excludes Çå¿ÕĬÈÏÅųý·ûºÅ\n" - -#: dllwrap.c:522 -msgid " --base-file 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 @ from exported names\n" -msgstr " -k ɾȥµ¼³öÃû×ÖÖÐµÄ @\n" - -#: dllwrap.c:527 -msgid " --add-stdcall-alias Add aliases without @\n" -msgstr " --add-stdcall-alias Ìí¼Ó²»´ø @ µÄ±ðÃû\n" - -#: dllwrap.c:528 -msgid " --as Use for assembler\n" -msgstr " --as ½« ÓÃ×÷»ã±à³ÌÐò\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= Set the input binary file format\n" -" -O --output-target= Set the output binary file format\n" -" -T --header-file= Read for NLM header information\n" -" -l --linker= Use 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= É趨ÊäÈë¶þ½øÖÆÎļþ¸ñʽ\n" -" -O --output-target= É趨Êä³ö¶þ½øÖÆÎļþ¸ñʽ\n" -" -T --header-file= ´Ó ÖжÁÈë NLM Í·ÐÅÏ¢\n" -" -l --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 ": %d" -msgstr "<´¦ÀíÆ÷רÓÃ>£º%d" - -#: nm.c:525 readelf.c:5308 readelf.c:5354 -#, c-format -msgid ": %d" -msgstr "<²Ù×÷ϵͳרÓÃ>£º%d" - -#: nm.c:527 readelf.c:5310 readelf.c:5357 -#, c-format -msgid ": %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 Assume input file is in format \n" -" -O --output-target Create an output file in format \n" -" -B --binary-architecture Set arch of output file, when input is binary\n" -" -F --target Set both input and output format to \n" -" --debugging Convert debugging information, if possible\n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -j --only-section Only copy section into the output\n" -" -R --remove-section Remove section 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 Do not copy symbol \n" -" -K --keep-symbol Only copy symbol \n" -" -L --localize-symbol Force symbol to be marked as a local\n" -" -G --keep-global-symbol Localize all symbols except \n" -" -W --weaken-symbol Force symbol 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 Only copy one out of every bytes\n" -" -b --byte Select byte in every interleaved block\n" -" --gap-fill Fill gaps between sections with \n" -" --pad-to Pad the last section up to address \n" -" --set-start Set the start address to \n" -" {--change-start|--adjust-start} \n" -" Add to the start address\n" -" {--change-addresses|--adjust-vma} \n" -" Add to LMA, VMA and start addresses\n" -" {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" Change LMA and VMA of section by \n" -" --change-section-lma {=|+|-}\n" -" Change the LMA of section by \n" -" --change-section-vma {=|+|-}\n" -" Change the VMA of section by \n" -" {--[no-]change-warnings|--[no-]adjust-warnings}\n" -" Warn if a named section does not exist\n" -" --set-section-flags =\n" -" Set section 's properties to \n" -" --add-section = Add section found in to output\n" -" --rename-section =[,] Rename section to \n" -" --change-leading-char Force output format's leading character style\n" -" --remove-leading-char Remove leading character from global symbols\n" -" --redefine-sym = Redefine symbol name to \n" -" --srec-len Restrict the length of generated Srecords\n" -" --srec-forceS3 Restrict the type of generated Srecords to S3\n" -" --strip-symbols -N for all symbols listed in \n" -" --keep-symbols -K for all symbols listed in \n" -" --localize-symbols -L for all symbols listed in \n" -" --keep-global-symbols -G for all symbols listed in \n" -" --weaken-symbols -W for all symbols listed in \n" -" --alt-machine-code 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 ¼Ù¶¨ÊäÈëÎļþµÄ¸ñʽΪ \n" -" -O --output-target ´´½¨¸ñʽΪ µÄÊä³öÎļþ\n" -" -B --binary-architecture µ±ÊäÈëÎļþΪ¶þ½øÖÆÎļþʱ£¬É趨Êä³öÎļþµÄÌåϵ½á¹¹\n" -" -F --target ½«ÊäÈëÊä³ö¸ñʽÉ趨Ϊ \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 ½«·ûºÅ Ç¿ÖƱêʶΪ±¾µØ·ûºÅ\n" -" -G --keep-global-symbol ½«³ýÁË·ûºÅ ÒÔÍâµÄËùÓзûºÅ±êʶΪ±¾µØ·ûºÅ\n" -" -W --weaken-symbol ½«·ûºÅ Ç¿ÖƱêʶΪÈõ·ûºÅ\n" -" --weaken ½«ËùÓÐÈ«¾Ö·ûºÅ±êʶΪÈõ·ûºÅ\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" -" --redefine-sym = ½«·ûºÅÓÉ ¸ÄÃûΪ \n" -" --srec-len ÏÞÖÆÉú³ÉµÄ Srecords µÄ³¤¶È\n" -" --srec-forceS3 ½«Éú³ÉµÄ Srecords µÄÀàÐÍÏÞÖÆΪ S3\n" -" --strip-symbols ¶ÔÁоÙÔÚ ÖеÄËùÓзûºÅÖ´ÐÐ -N\n" -" --keep-symbols ¶ÔÁоÙÔÚ ÖеÄËùÓзûºÅÖ´ÐÐ -K\n" -" --localize-symbols ¶ÔÁоÙÔÚ ÖеÄËùÓзûºÅÖ´ÐÐ -L\n" -" --keep-global-symbols ¶ÔÁоÙÔÚ ÖеÄËùÓзûºÅÖ´ÐÐ -G\n" -" --weaken-symbols ¶ÔÁоÙÔÚ ÖеÄËùÓзûºÅÖ´ÐÐ -W\n" -" --alt-machine-code Êä³öʹÓÃÌæ´úµÄ»úÆ÷Âë\n" -" -v --verbose ÁгöËùÓÐÐ޸ĵÄÄ¿±êÎļþ\n" -" -V --version ÏÔʾ±¾³ÌÐòµÄ°æ±¾ºÅ\n" -" -h --help ÏÔʾ±¾Êä³ö\n" - -#: objcopy.c:433 -#, c-format -msgid "Usage: %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= Assume input file is in format \n" -" -O --output-target= Create an output file in format \n" -" -F --target= Set both input and output format to \n" -" -p --preserve-dates Copy modified/access timestamps to the output\n" -" -R --remove-section= Remove section 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= Do not copy symbol \n" -" -K --keep-symbol= Only copy symbol \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 Place stripped output into \n" -msgstr "" -" -I --input-target= ¼Ù¶¨ÊäÈëÎļþµÄ¸ñʽΪ \n" -" -O --output-target= ´´½¨¸ñʽΪ µÄÊä³öÎļþ\n" -" -F --target= ½«ÊäÈëºÍÊä³öµÄ¸ñʽÉ趨Ϊ \n" -" -p --preserve-dates ½« ÐÞ¸Ä/·ÃÎÊ Ê±¼ä´Á¸´ÖƵ½Êä³öÎļþ\n" -" -R --remove-section= ´ÓÊä³öÖÐɾ³ý ½Ú\n" -" -s --strip-all ɾ³ýËùÓзûºÅºÍÖض¨Î»ÐÅÏ¢\n" -" -g -S -d --strip-debug ɾ³ýËùÓе÷ÊÔ·ûºÅ\n" -" --strip-unneeded ɾ³ýËùÓÐÖض¨Î»²»ÐèÒªµÄ·ûºÅ\n" -" -N --strip-symbol= ²»Òª¸´ÖÆ·ûºÅ \n" -" -K --keep-symbol= Ö»¸´ÖÆ·ûºÅ \n" -" -x --discard-all ɾ³ýËùÓзÇÈ«¾Ö·ûºÅ\n" -" -X --discard-locals ɾ³ýËùÓбàÒëÆ÷Éú³ÉµÄ·ûºÅ\n" -" -v --verbose ÁгöËùÓÐÐÞ¸ÄÁ˵ÄÄ¿±êÎļþ\n" -" -V --version ÏÔʾ±¾³ÌÐòµÄ°æ±¾ºÅ\n" -" -h --help ÏÔʾ±¾Êä³ö\n" -" -o ½« strip ¹ýµÄÊä³ö±£´æµ½ \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 \n" -msgstr "Ó÷¨£º%s <Ñ¡Ïî> <Îļþ>\n" - -#: objdump.c:166 -msgid " Display information from object .\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 "" -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 ": %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 ": %x" -msgstr "<δ֪>£º%x" - -#: readelf.c:1484 -msgid "None" -msgstr "ÎÞ" - -#: readelf.c:2278 -msgid "Usage: readelf 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= Dump the contents of section \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=\n" -" Disassemble the contents of section \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 "" -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 "" -msgstr "<ûÓÐ .debug_str ½Ú>" - -#: readelf.c:7434 -msgid "" -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= 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= É趨¶þ½øÖÆÎļþ¸ñʽ\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" -" - 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= 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= Name input file\n" -" -o --output= Name output file\n" -" -I --input-format= Specify input format\n" -" -O --output-format= Specify output format\n" -" -F --target= Specify COFF target\n" -" --preprocessor= Program to use to preprocess rc file\n" -" --include-dir= Include directory when preprocessing rc file\n" -" -D --define [=] Define SYM when preprocessing rc file\n" -" -v --verbose Verbose - tells you what it's doing\n" -" --language= 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/prdbg.c b/binutils/prdbg.c deleted file mode 100644 index 5b6b0479a..000000000 --- a/binutils/prdbg.c +++ /dev/null @@ -1,2794 +0,0 @@ -/* prdbg.c -- Print out generic debugging information. - Copyright 1995, 1996, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor . - Tags style generation written by Salvador E. Tropea . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file prints out the generic debugging information, by - supplying a set of routines to debug_write. */ - -#include -#include - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.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 *); -}; - -/* 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 = 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); - } - 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, ""); -} - -/* 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, "")) - return FALSE; - arg_types[i] = pop_type (info); - if (arg_types[i] == NULL) - 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); - strcpy (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 (strncmp (domain_type, "class ", sizeof "class " - 1) == 0 - && strchr (domain_type + sizeof "class " - 1, ' ') == NULL) - domain_type += sizeof "class " - 1; - else if (strncmp (domain_type, "union class ", - sizeof "union class ") == 0 - && (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, "")) - return FALSE; - arg_types[i] = pop_type (info); - if (arg_types[i] == NULL) - 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 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 (strncmp (t, "class ", sizeof "class " - 1) == 0) - 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 (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_before_reloc (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 *filename ATTRIBUTE_UNUSED) -{ - struct pr_handle *info = (struct pr_handle *) p; - - fprintf (stderr, "New compilation unit: %s\n", filename); - - free (info->filename); - /* Should it be relative? best way to do it here?. */ - info->filename = strdup (filename); - - return TRUE; -} - -/* Start a source file within a compilation unit. */ - -static bfd_boolean -tg_start_source (void *p, const char *filename) -{ - struct pr_handle *info = (struct pr_handle *) p; - - free (info->filename); - /* Should it be relative? best way to do it here?. */ - info->filename = strdup (filename); - - 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) -{ - struct pr_handle *info = (struct pr_handle *) p; - assert (info->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; - memcpy (full_name, info->stack->next->type, len_class); - memcpy (full_name + len_class, "::", 2); - memcpy (full_name + len_class + 2, name, len_var + 1); - - if (! substitute_type (info, full_name)) - return FALSE; - - if (! prepend_type (info, "static ")) - return FALSE; - - t = pop_type (info); - if (t == NULL) - return FALSE; - - if (! tg_fix_visibility (info, visibility)) - 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 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 (strncmp (t, "class ", sizeof "class " - 1) == 0) - 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 (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)) - 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 (! tg_fix_visibility (info, visibility)) - 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)) - 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 (! tg_fix_visibility (info, visibility)) - 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; - const char *dname, *from_class; - - t = pop_type (info); - if (t == NULL) - return FALSE; - - dname = name; - if (info->demangler) - { - dname = info->demangler (info->abfd, name); - if (strcmp (name, dname) == 0) - { - free ((char *) dname); - dname = name; - } - } - - if (dname != name) - { - 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; - from_class = NULL; - } - } - else - from_class = NULL; - - 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); - free ((char *) 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; - const char *dname; - - if (! global) - info->stack->flavor = "static"; - else - info->stack->flavor = NULL; - - dname = name; - if (info->demangler) - { - dname = info->demangler (info->abfd, name); - if (strcmp (name, dname) == 0) - { - free ((char *) dname); - dname = name; - } - } - - if (! substitute_type (info, dname)) - return FALSE; - - if (dname != name) - { - 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. */ - } - else - info->stack->method = NULL; - - 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 *filename 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/ranlib.sh b/binutils/ranlib.sh deleted file mode 100755 index 2b6fbc479..000000000 --- a/binutils/ranlib.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -# A simple ranlib script, to use less disk space than a ranlib program. -ar s $1 diff --git a/binutils/rclex.l b/binutils/rclex.l deleted file mode 100644 index 2735cc18a..000000000 --- a/binutils/rclex.l +++ /dev/null @@ -1,496 +0,0 @@ -%{ /* rclex.l -- lexer for Windows rc files parser */ -/* Copyright 1997, 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This is a lex input file which generates a lexer used by the - Windows rc file parser. It basically just recognized a bunch of - keywords. */ - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "safe-ctype.h" -#include "windres.h" -#include "rcparse.h" - -#include - -/* Whether we are in rcdata mode, in which we returns the lengths of - strings. */ - -static int rcdata_mode; - -/* Whether we are supressing lines from cpp (including windows.h or - headers from your C sources may bring in externs and typedefs). - When active, we return IGNORED_TOKEN, which lets us ignore these - outside of resource constructs. Thus, it isn't required to protect - all the non-preprocessor lines in your header files with #ifdef - RC_INVOKED. It also means your RC file can't include other RC - files if they're named "*.h". Sorry. Name them *.rch or whatever. */ - -static int suppress_cpp_data; - -#define MAYBE_RETURN(x) return suppress_cpp_data ? IGNORED_TOKEN : (x) - -/* The first filename we detect in the cpp output. We use this to - tell included files from the original file. */ - -static char *initial_fn; - -/* List of allocated strings. */ - -struct alloc_string -{ - struct alloc_string *next; - char *s; -}; - -static struct alloc_string *strings; - -/* Local functions. */ - -static void cpp_line (const char *); -static char *handle_quotes (const char *, unsigned long *); -static char *get_string (int); - -%} - -%% - -"BEGIN" { MAYBE_RETURN (BEG); } -"{" { MAYBE_RETURN (BEG); } -"END" { MAYBE_RETURN (END); } -"}" { MAYBE_RETURN (END); } -"ACCELERATORS" { MAYBE_RETURN (ACCELERATORS); } -"VIRTKEY" { MAYBE_RETURN (VIRTKEY); } -"ASCII" { MAYBE_RETURN (ASCII); } -"NOINVERT" { MAYBE_RETURN (NOINVERT); } -"SHIFT" { MAYBE_RETURN (SHIFT); } -"CONTROL" { MAYBE_RETURN (CONTROL); } -"ALT" { MAYBE_RETURN (ALT); } -"BITMAP" { MAYBE_RETURN (BITMAP); } -"CURSOR" { MAYBE_RETURN (CURSOR); } -"DIALOG" { MAYBE_RETURN (DIALOG); } -"DIALOGEX" { MAYBE_RETURN (DIALOGEX); } -"EXSTYLE" { MAYBE_RETURN (EXSTYLE); } -"CAPTION" { MAYBE_RETURN (CAPTION); } -"CLASS" { MAYBE_RETURN (CLASS); } -"STYLE" { MAYBE_RETURN (STYLE); } -"AUTO3STATE" { MAYBE_RETURN (AUTO3STATE); } -"AUTOCHECKBOX" { MAYBE_RETURN (AUTOCHECKBOX); } -"AUTORADIOBUTTON" { MAYBE_RETURN (AUTORADIOBUTTON); } -"CHECKBOX" { MAYBE_RETURN (CHECKBOX); } -"COMBOBOX" { MAYBE_RETURN (COMBOBOX); } -"CTEXT" { MAYBE_RETURN (CTEXT); } -"DEFPUSHBUTTON" { MAYBE_RETURN (DEFPUSHBUTTON); } -"EDITTEXT" { MAYBE_RETURN (EDITTEXT); } -"GROUPBOX" { MAYBE_RETURN (GROUPBOX); } -"LISTBOX" { MAYBE_RETURN (LISTBOX); } -"LTEXT" { MAYBE_RETURN (LTEXT); } -"PUSHBOX" { MAYBE_RETURN (PUSHBOX); } -"PUSHBUTTON" { MAYBE_RETURN (PUSHBUTTON); } -"RADIOBUTTON" { MAYBE_RETURN (RADIOBUTTON); } -"RTEXT" { MAYBE_RETURN (RTEXT); } -"SCROLLBAR" { MAYBE_RETURN (SCROLLBAR); } -"STATE3" { MAYBE_RETURN (STATE3); } -"USERBUTTON" { MAYBE_RETURN (USERBUTTON); } -"BEDIT" { MAYBE_RETURN (BEDIT); } -"HEDIT" { MAYBE_RETURN (HEDIT); } -"IEDIT" { MAYBE_RETURN (IEDIT); } -"FONT" { MAYBE_RETURN (FONT); } -"ICON" { MAYBE_RETURN (ICON); } -"LANGUAGE" { MAYBE_RETURN (LANGUAGE); } -"CHARACTERISTICS" { MAYBE_RETURN (CHARACTERISTICS); } -"VERSION" { MAYBE_RETURN (VERSIONK); } -"MENU" { MAYBE_RETURN (MENU); } -"MENUEX" { MAYBE_RETURN (MENUEX); } -"MENUITEM" { MAYBE_RETURN (MENUITEM); } -"SEPARATOR" { MAYBE_RETURN (SEPARATOR); } -"POPUP" { MAYBE_RETURN (POPUP); } -"CHECKED" { MAYBE_RETURN (CHECKED); } -"GRAYED" { MAYBE_RETURN (GRAYED); } -"HELP" { MAYBE_RETURN (HELP); } -"INACTIVE" { MAYBE_RETURN (INACTIVE); } -"MENUBARBREAK" { MAYBE_RETURN (MENUBARBREAK); } -"MENUBREAK" { MAYBE_RETURN (MENUBREAK); } -"MESSAGETABLE" { MAYBE_RETURN (MESSAGETABLE); } -"RCDATA" { MAYBE_RETURN (RCDATA); } -"STRINGTABLE" { MAYBE_RETURN (STRINGTABLE); } -"VERSIONINFO" { MAYBE_RETURN (VERSIONINFO); } -"FILEVERSION" { MAYBE_RETURN (FILEVERSION); } -"PRODUCTVERSION" { MAYBE_RETURN (PRODUCTVERSION); } -"FILEFLAGSMASK" { MAYBE_RETURN (FILEFLAGSMASK); } -"FILEFLAGS" { MAYBE_RETURN (FILEFLAGS); } -"FILEOS" { MAYBE_RETURN (FILEOS); } -"FILETYPE" { MAYBE_RETURN (FILETYPE); } -"FILESUBTYPE" { MAYBE_RETURN (FILESUBTYPE); } -"VALUE" { MAYBE_RETURN (VALUE); } -"MOVEABLE" { MAYBE_RETURN (MOVEABLE); } -"FIXED" { MAYBE_RETURN (FIXED); } -"PURE" { MAYBE_RETURN (PURE); } -"IMPURE" { MAYBE_RETURN (IMPURE); } -"PRELOAD" { MAYBE_RETURN (PRELOAD); } -"LOADONCALL" { MAYBE_RETURN (LOADONCALL); } -"DISCARDABLE" { MAYBE_RETURN (DISCARDABLE); } -"NOT" { MAYBE_RETURN (NOT); } - -"BLOCK"[ \t\n]*"\""[^\#\n]*"\"" { - char *s, *send; - - /* This is a hack to let us parse version - information easily. */ - - s = strchr (yytext, '"'); - ++s; - send = strchr (s, '"'); - if (strncmp (s, "StringFileInfo", - sizeof "StringFileInfo" - 1) == 0 - && s + sizeof "StringFileInfo" - 1 == send) - MAYBE_RETURN (BLOCKSTRINGFILEINFO); - else if (strncmp (s, "VarFileInfo", - sizeof "VarFileInfo" - 1) == 0 - && s + sizeof "VarFileInfo" - 1 == send) - MAYBE_RETURN (BLOCKVARFILEINFO); - else - { - char *r; - - r = get_string (send - s + 1); - strncpy (r, s, send - s); - r[send - s] = '\0'; - yylval.s = r; - MAYBE_RETURN (BLOCK); - } - } - -"#"[^\n]* { - cpp_line (yytext); - } - -[0-9][x0-9A-Fa-f]*L { - yylval.i.val = strtoul (yytext, 0, 0); - yylval.i.dword = 1; - MAYBE_RETURN (NUMBER); - } - -[0-9][x0-9A-Fa-f]* { - yylval.i.val = strtoul (yytext, 0, 0); - yylval.i.dword = 0; - MAYBE_RETURN (NUMBER); - } - -("\""[^\"\n]*"\""[ \t\n]*)+ { - char *s; - unsigned long length; - - s = handle_quotes (yytext, &length); - if (! rcdata_mode) - { - yylval.s = s; - MAYBE_RETURN (QUOTEDSTRING); - } - else - { - yylval.ss.length = length; - yylval.ss.s = s; - MAYBE_RETURN (SIZEDSTRING); - } - } - -[A-Za-z][^ ,\t\r\n]* { - char *s; - - /* I rejected comma in a string in order to - handle VIRTKEY, CONTROL in an accelerator - resource. This means that an unquoted - file name can not contain a comma. I - don't know what rc permits. */ - - s = get_string (strlen (yytext) + 1); - strcpy (s, yytext); - yylval.s = s; - MAYBE_RETURN (STRING); - } - -[\n] { ++rc_lineno; } -[ \t\r]+ { /* ignore whitespace */ } -. { MAYBE_RETURN (*yytext); } - -%% -#ifndef yywrap -/* This is needed for some versions of lex. */ -int yywrap (void) -{ - return 1; -} -#endif - -/* Handle a C preprocessor line. */ - -static void -cpp_line (const char *s) -{ - int line; - char *send, *fn; - - ++s; - while (ISSPACE (*s)) - ++s; - - line = strtol (s, &send, 0); - if (*send != '\0' && ! ISSPACE (*send)) - return; - - /* Subtract 1 because we are about to count the newline. */ - rc_lineno = line - 1; - - s = send; - while (ISSPACE (*s)) - ++s; - - if (*s != '"') - return; - - ++s; - send = strchr (s, '"'); - if (send == NULL) - return; - - fn = (char *) xmalloc (send - s + 1); - strncpy (fn, s, send - s); - fn[send - s] = '\0'; - - free (rc_filename); - rc_filename = fn; - - if (!initial_fn) - { - initial_fn = xmalloc (strlen (fn) + 1); - strcpy (initial_fn, fn); - } - - /* Allow the initial file, regardless of name. Suppress all other - files if they end in ".h" (this allows included "*.rc"). */ - if (strcmp (initial_fn, fn) == 0 - || strcmp (fn + strlen (fn) - 2, ".h") != 0) - suppress_cpp_data = 0; - else - suppress_cpp_data = 1; -} - -/* Handle a quoted string. The quotes are stripped. A pair of quotes - in a string are turned into a single quote. Adjacent strings are - merged separated by whitespace are merged, as in C. */ - -static char * -handle_quotes (const char *input, unsigned long *len) -{ - char *ret, *s; - const char *t; - int ch; - - ret = get_string (strlen (input) + 1); - - s = ret; - t = input; - if (*t == '"') - ++t; - while (*t != '\0') - { - if (*t == '\\') - { - ++t; - switch (*t) - { - case '\0': - rcparse_warning ("backslash at end of string"); - break; - - case '\"': - rcparse_warning ("use \"\" to put \" in a string"); - break; - - case 'a': - *s++ = ESCAPE_B; /* Strange, but true... */ - ++t; - break; - - case 'b': - *s++ = ESCAPE_B; - ++t; - break; - - case 'f': - *s++ = ESCAPE_F; - ++t; - break; - - case 'n': - *s++ = ESCAPE_N; - ++t; - break; - - case 'r': - *s++ = ESCAPE_R; - ++t; - break; - - case 't': - *s++ = ESCAPE_T; - ++t; - break; - - case 'v': - *s++ = ESCAPE_V; - ++t; - break; - - case '\\': - *s++ = *t++; - break; - - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - ch = *t - '0'; - ++t; - if (*t >= '0' && *t <= '7') - { - ch = (ch << 3) | (*t - '0'); - ++t; - if (*t >= '0' && *t <= '7') - { - ch = (ch << 3) | (*t - '0'); - ++t; - } - } - *s++ = ch; - break; - - case 'x': - ++t; - ch = 0; - while (1) - { - if (*t >= '0' && *t <= '9') - ch = (ch << 4) | (*t - '0'); - else if (*t >= 'a' && *t <= 'f') - ch = (ch << 4) | (*t - 'a' + 10); - else if (*t >= 'A' && *t <= 'F') - ch = (ch << 4) | (*t - 'A' + 10); - else - break; - ++t; - } - *s++ = ch; - break; - - default: - rcparse_warning ("unrecognized escape sequence"); - *s++ = '\\'; - *s++ = *t++; - break; - } - } - else if (*t != '"') - *s++ = *t++; - else if (t[1] == '\0') - break; - else if (t[1] == '"') - { - *s++ = '"'; - t += 2; - } - else - { - ++t; - assert (ISSPACE (*t)); - while (ISSPACE (*t)) - { - if ((*t) == '\n') - ++rc_lineno; - ++t; - } - if (*t == '\0') - break; - assert (*t == '"'); - ++t; - } - } - - *s = '\0'; - - *len = s - ret; - - return ret; -} - -/* Allocate a string of a given length. */ - -static char * -get_string (int len) -{ - struct alloc_string *as; - - as = (struct alloc_string *) xmalloc (sizeof *as); - as->s = xmalloc (len); - - as->next = strings; - strings = as; - - return as->s; -} - -/* Discard all the strings we have allocated. The parser calls this - when it no longer needs them. */ - -void -rcparse_discard_strings (void) -{ - struct alloc_string *as; - - as = strings; - while (as != NULL) - { - struct alloc_string *n; - - free (as->s); - n = as->next; - free (as); - as = n; - } - - strings = NULL; -} - -/* Enter rcdata mode. */ - -void -rcparse_rcdata (void) -{ - rcdata_mode = 1; -} - -/* Go back to normal mode from rcdata mode. */ - -void -rcparse_normal (void) -{ - rcdata_mode = 0; -} diff --git a/binutils/rcparse.y b/binutils/rcparse.y deleted file mode 100644 index 7aacaaa06..000000000 --- a/binutils/rcparse.y +++ /dev/null @@ -1,1768 +0,0 @@ -%{ /* rcparse.y -- parser for Windows rc files - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This is a parser for Windows rc files. It is based on the parser - by Gunther Ebert . */ - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "windres.h" -#include "safe-ctype.h" - -/* The current language. */ - -static unsigned short language; - -/* The resource information during a sub statement. */ - -static struct res_res_info sub_res_info; - -/* Dialog information. This is built by the nonterminals styles and - controls. */ - -static struct dialog dialog; - -/* This is used when building a style. It is modified by the - nonterminal styleexpr. */ - -static unsigned long style; - -/* These are used when building a control. They are set before using - control_params. */ - -static unsigned long base_style; -static unsigned long default_style; -static unsigned long class; -static struct res_id res_text_field; - -/* This is used for COMBOBOX, LISTBOX and EDITTEXT which - do not allow resource 'text' field in control definition. */ -static const struct res_id res_null_text = { 1, {{0, L""}}}; - -%} - -%union -{ - struct accelerator acc; - struct accelerator *pacc; - struct dialog_control *dialog_control; - struct menuitem *menuitem; - struct - { - struct rcdata_item *first; - struct rcdata_item *last; - } rcdata; - struct rcdata_item *rcdata_item; - struct stringtable_data *stringtable; - struct fixed_versioninfo *fixver; - struct ver_info *verinfo; - struct ver_stringinfo *verstring; - struct ver_varinfo *vervar; - struct res_id id; - struct res_res_info res_info; - struct - { - unsigned short on; - unsigned short off; - } memflags; - struct - { - unsigned long val; - /* Nonzero if this number was explicitly specified as long. */ - int dword; - } i; - unsigned long il; - unsigned short is; - const char *s; - struct - { - unsigned long length; - const char *s; - } ss; -}; - -%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 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 BLOCK -%token MOVEABLE FIXED PURE IMPURE PRELOAD LOADONCALL DISCARDABLE -%token NOT -%token QUOTEDSTRING STRING -%token NUMBER -%token SIZEDSTRING -%token IGNORED_TOKEN - -%type acc_entries -%type acc_entry acc_event -%type control control_params -%type menuitems menuitem menuexitems menuexitem -%type optrcdata_data optrcdata_data_int rcdata_data -%type opt_control_data -%type fixedverinfo -%type verblocks -%type vervals -%type vertrans -%type suboptions memflags_move_discard memflags_move -%type memflag -%type id optresidc resref -%type exstyle parennumber -%type numexpr posnumexpr cnumexpr optcnumexpr cposnumexpr -%type acc_options acc_option menuitem_flags menuitem_flag -%type file_name resname -%type 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 rcdata - | input stringtable - | 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 - { - struct accelerator *a; - - a = (struct accelerator *) res_alloc (sizeof *a); - *a = $2; - if ($1 == NULL) - $$ = a; - else - { - struct 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 = *s; - ch = TOUPPER (ch); - } - $$.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 = ((struct dialog_ex *) - res_alloc (sizeof (struct dialog_ex))); - memset (dialog.ex, 0, sizeof (struct 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 = ((struct dialog_ex *) - res_alloc (sizeof (struct dialog_ex))); - memset (dialog.ex, 0, sizeof (struct 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 QUOTEDSTRING - { - dialog.style |= WS_CAPTION; - style |= WS_CAPTION; - unicode_from_ascii ((int *) NULL, &dialog.caption, $3); - } - | styles CLASS id - { - dialog.class = $3; - } - | styles STYLE - styleexpr - { - dialog.style = style; - } - | styles EXSTYLE numexpr - { - dialog.exstyle = $3; - } - | styles CLASS QUOTEDSTRING - { - res_string_to_id (& dialog.class, $3); - } - | styles FONT numexpr ',' QUOTEDSTRING - { - dialog.style |= DS_SETFONT; - style |= DS_SETFONT; - dialog.pointsize = $3; - unicode_from_ascii ((int *) NULL, &dialog.font, $5); - if (dialog.ex != NULL) - { - dialog.ex->weight = 0; - dialog.ex->italic = 0; - dialog.ex->charset = 1; - } - } - | styles FONT numexpr ',' QUOTEDSTRING cnumexpr - { - dialog.style |= DS_SETFONT; - style |= DS_SETFONT; - dialog.pointsize = $3; - unicode_from_ascii ((int *) NULL, &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 ',' QUOTEDSTRING cnumexpr cnumexpr - { - dialog.style |= DS_SETFONT; - style |= DS_SETFONT; - dialog.pointsize = $3; - unicode_from_ascii ((int *) NULL, &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 ',' QUOTEDSTRING cnumexpr cnumexpr cnumexpr - { - dialog.style |= DS_SETFONT; - style |= DS_SETFONT; - dialog.pointsize = $3; - unicode_from_ascii ((int *) NULL, &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 - { - struct 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 = CTL_BUTTON; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | AUTOCHECKBOX optresidc - { - default_style = BS_AUTOCHECKBOX | WS_TABSTOP; - base_style = BS_AUTOCHECKBOX; - class = CTL_BUTTON; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | AUTORADIOBUTTON optresidc - { - default_style = BS_AUTORADIOBUTTON | WS_TABSTOP; - base_style = BS_AUTORADIOBUTTON; - class = 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 = 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 = 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 = CTL_COMBOBOX; - res_text_field = res_null_text; - } - control_params - { - $$ = $3; - } - | CONTROL optresidc numexpr cnumexpr 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 cnumexpr 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; - } - | CONTROL optresidc numexpr ',' QUOTEDSTRING control_styleexpr - cnumexpr cnumexpr cnumexpr cnumexpr optcnumexpr opt_control_data - { - $$ = define_control ($2, $3, $7, $8, $9, $10, 0, style, $11); - if ($12 != NULL) - { - if (dialog.ex == NULL) - rcparse_warning ("control data requires DIALOGEX"); - $$->data = $12; - } - $$->class.named = 1; - unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5); - } - | CONTROL optresidc numexpr ',' QUOTEDSTRING control_styleexpr - cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data - { - $$ = define_control ($2, $3, $7, $8, $9, $10, 0, style, $11); - if (dialog.ex == NULL) - rcparse_warning ("help ID requires DIALOGEX"); - $$->help = $12; - $$->data = $13; - $$->class.named = 1; - unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5); - } - | CTEXT optresidc - { - default_style = SS_CENTER | WS_GROUP; - base_style = SS_CENTER; - class = CTL_STATIC; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | DEFPUSHBUTTON optresidc - { - default_style = BS_DEFPUSHBUTTON | WS_TABSTOP; - base_style = BS_DEFPUSHBUTTON | WS_TABSTOP; - class = 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 = CTL_EDIT; - res_text_field = res_null_text; - } - control_params - { - $$ = $3; - } - | GROUPBOX optresidc - { - default_style = BS_GROUPBOX; - base_style = BS_GROUPBOX; - class = 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 = 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 = 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 = CTL_LISTBOX; - res_text_field = res_null_text; - } - control_params - { - $$ = $3; - } - | LTEXT optresidc - { - default_style = SS_LEFT | WS_GROUP; - base_style = SS_LEFT; - class = CTL_STATIC; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | PUSHBOX optresidc - { - default_style = BS_PUSHBOX | WS_TABSTOP; - base_style = BS_PUSHBOX; - class = CTL_BUTTON; - } - control_params - { - $$ = $4; - } - | PUSHBUTTON optresidc - { - default_style = BS_PUSHBUTTON | WS_TABSTOP; - base_style = BS_PUSHBUTTON | WS_TABSTOP; - class = CTL_BUTTON; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | RADIOBUTTON optresidc - { - default_style = BS_RADIOBUTTON | WS_TABSTOP; - base_style = BS_RADIOBUTTON; - class = CTL_BUTTON; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | RTEXT optresidc - { - default_style = SS_RIGHT | WS_GROUP; - base_style = SS_RIGHT; - class = CTL_STATIC; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | SCROLLBAR - { - default_style = SBS_HORZ; - base_style = 0; - class = CTL_SCROLLBAR; - res_text_field = res_null_text; - } - control_params - { - $$ = $3; - } - | STATE3 optresidc - { - default_style = BS_3STATE | WS_TABSTOP; - base_style = BS_3STATE; - class = CTL_BUTTON; - res_text_field = $2; - } - control_params - { - $$ = $4; - } - | USERBUTTON resref numexpr ',' numexpr ',' numexpr ',' - numexpr ',' numexpr ',' - { style = WS_CHILD | WS_VISIBLE; } - styleexpr optcnumexpr - { - $$ = define_control ($2, $3, $5, $7, $9, $11, CTL_BUTTON, - 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; - } - ; - -optresidc: - /* empty */ - { - res_string_to_id (&$$, ""); - } - | posnumexpr ',' - { - $$.named = 0; - $$.u.id = $1; - } - | QUOTEDSTRING - { - res_string_to_id (&$$, $1); - } - | QUOTEDSTRING ',' - { - res_string_to_id (&$$, $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 - { - struct menuitem **pp; - - for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next) - ; - *pp = $2; - $$ = $1; - } - } - ; - -menuitem: - MENUITEM QUOTEDSTRING cnumexpr menuitem_flags - { - $$ = define_menuitem ($2, $3, $4, 0, 0, NULL); - } - | MENUITEM SEPARATOR - { - $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL); - } - | POPUP QUOTEDSTRING 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 - { - struct menuitem **pp; - - for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next) - ; - *pp = $2; - $$ = $1; - } - } - ; - -menuexitem: - MENUITEM QUOTEDSTRING - { - $$ = define_menuitem ($2, 0, 0, 0, 0, NULL); - } - | MENUITEM QUOTEDSTRING cnumexpr - { - $$ = define_menuitem ($2, $3, 0, 0, 0, NULL); - } - | MENUITEM QUOTEDSTRING cnumexpr cnumexpr optcnumexpr - { - $$ = define_menuitem ($2, $3, $4, $5, 0, NULL); - } - | MENUITEM SEPARATOR - { - $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL); - } - | POPUP QUOTEDSTRING BEG menuexitems END - { - $$ = define_menuitem ($2, 0, 0, 0, 0, $4); - } - | POPUP QUOTEDSTRING cnumexpr BEG menuexitems END - { - $$ = define_menuitem ($2, $3, 0, 0, 0, $5); - } - | POPUP QUOTEDSTRING cnumexpr cnumexpr BEG menuexitems END - { - $$ = define_menuitem ($2, $3, $4, 0, 0, $6); - } - | POPUP QUOTEDSTRING 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 (); - } - ; - -/* Rcdata resources. */ - -rcdata: - id RCDATA suboptions BEG optrcdata_data END - { - define_rcdata ($1, &$3, $5.first); - 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 - { - struct rcdata_item *ri; - - ri = define_rcdata_string ($1.s, $1.length); - $$.first = ri; - $$.last = ri; - } - | sizednumexpr - { - struct rcdata_item *ri; - - ri = define_rcdata_number ($1.val, $1.dword); - $$.first = ri; - $$.last = ri; - } - | rcdata_data ',' SIZEDSTRING - { - struct rcdata_item *ri; - - ri = define_rcdata_string ($3.s, $3.length); - $$.first = $1.first; - $1.last->next = ri; - $$.last = ri; - } - | rcdata_data ',' sizednumexpr - { - struct rcdata_item *ri; - - ri = define_rcdata_number ($3.val, $3.dword); - $$.first = $1.first; - $1.last->next = ri; - $$.last = ri; - } - ; - -/* Stringtable resources. */ - -stringtable: - STRINGTABLE suboptions BEG - { sub_res_info = $2; } - string_data END - ; - -string_data: - /* empty */ - | string_data numexpr QUOTEDSTRING - { - define_stringtable (&sub_res_info, $2, $3); - if (yychar != YYEMPTY) - YYERROR; - rcparse_discard_strings (); - } - | string_data numexpr ',' QUOTEDSTRING - { - define_stringtable (&sub_res_info, $2, $4); - if (yychar != YYEMPTY) - YYERROR; - rcparse_discard_strings (); - } - ; - -/* User defined resources. We accept general suboptions in the - file_name case to keep the parser happy. */ - -user: - id id suboptions BEG optrcdata_data END - { - define_user_data ($1, $2, &$3, $5.first); - if (yychar != YYEMPTY) - YYERROR; - rcparse_discard_strings (); - } - | id id suboptions file_name - { - define_user_file ($1, $2, &$3, $4); - if (yychar != YYEMPTY) - YYERROR; - rcparse_discard_strings (); - } - ; - -/* Versioninfo resources. */ - -versioninfo: - id VERSIONINFO fixedverinfo BEG verblocks END - { - define_versioninfo ($1, language, $3, $5); - if (yychar != YYEMPTY) - YYERROR; - rcparse_discard_strings (); - } - ; - -fixedverinfo: - /* empty */ - { - $$ = ((struct fixed_versioninfo *) - res_alloc (sizeof (struct fixed_versioninfo))); - memset ($$, 0, sizeof (struct fixed_versioninfo)); - } - | fixedverinfo FILEVERSION numexpr cnumexpr cnumexpr cnumexpr - { - $1->file_version_ms = ($3 << 16) | $4; - $1->file_version_ls = ($5 << 16) | $6; - $$ = $1; - } - | fixedverinfo PRODUCTVERSION numexpr cnumexpr cnumexpr cnumexpr - { - $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 BLOCK BEG vervals END END - { - $$ = append_ver_stringfileinfo ($1, $4, $6); - } - | verblocks BLOCKVARFILEINFO BEG VALUE QUOTEDSTRING vertrans END - { - $$ = append_ver_varfileinfo ($1, $5, $6); - } - ; - -vervals: - /* empty */ - { - $$ = NULL; - } - | vervals VALUE QUOTEDSTRING ',' QUOTEDSTRING - { - $$ = 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; - } - | STRING - { - char *copy, *s; - - /* It seems that resource ID's are forced to upper case. */ - copy = xstrdup ($1); - for (s = copy; *s != '\0'; s++) - *s = TOUPPER (*s); - res_string_to_id (&$$, copy); - free (copy); - } - ; - -/* A resource reference. */ - -resname: - QUOTEDSTRING - { - $$ = $1; - } - | QUOTEDSTRING ',' - { - $$ = $1; - } - | STRING ',' - { - $$ = $1; - } - ; - - -resref: - posnumexpr ',' - { - $$.named = 0; - $$.u.id = $1; - } - | resname - { - char *copy, *s; - - /* It seems that resource ID's are forced to upper case. */ - copy = xstrdup ($1); - for (s = copy; *s != '\0'; s++) - *s = TOUPPER (*s); - res_string_to_id (&$$, copy); - free (copy); - } - ; - -/* Generic suboptions. These may appear before the BEGIN in any - multiline statement. */ - -suboptions: - /* empty */ - { - memset (&$$, 0, sizeof (struct 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 (struct 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 (struct 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; - } - ; - -/* 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/rdcoff.c b/binutils/rdcoff.c deleted file mode 100644 index 84788e0e1..000000000 --- a/binutils/rdcoff.c +++ /dev/null @@ -1,874 +0,0 @@ -/* stabs.c -- Parse COFF debugging information - Copyright 1996, 2000, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file contains code which parses COFF debugging information. */ - -#include "bfd.h" -#include "coff/internal.h" -#include "bucomm.h" -#include "libiberty.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/rddbg.c b/binutils/rddbg.c deleted file mode 100644 index 75ddab544..000000000 --- a/binutils/rddbg.c +++ /dev/null @@ -1,442 +0,0 @@ -/* rddbg.c -- Read debugging information into a generic form. - Copyright 1995, 1996, 1997, 2000, 2002, 2003 - Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 "bfd.h" -#include "bucomm.h" -#include "libiberty.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) -{ - 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) - { - 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" } }; - 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; - 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/readelf.c b/binutils/readelf.c deleted file mode 100644 index ddbf7819e..000000000 --- a/binutils/readelf.c +++ /dev/null @@ -1,10645 +0,0 @@ -/* readelf.c -- display contents of an ELF format file - Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - Originally developed by Eric Youngdale - Modifications by Nick Clifton - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* The difference between readelf and objdump: - - Both programs are capabale 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 -#include -#include -#include -#include - -#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 "elf/common.h" -#include "elf/external.h" -#include "elf/internal.h" -#include "elf/dwarf2.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/alpha.h" -#include "elf/arc.h" -#include "elf/arm.h" -#include "elf/avr.h" -#include "elf/cris.h" -#include "elf/d10v.h" -#include "elf/d30v.h" -#include "elf/dlx.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/m32r.h" -#include "elf/m68k.h" -#include "elf/m68hc11.h" -#include "elf/mcore.h" -#include "elf/mips.h" -#include "elf/mmix.h" -#include "elf/mn10200.h" -#include "elf/mn10300.h" -#include "elf/msp430.h" -#include "elf/or32.h" -#include "elf/pj.h" -#include "elf/ppc.h" -#include "elf/ppc64.h" -#include "elf/s390.h" -#include "elf/sh.h" -#include "elf/sparc.h" -#include "elf/v850.h" -#include "elf/vax.h" -#include "elf/x86-64.h" -#include "elf/xstormy16.h" -#include "elf/iq2000.h" -#include "elf/xtensa.h" - -#include "aout/ar.h" - -#include "bucomm.h" -#include "getopt.h" -#include "libiberty.h" - -char *program_name = "readelf"; -long archive_file_offset; -unsigned long archive_file_size; -unsigned long dynamic_addr; -bfd_size_type dynamic_size; -char *dynamic_strings; -char *string_table; -unsigned long string_table_length; -unsigned long num_dynamic_syms; -Elf_Internal_Sym *dynamic_symbols; -Elf_Internal_Syminfo *dynamic_syminfo; -unsigned long dynamic_syminfo_offset; -unsigned int dynamic_syminfo_nent; -char program_interpreter[64]; -bfd_vma dynamic_info[DT_JMPREL + 1]; -bfd_vma version_info[16]; -Elf_Internal_Ehdr elf_header; -Elf_Internal_Shdr *section_headers; -Elf_Internal_Phdr *program_headers; -Elf_Internal_Dyn *dynamic_segment; -Elf_Internal_Shdr *symtab_shndx_hdr; -int show_name; -int do_dynamic; -int do_syms; -int do_reloc; -int do_sections; -int do_segments; -int do_unwind; -int do_using_dynamic; -int do_header; -int do_dump; -int do_version; -int do_wide; -int do_histogram; -int do_debugging; -int do_debug_info; -int do_debug_abbrevs; -int do_debug_lines; -int do_debug_pubnames; -int do_debug_aranges; -int do_debug_frames; -int do_debug_frames_interp; -int do_debug_macinfo; -int do_debug_str; -int do_debug_loc; -int do_arch; -int do_notes; -int is_32bit_elf; - -/* A dynamic array of flags indicating which sections require dumping. */ -char *dump_sects = NULL; -unsigned int num_dump_sects = 0; - -#define HEX_DUMP (1 << 0) -#define DISASS_DUMP (1 << 1) -#define DEBUG_DUMP (1 << 2) - -/* How to rpint a vma value. */ -typedef enum print_mode -{ - HEX, - DEC, - DEC_5, - UNSIGNED, - PREFIX_HEX, - FULL_HEX, - LONG_HEX -} -print_mode; - -static bfd_vma (*byte_get) (unsigned char *, int); -static void (*byte_put) (unsigned char *, bfd_vma, int); - -typedef int Elf32_Word; - -#define UNKNOWN -1 - -#define SECTION_NAME(X) ((X) == NULL ? "" : \ - ((X)->sh_name >= string_table_length \ - ? "" : string_table + (X)->sh_name)) - -/* Given st_shndx I, map to section_headers index. */ -#define SECTION_HEADER_INDEX(I) \ - ((I) < SHN_LORESERVE \ - ? (I) \ - : ((I) <= SHN_HIRESERVE \ - ? 0 \ - : (I) - (SHN_HIRESERVE + 1 - SHN_LORESERVE))) - -/* Reverse of the above. */ -#define SECTION_HEADER_NUM(N) \ - ((N) < SHN_LORESERVE \ - ? (N) \ - : (N) + (SHN_HIRESERVE + 1 - SHN_LORESERVE)) - -#define SECTION_HEADER(I) (section_headers + SECTION_HEADER_INDEX (I)) - -#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */ - -#define BYTE_GET(field) byte_get (field, sizeof (field)) - -/* If we can support a 64 bit data type then BFD64 should be defined - and sizeof (bfd_vma) == 8. In this case when translating from an - external 8 byte field to an internal field, we can assume that the - internal field is also 8 bytes wide and so we can extract all the data. - If, however, BFD64 is not defined, then we must assume that the - internal data structure only has 4 byte wide fields that are the - equivalent of the 8 byte wide external counterparts, and so we must - truncate the data. */ -#ifdef BFD64 -#define BYTE_GET8(field) byte_get (field, -8) -#else -#define BYTE_GET8(field) byte_get (field, 8) -#endif - -#define NUM_ELEM(array) (sizeof (array) / sizeof ((array)[0])) - -#define GET_ELF_SYMBOLS(file, section) \ - (is_32bit_elf ? get_32bit_elf_symbols (file, section) \ - : get_64bit_elf_symbols (file, section)) - - -static void -error (const char *message, ...) -{ - va_list args; - - va_start (args, message); - fprintf (stderr, _("%s: Error: "), program_name); - vfprintf (stderr, message, args); - va_end (args); -} - -static void -warn (const char *message, ...) -{ - va_list args; - - va_start (args, message); - fprintf (stderr, _("%s: Warning: "), program_name); - vfprintf (stderr, message, args); - va_end (args); -} - -static void * -get_data (void *var, FILE *file, long offset, size_t size, const char *reason) -{ - void *mvar; - - if (size == 0) - return NULL; - - if (fseek (file, archive_file_offset + offset, SEEK_SET)) - { - error (_("Unable to seek to 0x%x for %s\n"), - archive_file_offset + offset, reason); - return NULL; - } - - mvar = var; - if (mvar == NULL) - { - mvar = malloc (size); - - if (mvar == NULL) - { - error (_("Out of memory allocating 0x%x bytes for %s\n"), - size, reason); - return NULL; - } - } - - if (fread (mvar, size, 1, file) != 1) - { - error (_("Unable to read in 0x%x bytes of %s\n"), size, reason); - if (mvar != var) - free (mvar); - return NULL; - } - - return mvar; -} - -static bfd_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); - -#ifndef BFD64 - case 8: - /* 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. */ - /* Fall through. */ -#endif - case 4: - return ((unsigned long) (field[0])) - | (((unsigned long) (field[1])) << 8) - | (((unsigned long) (field[2])) << 16) - | (((unsigned long) (field[3])) << 24); - -#ifdef BFD64 - case 8: - case -8: - /* This is a special case, generated by the BYTE_GET8 macro. - It means that we are loading an 8 byte value from a field - in an external structure into an 8 byte value in a field - in an internal structure. */ - return ((bfd_vma) (field[0])) - | (((bfd_vma) (field[1])) << 8) - | (((bfd_vma) (field[2])) << 16) - | (((bfd_vma) (field[3])) << 24) - | (((bfd_vma) (field[4])) << 32) - | (((bfd_vma) (field[5])) << 40) - | (((bfd_vma) (field[6])) << 48) - | (((bfd_vma) (field[7])) << 56); -#endif - default: - error (_("Unhandled data length: %d\n"), size); - abort (); - } -} - -static bfd_vma -byte_get_signed (unsigned char *field, int size) -{ - bfd_vma x = byte_get (field, size); - - switch (size) - { - case 1: - return (x ^ 0x80) - 0x80; - case 2: - return (x ^ 0x8000) - 0x8000; - case 4: - return (x ^ 0x80000000) - 0x80000000; - case 8: - case -8: - return x; - default: - abort (); - } -} - -static void -byte_put_little_endian (unsigned char *field, bfd_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; - 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 (); - } -} - -/* Print a VMA value. */ -static void -print_vma (bfd_vma vma, print_mode mode) -{ -#ifdef BFD64 - if (is_32bit_elf) -#endif - { - switch (mode) - { - case FULL_HEX: - printf ("0x"); - /* Drop through. */ - case LONG_HEX: - printf ("%8.8lx", (unsigned long) vma); - break; - - case DEC_5: - if (vma <= 99999) - { - printf ("%5ld", (long) vma); - break; - } - /* Drop through. */ - case PREFIX_HEX: - printf ("0x"); - /* Drop through. */ - case HEX: - printf ("%lx", (unsigned long) vma); - break; - - case DEC: - printf ("%ld", (unsigned long) vma); - break; - - case UNSIGNED: - printf ("%lu", (unsigned long) vma); - break; - } - } -#ifdef BFD64 - else - { - switch (mode) - { - case FULL_HEX: - printf ("0x"); - /* Drop through. */ - - case LONG_HEX: - printf_vma (vma); - break; - - case PREFIX_HEX: - printf ("0x"); - /* Drop through. */ - - case HEX: -#if BFD_HOST_64BIT_LONG - printf ("%lx", vma); -#else - if (_bfd_int64_high (vma)) - printf ("%lx%8.8lx", _bfd_int64_high (vma), _bfd_int64_low (vma)); - else - printf ("%lx", _bfd_int64_low (vma)); -#endif - break; - - case DEC: -#if BFD_HOST_64BIT_LONG - printf ("%ld", vma); -#else - if (_bfd_int64_high (vma)) - /* ugg */ - printf ("++%ld", _bfd_int64_low (vma)); - else - printf ("%ld", _bfd_int64_low (vma)); -#endif - break; - - case DEC_5: -#if BFD_HOST_64BIT_LONG - if (vma <= 99999) - printf ("%5ld", vma); - else - printf ("%#lx", vma); -#else - if (_bfd_int64_high (vma)) - /* ugg */ - printf ("++%ld", _bfd_int64_low (vma)); - else if (vma <= 99999) - printf ("%5ld", _bfd_int64_low (vma)); - else - printf ("%#lx", _bfd_int64_low (vma)); -#endif - break; - - case UNSIGNED: -#if BFD_HOST_64BIT_LONG - printf ("%lu", vma); -#else - if (_bfd_int64_high (vma)) - /* ugg */ - printf ("++%lu", _bfd_int64_low (vma)); - else - printf ("%lu", _bfd_int64_low (vma)); -#endif - break; - } - } -#endif -} - -/* Display a symbol on stdout. If do_wide is not true then - format the symbol to be at most WIDTH characters, - truncating as necessary. If WIDTH is negative then - format the string to be exactly - WIDTH characters, - truncating or padding as necessary. */ - -static void -print_symbol (int width, const char *symbol) -{ - if (do_wide) - printf ("%s", symbol); - else if (width < 0) - printf ("%-*.*s", width, width, symbol); - else - printf ("%-.*s", width, symbol); -} - -static bfd_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 4: - return ((unsigned long) (field[3])) - | (((unsigned long) (field[2])) << 8) - | (((unsigned long) (field[1])) << 16) - | (((unsigned long) (field[0])) << 24); - -#ifndef BFD64 - case 8: - /* Although we are extracing data from an 8 byte wide field, we - are returning only 4 bytes of data. */ - return ((unsigned long) (field[7])) - | (((unsigned long) (field[6])) << 8) - | (((unsigned long) (field[5])) << 16) - | (((unsigned long) (field[4])) << 24); -#else - case 8: - case -8: - /* This is a special case, generated by the BYTE_GET8 macro. - It means that we are loading an 8 byte value from a field - in an external structure into an 8 byte value in a field - in an internal structure. */ - return ((bfd_vma) (field[7])) - | (((bfd_vma) (field[6])) << 8) - | (((bfd_vma) (field[5])) << 16) - | (((bfd_vma) (field[4])) << 24) - | (((bfd_vma) (field[3])) << 32) - | (((bfd_vma) (field[2])) << 40) - | (((bfd_vma) (field[1])) << 48) - | (((bfd_vma) (field[0])) << 56); -#endif - - default: - error (_("Unhandled data length: %d\n"), size); - abort (); - } -} - -static void -byte_put_big_endian (unsigned char *field, bfd_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; - field[2] = (value >> 8) & 0xff; - value >>= 16; - /* 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 (); - } -} - -/* Guess the relocation size commonly used by the specific machines. */ - -static int -guess_is_rela (unsigned long e_machine) -{ - switch (e_machine) - { - /* Targets that use REL relocations. */ - case EM_ARM: - case EM_386: - case EM_486: - case EM_960: - case EM_DLX: - case EM_OPENRISC: - case EM_OR32: - case EM_CYGNUS_M32R: - case EM_D10V: - case EM_CYGNUS_D10V: - case EM_MIPS: - case EM_MIPS_RS3_LE: - return FALSE; - - /* Targets that use RELA relocations. */ - case EM_68K: - case EM_H8_300: - case EM_H8_300H: - case EM_H8S: - case EM_SPARC32PLUS: - case EM_SPARCV9: - case EM_SPARC: - case EM_PPC: - case EM_PPC64: - case EM_V850: - case EM_CYGNUS_V850: - case EM_D30V: - case EM_CYGNUS_D30V: - case EM_MN10200: - case EM_CYGNUS_MN10200: - case EM_MN10300: - case EM_CYGNUS_MN10300: - case EM_FR30: - case EM_CYGNUS_FR30: - case EM_CYGNUS_FRV: - case EM_SH: - case EM_ALPHA: - case EM_MCORE: - case EM_IA_64: - case EM_AVR: - case EM_AVR_OLD: - case EM_CRIS: - case EM_860: - case EM_X86_64: - case EM_S390: - case EM_S390_OLD: - case EM_MMIX: - case EM_MSP430: - case EM_MSP430_OLD: - case EM_XSTORMY16: - case EM_VAX: - case EM_IP2K: - case EM_IP2K_OLD: - case EM_IQ2000: - case EM_XTENSA: - case EM_XTENSA_OLD: - case EM_M32R: - return TRUE; - - case EM_MMA: - case EM_PCP: - case EM_NCPU: - case EM_NDR1: - case EM_STARCORE: - case EM_ME16: - case EM_ST100: - case EM_TINYJ: - case EM_FX66: - case EM_ST9PLUS: - case EM_ST7: - case EM_68HC16: - case EM_68HC11: - case EM_68HC08: - case EM_68HC05: - case EM_SVX: - case EM_ST19: - 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 = get_data (NULL, file, rel_offset, rel_size, _("relocs")); - if (!erelas) - return 0; - - nrelas = rel_size / sizeof (Elf32_External_Rela); - - relas = malloc (nrelas * sizeof (Elf_Internal_Rela)); - - if (relas == NULL) - { - error(_("out of memory parsing relocs")); - 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 (erelas[i].r_addend); - } - - free (erelas); - } - else - { - Elf64_External_Rela *erelas; - - erelas = get_data (NULL, file, rel_offset, rel_size, _("relocs")); - if (!erelas) - return 0; - - nrelas = rel_size / sizeof (Elf64_External_Rela); - - relas = malloc (nrelas * sizeof (Elf_Internal_Rela)); - - if (relas == NULL) - { - error(_("out of memory parsing relocs")); - return 0; - } - - for (i = 0; i < nrelas; i++) - { - relas[i].r_offset = BYTE_GET8 (erelas[i].r_offset); - relas[i].r_info = BYTE_GET8 (erelas[i].r_info); - relas[i].r_addend = BYTE_GET8 (erelas[i].r_addend); - } - - 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 = get_data (NULL, file, rel_offset, rel_size, _("relocs")); - if (!erels) - return 0; - - nrels = rel_size / sizeof (Elf32_External_Rel); - - rels = malloc (nrels * sizeof (Elf_Internal_Rela)); - - if (rels == NULL) - { - error(_("out of memory parsing relocs")); - 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 = get_data (NULL, file, rel_offset, rel_size, _("relocs")); - if (!erels) - return 0; - - nrels = rel_size / sizeof (Elf64_External_Rel); - - rels = malloc (nrels * sizeof (Elf_Internal_Rela)); - - if (rels == NULL) - { - error(_("out of memory parsing relocs")); - return 0; - } - - for (i = 0; i < nrels; i++) - { - rels[i].r_offset = BYTE_GET8 (erels[i].r_offset); - rels[i].r_info = BYTE_GET8 (erels[i].r_info); - rels[i].r_addend = 0; - } - - free (erels); - } - *relsp = rels; - *nrelsp = nrels; - return 1; -} - -/* Display the contents of the relocation data found at the specified - offset. */ - -static int -dump_relocations (FILE *file, - unsigned long rel_offset, - unsigned long rel_size, - Elf_Internal_Sym *symtab, - unsigned long nsyms, - char *strtab, - 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 0; - } - else - { - if (!slurp_rel_relocs (file, rel_offset, rel_size, &rels, &rel_size)) - return 0; - } - - 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; - const char *rtype2 = NULL; - const char *rtype3 = NULL; - bfd_vma offset; - bfd_vma info; - bfd_vma symtab_index; - bfd_vma type; - bfd_vma type2 = 0; - bfd_vma type3 = 0; - - offset = rels[i].r_offset; - info = rels[i].r_info; - - if (is_32bit_elf) - { - type = ELF32_R_TYPE (info); - symtab_index = ELF32_R_SYM (info); - } - else - { - /* 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) - { - /* 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. */ - if (elf_header.e_ident[EI_DATA] != ELFDATA2MSB) - info = (((info & 0xffffffff) << 32) - | ((info >> 56) & 0xff) - | ((info >> 40) & 0xff00) - | ((info >> 24) & 0xff0000) - | ((info >> 8) & 0xff000000)); - type = ELF64_MIPS_R_TYPE (info); - type2 = ELF64_MIPS_R_TYPE2 (info); - type3 = ELF64_MIPS_R_TYPE3 (info); - } - else if (elf_header.e_machine == EM_SPARCV9) - type = ELF64_R_TYPE_ID (info); - else - type = ELF64_R_TYPE (info); - - symtab_index = ELF64_R_SYM (info); -#endif - } - - if (is_32bit_elf) - { -#ifdef _bfd_int64_low - printf ("%8.8lx %8.8lx ", _bfd_int64_low (offset), _bfd_int64_low (info)); -#else - printf ("%8.8lx %8.8lx ", offset, info); -#endif - } - else - { -#ifdef _bfd_int64_low - 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 (info), - _bfd_int64_low (info)); -#else - printf (do_wide - ? "%16.16lx %16.16lx " - : "%12.12lx %12.12lx ", - offset, info); -#endif - } - - switch (elf_header.e_machine) - { - default: - rtype = NULL; - 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_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_MSP430: - 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); - if (!is_32bit_elf) - { - rtype2 = elf_mips_reloc_type (type2); - rtype3 = elf_mips_reloc_type (type3); - } - 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: - 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_XSTORMY16: - rtype = elf_xstormy16_reloc_type (type); - break; - - case EM_VAX: - rtype = elf_vax_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; - } - - if (rtype == NULL) -#ifdef _bfd_int64_low - printf (_("unrecognized: %-7lx"), _bfd_int64_low (type)); -#else - printf (_("unrecognized: %-7lx"), type); -#endif - else - printf (do_wide ? "%-22.22s" : "%-17.17s", rtype); - - 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 (" "); - print_vma (psym->st_value, LONG_HEX); - printf (is_32bit_elf ? " " : " "); - - if (psym->st_name == 0) - { - const char *sec_name = ""; - char name_buf[40]; - - if (ELF_ST_TYPE (psym->st_info) == STT_SECTION) - { - bfd_vma sec_index = (bfd_vma) -1; - - if (psym->st_shndx < SHN_LORESERVE) - sec_index = psym->st_shndx; - else if (psym->st_shndx > SHN_LORESERVE) - sec_index = psym->st_shndx - (SHN_HIRESERVE + 1 - - SHN_LORESERVE); - - if (sec_index != (bfd_vma) -1) - sec_name = SECTION_NAME (section_headers + sec_index); - 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_IA_64 - && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX - && psym->st_shndx == SHN_IA_64_ANSI_COMMON) - sec_name = "ANSI_COM"; - else - { - sprintf (name_buf, "
", - (unsigned int) psym->st_shndx); - sec_name = name_buf; - } - } - print_symbol (22, sec_name); - } - else if (strtab == NULL) - printf (_(""), psym->st_name); - else - print_symbol (22, strtab + psym->st_name); - - if (is_rela) - printf (" + %lx", (unsigned long) rels[i].r_addend); - } - } - else if (is_rela) - { - printf ("%*c", is_32bit_elf ? (do_wide ? 34 : 28) : (do_wide ? 26 : 20), ' '); - print_vma (rels[i].r_addend, LONG_HEX); - } - - if (elf_header.e_machine == EM_SPARCV9 - && !strcmp (rtype, "R_SPARC_OLO10")) - printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (info)); - - putchar ('\n'); - - if (! is_32bit_elf && elf_header.e_machine == EM_MIPS) - { - printf (" Type2: "); - - if (rtype2 == NULL) -#ifdef _bfd_int64_low - printf (_("unrecognized: %-7lx"), _bfd_int64_low (type2)); -#else - printf (_("unrecognized: %-7lx"), type2); -#endif - else - printf ("%-17.17s", rtype2); - - printf("\n Type3: "); - - if (rtype3 == NULL) -#ifdef _bfd_int64_low - printf (_("unrecognized: %-7lx"), _bfd_int64_low (type3)); -#else - printf (_("unrecognized: %-7lx"), type3); -#endif - else - printf ("%-17.17s", rtype3); - - putchar ('\n'); - } - } - - free (rels); - - return 1; -} - -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"; - 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_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"; - 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"; - 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"; - default: - return NULL; - } -} - -static const char * -get_dynamic_type (unsigned long type) -{ - static char buff[32]; - - 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_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"; - - 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_PPC64: - result = get_ppc64_dynamic_type (type); - break; - case EM_IA_64: - result = get_ia64_dynamic_type (type); - break; - default: - result = NULL; - break; - } - - if (result != NULL) - return result; - - sprintf (buff, _("Processor Specific: %lx"), type); - } - else if ((type >= DT_LOOS) && (type <= DT_HIOS)) - { - const char *result; - - switch (elf_header.e_machine) - { - case EM_PARISC: - result = get_parisc_dynamic_type (type); - break; - default: - result = NULL; - break; - } - - if (result != NULL) - return result; - - sprintf (buff, _("Operating System specific: %lx"), type); - } - else - sprintf (buff, _(": %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)) - sprintf (buff, _("Processor Specific: (%x)"), e_type); - else if ((e_type >= ET_LOOS) && (e_type <= ET_HIOS)) - sprintf (buff, _("OS Specific: (%x)"), e_type); - else - sprintf (buff, _(": %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_M32: return "WE32100"; - case EM_SPARC: return "Sparc"; - 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_V800: return "NEC V800"; - 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_68HC12: return "Motorola M68HC12"; - 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_V850: return "NEC v850"; - case EM_CYGNUS_MN10300: - case EM_MN10300: return "mn10300"; - case EM_CYGNUS_MN10200: - case EM_MN10200: return "mn10200"; - 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_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_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_S390_OLD: - case EM_S390: return "IBM S/390"; - case EM_XSTORMY16: return "Sanyo Xstormy16 CPU core"; - case EM_OPENRISC: - case EM_OR32: return "OpenRISC"; - 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"; - default: - sprintf (buff, _(": %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, ", "); - 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_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_MAVERICK_FLOAT: - strcat (buf, ", Maverick FP"); - break; - - default: - unknown = 1; - break; - } - } - } - - if (unknown) - strcat (buf,", "); -} - -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_68K: - if (e_flags & EF_CPU32) - strcat (buf, ", cpu32"); - if (e_flags & EF_M68000) - strcat (buf, ", m68000"); - 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_V850: - case EM_CYGNUS_V850: - switch (e_flags & EF_V850_ARCH) - { - 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"); - - 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 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"); - - 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_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"); - 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; - } - } - - 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_LINUX: return "UNIX - Linux"; - case ELFOSABI_HURD: return "GNU/Hurd"; - 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 "Amiga Research OS"; - case ELFOSABI_STANDALONE: return _("Standalone App"); - case ELFOSABI_ARM: return "ARM"; - default: - sprintf (buff, _(""), osabi); - return buff; - } -} - -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_PARISC_ARCHEXT: return "PARISC_ARCHEXT"; - case PT_PARISC_UNWIND: return "PARISC_UNWIND"; - 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_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 "STACK"; - - default: - if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC)) - { - const char *result; - - switch (elf_header.e_machine) - { - 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; - 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 - sprintf (buff, _(": %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"; - 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"; - default: - break; - } - 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_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; - 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)) - 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 - sprintf (buff, _(": %x"), sh_type); - - return buff; - } -} - -#define OPTION_DEBUG_DUMP 512 - -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'}, - {"symbols", no_argument, 0, 's'}, - {"syms", no_argument, 0, 's'}, - {"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'}, - {"hex-dump", required_argument, 0, 'x'}, - {"debug-dump", optional_argument, 0, OPTION_DEBUG_DUMP}, - {"unwind", no_argument, 0, 'u'}, -#ifdef SUPPORT_DISASSEMBLY - {"instruction-dump", required_argument, 0, 'i'}, -#endif - - {"version", no_argument, 0, 'v'}, - {"wide", no_argument, 0, 'W'}, - {"help", no_argument, 0, 'H'}, - {0, no_argument, 0, 0} -}; - -static void -usage (void) -{ - fprintf (stdout, _("Usage: readelf elf-file(s)\n")); - fprintf (stdout, _(" Display information about the contents of ELF format files\n")); - fprintf (stdout, _(" 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= Dump the contents of section \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")); -#ifdef SUPPORT_DISASSEMBLY - fprintf (stdout, _("\ - -i --instruction-dump=\n\ - Disassemble the contents of section \n")); -#endif - fprintf (stdout, _("\ - -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")); - fprintf (stdout, _("Report bugs to %s\n"), REPORT_BUGS_TO); - - exit (0); -} - -static void -request_dump (unsigned int section, int type) -{ - if (section >= num_dump_sects) - { - char *new_dump_sects; - - new_dump_sects = calloc (section + 1, 1); - - if (new_dump_sects == NULL) - error (_("Out of memory allocating dump request table.")); - else - { - /* Copy current flag settings. */ - memcpy (new_dump_sects, dump_sects, num_dump_sects); - - free (dump_sects); - - dump_sects = new_dump_sects; - num_dump_sects = section + 1; - } - } - - if (dump_sects) - dump_sects[section] |= type; - - return; -} - -static void -parse_args (int argc, char **argv) -{ - int c; - - if (argc < 2) - usage (); - - while ((c = getopt_long - (argc, argv, "ersuahnldSDAIw::x:i:vVWH", options, NULL)) != EOF) - { - char *cp; - int section; - - switch (c) - { - case 0: - /* Long options. */ - break; - case 'H': - usage (); - break; - - case 'a': - do_syms++; - do_reloc++; - do_unwind++; - do_dynamic++; - do_header++; - do_sections++; - do_segments++; - do_version++; - do_histogram++; - do_arch++; - do_notes++; - 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 'x': - do_dump++; - section = strtoul (optarg, & cp, 0); - if (! *cp && section >= 0) - { - request_dump (section, HEX_DUMP); - break; - } - goto oops; - case 'w': - do_dump++; - if (optarg == 0) - do_debugging = 1; - else - { - unsigned int index = 0; - - do_debugging = 0; - - while (optarg[index]) - switch (optarg[index++]) - { - case 'i': - case 'I': - do_debug_info = 1; - break; - - case 'a': - case 'A': - do_debug_abbrevs = 1; - break; - - case 'l': - case 'L': - do_debug_lines = 1; - break; - - case 'p': - case 'P': - do_debug_pubnames = 1; - break; - - case 'r': - case 'R': - do_debug_aranges = 1; - break; - - case 'F': - do_debug_frames_interp = 1; - case 'f': - do_debug_frames = 1; - break; - - case 'm': - case 'M': - do_debug_macinfo = 1; - break; - - case 's': - case 'S': - do_debug_str = 1; - break; - - case 'o': - case 'O': - do_debug_loc = 1; - break; - - default: - warn (_("Unrecognized debug option '%s'\n"), optarg); - break; - } - } - break; - case OPTION_DEBUG_DUMP: - do_dump++; - if (optarg == 0) - do_debugging = 1; - else - { - static const char *debug_dump_opt[] - = { "line", "info", "abbrev", "pubnames", "ranges", - "macro", "frames", "frames-interp", "str", "loc", NULL }; - unsigned int index; - const char *p; - - do_debugging = 0; - - p = optarg; - while (*p) - { - for (index = 0; debug_dump_opt[index]; index++) - { - size_t len = strlen (debug_dump_opt[index]); - - if (strncmp (p, debug_dump_opt[index], len) == 0 - && (p[len] == ',' || p[len] == '\0')) - { - switch (p[0]) - { - case 'i': - do_debug_info = 1; - break; - - case 'a': - do_debug_abbrevs = 1; - break; - - case 'l': - if (p[1] == 'i') - do_debug_lines = 1; - else - do_debug_loc = 1; - break; - - case 'p': - do_debug_pubnames = 1; - break; - - case 'r': - do_debug_aranges = 1; - break; - - case 'f': - if (len > 6) - do_debug_frames_interp = 1; - do_debug_frames = 1; - break; - - case 'm': - do_debug_macinfo = 1; - break; - - case 's': - do_debug_str = 1; - break; - } - - p += len; - break; - } - } - - if (debug_dump_opt[index] == NULL) - { - warn (_("Unrecognized debug option '%s'\n"), p); - p = strchr (p, ','); - if (p == NULL) - break; - } - - if (*p == ',') - p++; - } - } - break; -#ifdef SUPPORT_DISASSEMBLY - case 'i': - do_dump++; - section = strtoul (optarg, & cp, 0); - if (! *cp && section >= 0) - { - request_dump (section, DISASS_DUMP); - break; - } - goto oops; -#endif - case 'v': - print_version (program_name); - break; - case 'V': - do_version++; - break; - case 'W': - do_wide++; - break; - default: - oops: - /* xgettext:c-format */ - error (_("Invalid option '-%c'\n"), c); - /* Drop through. */ - case '?': - usage (); - } - } - - 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) - usage (); - else if (argc < 3) - { - warn (_("Nothing to do.\n")); - usage(); - } -} - -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: - sprintf (buff, _(""), 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: - sprintf (buff, _(""), 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; - } - - 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 - ? "" - : ""))); - 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\n"), - (long) elf_header.e_phnum); - 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 == 0) - 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) - printf (" (%ld)", (long) section_headers[0].sh_link); - putc ('\n', stdout); - } - - if (section_headers != NULL) - { - if (elf_header.e_shnum == 0) - elf_header.e_shnum = section_headers[0].sh_size; - if (elf_header.e_shstrndx == SHN_XINDEX) - elf_header.e_shstrndx = section_headers[0].sh_link; - free (section_headers); - section_headers = NULL; - } - - return 1; -} - - -static int -get_32bit_program_headers (FILE *file, Elf_Internal_Phdr *program_headers) -{ - Elf32_External_Phdr *phdrs; - Elf32_External_Phdr *external; - Elf_Internal_Phdr *internal; - unsigned int i; - - phdrs = 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 = program_headers, 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 *program_headers) -{ - Elf64_External_Phdr *phdrs; - Elf64_External_Phdr *external; - Elf_Internal_Phdr *internal; - unsigned int i; - - phdrs = 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 = program_headers, 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_GET8 (external->p_offset); - internal->p_vaddr = BYTE_GET8 (external->p_vaddr); - internal->p_paddr = BYTE_GET8 (external->p_paddr); - internal->p_filesz = BYTE_GET8 (external->p_filesz); - internal->p_memsz = BYTE_GET8 (external->p_memsz); - internal->p_align = BYTE_GET8 (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 = malloc (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) - { - 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_offset, 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")); - - dynamic_addr = segment->p_offset; - dynamic_size = segment->p_filesz; - 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 - { - program_interpreter[0] = 0; - fscanf (file, "%63s", program_interpreter); - - if (do_segments) - printf (_("\n [Requesting program interpreter: %s]"), - program_interpreter); - } - break; - } - - if (do_segments) - putc ('\n', stdout); - } - - if (do_segments && section_headers != NULL) - { - printf (_("\n Section to Segment mapping:\n")); - printf (_(" Segment Sections...\n")); - - assert (string_table != NULL); - - for (i = 0; i < elf_header.e_phnum; i++) - { - unsigned int j; - Elf_Internal_Shdr *section; - - segment = program_headers + i; - section = section_headers; - - printf (" %2.2d ", i); - - for (j = 1; j < elf_header.e_shnum; j++, section++) - { - if (section->sh_size > 0 - /* Compare allocated sections by VMA, unallocated - sections by file offset. */ - && (section->sh_flags & SHF_ALLOC - ? (section->sh_addr >= segment->p_vaddr - && section->sh_addr + section->sh_size - <= segment->p_vaddr + segment->p_memsz) - : ((bfd_vma) section->sh_offset >= segment->p_offset - && (section->sh_offset + section->sh_size - <= segment->p_offset + segment->p_filesz)))) - 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"), - (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 = get_data (NULL, file, elf_header.e_shoff, - elf_header.e_shentsize * num, _("section headers")); - if (!shdrs) - return 0; - - section_headers = malloc (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 = get_data (NULL, file, elf_header.e_shoff, - elf_header.e_shentsize * num, _("section headers")); - if (!shdrs) - return 0; - - section_headers = malloc (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_GET8 (shdrs[i].sh_flags); - internal->sh_addr = BYTE_GET8 (shdrs[i].sh_addr); - internal->sh_size = BYTE_GET8 (shdrs[i].sh_size); - internal->sh_entsize = BYTE_GET8 (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 number; - Elf32_External_Sym *esyms; - Elf_External_Sym_Shndx *shndx; - Elf_Internal_Sym *isyms; - Elf_Internal_Sym *psym; - unsigned int j; - - esyms = get_data (NULL, file, section->sh_offset, section->sh_size, - _("symbols")); - if (!esyms) - return NULL; - - shndx = NULL; - if (symtab_shndx_hdr != NULL - && (symtab_shndx_hdr->sh_link - == (unsigned long) SECTION_HEADER_NUM (section - section_headers))) - { - shndx = get_data (NULL, file, symtab_shndx_hdr->sh_offset, - symtab_shndx_hdr->sh_size, _("symtab shndx")); - if (!shndx) - { - free (esyms); - return NULL; - } - } - - number = section->sh_size / section->sh_entsize; - isyms = malloc (number * sizeof (Elf_Internal_Sym)); - - if (isyms == NULL) - { - error (_("Out of memory\n")); - if (shndx) - free (shndx); - free (esyms); - return NULL; - } - - 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 && shndx != NULL) - psym->st_shndx - = byte_get ((unsigned char *) &shndx[j], sizeof (shndx[j])); - psym->st_info = BYTE_GET (esyms[j].st_info); - psym->st_other = BYTE_GET (esyms[j].st_other); - } - - if (shndx) - free (shndx); - free (esyms); - - return isyms; -} - -static Elf_Internal_Sym * -get_64bit_elf_symbols (FILE *file, Elf_Internal_Shdr *section) -{ - unsigned long number; - Elf64_External_Sym *esyms; - Elf_External_Sym_Shndx *shndx; - Elf_Internal_Sym *isyms; - Elf_Internal_Sym *psym; - unsigned int j; - - esyms = get_data (NULL, file, section->sh_offset, section->sh_size, - _("symbols")); - if (!esyms) - return NULL; - - shndx = NULL; - if (symtab_shndx_hdr != NULL - && (symtab_shndx_hdr->sh_link - == (unsigned long) SECTION_HEADER_NUM (section - section_headers))) - { - shndx = get_data (NULL, file, symtab_shndx_hdr->sh_offset, - symtab_shndx_hdr->sh_size, _("symtab shndx")); - if (!shndx) - { - free (esyms); - return NULL; - } - } - - number = section->sh_size / section->sh_entsize; - isyms = malloc (number * sizeof (Elf_Internal_Sym)); - - if (isyms == NULL) - { - error (_("Out of memory\n")); - if (shndx) - free (shndx); - free (esyms); - return NULL; - } - - 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 && shndx != NULL) - psym->st_shndx - = byte_get ((unsigned char *) &shndx[j], sizeof (shndx[j])); - psym->st_value = BYTE_GET8 (esyms[j].st_value); - psym->st_size = BYTE_GET8 (esyms[j].st_size); - } - - if (shndx) - free (shndx); - free (esyms); - - return isyms; -} - -static const char * -get_elf_section_flags (bfd_vma sh_flags) -{ - static char buff[32]; - - *buff = 0; - - while (sh_flags) - { - bfd_vma flag; - - flag = sh_flags & - sh_flags; - sh_flags &= ~ flag; - - switch (flag) - { - case SHF_WRITE: strcat (buff, "W"); break; - case SHF_ALLOC: strcat (buff, "A"); break; - case SHF_EXECINSTR: strcat (buff, "X"); break; - case SHF_MERGE: strcat (buff, "M"); break; - case SHF_STRINGS: strcat (buff, "S"); break; - case SHF_INFO_LINK: strcat (buff, "I"); break; - case SHF_LINK_ORDER: strcat (buff, "L"); break; - case SHF_OS_NONCONFORMING: strcat (buff, "O"); break; - case SHF_GROUP: strcat (buff, "G"); break; - case SHF_TLS: strcat (buff, "T"); break; - - default: - if (flag & SHF_MASKOS) - { - strcat (buff, "o"); - sh_flags &= ~ SHF_MASKOS; - } - else if (flag & SHF_MASKPROC) - { - strcat (buff, "p"); - sh_flags &= ~ SHF_MASKPROC; - } - else - strcat (buff, "x"); - break; - } - } - - 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) - { - 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. */ - section = SECTION_HEADER (elf_header.e_shstrndx); - - if (section->sh_size != 0) - { - string_table = get_data (NULL, file, section->sh_offset, - section->sh_size, _("string table")); - - if (string_table == NULL) - return 0; - - string_table_length = section->sh_size; - } - - /* 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; - - 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; - } - - num_dynamic_syms = section->sh_size / section->sh_entsize; - dynamic_symbols = GET_ELF_SYMBOLS (file, section); - } - else if (section->sh_type == SHT_STRTAB - && strcmp (name, ".dynstr") == 0) - { - if (dynamic_strings != NULL) - { - error (_("File contains multiple dynamic string tables\n")); - continue; - } - - dynamic_strings = get_data (NULL, file, section->sh_offset, - section->sh_size, _("dynamic strings")); - } - 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 ((do_debugging || do_debug_info || do_debug_abbrevs - || do_debug_lines || do_debug_pubnames || do_debug_aranges - || do_debug_frames || do_debug_macinfo || do_debug_str - || do_debug_loc) - && strncmp (name, ".debug_", 7) == 0) - { - name += 7; - - if (do_debugging - || (do_debug_info && (strcmp (name, "info") == 0)) - || (do_debug_abbrevs && (strcmp (name, "abbrev") == 0)) - || (do_debug_lines && (strcmp (name, "line") == 0)) - || (do_debug_pubnames && (strcmp (name, "pubnames") == 0)) - || (do_debug_aranges && (strcmp (name, "aranges") == 0)) - || (do_debug_frames && (strcmp (name, "frame") == 0)) - || (do_debug_macinfo && (strcmp (name, "macinfo") == 0)) - || (do_debug_str && (strcmp (name, "str") == 0)) - || (do_debug_loc && (strcmp (name, "loc") == 0)) - ) - request_dump (i, DEBUG_DUMP); - } - /* linkonce section to be combined with .debug_info at link time. */ - else if ((do_debugging || do_debug_info) - && strncmp (name, ".gnu.linkonce.wi.", 17) == 0) - request_dump (i, DEBUG_DUMP); - else if (do_debug_frames && strcmp (name, ".eh_frame") == 0) - request_dump (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) - printf - (_(" [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n")); - else if (do_wide) - printf - (_(" [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n")); - else - { - printf (_(" [Nr] Name Type Address Offset\n")); - printf (_(" Size EntSize Flags Link Info Align\n")); - } - - for (i = 0, section = section_headers; - i < elf_header.e_shnum; - i++, section++) - { - printf (" [%2u] %-17.17s %-15.15s ", - SECTION_HEADER_NUM (i), - SECTION_NAME (section), - get_section_type_name (section->sh_type)); - - if (is_32bit_elf) - { - 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); - - printf (" %3s ", get_elf_section_flags (section->sh_flags)); - - printf ("%2ld %3lx %2ld\n", - (unsigned long) section->sh_link, - (unsigned long) section->sh_info, - (unsigned long) section->sh_addralign); - } - 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); - } - - printf (" %3s ", get_elf_section_flags (section->sh_flags)); - - printf ("%2ld %3lx ", - (unsigned long) section->sh_link, - (unsigned long) section->sh_info); - - if ((unsigned long) section->sh_addralign == section->sh_addralign) - printf ("%2ld\n", (unsigned long) section->sh_addralign); - else - { - print_vma (section->sh_addralign, DEC); - putchar ('\n'); - } - } - 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 (" %2ld %3lx %ld\n", - (unsigned long) section->sh_link, - (unsigned long) section->sh_info, - (unsigned long) section->sh_addralign); - } - } - - printf (_("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")); - - return 1; -} - -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, is_rela); - } - } - - 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; - Elf_Internal_Sym *symtab; - char *strtab; - int is_rela; - unsigned long nsyms; - - 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)); - - symtab = NULL; - strtab = NULL; - nsyms = 0; - if (section->sh_link) - { - Elf_Internal_Shdr *symsec; - - symsec = SECTION_HEADER (section->sh_link); - nsyms = symsec->sh_size / symsec->sh_entsize; - symtab = GET_ELF_SYMBOLS (file, symsec); - - if (symtab == NULL) - continue; - - strsec = SECTION_HEADER (symsec->sh_link); - - strtab = get_data (NULL, file, strsec->sh_offset, - strsec->sh_size, _("string table")); - } - is_rela = section->sh_type == SHT_RELA; - - dump_relocations (file, rel_offset, rel_size, - symtab, nsyms, strtab, is_rela); - - if (strtab) - free (strtab); - if (symtab) - free (symtab); - - found = 1; - } - } - - if (! found) - printf (_("\nThere are no relocations in this file.\n")); - } - - return 1; -} - -#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; - }; - -struct unw_aux_info - { - struct unw_table_entry - { - struct absaddr start; - struct absaddr end; - struct absaddr info; - } - *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 (struct unw_aux_info *aux, - struct absaddr addr, - const char **symname, - bfd_vma *offset) -{ - bfd_vma dist = 0x100000; - Elf_Internal_Sym *sym, *best = NULL; - unsigned long i; - - for (i = 0, sym = aux->symtab; i < aux->nsyms; ++i, ++sym) - { - if (ELF_ST_TYPE (sym->st_info) == STT_FUNC - && sym->st_name != 0 - && (addr.section == SHN_UNDEF || addr.section == sym->st_shndx) - && addr.offset >= sym->st_value - && addr.offset - sym->st_value < dist) - { - best = sym; - dist = addr.offset - sym->st_value; - if (!dist) - break; - } - } - if (best) - { - *symname = (best->st_name >= aux->strtab_size - ? "" : aux->strtab + best->st_name); - *offset = dist; - return; - } - *symname = NULL; - *offset = addr.offset; -} - -static void -dump_ia64_unwind (struct unw_aux_info *aux) -{ - bfd_vma addr_size; - struct unw_table_entry *tp; - int in_body; - - addr_size = is_32bit_elf ? 4 : 8; - - 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, 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 + (tp->info.offset - aux->info_addr); - stamp = BYTE_GET8 ((unsigned char *) head); - - 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) (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 + addr_size * UNW_LENGTH (stamp);) - dp = unw_decode (dp, in_body, & in_body); - } -} - -static int -slurp_ia64_unwind_table (FILE *file, - struct unw_aux_info *aux, - Elf_Internal_Shdr *sec) -{ - unsigned long size, addr_size, nrelas, i; - Elf_Internal_Phdr *seg; - struct unw_table_entry *tep; - Elf_Internal_Shdr *relsec; - Elf_Internal_Rela *rela, *rp; - unsigned char *table, *tp; - Elf_Internal_Sym *sym; - const char *relname; - - addr_size = is_32bit_elf ? 4 : 8; - - /* 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 = get_data (NULL, file, sec->sh_offset, size, _("unwind table")); - if (!table) - return 0; - - tep = aux->table = xmalloc (size / (3 * addr_size) * sizeof (aux->table[0])); - for (tp = table; tp < table + size; tp += 3 * addr_size, ++tep) - { - tep->start.section = SHN_UNDEF; - tep->end.section = SHN_UNDEF; - tep->info.section = SHN_UNDEF; - if (is_32bit_elf) - { - tep->start.offset = byte_get ((unsigned char *) tp + 0, 4); - tep->end.offset = byte_get ((unsigned char *) tp + 4, 4); - tep->info.offset = byte_get ((unsigned char *) tp + 8, 4); - } - else - { - tep->start.offset = BYTE_GET8 ((unsigned char *) tp + 0); - tep->end.offset = BYTE_GET8 ((unsigned char *) tp + 8); - tep->info.offset = BYTE_GET8 ((unsigned char *) tp + 16); - } - 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 - || SECTION_HEADER (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) - { - if (is_32bit_elf) - { - relname = elf_ia64_reloc_type (ELF32_R_TYPE (rp->r_info)); - sym = aux->symtab + ELF32_R_SYM (rp->r_info); - - if (ELF32_ST_TYPE (sym->st_info) != STT_SECTION) - { - warn (_("Skipping unexpected symbol type %u\n"), - ELF32_ST_TYPE (sym->st_info)); - continue; - } - } - else - { - relname = elf_ia64_reloc_type (ELF64_R_TYPE (rp->r_info)); - sym = aux->symtab + ELF64_R_SYM (rp->r_info); - - if (ELF64_ST_TYPE (sym->st_info) != STT_SECTION) - { - warn (_("Skipping unexpected symbol type %u\n"), - ELF64_ST_TYPE (sym->st_info)); - continue; - } - } - - if (strncmp (relname, "R_IA64_SEGREL", 13) != 0) - { - warn (_("Skipping unexpected relocation type %s\n"), relname); - continue; - } - - i = rp->r_offset / (3 * addr_size); - - switch (rp->r_offset/addr_size % 3) - { - case 0: - aux->table[i].start.section = sym->st_shndx; - aux->table[i].start.offset += rp->r_addend; - break; - case 1: - aux->table[i].end.section = sym->st_shndx; - aux->table[i].end.offset += rp->r_addend; - break; - case 2: - aux->table[i].info.section = sym->st_shndx; - aux->table[i].info.offset += rp->r_addend; - break; - default: - break; - } - } - - free (rela); - } - - aux->table_len = size / (3 * addr_size); - return 1; -} - -static int -process_unwind (FILE *file) -{ - Elf_Internal_Shdr *sec, *unwsec = NULL, *strsec; - unsigned long i, addr_size, unwcount = 0, unwstart = 0; - struct unw_aux_info aux; - - if (!do_unwind) - return 1; - - if (elf_header.e_machine != EM_IA_64) - { - printf (_("\nThere are no unwind sections in this file.\n")); - return 1; - } - - memset (& aux, 0, sizeof (aux)); - - addr_size = is_32bit_elf ? 4 : 8; - - for (i = 0, sec = section_headers; i < elf_header.e_shnum; ++i, ++sec) - { - if (sec->sh_type == SHT_SYMTAB) - { - aux.nsyms = sec->sh_size / sec->sh_entsize; - aux.symtab = GET_ELF_SYMBOLS (file, sec); - - strsec = SECTION_HEADER (sec->sh_link); - aux.strtab_size = strsec->sh_size; - aux.strtab = get_data (NULL, file, strsec->sh_offset, - aux.strtab_size, _("string table")); - } - 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 (strncmp (SECTION_NAME (unwsec), ELF_STRING_ia64_unwind_once, - len) == 0) - { - /* .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 (strncmp (SECTION_NAME (sec), - ELF_STRING_ia64_unwind_info_once, len2) == 0 - && strcmp (SECTION_NAME (sec) + len2, suffix) == 0) - 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 (strncmp (SECTION_NAME (unwsec), ELF_STRING_ia64_unwind, - len) == 0) - suffix = SECTION_NAME (unwsec) + len; - for (i = 0, sec = section_headers; i < elf_header.e_shnum; - ++i, ++sec) - if (strncmp (SECTION_NAME (sec), - ELF_STRING_ia64_unwind_info, len2) == 0 - && strcmp (SECTION_NAME (sec) + len2, suffix) == 0) - 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_size = sec->sh_size; - aux.info_addr = sec->sh_addr; - aux.info = get_data (NULL, file, sec->sh_offset, aux.info_size, - _("unwind info")); - - 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 * 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); - - return 1; -} - -static void -dynamic_segment_mips_val (Elf_Internal_Dyn *entry) -{ - switch (entry->d_tag) - { - case DT_MIPS_FLAGS: - if (entry->d_un.d_val == 0) - printf ("NONE\n"); - 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 < NUM_ELEM (opts); ++cnt) - if (entry->d_un.d_val & (1 << cnt)) - { - printf ("%s%s", first ? "" : " ", opts[cnt]); - first = 0; - } - puts (""); - } - break; - - case DT_MIPS_IVERSION: - if (dynamic_strings != NULL) - printf ("Interface Version: %s\n", - dynamic_strings + entry->d_un.d_val); - else - printf ("%ld\n", (long) entry->d_un.d_ptr); - break; - - case DT_MIPS_TIME_STAMP: - { - char timebuf[20]; - struct tm *tmp; - - time_t time = entry->d_un.d_val; - tmp = gmtime (&time); - sprintf (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\n", 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: - printf ("%ld\n", (long) entry->d_un.d_ptr); - break; - - default: - printf ("%#lx\n", (long) entry->d_un.d_ptr); - } -} - - -static void -dynamic_segment_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" } - }; - int first = 1; - size_t cnt; - bfd_vma val = entry->d_un.d_val; - - for (cnt = 0; cnt < sizeof (flags) / sizeof (flags[0]); ++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'); -} - -static void -dynamic_segment_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; - - default: - print_vma (entry->d_un.d_ptr, PREFIX_HEX); - break; - } - putchar ('\n'); -} - -static int -get_32bit_dynamic_segment (FILE *file) -{ - Elf32_External_Dyn *edyn; - Elf_Internal_Dyn *entry; - bfd_size_type i; - - edyn = get_data (NULL, file, dynamic_addr, dynamic_size, - _("dynamic segment")); - if (!edyn) - return 0; - - /* SGI's ELF has more than one section in the DYNAMIC segment. Determine - how large this .dynamic is now. We can do this even before the byte - swapping since the DT_NULL tag is recognizable. */ - dynamic_size = 0; - while (*(Elf32_Word *) edyn[dynamic_size++].d_tag != DT_NULL) - ; - - dynamic_segment = malloc (dynamic_size * sizeof (Elf_Internal_Dyn)); - - if (dynamic_segment == NULL) - { - error (_("Out of memory\n")); - free (edyn); - return 0; - } - - for (i = 0, entry = dynamic_segment; - i < dynamic_size; - i++, entry++) - { - entry->d_tag = BYTE_GET (edyn[i].d_tag); - entry->d_un.d_val = BYTE_GET (edyn[i].d_un.d_val); - } - - free (edyn); - - return 1; -} - -static int -get_64bit_dynamic_segment (FILE *file) -{ - Elf64_External_Dyn *edyn; - Elf_Internal_Dyn *entry; - bfd_size_type i; - - edyn = get_data (NULL, file, dynamic_addr, dynamic_size, - _("dynamic segment")); - if (!edyn) - return 0; - - /* SGI's ELF has more than one section in the DYNAMIC segment. Determine - how large this .dynamic is now. We can do this even before the byte - swapping since the DT_NULL tag is recognizable. */ - dynamic_size = 0; - while (*(bfd_vma *) edyn[dynamic_size++].d_tag != DT_NULL) - ; - - dynamic_segment = malloc (dynamic_size * sizeof (Elf_Internal_Dyn)); - - if (dynamic_segment == NULL) - { - error (_("Out of memory\n")); - free (edyn); - return 0; - } - - for (i = 0, entry = dynamic_segment; - i < dynamic_size; - i++, entry++) - { - entry->d_tag = BYTE_GET8 (edyn[i].d_tag); - entry->d_un.d_val = BYTE_GET8 (edyn[i].d_un.d_val); - } - - free (edyn); - - return 1; -} - -static const char * -get_dynamic_flags (bfd_vma flags) -{ - static char buff[128]; - char *p = buff; - - *p = '\0'; - while (flags) - { - bfd_vma flag; - - flag = flags & - flags; - flags &= ~ flag; - - if (p != buff) - *p++ = ' '; - - switch (flag) - { - case DF_ORIGIN: strcpy (p, "ORIGIN"); break; - case DF_SYMBOLIC: strcpy (p, "SYMBOLIC"); break; - case DF_TEXTREL: strcpy (p, "TEXTREL"); break; - case DF_BIND_NOW: strcpy (p, "BIND_NOW"); break; - case DF_STATIC_TLS: strcpy (p, "STATIC_TLS"); break; - default: strcpy (p, "unknown"); break; - } - - p = strchr (p, '\0'); - } - return buff; -} - -/* Parse and display the contents of the dynamic segment. */ -static int -process_dynamic_segment (FILE *file) -{ - Elf_Internal_Dyn *entry; - bfd_size_type i; - - if (dynamic_size == 0) - { - if (do_dynamic) - printf (_("\nThere is no dynamic segment in this file.\n")); - - return 1; - } - - if (is_32bit_elf) - { - if (! get_32bit_dynamic_segment (file)) - return 0; - } - else if (! get_64bit_dynamic_segment (file)) - return 0; - - /* Find the appropriate symbol table. */ - if (dynamic_symbols == NULL) - { - for (i = 0, entry = dynamic_segment; - i < dynamic_size; - ++i, ++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!")); - - 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); - - num_dynamic_syms = section.sh_size / section.sh_entsize; - if (num_dynamic_syms < 1) - { - error (_("Unable to determine the number of symbols to load\n")); - continue; - } - - dynamic_symbols = GET_ELF_SYMBOLS (file, §ion); - } - } - - /* Similarly find a string table. */ - if (dynamic_strings == NULL) - { - for (i = 0, entry = dynamic_segment; - i < dynamic_size; - ++i, ++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 = get_data (NULL, file, offset, str_tab_len, - _("dynamic string table")); - break; - } - } - - /* And find the syminfo section if available. */ - if (dynamic_syminfo == NULL) - { - unsigned long syminsz = 0; - - for (i = 0, entry = dynamic_segment; - i < dynamic_size; - ++i, ++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_Internal_Syminfo *syminfo; - - /* There is a syminfo section. Read the data. */ - extsyminfo = get_data (NULL, file, dynamic_syminfo_offset, syminsz, - _("symbol information")); - if (!extsyminfo) - return 0; - - dynamic_syminfo = malloc (syminsz); - if (dynamic_syminfo == NULL) - { - error (_("Out of memory\n")); - return 0; - } - - dynamic_syminfo_nent = syminsz / sizeof (Elf_External_Syminfo); - for (i = 0, syminfo = dynamic_syminfo; i < dynamic_syminfo_nent; - ++i, ++syminfo) - { - syminfo->si_boundto = BYTE_GET (extsyminfo[i].si_boundto); - syminfo->si_flags = BYTE_GET (extsyminfo[i].si_flags); - } - - free (extsyminfo); - } - } - - if (do_dynamic && dynamic_addr) - printf (_("\nDynamic segment at offset 0x%lx contains %ld entries:\n"), - dynamic_addr, (long) dynamic_size); - if (do_dynamic) - printf (_(" Tag Type Name/Value\n")); - - for (i = 0, entry = dynamic_segment; - i < dynamic_size; - i++, 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) - puts (get_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 (dynamic_strings) - printf (": [%s]\n", dynamic_strings + 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_CONLFAT) - { - printf (" CONLFAT"); - val ^= DF_1_CONLFAT; - } - 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 (dynamic_strings == NULL) - name = NULL; - else - name = dynamic_strings + entry->d_un.d_val; - - if (name) - { - switch (entry->d_tag) - { - case DT_NEEDED: - printf (_("Shared library: [%s]"), name); - - if (strcmp (name, program_interpreter) == 0) - 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 (dynamic_strings != NULL && entry->d_tag == DT_USED) - { - char *name; - - name = dynamic_strings + 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 time = entry->d_un.d_val; - - tmp = gmtime (&time); - 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; - - 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_segment_mips_val (entry); - break; - case EM_PARISC: - dynamic_segment_parisc_val (entry); - break; - case EM_IA_64: - dynamic_segment_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_BASE | VER_FLG_WEAK)) - strcat (buff, "| "); - - 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; - - found = 1; - - printf - (_("\nVersion definition section '%s' contains %ld entries:\n"), - SECTION_NAME (section), section->sh_info); - - printf (_(" Addr: 0x")); - printf_vma (section->sh_addr); - printf (_(" Offset: %#08lx Link: %lx (%s)\n"), - (unsigned long) section->sh_offset, section->sh_link, - SECTION_NAME (SECTION_HEADER (section->sh_link))); - - edefs = get_data (NULL, file, section->sh_offset, section->sh_size, - _("version definition section")); - if (!edefs) - break; - - 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; - - vstart = ((char *) edefs) + idx; - - 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); - - 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 (dynamic_strings) - printf (_("Name: %s\n"), dynamic_strings + 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++) - { - isum += aux.vda_next; - vstart += aux.vda_next; - - eaux = (Elf_External_Verdaux *) vstart; - - aux.vda_name = BYTE_GET (eaux->vda_name); - aux.vda_next = BYTE_GET (eaux->vda_next); - - if (dynamic_strings) - printf (_(" %#06x: Parent %d: %s\n"), - isum, j, dynamic_strings + aux.vda_name); - else - printf (_(" %#06x: Parent %d, name index: %ld\n"), - isum, j, aux.vda_name); - } - - idx += ent.vd_next; - } - - free (edefs); - } - break; - - case SHT_GNU_verneed: - { - Elf_External_Verneed *eneed; - unsigned int idx; - unsigned int cnt; - - found = 1; - - printf (_("\nVersion needs section '%s' contains %ld entries:\n"), - SECTION_NAME (section), section->sh_info); - - printf (_(" Addr: 0x")); - printf_vma (section->sh_addr); - printf (_(" Offset: %#08lx Link to section: %ld (%s)\n"), - (unsigned long) section->sh_offset, section->sh_link, - SECTION_NAME (SECTION_HEADER (section->sh_link))); - - eneed = get_data (NULL, file, section->sh_offset, section->sh_size, - _("version need section")); - if (!eneed) - break; - - for (idx = cnt = 0; cnt < section->sh_info; ++cnt) - { - Elf_External_Verneed *entry; - Elf_Internal_Verneed ent; - int j; - int isum; - char *vstart; - - vstart = ((char *) eneed) + idx; - - 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 (dynamic_strings) - printf (_(" File: %s"), dynamic_strings + ent.vn_file); - else - printf (_(" File: %lx"), ent.vn_file); - - printf (_(" Cnt: %d\n"), ent.vn_cnt); - - 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; - - 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 (dynamic_strings) - printf (_(" %#06x: Name: %s"), - isum, dynamic_strings + 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); - - isum += aux.vna_next; - vstart += aux.vna_next; - } - - idx += ent.vn_next; - } - - 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; - long off; - - link_section = SECTION_HEADER (section->sh_link); - total = section->sh_size / section->sh_entsize; - - found = 1; - - symbols = GET_ELF_SYMBOLS (file, link_section); - - string_sec = SECTION_HEADER (link_section->sh_link); - - strtab = get_data (NULL, file, string_sec->sh_offset, - string_sec->sh_size, _("version string table")); - if (!strtab) - 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: %lx (%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 = get_data (NULL, file, off, total * sizeof (short), - _("version symbol data")); - if (!edata) - { - free (strtab); - break; - } - - data = malloc (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] & 0x7fff, - data[cnt + j] & 0x8000 ? 'h' : ' '); - - check_def = 1; - check_need = 1; - if (SECTION_HEADER (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; - - get_data (&evn, file, offset, sizeof (evn), - _("version need")); - - ivn.vn_aux = BYTE_GET (evn.vn_aux); - ivn.vn_next = BYTE_GET (evn.vn_next); - - a_off = offset + ivn.vn_aux; - - do - { - get_data (&evna, file, a_off, sizeof (evna), - _("version need aux (2)")); - - 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); - - 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 - { - get_data (&evd, file, offset, sizeof (evd), - _("version def")); - - 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] & 0x7fff) - && ivd.vd_next != 0); - - if (ivd.vd_ndx == (data[cnt + j] & 0x7fff)) - { - Elf_External_Verdaux evda; - Elf_Internal_Verdaux ivda; - - ivd.vd_aux = BYTE_GET (evd.vd_aux); - - get_data (&evda, file, - offset - ivd.vd_next + ivd.vd_aux, - sizeof (evda), _("version def aux")); - - ivda.vda_name = BYTE_GET (evda.vda_name); - - 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) - sprintf (buff, _(": %d"), binding); - else if (binding >= STB_LOOS && binding <= STB_HIOS) - sprintf (buff, _(": %d"), binding); - else - sprintf (buff, _(": %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"; - default: - if (type >= STT_LOPROC && type <= STT_HIPROC) - { - if (elf_header.e_machine == EM_ARM && type == STT_ARM_TFUNC) - return "THUMB_FUNC"; - - 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"; - - sprintf (buff, _(": %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"; - } - - sprintf (buff, _(": %d"), type); - } - else - sprintf (buff, _(": %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_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 (type >= SHN_LOPROC && type <= SHN_HIPROC) - sprintf (buff, "PRC[0x%04x]", type); - else if (type >= SHN_LOOS && type <= SHN_HIOS) - sprintf (buff, "OS [0x%04x]", type); - else if (type >= SHN_LORESERVE && type <= SHN_HIRESERVE) - sprintf (buff, "RSV[0x%04x]", type); - else - sprintf (buff, "%3d", type); - break; - } - - return buff; -} - -static int * -get_dynamic_data (FILE *file, unsigned int number) -{ - unsigned char *e_data; - int *i_data; - - e_data = malloc (number * 4); - - if (e_data == NULL) - { - error (_("Out of memory\n")); - return NULL; - } - - if (fread (e_data, 4, number, file) != number) - { - error (_("Unable to read in dynamic data\n")); - return NULL; - } - - i_data = malloc (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 * 4, 4); - - free (e_data); - - return i_data; -} - -/* Dump the symbol table. */ -static int -process_symbol_table (FILE *file) -{ - Elf_Internal_Shdr *section; - unsigned char nb[4]; - unsigned char nc[4]; - int nbuckets = 0; - int nchains = 0; - int *buckets = NULL; - int *chains = NULL; - - if (! do_syms && !do_histogram) - return 1; - - if (dynamic_info[DT_HASH] && ((do_using_dynamic && dynamic_strings != NULL) - || do_histogram)) - { - 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")); - return 0; - } - - if (fread (nb, sizeof (nb), 1, file) != 1) - { - error (_("Failed to read in number of buckets\n")); - return 0; - } - - if (fread (nc, sizeof (nc), 1, file) != 1) - { - error (_("Failed to read in number of chains\n")); - return 0; - } - - nbuckets = byte_get (nb, 4); - nchains = byte_get (nc, 4); - - buckets = get_dynamic_data (file, nbuckets); - chains = get_dynamic_data (file, nchains); - - if (buckets == NULL || chains == NULL) - return 0; - } - - if (do_syms - && dynamic_info[DT_HASH] && do_using_dynamic && dynamic_strings != NULL) - { - int hn; - int 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]) - { - Elf_Internal_Sym *psym; - - psym = dynamic_symbols + si; - - printf (" %3d %3d: ", si, hn); - print_vma (psym->st_value, LONG_HEX); - putchar (' ' ); - print_vma (psym->st_size, DEC_5); - - printf (" %6s", get_symbol_type (ELF_ST_TYPE (psym->st_info))); - printf (" %6s", get_symbol_binding (ELF_ST_BIND (psym->st_info))); - printf (" %3s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other))); - printf (" %3.3s ", get_symbol_index_type (psym->st_shndx)); - print_symbol (25, dynamic_strings + psym->st_name); - putchar ('\n'); - } - } - } - else if (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; - Elf_Internal_Sym *symtab; - Elf_Internal_Sym *psym; - - - if ( section->sh_type != SHT_SYMTAB - && section->sh_type != SHT_DYNSYM) - 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); - if (symtab == NULL) - continue; - - if (section->sh_link == elf_header.e_shstrndx) - strtab = string_table; - else - { - Elf_Internal_Shdr *string_sec; - - string_sec = SECTION_HEADER (section->sh_link); - - strtab = get_data (NULL, file, string_sec->sh_offset, - string_sec->sh_size, _("string table")); - } - - for (si = 0, psym = symtab; - si < section->sh_size / section->sh_entsize; - 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 (" %-3s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other))); - printf (" %4s ", get_symbol_index_type (psym->st_shndx)); - print_symbol (25, strtab + psym->st_name); - - 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)); - - get_data (&data, file, offset + si * sizeof (vers_data), - sizeof (data), _("version data")); - - vers_data = byte_get (data, 2); - - is_nobits = (SECTION_HEADER (psym->st_shndx)->sh_type - == SHT_NOBITS); - - check_def = (psym->st_shndx != SHN_UNDEF); - - if ((vers_data & 0x8000) || 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; - - get_data (&evn, file, offset, sizeof (evn), - _("version need")); - - 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; - - get_data (&evna, file, vna_off, - sizeof (evna), - _("version need aux (3)")); - - 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)", - strtab + ivna.vna_name, ivna.vna_other); - check_def = 0; - } - else if (! is_nobits) - error (_("bad dynamic symbol")); - 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 offset; - - offset = offset_from_vma - (file, - version_info[DT_VERSIONTAGIDX (DT_VERDEF)], - sizeof (Elf_External_Verdef)); - - do - { - Elf_External_Verdef evd; - - get_data (&evd, file, offset, sizeof (evd), - _("version def")); - - ivd.vd_ndx = BYTE_GET (evd.vd_ndx); - ivd.vd_aux = BYTE_GET (evd.vd_aux); - ivd.vd_next = BYTE_GET (evd.vd_next); - - offset += ivd.vd_next; - } - while (ivd.vd_ndx != (vers_data & 0x7fff) - && ivd.vd_next != 0); - - offset -= ivd.vd_next; - offset += ivd.vd_aux; - - get_data (&evda, file, offset, sizeof (evda), - _("version def aux")); - - ivda.vda_name = BYTE_GET (evda.vda_name); - - if (psym->st_name != ivda.vda_name) - printf ((vers_data & 0x8000) - ? "@%s" : "@@%s", - strtab + ivda.vda_name); - } - } - } - } - - 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) - { - int *lengths; - int *counts; - int hn; - int si; - int maxlength = 0; - int nzero_counts = 0; - int nsyms = 0; - - printf (_("\nHistogram for bucket list length (total of %d buckets):\n"), - nbuckets); - printf (_(" Length Number %% of total Coverage\n")); - - lengths = calloc (nbuckets, sizeof (int)); - if (lengths == NULL) - { - error (_("Out of memory")); - return 0; - } - for (hn = 0; hn < nbuckets; ++hn) - { - if (! buckets[hn]) - continue; - - for (si = buckets[hn]; si > 0 && si < nchains; si = chains[si]) - { - ++nsyms; - if (maxlength < ++lengths[hn]) - ++maxlength; - } - } - - counts = calloc (maxlength + 1, sizeof (int)); - if (counts == NULL) - { - error (_("Out of memory")); - return 0; - } - - for (hn = 0; hn < nbuckets; ++hn) - ++counts[lengths[hn]]; - - if (nbuckets > 0) - { - printf (" 0 %-10d (%5.1f%%)\n", - counts[0], (counts[0] * 100.0) / nbuckets); - for (si = 1; si <= maxlength; ++si) - { - nzero_counts += counts[si] * si; - printf ("%7d %-10d (%5.1f%%) %5.1f%%\n", - si, counts[si], (counts[si] * 100.0) / nbuckets, - (nzero_counts * 100.0) / nsyms); - } - } - - free (counts); - free (lengths); - } - - if (buckets != NULL) - { - free (buckets); - free (chains); - } - - 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); - print_symbol (30, dynamic_strings + 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_size) - { - print_symbol (10, - dynamic_strings - + (dynamic_segment - [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; -} - -#ifdef SUPPORT_DISASSEMBLY -static void -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 - -static int -dump_section (Elf_Internal_Shdr *section, FILE *file) -{ - bfd_size_type bytes; - bfd_vma addr; - unsigned char *data; - unsigned char *start; - - bytes = section->sh_size; - - if (bytes == 0 || section->sh_type == SHT_NOBITS) - { - printf (_("\nSection '%s' has no data to dump.\n"), - SECTION_NAME (section)); - return 0; - } - else - printf (_("\nHex dump of section '%s':\n"), SECTION_NAME (section)); - - addr = section->sh_addr; - - start = get_data (NULL, file, section->sh_offset, bytes, _("section data")); - if (!start) - return 0; - - data = start; - - while (bytes) - { - int j; - int k; - int lbytes; - - lbytes = (bytes > 16 ? 16 : bytes); - - printf (" 0x%8.8lx ", (unsigned long) addr); - - switch (elf_header.e_ident[EI_DATA]) - { - default: - case ELFDATA2LSB: - for (j = 15; j >= 0; j --) - { - if (j < lbytes) - printf ("%2.2x", data[j]); - else - printf (" "); - - if (!(j & 0x3)) - printf (" "); - } - break; - - case ELFDATA2MSB: - for (j = 0; j < 16; j++) - { - if (j < lbytes) - printf ("%2.2x", data[j]); - else - printf (" "); - - if ((j & 3) == 3) - printf (" "); - } - break; - } - - 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); - - return 1; -} - - -static unsigned long int -read_leb128 (unsigned char *data, int *length_return, int sign) -{ - unsigned long int result = 0; - unsigned int num_read = 0; - int shift = 0; - unsigned char byte; - - do - { - byte = *data++; - num_read++; - - result |= (byte & 0x7f) << shift; - - shift += 7; - - } - while (byte & 0x80); - - if (length_return != NULL) - *length_return = num_read; - - if (sign && (shift < 32) && (byte & 0x40)) - result |= -1 << shift; - - return result; -} - -typedef struct State_Machine_Registers -{ - unsigned long address; - unsigned int file; - unsigned int line; - unsigned int column; - int is_stmt; - int basic_block; - int 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.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 true if this is the end - of sequence. */ -static int -process_extended_line_op (unsigned char *data, int is_stmt, int pointer_size) -{ - unsigned char op_code; - int bytes_read; - unsigned int len; - unsigned char *name; - unsigned long adr; - - len = read_leb128 (data, & bytes_read, 0); - data += bytes_read; - - if (len == 0) - { - 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: - adr = byte_get (data, pointer_size); - printf (_("set Address to 0x%lx\n"), adr); - state_machine_regs.address = adr; - 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 += strlen ((char *) data) + 1; - printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0)); - data += bytes_read; - printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0)); - data += bytes_read; - printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0)); - printf (_("%s\n\n"), name); - break; - - default: - printf (_("UNKNOWN: length %d\n"), len - bytes_read); - break; - } - - return len; -} - -/* Finds section NAME inside FILE and returns a - pointer to it, or NULL upon failure. */ - -static Elf_Internal_Shdr * -find_section (const char * name) -{ - Elf_Internal_Shdr *sec; - unsigned int i; - - for (i = elf_header.e_shnum, sec = section_headers + i - 1; - i; --i, --sec) - if (strcmp (SECTION_NAME (sec), name) == 0) - break; - - if (i && sec && sec->sh_size != 0) - return sec; - - return NULL; -} - -/* Size of pointers in the .debug_line section. This information is not - really present in that section. It's obtained before dumping the debug - sections by doing some pre-scan of the .debug_info section. */ -static unsigned int * debug_line_pointer_sizes = NULL; -static unsigned int num_debug_line_pointer_sizes = 0; - -/* Locate and scan the .debug_info section in the file and record the pointer - sizes 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 -get_debug_line_pointer_sizes (FILE * file) -{ - Elf_Internal_Shdr * section; - unsigned char * start; - unsigned char * end; - unsigned char * begin; - unsigned long length; - unsigned int num_units; - unsigned int unit; - - section = find_section (".debug_info"); - if (section == NULL) - return 0; - - length = section->sh_size; - start = get_data (NULL, file, section->sh_offset, section->sh_size, - _("extracting pointer sizes from .debug_info section")); - if (start == NULL) - return 0; - - end = start + section->sh_size; - /* First scan the section to get the number of comp units. */ - for (begin = start, num_units = 0; 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. */ - length = byte_get (begin, 4); - - if (length == 0xffffffff) - { - length = byte_get (begin + 4, 8); - begin += length + 12; - } - else - begin += length + 4; - } - - if (num_units == 0) - { - error (_("No comp units in .debug_info section ?")); - free (start); - return 0; - } - - /* Then allocate an array to hold the pointer sizes. */ - debug_line_pointer_sizes = malloc (num_units * sizeof * debug_line_pointer_sizes); - if (debug_line_pointer_sizes == NULL) - { - error (_("Not enough memory for a pointer size array of %u entries"), - num_units); - free (start); - return 0; - } - - /* Populate the array. */ - for (begin = start, unit = 0; begin < end; unit++) - { - length = byte_get (begin, 4); - if (length == 0xffffffff) - { - /* For 64-bit DWARF, the 1-byte address_size field is 22 bytes - from the start of the section. This is computed as follows: - - unit_length: 12 bytes - version: 2 bytes - debug_abbrev_offset: 8 bytes - ----------------------------- - Total: 22 bytes */ - - debug_line_pointer_sizes [unit] = byte_get (begin + 22, 1); - length = byte_get (begin + 4, 8); - begin += length + 12; - } - else - { - /* For 32-bit DWARF, the 1-byte address_size field is 10 bytes from - the start of the section: - - unit_length: 4 bytes - version: 2 bytes - debug_abbrev_offset: 4 bytes - ----------------------------- - Total: 10 bytes */ - - debug_line_pointer_sizes [unit] = byte_get (begin + 10, 1); - begin += length + 4; - } - } - - free (start); - num_debug_line_pointer_sizes = num_units; - return num_units; -} - -static int -display_debug_lines (Elf_Internal_Shdr *section, - unsigned char *start, FILE *file) -{ - unsigned char *hdrptr; - DWARF2_Internal_LineInfo info; - unsigned char *standard_opcodes; - unsigned char *data = start; - unsigned char *end = start + section->sh_size; - unsigned char *end_of_sequence; - int i; - int offset_size; - int initial_length_size; - unsigned int comp_unit = 0; - - printf (_("\nDump of debug contents of section %s:\n\n"), - SECTION_NAME (section)); - - if (num_debug_line_pointer_sizes == 0) - get_debug_line_pointer_sizes (file); - - while (data < end) - { - unsigned int pointer_size; - - hdrptr = data; - - /* Check the length of the block. */ - info.li_length = byte_get (hdrptr, 4); - hdrptr += 4; - - if (info.li_length == 0xffffffff) - { - /* This section is 64-bit DWARF 3. */ - info.li_length = byte_get (hdrptr, 8); - hdrptr += 8; - offset_size = 8; - initial_length_size = 12; - } - else - { - offset_size = 4; - initial_length_size = 4; - } - - if (info.li_length + initial_length_size > section->sh_size) - { - warn - (_("The line info appears to be corrupt - the section is too small\n")); - return 0; - } - - /* Check its version number. */ - info.li_version = byte_get (hdrptr, 2); - hdrptr += 2; - if (info.li_version != 2 && info.li_version != 3) - { - warn (_("Only DWARF version 2 and 3 line info is currently supported.\n")); - return 0; - } - - info.li_prologue_length = byte_get (hdrptr, offset_size); - hdrptr += offset_size; - info.li_min_insn_length = byte_get (hdrptr, 1); - hdrptr++; - info.li_default_is_stmt = byte_get (hdrptr, 1); - hdrptr++; - info.li_line_base = byte_get (hdrptr, 1); - hdrptr++; - info.li_line_range = byte_get (hdrptr, 1); - hdrptr++; - info.li_opcode_base = byte_get (hdrptr, 1); - hdrptr++; - - /* Sign extend the line base field. */ - info.li_line_base <<= 24; - info.li_line_base >>= 24; - - /* Get the pointer size from the comp unit associated - with this block of line number information. */ - if (comp_unit >= num_debug_line_pointer_sizes) - { - error (_("Not enough comp units for .debug_lines section\n")); - return 0; - } - else - { - pointer_size = debug_line_pointer_sizes [comp_unit]; - comp_unit ++; - } - - printf (_(" Length: %ld\n"), info.li_length); - printf (_(" DWARF Version: %d\n"), info.li_version); - printf (_(" Prologue Length: %d\n"), info.li_prologue_length); - printf (_(" Minimum Instruction Length: %d\n"), info.li_min_insn_length); - printf (_(" Initial value of 'is_stmt': %d\n"), info.li_default_is_stmt); - printf (_(" Line Base: %d\n"), info.li_line_base); - printf (_(" Line Range: %d\n"), info.li_line_range); - printf (_(" Opcode Base: %d\n"), info.li_opcode_base); - printf (_(" (Pointer size: %u)\n"), pointer_size); - - end_of_sequence = data + info.li_length + initial_length_size; - - reset_state_machine (info.li_default_is_stmt); - - /* Display the contents of the Opcodes table. */ - standard_opcodes = hdrptr; - - printf (_("\n Opcodes:\n")); - - for (i = 1; i < info.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 + info.li_opcode_base - 1; - - if (*data == 0) - printf (_("\n The Directory Table is empty.\n")); - else - { - printf (_("\n The Directory Table:\n")); - - while (*data != 0) - { - printf (_(" %s\n"), data); - - data += strlen ((char *) 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:\n")); - printf (_(" Entry\tDir\tTime\tSize\tName\n")); - - while (*data != 0) - { - unsigned char *name; - int bytes_read; - - printf (_(" %d\t"), ++state_machine_regs.last_file_entry); - name = data; - - data += strlen ((char *) data) + 1; - - printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0)); - data += bytes_read; - printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0)); - data += bytes_read; - printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0)); - data += bytes_read; - printf (_("%s\n"), name); - } - } - - /* Skip the NUL at the end of the table. */ - data++; - - /* Now display the statements. */ - printf (_("\n Line Number Statements:\n")); - - - while (data < end_of_sequence) - { - unsigned char op_code; - int adv; - int bytes_read; - - op_code = *data++; - - if (op_code >= info.li_opcode_base) - { - op_code -= info.li_opcode_base; - adv = (op_code / info.li_line_range) * info.li_min_insn_length; - state_machine_regs.address += adv; - printf (_(" Special opcode %d: advance Address by %d to 0x%lx"), - op_code, adv, state_machine_regs.address); - adv = (op_code % info.li_line_range) + info.li_line_base; - state_machine_regs.line += adv; - printf (_(" and Line by %d to %d\n"), - adv, state_machine_regs.line); - } - else switch (op_code) - { - case DW_LNS_extended_op: - data += process_extended_line_op (data, info.li_default_is_stmt, - pointer_size); - break; - - case DW_LNS_copy: - printf (_(" Copy\n")); - break; - - case DW_LNS_advance_pc: - adv = info.li_min_insn_length * read_leb128 (data, & bytes_read, 0); - data += bytes_read; - state_machine_regs.address += adv; - printf (_(" Advance PC by %d to %lx\n"), adv, - state_machine_regs.address); - break; - - case DW_LNS_advance_line: - adv = read_leb128 (data, & bytes_read, 1); - data += bytes_read; - state_machine_regs.line += adv; - printf (_(" Advance Line by %d to %d\n"), adv, - state_machine_regs.line); - break; - - case DW_LNS_set_file: - adv = read_leb128 (data, & bytes_read, 0); - data += bytes_read; - printf (_(" Set File Name to entry %d in the File Name Table\n"), - adv); - state_machine_regs.file = adv; - break; - - case DW_LNS_set_column: - adv = read_leb128 (data, & bytes_read, 0); - data += bytes_read; - printf (_(" Set column to %d\n"), adv); - state_machine_regs.column = adv; - break; - - case DW_LNS_negate_stmt: - adv = state_machine_regs.is_stmt; - adv = ! adv; - printf (_(" Set is_stmt to %d\n"), 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: - adv = (((255 - info.li_opcode_base) / info.li_line_range) - * info.li_min_insn_length); - state_machine_regs.address += adv; - printf (_(" Advance PC by constant %d to 0x%lx\n"), adv, - state_machine_regs.address); - break; - - case DW_LNS_fixed_advance_pc: - adv = byte_get (data, 2); - data += 2; - state_machine_regs.address += adv; - printf (_(" Advance PC by fixed size amount %d to 0x%lx\n"), - adv, 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: - adv = read_leb128 (data, & bytes_read, 0); - data += bytes_read; - printf (_(" Set ISA to %d\n"), adv); - break; - - default: - printf (_(" Unknown opcode %d with operands: "), op_code); - { - int i; - for (i = standard_opcodes[op_code - 1]; i > 0 ; --i) - { - printf ("0x%lx%s", read_leb128 (data, &bytes_read, 0), - i == 1 ? "" : ", "); - data += bytes_read; - } - putchar ('\n'); - } - break; - } - } - putchar ('\n'); - } - - return 1; -} - -static int -display_debug_pubnames (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - DWARF2_Internal_PubNames pubnames; - unsigned char *end; - - end = start + section->sh_size; - - printf (_("Contents of the %s section:\n\n"), SECTION_NAME (section)); - - while (start < end) - { - unsigned char *data; - unsigned long offset; - int offset_size, initial_length_size; - - data = start; - - pubnames.pn_length = byte_get (data, 4); - data += 4; - if (pubnames.pn_length == 0xffffffff) - { - pubnames.pn_length = byte_get (data, 8); - data += 8; - offset_size = 8; - initial_length_size = 12; - } - else - { - offset_size = 4; - initial_length_size = 4; - } - - pubnames.pn_version = byte_get (data, 2); - data += 2; - pubnames.pn_offset = byte_get (data, offset_size); - data += offset_size; - pubnames.pn_size = byte_get (data, offset_size); - data += offset_size; - - start += pubnames.pn_length + initial_length_size; - - if (pubnames.pn_version != 2 && pubnames.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"), - pubnames.pn_length); - printf (_(" Version: %d\n"), - pubnames.pn_version); - printf (_(" Offset into .debug_info section: %ld\n"), - pubnames.pn_offset); - printf (_(" Size of area in .debug_info section: %ld\n"), - pubnames.pn_size); - - printf (_("\n Offset\tName\n")); - - do - { - offset = byte_get (data, offset_size); - - if (offset != 0) - { - data += offset_size; - printf (" %ld\t\t%s\n", offset, data); - data += strlen ((char *) data) + 1; - } - } - while (offset != 0); - } - - printf ("\n"); - return 1; -} - -static char * -get_TAG_name (unsigned long tag) -{ - switch (tag) - { - case DW_TAG_padding: return "DW_TAG_padding"; - case DW_TAG_array_type: return "DW_TAG_array_type"; - case DW_TAG_class_type: return "DW_TAG_class_type"; - case DW_TAG_entry_point: return "DW_TAG_entry_point"; - case DW_TAG_enumeration_type: return "DW_TAG_enumeration_type"; - case DW_TAG_formal_parameter: return "DW_TAG_formal_parameter"; - case DW_TAG_imported_declaration: return "DW_TAG_imported_declaration"; - case DW_TAG_label: return "DW_TAG_label"; - case DW_TAG_lexical_block: return "DW_TAG_lexical_block"; - case DW_TAG_member: return "DW_TAG_member"; - case DW_TAG_pointer_type: return "DW_TAG_pointer_type"; - case DW_TAG_reference_type: return "DW_TAG_reference_type"; - case DW_TAG_compile_unit: return "DW_TAG_compile_unit"; - case DW_TAG_string_type: return "DW_TAG_string_type"; - case DW_TAG_structure_type: return "DW_TAG_structure_type"; - case DW_TAG_subroutine_type: return "DW_TAG_subroutine_type"; - case DW_TAG_typedef: return "DW_TAG_typedef"; - case DW_TAG_union_type: return "DW_TAG_union_type"; - case DW_TAG_unspecified_parameters: return "DW_TAG_unspecified_parameters"; - case DW_TAG_variant: return "DW_TAG_variant"; - case DW_TAG_common_block: return "DW_TAG_common_block"; - case DW_TAG_common_inclusion: return "DW_TAG_common_inclusion"; - case DW_TAG_inheritance: return "DW_TAG_inheritance"; - case DW_TAG_inlined_subroutine: return "DW_TAG_inlined_subroutine"; - case DW_TAG_module: return "DW_TAG_module"; - case DW_TAG_ptr_to_member_type: return "DW_TAG_ptr_to_member_type"; - case DW_TAG_set_type: return "DW_TAG_set_type"; - case DW_TAG_subrange_type: return "DW_TAG_subrange_type"; - case DW_TAG_with_stmt: return "DW_TAG_with_stmt"; - case DW_TAG_access_declaration: return "DW_TAG_access_declaration"; - case DW_TAG_base_type: return "DW_TAG_base_type"; - case DW_TAG_catch_block: return "DW_TAG_catch_block"; - case DW_TAG_const_type: return "DW_TAG_const_type"; - case DW_TAG_constant: return "DW_TAG_constant"; - case DW_TAG_enumerator: return "DW_TAG_enumerator"; - case DW_TAG_file_type: return "DW_TAG_file_type"; - case DW_TAG_friend: return "DW_TAG_friend"; - case DW_TAG_namelist: return "DW_TAG_namelist"; - case DW_TAG_namelist_item: return "DW_TAG_namelist_item"; - case DW_TAG_packed_type: return "DW_TAG_packed_type"; - case DW_TAG_subprogram: return "DW_TAG_subprogram"; - case DW_TAG_template_type_param: return "DW_TAG_template_type_param"; - case DW_TAG_template_value_param: return "DW_TAG_template_value_param"; - case DW_TAG_thrown_type: return "DW_TAG_thrown_type"; - case DW_TAG_try_block: return "DW_TAG_try_block"; - case DW_TAG_variant_part: return "DW_TAG_variant_part"; - case DW_TAG_variable: return "DW_TAG_variable"; - case DW_TAG_volatile_type: return "DW_TAG_volatile_type"; - case DW_TAG_MIPS_loop: return "DW_TAG_MIPS_loop"; - case DW_TAG_format_label: return "DW_TAG_format_label"; - case DW_TAG_function_template: return "DW_TAG_function_template"; - case DW_TAG_class_template: return "DW_TAG_class_template"; - /* DWARF 2.1 values. */ - case DW_TAG_dwarf_procedure: return "DW_TAG_dwarf_procedure"; - case DW_TAG_restrict_type: return "DW_TAG_restrict_type"; - case DW_TAG_interface_type: return "DW_TAG_interface_type"; - case DW_TAG_namespace: return "DW_TAG_namespace"; - case DW_TAG_imported_module: return "DW_TAG_imported_module"; - case DW_TAG_unspecified_type: return "DW_TAG_unspecified_type"; - case DW_TAG_partial_unit: return "DW_TAG_partial_unit"; - case DW_TAG_imported_unit: return "DW_TAG_imported_unit"; - /* UPC values. */ - case DW_TAG_upc_shared_type: return "DW_TAG_upc_shared_type"; - case DW_TAG_upc_strict_type: return "DW_TAG_upc_strict_type"; - case DW_TAG_upc_relaxed_type: return "DW_TAG_upc_relaxed_type"; - default: - { - static char buffer[100]; - - sprintf (buffer, _("Unknown TAG value: %lx"), tag); - return buffer; - } - } -} - -static char * -get_AT_name (unsigned long attribute) -{ - switch (attribute) - { - case DW_AT_sibling: return "DW_AT_sibling"; - case DW_AT_location: return "DW_AT_location"; - case DW_AT_name: return "DW_AT_name"; - case DW_AT_ordering: return "DW_AT_ordering"; - case DW_AT_subscr_data: return "DW_AT_subscr_data"; - case DW_AT_byte_size: return "DW_AT_byte_size"; - case DW_AT_bit_offset: return "DW_AT_bit_offset"; - case DW_AT_bit_size: return "DW_AT_bit_size"; - case DW_AT_element_list: return "DW_AT_element_list"; - case DW_AT_stmt_list: return "DW_AT_stmt_list"; - case DW_AT_low_pc: return "DW_AT_low_pc"; - case DW_AT_high_pc: return "DW_AT_high_pc"; - case DW_AT_language: return "DW_AT_language"; - case DW_AT_member: return "DW_AT_member"; - case DW_AT_discr: return "DW_AT_discr"; - case DW_AT_discr_value: return "DW_AT_discr_value"; - case DW_AT_visibility: return "DW_AT_visibility"; - case DW_AT_import: return "DW_AT_import"; - case DW_AT_string_length: return "DW_AT_string_length"; - case DW_AT_common_reference: return "DW_AT_common_reference"; - case DW_AT_comp_dir: return "DW_AT_comp_dir"; - case DW_AT_const_value: return "DW_AT_const_value"; - case DW_AT_containing_type: return "DW_AT_containing_type"; - case DW_AT_default_value: return "DW_AT_default_value"; - case DW_AT_inline: return "DW_AT_inline"; - case DW_AT_is_optional: return "DW_AT_is_optional"; - case DW_AT_lower_bound: return "DW_AT_lower_bound"; - case DW_AT_producer: return "DW_AT_producer"; - case DW_AT_prototyped: return "DW_AT_prototyped"; - case DW_AT_return_addr: return "DW_AT_return_addr"; - case DW_AT_start_scope: return "DW_AT_start_scope"; - case DW_AT_stride_size: return "DW_AT_stride_size"; - case DW_AT_upper_bound: return "DW_AT_upper_bound"; - case DW_AT_abstract_origin: return "DW_AT_abstract_origin"; - case DW_AT_accessibility: return "DW_AT_accessibility"; - case DW_AT_address_class: return "DW_AT_address_class"; - case DW_AT_artificial: return "DW_AT_artificial"; - case DW_AT_base_types: return "DW_AT_base_types"; - case DW_AT_calling_convention: return "DW_AT_calling_convention"; - case DW_AT_count: return "DW_AT_count"; - case DW_AT_data_member_location: return "DW_AT_data_member_location"; - case DW_AT_decl_column: return "DW_AT_decl_column"; - case DW_AT_decl_file: return "DW_AT_decl_file"; - case DW_AT_decl_line: return "DW_AT_decl_line"; - case DW_AT_declaration: return "DW_AT_declaration"; - case DW_AT_discr_list: return "DW_AT_discr_list"; - case DW_AT_encoding: return "DW_AT_encoding"; - case DW_AT_external: return "DW_AT_external"; - case DW_AT_frame_base: return "DW_AT_frame_base"; - case DW_AT_friend: return "DW_AT_friend"; - case DW_AT_identifier_case: return "DW_AT_identifier_case"; - case DW_AT_macro_info: return "DW_AT_macro_info"; - case DW_AT_namelist_items: return "DW_AT_namelist_items"; - case DW_AT_priority: return "DW_AT_priority"; - case DW_AT_segment: return "DW_AT_segment"; - case DW_AT_specification: return "DW_AT_specification"; - case DW_AT_static_link: return "DW_AT_static_link"; - case DW_AT_type: return "DW_AT_type"; - case DW_AT_use_location: return "DW_AT_use_location"; - case DW_AT_variable_parameter: return "DW_AT_variable_parameter"; - case DW_AT_virtuality: return "DW_AT_virtuality"; - case DW_AT_vtable_elem_location: return "DW_AT_vtable_elem_location"; - /* DWARF 2.1 values. */ - case DW_AT_allocated: return "DW_AT_allocated"; - case DW_AT_associated: return "DW_AT_associated"; - case DW_AT_data_location: return "DW_AT_data_location"; - case DW_AT_stride: return "DW_AT_stride"; - case DW_AT_entry_pc: return "DW_AT_entry_pc"; - case DW_AT_use_UTF8: return "DW_AT_use_UTF8"; - case DW_AT_extension: return "DW_AT_extension"; - case DW_AT_ranges: return "DW_AT_ranges"; - case DW_AT_trampoline: return "DW_AT_trampoline"; - case DW_AT_call_column: return "DW_AT_call_column"; - case DW_AT_call_file: return "DW_AT_call_file"; - case DW_AT_call_line: return "DW_AT_call_line"; - /* SGI/MIPS extensions. */ - case DW_AT_MIPS_fde: return "DW_AT_MIPS_fde"; - case DW_AT_MIPS_loop_begin: return "DW_AT_MIPS_loop_begin"; - case DW_AT_MIPS_tail_loop_begin: return "DW_AT_MIPS_tail_loop_begin"; - case DW_AT_MIPS_epilog_begin: return "DW_AT_MIPS_epilog_begin"; - case DW_AT_MIPS_loop_unroll_factor: return "DW_AT_MIPS_loop_unroll_factor"; - case DW_AT_MIPS_software_pipeline_depth: - return "DW_AT_MIPS_software_pipeline_depth"; - case DW_AT_MIPS_linkage_name: return "DW_AT_MIPS_linkage_name"; - case DW_AT_MIPS_stride: return "DW_AT_MIPS_stride"; - case DW_AT_MIPS_abstract_name: return "DW_AT_MIPS_abstract_name"; - case DW_AT_MIPS_clone_origin: return "DW_AT_MIPS_clone_origin"; - case DW_AT_MIPS_has_inlines: return "DW_AT_MIPS_has_inlines"; - /* GNU extensions. */ - case DW_AT_sf_names: return "DW_AT_sf_names"; - case DW_AT_src_info: return "DW_AT_src_info"; - case DW_AT_mac_info: return "DW_AT_mac_info"; - case DW_AT_src_coords: return "DW_AT_src_coords"; - case DW_AT_body_begin: return "DW_AT_body_begin"; - case DW_AT_body_end: return "DW_AT_body_end"; - case DW_AT_GNU_vector: return "DW_AT_GNU_vector"; - /* UPC extension. */ - case DW_AT_upc_threads_scaled: return "DW_AT_upc_threads_scaled"; - default: - { - static char buffer[100]; - - sprintf (buffer, _("Unknown AT value: %lx"), attribute); - return buffer; - } - } -} - -static char * -get_FORM_name (unsigned long form) -{ - switch (form) - { - case DW_FORM_addr: return "DW_FORM_addr"; - case DW_FORM_block2: return "DW_FORM_block2"; - case DW_FORM_block4: return "DW_FORM_block4"; - case DW_FORM_data2: return "DW_FORM_data2"; - case DW_FORM_data4: return "DW_FORM_data4"; - case DW_FORM_data8: return "DW_FORM_data8"; - case DW_FORM_string: return "DW_FORM_string"; - case DW_FORM_block: return "DW_FORM_block"; - case DW_FORM_block1: return "DW_FORM_block1"; - case DW_FORM_data1: return "DW_FORM_data1"; - case DW_FORM_flag: return "DW_FORM_flag"; - case DW_FORM_sdata: return "DW_FORM_sdata"; - case DW_FORM_strp: return "DW_FORM_strp"; - case DW_FORM_udata: return "DW_FORM_udata"; - case DW_FORM_ref_addr: return "DW_FORM_ref_addr"; - case DW_FORM_ref1: return "DW_FORM_ref1"; - case DW_FORM_ref2: return "DW_FORM_ref2"; - case DW_FORM_ref4: return "DW_FORM_ref4"; - case DW_FORM_ref8: return "DW_FORM_ref8"; - case DW_FORM_ref_udata: return "DW_FORM_ref_udata"; - case DW_FORM_indirect: return "DW_FORM_indirect"; - default: - { - static char buffer[100]; - - sprintf (buffer, _("Unknown FORM value: %lx"), form); - return buffer; - } - } -} - -/* 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 *abbrev; - - for (abbrev = first_abbrev; abbrev;) - { - abbrev_entry *next = abbrev->next; - abbrev_attr *attr; - - for (attr = abbrev->first_attr; attr;) - { - abbrev_attr *next = attr->next; - - free (attr); - attr = next; - } - - free (abbrev); - abbrev = next; - } - - last_abbrev = first_abbrev = NULL; -} - -static void -add_abbrev (unsigned long number, unsigned long tag, int children) -{ - abbrev_entry *entry; - - 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 = 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) - { - int bytes_read; - unsigned long entry; - unsigned long tag; - unsigned long attribute; - int children; - - entry = read_leb128 (start, & bytes_read, 0); - 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 (entry == 0) - return start == end ? NULL : start; - - tag = read_leb128 (start, & bytes_read, 0); - start += bytes_read; - - children = *start++; - - add_abbrev (entry, tag, children); - - do - { - unsigned long form; - - attribute = read_leb128 (start, & bytes_read, 0); - start += bytes_read; - - form = read_leb128 (start, & bytes_read, 0); - start += bytes_read; - - if (attribute != 0) - add_abbrev_attr (attribute, form); - } - while (attribute != 0); - } - - return NULL; -} - - -static int -display_debug_macinfo (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - unsigned char *end = start + section->sh_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 (section)); - - while (curr < end) - { - unsigned int lineno; - const char *string; - - op = *curr; - curr++; - - switch (op) - { - case DW_MACINFO_start_file: - { - unsigned int filenum; - - lineno = read_leb128 (curr, & bytes_read, 0); - curr += bytes_read; - filenum = read_leb128 (curr, & bytes_read, 0); - 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_leb128 (curr, & bytes_read, 0); - curr += bytes_read; - string = curr; - curr += strlen (string) + 1; - printf (_(" DW_MACINFO_define - lineno : %d macro : %s\n"), lineno, string); - break; - - case DW_MACINFO_undef: - lineno = read_leb128 (curr, & bytes_read, 0); - curr += bytes_read; - string = curr; - curr += strlen (string) + 1; - printf (_(" DW_MACINFO_undef - lineno : %d macro : %s\n"), lineno, string); - break; - - case DW_MACINFO_vendor_ext: - { - unsigned int constant; - - constant = read_leb128 (curr, & bytes_read, 0); - curr += bytes_read; - string = curr; - curr += strlen (string) + 1; - printf (_(" DW_MACINFO_vendor_ext - constant : %d string : %s\n"), constant, string); - } - break; - } - } - - return 1; -} - - -static int -display_debug_abbrev (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - abbrev_entry *entry; - unsigned char *end = start + section->sh_size; - - printf (_("Contents of the %s section:\n\n"), SECTION_NAME (section)); - - do - { - start = process_abbrev_section (start, end); - - if (first_abbrev == NULL) - continue; - - printf (_(" Number TAG\n")); - - 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)); - } - } - - free_abbrevs (); - } - while (start); - - printf ("\n"); - - return 1; -} - - -static unsigned char * -display_block (unsigned char *data, unsigned long length) -{ - printf (_(" %lu byte block: "), length); - - while (length --) - printf ("%lx ", (unsigned long) byte_get (data++, 1)); - - return data; -} - -static void -decode_location_expression (unsigned char * data, - unsigned int pointer_size, - unsigned long length) -{ - unsigned op; - int bytes_read; - unsigned long uvalue; - unsigned char *end = data + length; - - while (data < end) - { - op = *data++; - - switch (op) - { - case DW_OP_addr: - printf ("DW_OP_addr: %lx", - (unsigned long) byte_get (data, pointer_size)); - data += pointer_size; - break; - case DW_OP_deref: - printf ("DW_OP_deref"); - break; - case DW_OP_const1u: - printf ("DW_OP_const1u: %lu", (unsigned long) byte_get (data++, 1)); - break; - case DW_OP_const1s: - printf ("DW_OP_const1s: %ld", (long) byte_get (data++, 1)); - break; - case DW_OP_const2u: - printf ("DW_OP_const2u: %lu", (unsigned long) byte_get (data, 2)); - data += 2; - break; - case DW_OP_const2s: - printf ("DW_OP_const2s: %ld", (long) byte_get (data, 2)); - data += 2; - break; - case DW_OP_const4u: - printf ("DW_OP_const4u: %lu", (unsigned long) byte_get (data, 4)); - data += 4; - break; - case DW_OP_const4s: - printf ("DW_OP_const4s: %ld", (long) byte_get (data, 4)); - data += 4; - break; - case DW_OP_const8u: - printf ("DW_OP_const8u: %lu %lu", (unsigned long) byte_get (data, 4), - (unsigned long) byte_get (data + 4, 4)); - data += 8; - break; - case DW_OP_const8s: - printf ("DW_OP_const8s: %ld %ld", (long) byte_get (data, 4), - (long) byte_get (data + 4, 4)); - data += 8; - break; - case DW_OP_constu: - printf ("DW_OP_constu: %lu", read_leb128 (data, &bytes_read, 0)); - data += bytes_read; - break; - case DW_OP_consts: - printf ("DW_OP_consts: %ld", read_leb128 (data, &bytes_read, 1)); - 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: - printf ("DW_OP_pick: %ld", (unsigned long) byte_get (data++, 1)); - 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: %lu", - read_leb128 (data, &bytes_read, 0)); - 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: - printf ("DW_OP_bra: %ld", (long) byte_get (data, 2)); - data += 2; - 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: - printf ("DW_OP_skip: %ld", (long) byte_get (data, 2)); - data += 2; - 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", op - DW_OP_reg0); - 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: %ld", op - DW_OP_breg0, - read_leb128 (data, &bytes_read, 1)); - data += bytes_read; - break; - - case DW_OP_regx: - printf ("DW_OP_regx: %lu", read_leb128 (data, &bytes_read, 0)); - data += bytes_read; - break; - case DW_OP_fbreg: - printf ("DW_OP_fbreg: %ld", read_leb128 (data, &bytes_read, 1)); - data += bytes_read; - break; - case DW_OP_bregx: - uvalue = read_leb128 (data, &bytes_read, 0); - data += bytes_read; - printf ("DW_OP_bregx: %lu %ld", uvalue, - read_leb128 (data, &bytes_read, 1)); - data += bytes_read; - break; - case DW_OP_piece: - printf ("DW_OP_piece: %lu", read_leb128 (data, &bytes_read, 0)); - data += bytes_read; - break; - case DW_OP_deref_size: - printf ("DW_OP_deref_size: %ld", (long) byte_get (data++, 1)); - break; - case DW_OP_xderef_size: - printf ("DW_OP_xderef_size: %ld", (long) byte_get (data++, 1)); - 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: - printf ("DW_OP_call2: <%lx>", (long) byte_get (data, 2)); - data += 2; - break; - case DW_OP_call4: - printf ("DW_OP_call4: <%lx>", (long) byte_get (data, 4)); - data += 4; - break; - case DW_OP_call_ref: - printf ("DW_OP_call_ref"); - break; - - /* GNU extensions. */ - case DW_OP_GNU_push_tls_address: - printf ("DW_OP_GNU_push_tls_address"); - 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; - } - - /* Separate the ops. */ - if (data < end) - printf ("; "); - } -} - -static const char *debug_loc_contents; -static bfd_vma debug_loc_size; - -static void -load_debug_loc (FILE *file) -{ - Elf_Internal_Shdr *sec; - - /* If it is already loaded, do nothing. */ - if (debug_loc_contents != NULL) - return; - - /* Locate the .debug_loc section. */ - sec = find_section (".debug_loc"); - if (sec == NULL) - return; - - debug_loc_size = sec->sh_size; - - debug_loc_contents = get_data (NULL, file, sec->sh_offset, sec->sh_size, - _("debug_loc section data")); -} - -static void -free_debug_loc (void) -{ - if (debug_loc_contents == NULL) - return; - - free ((char *) debug_loc_contents); - debug_loc_contents = NULL; - debug_loc_size = 0; -} - - -static int -display_debug_loc (Elf_Internal_Shdr *section, - unsigned char *start, FILE *file) -{ - unsigned char *section_end; - unsigned long bytes; - unsigned char *section_begin = start; - bfd_vma addr; - unsigned int comp_unit = 0; - - addr = section->sh_addr; - bytes = section->sh_size; - section_end = start + bytes; - - if (bytes == 0) - { - printf (_("\nThe .debug_loc section is empty.\n")); - return 0; - } - - if (num_debug_line_pointer_sizes == 0) - get_debug_line_pointer_sizes (file); - - printf (_("Contents of the .debug_loc section:\n\n")); - printf (_("\n Offset Begin End Expression\n")); - - while (start < section_end) - { - unsigned long begin; - unsigned long end; - unsigned short length; - unsigned long offset; - unsigned int pointer_size; - - offset = start - section_begin; - - /* Get the pointer size from the comp unit associated - with this block of location information. */ - if (comp_unit >= num_debug_line_pointer_sizes) - { - error (_("Not enough comp units for .debug_loc section\n")); - return 0; - } - else - { - pointer_size = debug_line_pointer_sizes [comp_unit]; - comp_unit ++; - } - - while (1) - { - begin = byte_get (start, pointer_size); - start += pointer_size; - end = byte_get (start, pointer_size); - start += pointer_size; - - if (begin == 0 && end == 0) - break; - - /* For now, skip any base address specifiers. */ - if (begin == 0xffffffff) - continue; - - begin += addr; - end += addr; - - length = byte_get (start, 2); - start += 2; - - printf (" %8.8lx %8.8lx %8.8lx (", offset, begin, end); - decode_location_expression (start, pointer_size, length); - printf (")\n"); - - start += length; - } - printf ("\n"); - } - return 1; -} - -static const char *debug_str_contents; -static bfd_vma debug_str_size; - -static void -load_debug_str (FILE *file) -{ - Elf_Internal_Shdr *sec; - - /* If it is already loaded, do nothing. */ - if (debug_str_contents != NULL) - return; - - /* Locate the .debug_str section. */ - sec = find_section (".debug_str"); - if (sec == NULL) - return; - - debug_str_size = sec->sh_size; - - debug_str_contents = get_data (NULL, file, sec->sh_offset, sec->sh_size, - _("debug_str section data")); -} - -static void -free_debug_str (void) -{ - if (debug_str_contents == NULL) - return; - - free ((char *) debug_str_contents); - debug_str_contents = NULL; - debug_str_size = 0; -} - -static const char * -fetch_indirect_string (unsigned long offset) -{ - if (debug_str_contents == NULL) - return _(""); - - if (offset > debug_str_size) - return _(""); - - return debug_str_contents + offset; -} - -static int -display_debug_str (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - unsigned long bytes; - bfd_vma addr; - - addr = section->sh_addr; - bytes = section->sh_size; - - if (bytes == 0) - { - printf (_("\nThe .debug_str section is empty.\n")); - return 0; - } - - printf (_("Contents of the .debug_str section:\n\n")); - - 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; - } - - return 1; -} - -static unsigned char * -read_and_display_attr_value (unsigned long attribute, - unsigned long form, - unsigned char *data, - unsigned long cu_offset, - unsigned long pointer_size, - unsigned long offset_size, - int dwarf_version) -{ - unsigned long uvalue = 0; - unsigned char *block_start = NULL; - int bytes_read; - - switch (form) - { - default: - break; - - case DW_FORM_ref_addr: - if (dwarf_version == 2) - { - uvalue = byte_get (data, pointer_size); - data += pointer_size; - } - else if (dwarf_version == 3) - { - uvalue = byte_get (data, offset_size); - data += offset_size; - } - else - { - error (_("Internal error: DWARF version is not 2 or 3.\n")); - } - break; - - case DW_FORM_addr: - uvalue = byte_get (data, pointer_size); - data += pointer_size; - break; - - case DW_FORM_strp: - uvalue = byte_get (data, offset_size); - data += offset_size; - break; - - case DW_FORM_ref1: - case DW_FORM_flag: - case DW_FORM_data1: - uvalue = byte_get (data++, 1); - break; - - case DW_FORM_ref2: - case DW_FORM_data2: - uvalue = byte_get (data, 2); - data += 2; - break; - - case DW_FORM_ref4: - case DW_FORM_data4: - uvalue = byte_get (data, 4); - data += 4; - break; - - case DW_FORM_sdata: - uvalue = read_leb128 (data, & bytes_read, 1); - data += bytes_read; - break; - - case DW_FORM_ref_udata: - case DW_FORM_udata: - uvalue = read_leb128 (data, & bytes_read, 0); - data += bytes_read; - break; - - case DW_FORM_indirect: - form = read_leb128 (data, & bytes_read, 0); - data += bytes_read; - printf (" %s", get_FORM_name (form)); - return read_and_display_attr_value (attribute, form, data, cu_offset, - pointer_size, offset_size, - dwarf_version); - } - - switch (form) - { - case DW_FORM_ref_addr: - printf (" <#%lx>", uvalue); - break; - - case DW_FORM_ref1: - case DW_FORM_ref2: - case DW_FORM_ref4: - case DW_FORM_ref_udata: - printf (" <%lx>", uvalue + cu_offset); - break; - - case DW_FORM_addr: - printf (" %#lx", uvalue); - - case DW_FORM_flag: - case DW_FORM_data1: - case DW_FORM_data2: - case DW_FORM_data4: - case DW_FORM_sdata: - case DW_FORM_udata: - printf (" %ld", uvalue); - break; - - case DW_FORM_ref8: - case DW_FORM_data8: - uvalue = byte_get (data, 4); - printf (" %lx", uvalue); - printf (" %lx", (unsigned long) byte_get (data + 4, 4)); - data += 8; - break; - - case DW_FORM_string: - printf (" %s", data); - data += strlen ((char *) data) + 1; - break; - - case DW_FORM_block: - uvalue = read_leb128 (data, & bytes_read, 0); - block_start = data + bytes_read; - data = display_block (block_start, uvalue); - break; - - case DW_FORM_block1: - uvalue = byte_get (data, 1); - block_start = data + 1; - data = display_block (block_start, uvalue); - break; - - case DW_FORM_block2: - uvalue = byte_get (data, 2); - block_start = data + 2; - data = display_block (block_start, uvalue); - break; - - case DW_FORM_block4: - uvalue = byte_get (data, 4); - block_start = data + 4; - data = display_block (block_start, uvalue); - break; - - case DW_FORM_strp: - printf (_(" (indirect string, offset: 0x%lx): %s"), - uvalue, fetch_indirect_string (uvalue)); - break; - - case DW_FORM_indirect: - /* Handled above. */ - break; - - default: - warn (_("Unrecognized form: %d\n"), form); - break; - } - - /* 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: %lx)"), uvalue); - break; - } - break; - - case DW_AT_language: - switch (uvalue) - { - case DW_LANG_C: printf ("(non-ANSI C)"); break; - case DW_LANG_C89: printf ("(ANSI C)"); break; - case DW_LANG_C_plus_plus: printf ("(C++)"); break; - case DW_LANG_Fortran77: printf ("(FORTRAN 77)"); break; - case DW_LANG_Fortran90: printf ("(Fortran 90)"); break; - case DW_LANG_Modula2: printf ("(Modula 2)"); break; - case DW_LANG_Pascal83: printf ("(ANSI Pascal)"); break; - case DW_LANG_Ada83: printf ("(Ada)"); break; - case DW_LANG_Cobol74: printf ("(Cobol 74)"); break; - case DW_LANG_Cobol85: printf ("(Cobol 85)"); break; - /* DWARF 2.1 values. */ - case DW_LANG_C99: printf ("(ANSI C99)"); break; - case DW_LANG_Ada95: printf ("(ADA 95)"); break; - case DW_LANG_Fortran95: printf ("(Fortran 95)"); break; - /* MIPS extension. */ - case DW_LANG_Mips_Assembler: printf ("(MIPS assembler)"); break; - /* UPC extension. */ - case DW_LANG_Upc: printf ("(Unified Parallel C)"); break; - default: - printf ("(Unknown: %lx)", 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 value. */ - case DW_ATE_imaginary_float: printf ("(imaginary float)"); 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: - case DW_AT_location: - case DW_AT_data_member_location: - case DW_AT_vtable_elem_location: - 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) - { - printf ("("); - decode_location_expression (block_start, pointer_size, uvalue); - printf (")"); - } - else if (form == DW_FORM_data4 || form == DW_FORM_data8) - { - printf ("("); - printf ("location list"); - printf (")"); - } - break; - - default: - break; - } - - return data; -} - -static unsigned char * -read_and_display_attr (unsigned long attribute, - unsigned long form, - unsigned char *data, - unsigned long cu_offset, - unsigned long pointer_size, - unsigned long offset_size, - int dwarf_version) -{ - printf (" %-18s:", get_AT_name (attribute)); - data = read_and_display_attr_value (attribute, form, data, cu_offset, - pointer_size, offset_size, dwarf_version); - printf ("\n"); - return data; -} - -static int -display_debug_info (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file) -{ - unsigned char *end = start + section->sh_size; - unsigned char *section_begin = start; - - printf (_("The section %s contains:\n\n"), SECTION_NAME (section)); - - load_debug_str (file); - load_debug_loc (file); - - while (start < end) - { - DWARF2_Internal_CompUnit compunit; - Elf_Internal_Shdr *relsec; - unsigned char *hdrptr; - unsigned char *cu_abbrev_offset_ptr; - unsigned char *tags; - int level; - unsigned long cu_offset; - int offset_size; - int initial_length_size; - - hdrptr = start; - - compunit.cu_length = byte_get (hdrptr, 4); - hdrptr += 4; - - if (compunit.cu_length == 0xffffffff) - { - compunit.cu_length = byte_get (hdrptr, 8); - hdrptr += 8; - offset_size = 8; - initial_length_size = 12; - } - else - { - offset_size = 4; - initial_length_size = 4; - } - - compunit.cu_version = byte_get (hdrptr, 2); - hdrptr += 2; - - /* Apply addends of RELA relocations. */ - for (relsec = section_headers; - relsec < section_headers + elf_header.e_shnum; - ++relsec) - { - unsigned long nrelas; - Elf_Internal_Rela *rela, *rp; - Elf_Internal_Shdr *symsec; - Elf_Internal_Sym *symtab; - Elf_Internal_Sym *sym; - - if (relsec->sh_type != SHT_RELA - || SECTION_HEADER (relsec->sh_info) != section - || relsec->sh_size == 0) - continue; - - if (!slurp_rela_relocs (file, relsec->sh_offset, relsec->sh_size, - & rela, & nrelas)) - return 0; - - symsec = SECTION_HEADER (relsec->sh_link); - symtab = GET_ELF_SYMBOLS (file, symsec); - - for (rp = rela; rp < rela + nrelas; ++rp) - { - unsigned char *loc; - - if (rp->r_offset >= (bfd_vma) (hdrptr - section_begin) - && section->sh_size > (bfd_vma) offset_size - && rp->r_offset <= section->sh_size - offset_size) - loc = section_begin + rp->r_offset; - else - continue; - - if (is_32bit_elf) - { - sym = symtab + ELF32_R_SYM (rp->r_info); - - if (ELF32_R_SYM (rp->r_info) != 0 - && ELF32_ST_TYPE (sym->st_info) != STT_SECTION) - { - warn (_("Skipping unexpected symbol type %u\n"), - ELF32_ST_TYPE (sym->st_info)); - continue; - } - } - else - { - sym = symtab + ELF64_R_SYM (rp->r_info); - - if (ELF64_R_SYM (rp->r_info) != 0 - && ELF64_ST_TYPE (sym->st_info) != STT_SECTION) - { - warn (_("Skipping unexpected symbol type %u\n"), - ELF64_ST_TYPE (sym->st_info)); - continue; - } - } - - byte_put (loc, rp->r_addend, offset_size); - } - - free (rela); - break; - } - - cu_abbrev_offset_ptr = hdrptr; - compunit.cu_abbrev_offset = byte_get (hdrptr, offset_size); - hdrptr += offset_size; - - compunit.cu_pointer_size = byte_get (hdrptr, 1); - hdrptr += 1; - - tags = hdrptr; - cu_offset = start - section_begin; - start += compunit.cu_length + initial_length_size; - - printf (_(" Compilation Unit @ %lx:\n"), cu_offset); - printf (_(" Length: %ld\n"), compunit.cu_length); - printf (_(" Version: %d\n"), compunit.cu_version); - printf (_(" Abbrev Offset: %ld\n"), compunit.cu_abbrev_offset); - printf (_(" Pointer Size: %d\n"), compunit.cu_pointer_size); - - if (compunit.cu_version != 2 && compunit.cu_version != 3) - { - warn (_("Only version 2 and 3 DWARF debug information is currently supported.\n")); - continue; - } - - free_abbrevs (); - - /* Read in the abbrevs used by this compilation unit. */ - { - Elf_Internal_Shdr *sec; - unsigned char *begin; - - /* Locate the .debug_abbrev section and process it. */ - sec = find_section (".debug_abbrev"); - if (sec == NULL) - { - warn (_("Unable to locate .debug_abbrev section!\n")); - return 0; - } - - begin = get_data (NULL, file, sec->sh_offset, sec->sh_size, - _("debug_abbrev section data")); - if (!begin) - return 0; - - process_abbrev_section (begin + compunit.cu_abbrev_offset, - begin + sec->sh_size); - - free (begin); - } - - level = 0; - while (tags < start) - { - int bytes_read; - unsigned long abbrev_number; - abbrev_entry *entry; - abbrev_attr *attr; - - abbrev_number = read_leb128 (tags, & bytes_read, 0); - tags += bytes_read; - - /* A null DIE marks the end of a list of children. */ - if (abbrev_number == 0) - { - --level; - continue; - } - - /* 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) - { - warn (_("Unable to locate entry %lu in the abbreviation table\n"), - abbrev_number); - return 0; - } - - printf (_(" <%d><%lx>: Abbrev Number: %lu (%s)\n"), - level, - (unsigned long) (tags - section_begin - bytes_read), - abbrev_number, - get_TAG_name (entry->tag)); - - for (attr = entry->first_attr; attr; attr = attr->next) - tags = read_and_display_attr (attr->attribute, - attr->form, - tags, cu_offset, - compunit.cu_pointer_size, - offset_size, - compunit.cu_version); - - if (entry->children) - ++level; - } - } - - free_debug_str (); - free_debug_loc (); - - printf ("\n"); - - return 1; -} - -static int -display_debug_aranges (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - unsigned char *end = start + section->sh_size; - - printf (_("The section %s contains:\n\n"), SECTION_NAME (section)); - - while (start < end) - { - unsigned char *hdrptr; - DWARF2_Internal_ARange arange; - unsigned char *ranges; - unsigned long length; - unsigned long address; - int excess; - int offset_size; - int initial_length_size; - - hdrptr = start; - - arange.ar_length = byte_get (hdrptr, 4); - hdrptr += 4; - - if (arange.ar_length == 0xffffffff) - { - arange.ar_length = byte_get (hdrptr, 8); - hdrptr += 8; - offset_size = 8; - initial_length_size = 12; - } - else - { - offset_size = 4; - initial_length_size = 4; - } - - arange.ar_version = byte_get (hdrptr, 2); - hdrptr += 2; - - arange.ar_info_offset = byte_get (hdrptr, offset_size); - hdrptr += offset_size; - - arange.ar_pointer_size = byte_get (hdrptr, 1); - hdrptr += 1; - - arange.ar_segment_size = byte_get (hdrptr, 1); - hdrptr += 1; - - 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"), arange.ar_length); - printf (_(" Version: %d\n"), arange.ar_version); - printf (_(" Offset into .debug_info: %lx\n"), arange.ar_info_offset); - printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size); - printf (_(" Segment Size: %d\n"), arange.ar_segment_size); - - printf (_("\n Address Length\n")); - - ranges = hdrptr; - - /* Must pad to an alignment boundary that is twice the pointer size. */ - excess = (hdrptr - start) % (2 * arange.ar_pointer_size); - if (excess) - ranges += (2 * arange.ar_pointer_size) - excess; - - for (;;) - { - address = byte_get (ranges, arange.ar_pointer_size); - - ranges += arange.ar_pointer_size; - - length = byte_get (ranges, arange.ar_pointer_size); - - ranges += arange.ar_pointer_size; - - /* A pair of zeros marks the end of the list. */ - if (address == 0 && length == 0) - break; - - printf (" %8.8lx %lu\n", address, length); - } - - start += arange.ar_length + initial_length_size; - } - - printf ("\n"); - - 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; - unsigned long pc_begin; - unsigned long pc_range; - int cfa_reg; - int cfa_offset; - int ra; - unsigned char fde_encoding; - unsigned char cfa_exp; -} -Frame_Chunk; - -/* A marker for a col_type that means this column was never referenced - in the frame info. */ -#define DW_CFA_unreferenced (-1) - -static void -frame_need_space (Frame_Chunk *fc, int reg) -{ - int prev = fc->ncols; - - if (reg < fc->ncols) - return; - - fc->ncols = reg + 1; - fc->col_type = xrealloc (fc->col_type, fc->ncols * sizeof (short int)); - fc->col_offset = xrealloc (fc->col_offset, fc->ncols * sizeof (int)); - - while (prev < fc->ncols) - { - fc->col_type[prev] = DW_CFA_unreferenced; - fc->col_offset[prev] = 0; - prev++; - } -} - -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) - { - *need_col_headers = 0; - - printf (" LOC CFA "); - - for (r = 0; r < *max_regs; r++) - if (fc->col_type[r] != DW_CFA_unreferenced) - { - if (r == fc->ra) - printf ("ra "); - else - printf ("r%-4d", r); - } - - printf ("\n"); - } - - printf ("%08lx ", fc->pc_begin); - if (fc->cfa_exp) - strcpy (tmp, "exp"); - else - sprintf (tmp, "r%d%+d", fc->cfa_reg, 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_register: - sprintf (tmp, "r%d", fc->col_offset[r]); - break; - case DW_CFA_expression: - strcpy (tmp, "exp"); - break; - default: - strcpy (tmp, "n/a"); - break; - } - printf ("%-5s", tmp); - } - } - printf ("\n"); -} - -static int -size_of_encoded_value (int encoding) -{ - switch (encoding & 0x7) - { - default: /* ??? */ - case 0: return is_32bit_elf ? 4 : 8; - case 2: return 2; - case 3: return 4; - case 4: return 8; - } -} - -static bfd_vma -get_encoded_value (unsigned char *data, int encoding) -{ - int size = size_of_encoded_value (encoding); - if (encoding & DW_EH_PE_signed) - return byte_get_signed (data, size); - else - return byte_get (data, size); -} - -#define GET(N) byte_get (start, N); start += N -#define LEB() read_leb128 (start, & length_return, 0); start += length_return -#define SLEB() read_leb128 (start, & length_return, 1); start += length_return - -static int -display_debug_frames (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - unsigned char *end = start + section->sh_size; - unsigned char *section_start = start; - Frame_Chunk *chunks = 0; - Frame_Chunk *remembered_state = 0; - Frame_Chunk *rs; - int is_eh = (strcmp (SECTION_NAME (section), ".eh_frame") == 0); - int length_return; - int max_regs = 0; - int addr_size = is_32bit_elf ? 4 : 8; - - printf (_("The section %s contains:\n"), SECTION_NAME (section)); - - while (start < end) - { - unsigned char *saved_start; - unsigned char *block_end; - unsigned long length; - unsigned long cie_id; - Frame_Chunk *fc; - Frame_Chunk *cie; - int need_col_headers = 1; - unsigned char *augmentation_data = NULL; - unsigned long augmentation_data_len = 0; - int encoded_ptr_size = addr_size; - int offset_size; - int initial_length_size; - - saved_start = start; - length = byte_get (start, 4); start += 4; - - if (length == 0) - { - printf ("\n%08lx ZERO terminator\n\n", - (unsigned long)(saved_start - section_start)); - return 1; - } - - if (length == 0xffffffff) - { - length = byte_get (start, 8); - start += 8; - offset_size = 8; - initial_length_size = 12; - } - else - { - offset_size = 4; - initial_length_size = 4; - } - - block_end = saved_start + length + initial_length_size; - cie_id = byte_get (start, offset_size); start += offset_size; - - if (is_eh ? (cie_id == 0) : (cie_id == DW_CIE_ID)) - { - int version; - - fc = 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 = xmalloc (sizeof (short int)); - fc->col_offset = xmalloc (sizeof (int)); - frame_need_space (fc, max_regs-1); - - version = *start++; - - fc->augmentation = start; - start = strchr (start, '\0') + 1; - - if (fc->augmentation[0] == 'z') - { - fc->code_factor = LEB (); - fc->data_factor = SLEB (); - fc->ra = byte_get (start, 1); start += 1; - augmentation_data_len = LEB (); - augmentation_data = start; - start += augmentation_data_len; - } - else if (strcmp (fc->augmentation, "eh") == 0) - { - start += addr_size; - fc->code_factor = LEB (); - fc->data_factor = SLEB (); - fc->ra = byte_get (start, 1); start += 1; - } - else - { - fc->code_factor = LEB (); - fc->data_factor = SLEB (); - fc->ra = byte_get (start, 1); start += 1; - } - cie = fc; - - if (do_debug_frames_interp) - printf ("\n%08lx %08lx %08lx CIE \"%s\" cf=%d df=%d ra=%d\n", - (unsigned long)(saved_start - section_start), length, cie_id, - fc->augmentation, fc->code_factor, fc->data_factor, - fc->ra); - else - { - printf ("\n%08lx %08lx %08lx CIE\n", - (unsigned long)(saved_start - section_start), length, cie_id); - printf (" Version: %d\n", version); - printf (" Augmentation: \"%s\"\n", fc->augmentation); - 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 = 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 - 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; - - 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 %08lx in FDE at %08lx\n", - cie_id, saved_start); - start = block_end; - fc->ncols = 0; - fc->col_type = xmalloc (sizeof (short int)); - fc->col_offset = xmalloc (sizeof (int)); - frame_need_space (fc, max_regs - 1); - cie = fc; - fc->augmentation = ""; - fc->fde_encoding = 0; - } - else - { - fc->ncols = cie->ncols; - fc->col_type = xmalloc (fc->ncols * sizeof (short int)); - fc->col_offset = xmalloc (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->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); - - fc->pc_begin = get_encoded_value (start, fc->fde_encoding); - if ((fc->fde_encoding & 0x70) == DW_EH_PE_pcrel) - fc->pc_begin += section->sh_addr + (start - section_start); - start += encoded_ptr_size; - fc->pc_range = byte_get (start, encoded_ptr_size); - start += encoded_ptr_size; - - if (cie->augmentation[0] == 'z') - { - augmentation_data_len = LEB (); - augmentation_data = start; - start += augmentation_data_len; - } - - printf ("\n%08lx %08lx %08lx FDE cie=%08lx pc=%08lx..%08lx\n", - (unsigned long)(saved_start - section_start), length, cie_id, - (unsigned long)(cie->chunk_start - section_start), - fc->pc_begin, fc->pc_begin + fc->pc_range); - 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, tmp; - - 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 (); - frame_need_space (fc, opa); - fc->col_type[opa] = DW_CFA_undefined; - break; - case DW_CFA_restore: - frame_need_space (fc, opa); - 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: - reg = LEB (); LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_restore_extended: - reg = LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_undefined: - reg = LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_same_value: - reg = LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_register: - reg = LEB (); LEB (); - frame_need_space (fc, reg); - 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: - tmp = LEB (); - start += tmp; - break; - case DW_CFA_expression: - reg = LEB (); - tmp = LEB (); - start += tmp; - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_offset_extended_sf: - reg = LEB (); SLEB (); - frame_need_space (fc, reg); - 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 (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - - 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, ofs; - bfd_vma vma; - - 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 %08lx\n", - opa * fc->code_factor, - fc->pc_begin + opa * fc->code_factor); - fc->pc_begin += opa * fc->code_factor; - break; - - case DW_CFA_offset: - roffs = LEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_offset: r%d at cfa%+ld\n", - opa, roffs * fc->data_factor); - fc->col_type[opa] = DW_CFA_offset; - fc->col_offset[opa] = roffs * fc->data_factor; - break; - - case DW_CFA_restore: - if (! do_debug_frames_interp) - printf (" DW_CFA_restore: r%d\n", opa); - fc->col_type[opa] = cie->col_type[opa]; - fc->col_offset[opa] = cie->col_offset[opa]; - break; - - case DW_CFA_set_loc: - vma = get_encoded_value (start, fc->fde_encoding); - if ((fc->fde_encoding & 0x70) == DW_EH_PE_pcrel) - vma += section->sh_addr + (start - section_start); - start += encoded_ptr_size; - if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); - else - printf (" DW_CFA_set_loc: %08lx\n", (unsigned long)vma); - fc->pc_begin = vma; - break; - - case DW_CFA_advance_loc1: - ofs = byte_get (start, 1); start += 1; - if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); - else - printf (" DW_CFA_advance_loc1: %ld to %08lx\n", - ofs * fc->code_factor, - fc->pc_begin + ofs * fc->code_factor); - fc->pc_begin += ofs * fc->code_factor; - break; - - case DW_CFA_advance_loc2: - ofs = byte_get (start, 2); start += 2; - if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); - else - printf (" DW_CFA_advance_loc2: %ld to %08lx\n", - ofs * fc->code_factor, - fc->pc_begin + ofs * fc->code_factor); - fc->pc_begin += ofs * fc->code_factor; - break; - - case DW_CFA_advance_loc4: - ofs = byte_get (start, 4); start += 4; - if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); - else - printf (" DW_CFA_advance_loc4: %ld to %08lx\n", - ofs * fc->code_factor, - fc->pc_begin + ofs * fc->code_factor); - fc->pc_begin += ofs * fc->code_factor; - break; - - case DW_CFA_offset_extended: - reg = LEB (); - roffs = LEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_offset_extended: r%ld at cfa%+ld\n", - reg, roffs * fc->data_factor); - fc->col_type[reg] = DW_CFA_offset; - fc->col_offset[reg] = roffs * fc->data_factor; - break; - - case DW_CFA_restore_extended: - reg = LEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_restore_extended: r%ld\n", reg); - fc->col_type[reg] = cie->col_type[reg]; - fc->col_offset[reg] = cie->col_offset[reg]; - break; - - case DW_CFA_undefined: - reg = LEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_undefined: r%ld\n", reg); - fc->col_type[reg] = DW_CFA_undefined; - fc->col_offset[reg] = 0; - break; - - case DW_CFA_same_value: - reg = LEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_same_value: r%ld\n", reg); - fc->col_type[reg] = DW_CFA_same_value; - fc->col_offset[reg] = 0; - break; - - case DW_CFA_register: - reg = LEB (); - roffs = LEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_register: r%ld in r%ld\n", reg, roffs); - 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 = xmalloc (sizeof (Frame_Chunk)); - rs->ncols = fc->ncols; - rs->col_type = xmalloc (rs->ncols * sizeof (short int)); - rs->col_offset = xmalloc (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; - 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); - 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: r%d ofs %d\n", - fc->cfa_reg, 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_reg: r%d\n", fc->cfa_reg); - 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, addr_size, ul); - printf (")\n"); - } - fc->cfa_exp = 1; - start += ul; - break; - - case DW_CFA_expression: - reg = LEB (); - ul = LEB (); - if (! do_debug_frames_interp) - { - printf (" DW_CFA_expression: r%ld (", reg); - decode_location_expression (start, addr_size, ul); - printf (")\n"); - } - fc->col_type[reg] = DW_CFA_expression; - start += ul; - break; - - case DW_CFA_offset_extended_sf: - reg = LEB (); - l = SLEB (); - frame_need_space (fc, reg); - if (! do_debug_frames_interp) - printf (" DW_CFA_offset_extended_sf: r%ld at cfa%+ld\n", - reg, l * fc->data_factor); - fc->col_type[reg] = DW_CFA_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_exp = 0; - if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_sf: r%d ofs %d\n", - fc->cfa_reg, fc->cfa_offset); - break; - - case DW_CFA_def_cfa_offset_sf: - fc->cfa_offset = SLEB (); - if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_offset_sf: %d\n", fc->cfa_offset); - break; - - case DW_CFA_MIPS_advance_loc8: - ofs = byte_get (start, 8); start += 8; - if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); - else - printf (" DW_CFA_MIPS_advance_loc8: %ld to %08lx\n", - ofs * fc->code_factor, - fc->pc_begin + ofs * fc->code_factor); - 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 (); - frame_need_space (fc, reg); - if (! do_debug_frames_interp) - printf (" DW_CFA_GNU_negative_offset_extended: r%ld at cfa%+ld\n", - reg, l * fc->data_factor); - fc->col_type[reg] = DW_CFA_offset; - fc->col_offset[reg] = l * fc->data_factor; - break; - - default: - fprintf (stderr, "unsupported or unknown DW_CFA_%d\n", op); - start = block_end; - } - } - - if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); - - start = block_end; - } - - printf ("\n"); - - return 1; -} - -#undef GET -#undef LEB -#undef SLEB - -static int -display_debug_not_supported (Elf_Internal_Shdr *section, - unsigned char *start ATTRIBUTE_UNUSED, - FILE *file ATTRIBUTE_UNUSED) -{ - printf (_("Displaying the debug contents of section %s is not yet supported.\n"), - SECTION_NAME (section)); - - return 1; -} - -/* A structure containing the name of a debug section - and a pointer to a function that can decode it. */ -struct -{ - const char *const name; - int (*display) (Elf_Internal_Shdr *, unsigned char *, FILE *); -} -debug_displays[] = -{ - { ".debug_abbrev", display_debug_abbrev }, - { ".debug_aranges", display_debug_aranges }, - { ".debug_frame", display_debug_frames }, - { ".debug_info", display_debug_info }, - { ".debug_line", display_debug_lines }, - { ".debug_pubnames", display_debug_pubnames }, - { ".eh_frame", display_debug_frames }, - { ".debug_macinfo", display_debug_macinfo }, - { ".debug_str", display_debug_str }, - { ".debug_loc", display_debug_loc }, - { ".debug_pubtypes", display_debug_not_supported }, - { ".debug_ranges", display_debug_not_supported }, - { ".debug_static_func", display_debug_not_supported }, - { ".debug_static_vars", display_debug_not_supported }, - { ".debug_types", display_debug_not_supported }, - { ".debug_weaknames", display_debug_not_supported } -}; - -static int -display_debug_section (Elf_Internal_Shdr *section, FILE *file) -{ - char *name = SECTION_NAME (section); - bfd_size_type length; - unsigned char *start; - int i; - - length = section->sh_size; - if (length == 0) - { - printf (_("\nSection '%s' has no debugging data.\n"), name); - return 0; - } - - start = get_data (NULL, file, section->sh_offset, length, - _("debug section data")); - if (!start) - return 0; - - /* See if we know how to display the contents of this section. */ - if (strncmp (name, ".gnu.linkonce.wi.", 17) == 0) - name = ".debug_info"; - - for (i = NUM_ELEM (debug_displays); i--;) - if (strcmp (debug_displays[i].name, name) == 0) - { - debug_displays[i].display (section, start, file); - break; - } - - if (i == -1) - printf (_("Unrecognized debug section: %s\n"), name); - - free (start); - - /* If we loaded in the abbrev section at some point, - we must release it here. */ - free_abbrevs (); - - return 1; -} - -static int -process_section_contents (FILE *file) -{ - Elf_Internal_Shdr *section; - unsigned int i; - - if (! do_dump) - return 1; - - 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 (section, file); - - if (dump_sects[i] & DEBUG_DUMP) - display_debug_section (section, file); - } - - if (i < num_dump_sects) - warn (_("Some sections were not dumped because they do not exist!\n")); - - return 1; -} - -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); -} - -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; - - /* We have a lot of special sections. Thanks SGI! */ - if (dynamic_segment == NULL) - /* No information available. */ - return 0; - - for (entry = dynamic_segment; 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; - default: - break; - } - - if (liblist_offset != 0 && liblistno != 0 && do_dynamic) - { - Elf32_External_Lib *elib; - size_t cnt; - - elib = get_data (NULL, file, liblist_offset, - liblistno * sizeof (Elf32_External_Lib), - _("liblist")); - 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 time; - char timebuf[20]; - struct tm *tmp; - - liblist.l_name = BYTE_GET (elib[cnt].l_name); - time = 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 (&time); - sprintf (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); - print_symbol (20, dynamic_strings + 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 < sizeof (l_flags_vals) / sizeof (l_flags_vals[0]); - ++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 = get_data (NULL, file, options_offset, sect->sh_size, - _("options")); - if (eopt) - { - iopt = malloc ((sect->sh_size / sizeof (eopt)) * sizeof (*iopt)); - if (iopt == NULL) - { - error (_("Out of memory")); - 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_GET8 (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")); - return 0; - } - - iconf = malloc (conflictsno * sizeof (*iconf)); - if (iconf == NULL) - { - error (_("Out of memory")); - return 0; - } - - if (is_32bit_elf) - { - Elf32_External_Conflict *econf32; - - econf32 = 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 = 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 (' '); - print_symbol (25, dynamic_strings + psym->st_name); - putchar ('\n'); - } - - free (iconf); - } - - return 1; -} - -static int -process_gnu_liblist (FILE *file) -{ - Elf_Internal_Shdr *section, *string_sec; - Elf32_External_Lib *elib; - char *strtab; - 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: - elib = get_data (NULL, file, section->sh_offset, section->sh_size, - _("liblist")); - - if (elib == NULL) - break; - string_sec = SECTION_HEADER (section->sh_link); - - strtab = get_data (NULL, file, string_sec->sh_offset, - string_sec->sh_size, _("liblist string table")); - - if (strtab == NULL - || section->sh_entsize != sizeof (Elf32_External_Lib)) - { - free (elib); - break; - } - - printf (_("\nLibrary list section '%s' contains %lu entries:\n"), - SECTION_NAME (section), - (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 time; - char timebuf[20]; - struct tm *tmp; - - liblist.l_name = BYTE_GET (elib[cnt].l_name); - time = 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 (&time); - sprintf (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", strtab + liblist.l_name); - else - printf ("%-20.20s", strtab + liblist.l_name); - printf (" %s %#010lx %-7ld %-7ld\n", timebuf, liblist.l_checksum, - liblist.l_version, liblist.l_flags); - } - - free (elib); - } - } - - return 1; -} - -static const char * -get_note_type (unsigned e_type) -{ - static char buff[64]; - - 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_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)"); - default: - sprintf (buff, _("Unknown note type: (0x%08x)"), e_type); - return buff; - } -} - -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) - { - sprintf (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; - } - } - - sprintf (buff, _("PT_FIRSTMACH+%d"), e_type - NT_NETBSDCORE_FIRSTMACH); - return buff; -} - -/* 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 *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 (strncmp (pnote->namedata, "NetBSD-CORE", 11) == 0) - { - /* NetBSD-specific core file notes. */ - nt = get_netbsd_elfcore_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 (" %s\t\t0x%08lx\t%s\n", - pnote->namesz ? pnote->namedata : "(NONE)", - pnote->descsz, nt); - 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 = get_data (NULL, file, offset, length, _("notes")); - if (!pnotes) - return 0; - - external = pnotes; - - printf (_("\nNotes at offset 0x%08lx with length 0x%08lx:\n"), - (unsigned long) offset, (unsigned long) length); - printf (_(" Owner\t\tData size\tDescription\n")); - - while (external < (Elf_External_Note *)((char *) pnotes + length)) - { - Elf_External_Note *next; - Elf_Internal_Note inote; - char *temp = NULL; - - 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 = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2)); - - if (((char *) next) > (((char *) pnotes) + length)) - { - warn (_("corrupt note found at offset %x into core notes\n"), - ((char *) external) - ((char *) pnotes)); - warn (_(" type: %x, namesize: %08lx, descsize: %08lx\n"), - inote.type, inote.namesz, inote.descsz); - break; - } - - external = 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] != '\0') - { - temp = 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_corefile_contents (FILE *file) -{ - /* If we have not been asked to display the notes then do nothing. */ - if (! do_notes) - return 1; - - /* If file is not a core file then exit. */ - if (elf_header.e_type != ET_CORE) - return 1; - - /* No program headers means no NOTE segment. */ - if (elf_header.e_phnum == 0) - { - printf (_("No note segments present in the core file.\n")); - return 1; - } - - return process_corefile_note_segments (file); -} - -static int -process_arch_specific (FILE *file) -{ - if (! do_arch) - return 1; - - switch (elf_header.e_machine) - { - case EM_MIPS: - case EM_MIPS_RS3_LE: - return process_mips_specific (file); - break; - 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_GET8 (ehdr64.e_entry); - elf_header.e_phoff = BYTE_GET8 (ehdr64.e_phoff); - elf_header.e_shoff = BYTE_GET8 (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 = NUM_ELEM (version_info); i--;) - version_info[i] = 0; - - for (i = NUM_ELEM (dynamic_info); i--;) - dynamic_info[i] = 0; - - /* Process the file. */ - if (show_name) - printf (_("\nFile: %s\n"), file_name); - - 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_reloc = 0; - } - - if (process_program_headers (file)) - process_dynamic_segment (file); - - process_relocs (file); - - process_unwind (file); - - process_symbol_table (file); - - process_syminfo (file); - - process_version_sections (file); - - process_section_contents (file); - - process_corefile_contents (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; - } - - if (dynamic_symbols) - { - free (dynamic_symbols); - dynamic_symbols = NULL; - num_dynamic_syms = 0; - } - - if (dynamic_syminfo) - { - free (dynamic_syminfo); - dynamic_syminfo = NULL; - } - - return 0; -} - -/* Process an ELF archive. The file is positioned just after the - ARMAG string. */ - -static int -process_archive (char *file_name, FILE *file) -{ - struct ar_hdr arhdr; - size_t got; - unsigned long size; - char *longnames = NULL; - unsigned long longnames_size = 0; - size_t file_name_size; - int ret; - - show_name = 1; - - got = fread (&arhdr, 1, sizeof arhdr, file); - if (got != sizeof arhdr) - { - if (got == 0) - return 0; - - error (_("%s: failed to read archive header\n"), file_name); - return 1; - } - - if (memcmp (arhdr.ar_name, "/ ", 16) == 0) - { - /* This is the archive symbol table. Skip it. - FIXME: We should have an option to dump it. */ - size = strtoul (arhdr.ar_size, NULL, 10); - if (fseek (file, size + (size & 1), SEEK_CUR) != 0) - { - error (_("%s: failed to skip archive symbol table\n"), file_name); - return 1; - } - - got = fread (&arhdr, 1, sizeof arhdr, file); - if (got != sizeof arhdr) - { - if (got == 0) - return 0; - - error (_("%s: failed to read archive header\n"), file_name); - return 1; - } - } - - if (memcmp (arhdr.ar_name, "// ", 16) == 0) - { - /* This is the archive string table holding long member - names. */ - - longnames_size = strtoul (arhdr.ar_size, NULL, 10); - - longnames = malloc (longnames_size); - if (longnames == NULL) - { - error (_("Out of memory\n")); - return 1; - } - - if (fread (longnames, longnames_size, 1, file) != 1) - { - free (longnames); - error(_("%s: failed to read string table\n"), file_name); - return 1; - } - - if ((longnames_size & 1) != 0) - getc (file); - - got = fread (&arhdr, 1, sizeof arhdr, file); - if (got != sizeof arhdr) - { - free (longnames); - - if (got == 0) - return 0; - - error (_("%s: failed to read archive header\n"), file_name); - return 1; - } - } - - file_name_size = strlen (file_name); - ret = 0; - - while (1) - { - char *name; - char *nameend; - char *namealc; - - if (arhdr.ar_name[0] == '/') - { - unsigned long off; - - off = strtoul (arhdr.ar_name + 1, NULL, 10); - if (off >= longnames_size) - { - error (_("%s: invalid archive string table offset %lu\n"), off); - ret = 1; - break; - } - - name = longnames + off; - nameend = memchr (name, '/', longnames_size - off); - } - else - { - name = arhdr.ar_name; - nameend = memchr (name, '/', 16); - } - - if (nameend == NULL) - { - error (_("%s: bad archive file name\n")); - ret = 1; - break; - } - - namealc = malloc (file_name_size + (nameend - name) + 3); - if (namealc == NULL) - { - error (_("Out of memory\n")); - ret = 1; - break; - } - - memcpy (namealc, file_name, file_name_size); - namealc[file_name_size] = '('; - memcpy (namealc + file_name_size + 1, name, nameend - name); - namealc[file_name_size + 1 + (nameend - name)] = ')'; - namealc[file_name_size + 2 + (nameend - name)] = '\0'; - - archive_file_offset = ftell (file); - archive_file_size = strtoul (arhdr.ar_size, NULL, 10); - - ret |= process_object (namealc, file); - - free (namealc); - - if (fseek (file, - (archive_file_offset - + archive_file_size - + (archive_file_size & 1)), - SEEK_SET) != 0) - { - error (_("%s: failed to seek to next archive header\n"), file_name); - ret = 1; - break; - } - - got = fread (&arhdr, 1, sizeof arhdr, file); - if (got != sizeof arhdr) - { - if (got == 0) - break; - - error (_("%s: failed to read archive header\n"), file_name); - ret = 1; - break; - } - } - - if (longnames != 0) - free (longnames); - - 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 header\n"), file_name); - fclose (file); - return 1; - } - - if (memcmp (armag, ARMAG, SARMAG) == 0) - ret = process_archive (file_name, file); - else - { - 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; - char *cmdline_dump_sects = NULL; - unsigned num_cmdline_dump_sects = 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); - - parse_args (argc, argv); - - if (optind < (argc - 1)) - show_name = 1; - - /* When processing more than one file remember the dump requests - issued on command line to reset them after each file. */ - if (optind + 1 < argc && dump_sects != NULL) - { - cmdline_dump_sects = malloc (num_dump_sects); - if (cmdline_dump_sects == NULL) - error (_("Out of memory allocating dump request table.")); - else - { - memcpy (cmdline_dump_sects, dump_sects, num_dump_sects); - num_cmdline_dump_sects = num_dump_sects; - } - } - - err = 0; - while (optind < argc) - { - err |= process_file (argv[optind++]); - - /* Reset dump requests. */ - if (optind < argc && dump_sects != NULL) - { - num_dump_sects = num_cmdline_dump_sects; - if (num_cmdline_dump_sects > 0) - memcpy (dump_sects, cmdline_dump_sects, num_cmdline_dump_sects); - } - } - - if (dump_sects != NULL) - free (dump_sects); - if (cmdline_dump_sects != NULL) - free (cmdline_dump_sects); - - return err; -} diff --git a/binutils/rename.c b/binutils/rename.c deleted file mode 100644 index 398152e05..000000000 --- a/binutils/rename.c +++ /dev/null @@ -1,217 +0,0 @@ -/* rename.c -- rename a file, preserving symlinks. - Copyright 1999, 2002, 2003 Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "bfd.h" -#include "bucomm.h" - -#include - -#ifdef HAVE_GOOD_UTIME_H -#include -#else /* ! HAVE_GOOD_UTIME_H */ -#ifdef HAVE_UTIMES -#include -#endif /* HAVE_UTIMES */ -#endif /* ! HAVE_GOOD_UTIME_H */ - -/* We need to open the file in binary modes on system where that makes - a difference. */ -#ifndef O_BINARY -#define O_BINARY 0 -#endif - -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; -} - -/* 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) -{ - 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/resbin.c b/binutils/resbin.c deleted file mode 100644 index ad14bdafc..000000000 --- a/binutils/resbin.c +++ /dev/null @@ -1,2318 +0,0 @@ -/* resbin.c -- manipulate the Windows binary resource format. - Copyright 1997, 1998, 1999, 2002, 2003 - Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "windres.h" - -/* Macros to swap in values. */ - -#define get_8(s) (*((unsigned char *)(s))) -#define get_16(be, s) ((be) ? bfd_getb16 (s) : bfd_getl16 (s)) -#define get_32(be, s) ((be) ? bfd_getb32 (s) : bfd_getl32 (s)) - -/* Local functions. */ - -static void toosmall (const char *); - -static unichar *get_unicode - (const unsigned char *, unsigned long, int, int *); -static int get_resid - (struct res_id *, const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_generic - (enum res_type, const unsigned char *, unsigned long); -static struct res_resource *bin_to_res_cursor - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_menu - (const unsigned char *, unsigned long, int); -static struct menuitem *bin_to_res_menuitems - (const unsigned char *, unsigned long, int, int *); -static struct menuitem *bin_to_res_menuexitems - (const unsigned char *, unsigned long, int, int *); -static struct res_resource *bin_to_res_dialog - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_string - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_fontdir - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_accelerators - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_rcdata - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_group_cursor - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_group_icon - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_version - (const unsigned char *, unsigned long, int); -static struct res_resource *bin_to_res_userdata - (const unsigned char *, unsigned long, int); -static void get_version_header - (const unsigned char *, unsigned long, int, const char *, - unichar **, int *, int *, int *, int *); - -/* Given a resource type ID, a pointer to data, a length, return a - res_resource structure which represents that resource. The caller - is responsible for initializing the res_info and coff_info fields - of the returned structure. */ - -struct res_resource * -bin_to_res (struct res_id type, const unsigned char *data, - unsigned long length, int big_endian) -{ - if (type.named) - return bin_to_res_userdata (data, length, big_endian); - else - { - switch (type.u.id) - { - default: - return bin_to_res_userdata (data, length, big_endian); - case RT_CURSOR: - return bin_to_res_cursor (data, length, big_endian); - case RT_BITMAP: - return bin_to_res_generic (RES_TYPE_BITMAP, data, length); - case RT_ICON: - return bin_to_res_generic (RES_TYPE_ICON, data, length); - case RT_MENU: - return bin_to_res_menu (data, length, big_endian); - case RT_DIALOG: - return bin_to_res_dialog (data, length, big_endian); - case RT_STRING: - return bin_to_res_string (data, length, big_endian); - case RT_FONTDIR: - return bin_to_res_fontdir (data, length, big_endian); - case RT_FONT: - return bin_to_res_generic (RES_TYPE_FONT, data, length); - case RT_ACCELERATOR: - return bin_to_res_accelerators (data, length, big_endian); - case RT_RCDATA: - return bin_to_res_rcdata (data, length, big_endian); - case RT_MESSAGETABLE: - return bin_to_res_generic (RES_TYPE_MESSAGETABLE, data, length); - case RT_GROUP_CURSOR: - return bin_to_res_group_cursor (data, length, big_endian); - case RT_GROUP_ICON: - return bin_to_res_group_icon (data, length, big_endian); - case RT_VERSION: - return bin_to_res_version (data, length, big_endian); - } - } -} - -/* 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 (const unsigned char *data, unsigned long length, - int big_endian, int *retlen) -{ - int c, i; - unichar *ret; - - c = 0; - while (1) - { - if (length < (unsigned long) c * 2 + 2) - toosmall (_("null terminated unicode string")); - if (get_16 (big_endian, data + c * 2) == 0) - break; - ++c; - } - - ret = (unichar *) res_alloc ((c + 1) * sizeof (unichar)); - - for (i = 0; i < c; i++) - ret[i] = get_16 (big_endian, data + i * 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 (struct res_id *id, const unsigned char *data, - unsigned long length, int big_endian) -{ - int first; - - if (length < 2) - toosmall (_("resource ID")); - - first = get_16 (big_endian, data); - if (first == 0xffff) - { - if (length < 4) - toosmall (_("resource ID")); - id->named = 0; - id->u.id = get_16 (big_endian, data + 2); - return 4; - } - else - { - id->named = 1; - id->u.n.name = get_unicode (data, length, big_endian, &id->u.n.length); - return id->u.n.length * 2 + 2; - } -} - -/* Convert a resource which just stores uninterpreted data from - binary. */ - -struct res_resource * -bin_to_res_generic (enum res_type type, const unsigned char *data, - unsigned long length) -{ - struct res_resource *r; - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = type; - r->u.data.data = data; - r->u.data.length = length; - - return r; -} - -/* Convert a cursor resource from binary. */ - -struct res_resource * -bin_to_res_cursor (const unsigned char *data, unsigned long length, - int big_endian) -{ - struct cursor *c; - struct res_resource *r; - - if (length < 4) - toosmall (_("cursor")); - - c = (struct cursor *) res_alloc (sizeof *c); - c->xhotspot = get_16 (big_endian, data); - c->yhotspot = get_16 (big_endian, data + 2); - c->length = length - 4; - c->data = data + 4; - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_CURSOR; - r->u.cursor = c; - - return r; -} - -/* Convert a menu resource from binary. */ - -struct res_resource * -bin_to_res_menu (const unsigned char *data, unsigned long length, - int big_endian) -{ - struct res_resource *r; - struct menu *m; - int version, read; - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_MENU; - - m = (struct menu *) res_alloc (sizeof *m); - r->u.menu = m; - - if (length < 2) - toosmall (_("menu header")); - - version = get_16 (big_endian, data); - - if (version == 0) - { - if (length < 4) - toosmall (_("menu header")); - m->help = 0; - m->items = bin_to_res_menuitems (data + 4, length - 4, big_endian, - &read); - } - else if (version == 1) - { - unsigned int offset; - - if (length < 8) - toosmall (_("menuex header")); - m->help = get_32 (big_endian, data + 4); - offset = get_16 (big_endian, data + 2); - if (offset + 4 >= length) - toosmall (_("menuex offset")); - m->items = bin_to_res_menuexitems (data + 4 + offset, - length - (4 + offset), - big_endian, - &read); - } - else - fatal (_("unsupported menu version %d"), version); - - return r; -} - -/* Convert menu items from binary. */ - -static struct menuitem * -bin_to_res_menuitems (const unsigned char *data, unsigned long length, - int big_endian, int *read) -{ - struct menuitem *first, **pp; - - first = NULL; - pp = &first; - - *read = 0; - - while (length > 0) - { - int flags, slen, itemlen; - unsigned int stroff; - struct menuitem *mi; - - if (length < 4) - toosmall (_("menuitem header")); - - mi = (struct menuitem *) res_alloc (sizeof *mi); - mi->state = 0; - mi->help = 0; - - flags = get_16 (big_endian, data); - 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 (get_16 (big_endian, data + stroff) == 0) - { - slen = 0; - mi->text = NULL; - } - else - mi->text = get_unicode (data + stroff, length - stroff, big_endian, - &slen); - - itemlen = stroff + slen * 2 + 2; - - if ((flags & MENUITEM_POPUP) == 0) - { - mi->popup = NULL; - mi->id = get_16 (big_endian, data + 2); - } - else - { - int subread; - - mi->id = 0; - mi->popup = bin_to_res_menuitems (data + itemlen, length - itemlen, - big_endian, &subread); - itemlen += subread; - } - - mi->next = NULL; - *pp = mi; - pp = &mi->next; - - data += itemlen; - length -= itemlen; - *read += itemlen; - - if ((flags & MENUITEM_ENDMENU) != 0) - return first; - } - - return first; -} - -/* Convert menuex items from binary. */ - -static struct menuitem * -bin_to_res_menuexitems (const unsigned char *data, unsigned long length, - int big_endian, int *read) -{ - struct menuitem *first, **pp; - - first = NULL; - pp = &first; - - *read = 0; - - while (length > 0) - { - int flags, slen; - unsigned int itemlen; - struct menuitem *mi; - - if (length < 14) - toosmall (_("menuitem header")); - - mi = (struct menuitem *) res_alloc (sizeof *mi); - mi->type = get_32 (big_endian, data); - mi->state = get_32 (big_endian, data + 4); - mi->id = get_16 (big_endian, data + 8); - - flags = get_16 (big_endian, data + 10); - - if (get_16 (big_endian, data + 12) == 0) - { - slen = 0; - mi->text = NULL; - } - else - mi->text = get_unicode (data + 12, length - 12, big_endian, &slen); - - itemlen = 12 + slen * 2 + 2; - itemlen = (itemlen + 3) &~ 3; - - if ((flags & 1) == 0) - { - mi->popup = NULL; - mi->help = 0; - } - else - { - int subread; - - if (length < itemlen + 4) - toosmall (_("menuitem")); - mi->help = get_32 (big_endian, data + itemlen); - itemlen += 4; - - mi->popup = bin_to_res_menuexitems (data + itemlen, - length - itemlen, - big_endian, &subread); - itemlen += subread; - } - - mi->next = NULL; - *pp = mi; - pp = &mi->next; - - data += itemlen; - length -= itemlen; - *read += itemlen; - - if ((flags & 0x80) != 0) - return first; - } - - return first; -} - -/* Convert a dialog resource from binary. */ - -static struct res_resource * -bin_to_res_dialog (const unsigned char *data, unsigned long length, - int big_endian) -{ - int signature; - struct dialog *d; - int c, sublen, i; - unsigned int off; - struct dialog_control **pp; - struct res_resource *r; - - if (length < 18) - toosmall (_("dialog header")); - - d = (struct dialog *) res_alloc (sizeof *d); - - signature = get_16 (big_endian, data + 2); - if (signature != 0xffff) - { - d->ex = NULL; - d->style = get_32 (big_endian, data); - d->exstyle = get_32 (big_endian, data + 4); - off = 8; - } - else - { - int version; - - version = get_16 (big_endian, data); - if (version != 1) - fatal (_("unexpected DIALOGEX version %d"), version); - - d->ex = (struct dialog_ex *) res_alloc (sizeof (struct dialog_ex)); - d->ex->help = get_32 (big_endian, data + 4); - d->exstyle = get_32 (big_endian, data + 8); - d->style = get_32 (big_endian, data + 12); - off = 16; - } - - if (length < off + 10) - toosmall (_("dialog header")); - - c = get_16 (big_endian, data + off); - d->x = get_16 (big_endian, data + off + 2); - d->y = get_16 (big_endian, data + off + 4); - d->width = get_16 (big_endian, data + off + 6); - d->height = get_16 (big_endian, data + off + 8); - - off += 10; - - sublen = get_resid (&d->menu, data + off, length - off, big_endian); - off += sublen; - - sublen = get_resid (&d->class, data + off, length - off, big_endian); - off += sublen; - - d->caption = get_unicode (data + off, length - off, big_endian, &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 = get_16 (big_endian, data + off); - off += 2; - - if (d->ex != NULL) - { - if (length < off + 4) - toosmall (_("dialogex font information")); - d->ex->weight = get_16 (big_endian, data + off); - d->ex->italic = get_8 (data + off + 2); - d->ex->charset = get_8 (data + off + 3); - off += 4; - } - - d->font = get_unicode (data + off, length - off, big_endian, &sublen); - off += sublen * 2 + 2; - } - - d->controls = NULL; - pp = &d->controls; - - for (i = 0; i < c; i++) - { - struct dialog_control *dc; - int datalen; - - off = (off + 3) &~ 3; - - dc = (struct dialog_control *) res_alloc (sizeof *dc); - - if (d->ex == NULL) - { - if (length < off + 8) - toosmall (_("dialog control")); - - dc->style = get_32 (big_endian, data + off); - dc->exstyle = get_32 (big_endian, data + off + 4); - dc->help = 0; - off += 8; - } - else - { - if (length < off + 12) - toosmall (_("dialogex control")); - dc->help = get_32 (big_endian, data + off); - dc->exstyle = get_32 (big_endian, data + off + 4); - dc->style = get_32 (big_endian, data + off + 8); - off += 12; - } - - if (length < off + 10) - toosmall (_("dialog control")); - - dc->x = get_16 (big_endian, data + off); - dc->y = get_16 (big_endian, data + off + 2); - dc->width = get_16 (big_endian, data + off + 4); - dc->height = get_16 (big_endian, data + off + 6); - - if (d->ex != NULL) - dc->id = get_32 (big_endian, data + off + 8); - else - dc->id = get_16 (big_endian, data + off + 8); - - off += 10 + (d->ex != NULL ? 2 : 0); - - sublen = get_resid (&dc->class, data + off, length - off, big_endian); - off += sublen; - - sublen = get_resid (&dc->text, data + off, length - off, big_endian); - off += sublen; - - if (length < off + 2) - toosmall (_("dialog control end")); - - datalen = get_16 (big_endian, data + off); - off += 2; - - if (datalen == 0) - dc->data = NULL; - else - { - off = (off + 3) &~ 3; - - if (length < off + datalen) - toosmall (_("dialog control data")); - - dc->data = ((struct rcdata_item *) - res_alloc (sizeof (struct 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 = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_DIALOG; - r->u.dialog = d; - - return r; -} - -/* Convert a stringtable resource from binary. */ - -static struct res_resource * -bin_to_res_string (const unsigned char *data, unsigned long length, - int big_endian) -{ - struct stringtable *st; - int i; - struct res_resource *r; - - st = (struct stringtable *) res_alloc (sizeof *st); - - for (i = 0; i < 16; i++) - { - unsigned int slen; - - if (length < 2) - toosmall (_("stringtable string length")); - slen = get_16 (big_endian, data); - 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] = get_16 (big_endian, data + 2 + j * 2); - } - - data += 2 + 2 * slen; - length -= 2 + 2 * slen; - } - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_STRINGTABLE; - r->u.stringtable = st; - - return r; -} - -/* Convert a fontdir resource from binary. */ - -static struct res_resource * -bin_to_res_fontdir (const unsigned char *data, unsigned long length, - int big_endian) -{ - int c, i; - struct fontdir *first, **pp; - struct res_resource *r; - - if (length < 2) - toosmall (_("fontdir header")); - - c = get_16 (big_endian, data); - - first = NULL; - pp = &first; - - for (i = 0; i < c; i++) - { - struct fontdir *fd; - unsigned int off; - - if (length < 56) - toosmall (_("fontdir")); - - fd = (struct fontdir *) res_alloc (sizeof *fd); - fd->index = get_16 (big_endian, data); - - /* 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 fontdir structure. 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 = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_FONTDIR; - r->u.fontdir = first; - - return r; -} - -/* Convert an accelerators resource from binary. */ - -static struct res_resource * -bin_to_res_accelerators (const unsigned char *data, unsigned long length, - int big_endian) -{ - struct accelerator *first, **pp; - struct res_resource *r; - - first = NULL; - pp = &first; - - while (1) - { - struct accelerator *a; - - if (length < 8) - toosmall (_("accelerator")); - - a = (struct accelerator *) res_alloc (sizeof *a); - - a->flags = get_16 (big_endian, data); - a->key = get_16 (big_endian, data + 2); - a->id = get_16 (big_endian, data + 4); - - a->next = NULL; - *pp = a; - pp = &a->next; - - if ((a->flags & ACC_LAST) != 0) - break; - - data += 8; - length -= 8; - } - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_ACCELERATOR; - r->u.acc = first; - - return r; -} - -/* Convert an rcdata resource from binary. */ - -static struct res_resource * -bin_to_res_rcdata (const unsigned char *data, unsigned long length, - int big_endian ATTRIBUTE_UNUSED) -{ - struct rcdata_item *ri; - struct res_resource *r; - - ri = (struct rcdata_item *) res_alloc (sizeof *ri); - - ri->next = NULL; - ri->type = RCDATA_BUFFER; - ri->u.buffer.length = length; - ri->u.buffer.data = data; - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_RCDATA; - r->u.rcdata = ri; - - return r; -} - -/* Convert a group cursor resource from binary. */ - -static struct res_resource * -bin_to_res_group_cursor (const unsigned char *data, unsigned long length, - int big_endian) -{ - int type, c, i; - struct group_cursor *first, **pp; - struct res_resource *r; - - if (length < 6) - toosmall (_("group cursor header")); - - type = get_16 (big_endian, data + 2); - if (type != 2) - fatal (_("unexpected group cursor type %d"), type); - - c = get_16 (big_endian, data + 4); - - data += 6; - length -= 6; - - first = NULL; - pp = &first; - - for (i = 0; i < c; i++) - { - struct group_cursor *gc; - - if (length < 14) - toosmall (_("group cursor")); - - gc = (struct group_cursor *) res_alloc (sizeof *gc); - - gc->width = get_16 (big_endian, data); - gc->height = get_16 (big_endian, data + 2); - gc->planes = get_16 (big_endian, data + 4); - gc->bits = get_16 (big_endian, data + 6); - gc->bytes = get_32 (big_endian, data + 8); - gc->index = get_16 (big_endian, data + 12); - - gc->next = NULL; - *pp = gc; - pp = &gc->next; - - data += 14; - length -= 14; - } - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_GROUP_CURSOR; - r->u.group_cursor = first; - - return r; -} - -/* Convert a group icon resource from binary. */ - -static struct res_resource * -bin_to_res_group_icon (const unsigned char *data, unsigned long length, - int big_endian) -{ - int type, c, i; - struct group_icon *first, **pp; - struct res_resource *r; - - if (length < 6) - toosmall (_("group icon header")); - - type = get_16 (big_endian, data + 2); - if (type != 1) - fatal (_("unexpected group icon type %d"), type); - - c = get_16 (big_endian, data + 4); - - data += 6; - length -= 6; - - first = NULL; - pp = &first; - - for (i = 0; i < c; i++) - { - struct group_icon *gi; - - if (length < 14) - toosmall (_("group icon")); - - gi = (struct group_icon *) res_alloc (sizeof *gi); - - gi->width = data[0]; - gi->height = data[1]; - gi->colors = data[2]; - gi->planes = get_16 (big_endian, data + 4); - gi->bits = get_16 (big_endian, data + 6); - gi->bytes = get_32 (big_endian, data + 8); - gi->index = get_16 (big_endian, data + 12); - - gi->next = NULL; - *pp = gi; - pp = &gi->next; - - data += 14; - length -= 14; - } - - r = (struct 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 (const unsigned char *data, unsigned long length, - int big_endian, const char *key, unichar **pkey, - int *len, int *vallen, int *type, int *off) -{ - if (length < 8) - toosmall (key); - - *len = get_16 (big_endian, data); - *vallen = get_16 (big_endian, data + 2); - *type = get_16 (big_endian, data + 4); - - *off = 6; - - length -= 6; - data += 6; - - if (key == NULL) - { - int sublen; - - *pkey = get_unicode (data, length, big_endian, &sublen); - *off += sublen * 2 + 2; - } - else - { - while (1) - { - if (length < 2) - toosmall (key); - if (get_16 (big_endian, data) != (unsigned char) *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 struct res_resource * -bin_to_res_version (const unsigned char *data, unsigned long length, - int big_endian) -{ - int verlen, vallen, type, off; - struct fixed_versioninfo *fi; - struct ver_info *first, **pp; - struct versioninfo *v; - struct res_resource *r; - - get_version_header (data, length, big_endian, "VS_VERSION_INFO", - (unichar **) NULL, &verlen, &vallen, &type, &off); - - if ((unsigned int) verlen != length) - fatal (_("version length %d does not match resource length %lu"), - verlen, length); - - if (type != 0) - fatal (_("unexpected version type %d"), type); - - data += off; - length -= off; - - if (vallen == 0) - fi = NULL; - else - { - unsigned long signature, fiv; - - if (vallen != 52) - fatal (_("unexpected fixed version information length %d"), vallen); - - if (length < 52) - toosmall (_("fixed version info")); - - signature = get_32 (big_endian, data); - if (signature != 0xfeef04bd) - fatal (_("unexpected fixed version signature %lu"), signature); - - fiv = get_32 (big_endian, data + 4); - if (fiv != 0 && fiv != 0x10000) - fatal (_("unexpected fixed version info version %lu"), fiv); - - fi = (struct fixed_versioninfo *) res_alloc (sizeof *fi); - - fi->file_version_ms = get_32 (big_endian, data + 8); - fi->file_version_ls = get_32 (big_endian, data + 12); - fi->product_version_ms = get_32 (big_endian, data + 16); - fi->product_version_ls = get_32 (big_endian, data + 20); - fi->file_flags_mask = get_32 (big_endian, data + 24); - fi->file_flags = get_32 (big_endian, data + 28); - fi->file_os = get_32 (big_endian, data + 32); - fi->file_type = get_32 (big_endian, data + 36); - fi->file_subtype = get_32 (big_endian, data + 40); - fi->file_date_ms = get_32 (big_endian, data + 44); - fi->file_date_ls = get_32 (big_endian, data + 48); - - data += 52; - length -= 52; - } - - first = NULL; - pp = &first; - - while (length > 0) - { - struct ver_info *vi; - int ch; - - if (length < 8) - toosmall (_("version var info")); - - vi = (struct ver_info *) res_alloc (sizeof *vi); - - ch = get_16 (big_endian, data + 6); - - if (ch == 'S') - { - struct ver_stringinfo **ppvs; - - vi->type = VERINFO_STRING; - - get_version_header (data, length, big_endian, "StringFileInfo", - (unichar **) NULL, &verlen, &vallen, &type, - &off); - - if (vallen != 0) - fatal (_("unexpected stringfileinfo value length %d"), vallen); - - data += off; - length -= off; - - get_version_header (data, length, big_endian, (const char *) NULL, - &vi->u.string.language, &verlen, &vallen, - &type, &off); - - if (vallen != 0) - fatal (_("unexpected version stringtable value length %d"), vallen); - - data += off; - length -= off; - verlen -= off; - - vi->u.string.strings = NULL; - ppvs = &vi->u.string.strings; - - /* It's convenient to round verlen to a 4 byte alignment, - since we round the subvariables in the loop. */ - verlen = (verlen + 3) &~ 3; - - while (verlen > 0) - { - struct ver_stringinfo *vs; - int subverlen, vslen, valoff; - - vs = (struct ver_stringinfo *) res_alloc (sizeof *vs); - - get_version_header (data, length, big_endian, - (const char *) NULL, &vs->key, &subverlen, - &vallen, &type, &off); - - subverlen = (subverlen + 3) &~ 3; - - data += off; - length -= off; - - vs->value = get_unicode (data, length, big_endian, &vslen); - valoff = vslen * 2 + 2; - valoff = (valoff + 3) &~ 3; - - if (off + valoff != subverlen) - fatal (_("unexpected version string length %d != %d + %d"), - subverlen, off, valoff); - - vs->next = NULL; - *ppvs = vs; - ppvs = &vs->next; - - data += valoff; - length -= valoff; - - if (verlen < subverlen) - fatal (_("unexpected version string length %d < %d"), - verlen, subverlen); - - verlen -= subverlen; - } - } - else if (ch == 'V') - { - struct ver_varinfo **ppvv; - - vi->type = VERINFO_VAR; - - get_version_header (data, length, big_endian, "VarFileInfo", - (unichar **) NULL, &verlen, &vallen, &type, - &off); - - if (vallen != 0) - fatal (_("unexpected varfileinfo value length %d"), vallen); - - data += off; - length -= off; - - get_version_header (data, length, big_endian, (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) - { - struct ver_varinfo *vv; - - if (length < 4) - toosmall (_("version varfileinfo")); - - vv = (struct ver_varinfo *) res_alloc (sizeof *vv); - - vv->language = get_16 (big_endian, data); - vv->charset = get_16 (big_endian, data + 2); - - vv->next = NULL; - *ppvv = vv; - ppvv = &vv->next; - - data += 4; - length -= 4; - - if (vallen < 4) - fatal (_("unexpected version value length %d"), vallen); - - vallen -= 4; - } - } - else - fatal (_("unexpected version string")); - - vi->next = NULL; - *pp = vi; - pp = &vi->next; - } - - v = (struct versioninfo *) res_alloc (sizeof *v); - v->fixed = fi; - v->var = first; - - r = (struct 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 struct res_resource * -bin_to_res_userdata (const unsigned char *data, unsigned long length, - int big_endian ATTRIBUTE_UNUSED) -{ - struct rcdata_item *ri; - struct res_resource *r; - - ri = (struct rcdata_item *) res_alloc (sizeof *ri); - - ri->next = NULL; - ri->type = RCDATA_BUFFER; - ri->u.buffer.length = length; - ri->u.buffer.data = data; - - r = (struct res_resource *) res_alloc (sizeof *r); - r->type = RES_TYPE_USERDATA; - r->u.rcdata = ri; - - return r; -} - -/* Macros to swap out values. */ - -#define put_8(v, s) (*((unsigned char *) (s)) = (unsigned char) (v)) -#define put_16(be, v, s) ((be) ? bfd_putb16 ((v), (s)) : bfd_putl16 ((v), (s))) -#define put_32(be, v, s) ((be) ? bfd_putb32 ((v), (s)) : bfd_putl32 ((v), (s))) - -/* Local functions used to convert resources to binary format. */ - -static void dword_align_bin (struct bindata ***, unsigned long *); -static struct bindata *resid_to_bin (struct res_id, int); -static struct bindata *unicode_to_bin (const unichar *, int); -static struct bindata *res_to_bin_accelerator - (const struct accelerator *, int); -static struct bindata *res_to_bin_cursor - (const struct cursor *, int); -static struct bindata *res_to_bin_group_cursor - (const struct group_cursor *, int); -static struct bindata *res_to_bin_dialog - (const struct dialog *, int); -static struct bindata *res_to_bin_fontdir - (const struct fontdir *, int); -static struct bindata *res_to_bin_group_icon - (const struct group_icon *, int); -static struct bindata *res_to_bin_menu - (const struct menu *, int); -static struct bindata *res_to_bin_menuitems - (const struct menuitem *, int); -static struct bindata *res_to_bin_menuexitems - (const struct menuitem *, int); -static struct bindata *res_to_bin_rcdata - (const struct rcdata_item *, int); -static struct bindata *res_to_bin_stringtable - (const struct stringtable *, int); -static struct bindata *string_to_unicode_bin (const char *, int); -static struct bindata *res_to_bin_versioninfo - (const struct versioninfo *, int); -static struct bindata *res_to_bin_generic - (unsigned long, const unsigned char *); - -/* Convert a resource to binary. */ - -struct bindata * -res_to_bin (const struct res_resource *res, int big_endian) -{ - switch (res->type) - { - default: - abort (); - case RES_TYPE_BITMAP: - case RES_TYPE_FONT: - case RES_TYPE_ICON: - case RES_TYPE_MESSAGETABLE: - return res_to_bin_generic (res->u.data.length, res->u.data.data); - case RES_TYPE_ACCELERATOR: - return res_to_bin_accelerator (res->u.acc, big_endian); - case RES_TYPE_CURSOR: - return res_to_bin_cursor (res->u.cursor, big_endian); - case RES_TYPE_GROUP_CURSOR: - return res_to_bin_group_cursor (res->u.group_cursor, big_endian); - case RES_TYPE_DIALOG: - return res_to_bin_dialog (res->u.dialog, big_endian); - case RES_TYPE_FONTDIR: - return res_to_bin_fontdir (res->u.fontdir, big_endian); - case RES_TYPE_GROUP_ICON: - return res_to_bin_group_icon (res->u.group_icon, big_endian); - case RES_TYPE_MENU: - return res_to_bin_menu (res->u.menu, big_endian); - case RES_TYPE_RCDATA: - return res_to_bin_rcdata (res->u.rcdata, big_endian); - case RES_TYPE_STRINGTABLE: - return res_to_bin_stringtable (res->u.stringtable, big_endian); - case RES_TYPE_USERDATA: - return res_to_bin_rcdata (res->u.rcdata, big_endian); - case RES_TYPE_VERSIONINFO: - return res_to_bin_versioninfo (res->u.versioninfo, big_endian); - } -} - -/* Align to a 32 bit boundary. PPP points to the of a list of bindata - structures. LENGTH points to the length of the structures. If - necessary, this adds a new bindata to bring length up to a 32 bit - boundary. It updates *PPP and *LENGTH. */ - -static void -dword_align_bin (struct bindata ***ppp, unsigned long *length) -{ - int add; - struct bindata *d; - - if ((*length & 3) == 0) - return; - - add = 4 - (*length & 3); - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = add; - d->data = (unsigned char *) reswr_alloc (add); - memset (d->data, 0, add); - - d->next = NULL; - **ppp = d; - *ppp = &(**ppp)->next; - - *length += add; -} - -/* Convert a resource ID to binary. This always returns exactly one - bindata structure. */ - -static struct bindata * -resid_to_bin (struct res_id id, int big_endian) -{ - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - - if (! id.named) - { - d->length = 4; - d->data = (unsigned char *) reswr_alloc (4); - put_16 (big_endian, 0xffff, d->data); - put_16 (big_endian, id.u.id, d->data + 2); - } - else - { - int i; - - d->length = id.u.n.length * 2 + 2; - d->data = (unsigned char *) reswr_alloc (d->length); - for (i = 0; i < id.u.n.length; i++) - put_16 (big_endian, id.u.n.name[i], d->data + i * 2); - put_16 (big_endian, 0, d->data + i * 2); - } - - d->next = NULL; - - return d; -} - -/* Convert a null terminated unicode string to binary. This always - returns exactly one bindata structure. */ - -static struct bindata * -unicode_to_bin (const unichar *str, int big_endian) -{ - int len; - struct bindata *d; - - len = 0; - if (str != NULL) - { - const unichar *s; - - for (s = str; *s != 0; s++) - ++len; - } - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = len * 2 + 2; - d->data = (unsigned char *) reswr_alloc (d->length); - - if (str == NULL) - put_16 (big_endian, 0, d->data); - else - { - const unichar *s; - int i; - - for (s = str, i = 0; *s != 0; s++, i++) - put_16 (big_endian, *s, d->data + i * 2); - put_16 (big_endian, 0, d->data + i * 2); - } - - d->next = NULL; - - return d; -} - -/* Convert an accelerator resource to binary. */ - -static struct bindata * -res_to_bin_accelerator (const struct accelerator *accelerators, - int big_endian) -{ - struct bindata *first, **pp; - const struct accelerator *a; - - first = NULL; - pp = &first; - - for (a = accelerators; a != NULL; a = a->next) - { - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 8; - d->data = (unsigned char *) reswr_alloc (8); - - put_16 (big_endian, - a->flags | (a->next != NULL ? 0 : ACC_LAST), - d->data); - put_16 (big_endian, a->key, d->data + 2); - put_16 (big_endian, a->id, d->data + 4); - put_16 (big_endian, 0, d->data + 8); - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - return first; -} - -/* Convert a cursor resource to binary. */ - -static struct bindata * -res_to_bin_cursor (const struct cursor *c, int big_endian) -{ - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 4; - d->data = (unsigned char *) reswr_alloc (4); - - put_16 (big_endian, c->xhotspot, d->data); - put_16 (big_endian, c->yhotspot, d->data + 2); - - d->next = (struct bindata *) reswr_alloc (sizeof *d); - d->next->length = c->length; - d->next->data = (unsigned char *) c->data; - d->next->next = NULL; - - return d; -} - -/* Convert a group cursor resource to binary. */ - -static struct bindata * -res_to_bin_group_cursor (const struct group_cursor *group_cursors, - int big_endian) -{ - struct bindata *first, **pp; - int c; - const struct group_cursor *gc; - - first = (struct bindata *) reswr_alloc (sizeof *first); - first->length = 6; - first->data = (unsigned char *) reswr_alloc (6); - - put_16 (big_endian, 0, first->data); - put_16 (big_endian, 2, first->data + 2); - - first->next = NULL; - pp = &first->next; - - c = 0; - for (gc = group_cursors; gc != NULL; gc = gc->next) - { - struct bindata *d; - - ++c; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 14; - d->data = (unsigned char *) reswr_alloc (14); - - put_16 (big_endian, gc->width, d->data); - put_16 (big_endian, gc->height, d->data + 2); - put_16 (big_endian, gc->planes, d->data + 4); - put_16 (big_endian, gc->bits, d->data + 6); - put_32 (big_endian, gc->bytes, d->data + 8); - put_16 (big_endian, gc->index, d->data + 12); - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - put_16 (big_endian, c, first->data + 4); - - return first; -} - -/* Convert a dialog resource to binary. */ - -static struct bindata * -res_to_bin_dialog (const struct dialog *dialog, int big_endian) -{ - int dialogex; - struct bindata *first, **pp; - unsigned long length; - int off, c; - struct dialog_control *dc; - - dialogex = extended_dialog (dialog); - - first = (struct bindata *) reswr_alloc (sizeof *first); - first->length = dialogex ? 26 : 18; - first->data = (unsigned char *) reswr_alloc (first->length); - - length = first->length; - - if (! dialogex) - { - put_32 (big_endian, dialog->style, first->data); - put_32 (big_endian, dialog->exstyle, first->data + 4); - off = 8; - } - else - { - put_16 (big_endian, 1, first->data); - put_16 (big_endian, 0xffff, first->data + 2); - - if (dialog->ex == NULL) - put_32 (big_endian, 0, first->data + 4); - else - put_32 (big_endian, dialog->ex->help, first->data + 4); - put_32 (big_endian, dialog->exstyle, first->data + 8); - put_32 (big_endian, dialog->style, first->data + 12); - off = 16; - } - - put_16 (big_endian, dialog->x, first->data + off + 2); - put_16 (big_endian, dialog->y, first->data + off + 4); - put_16 (big_endian, dialog->width, first->data + off + 6); - put_16 (big_endian, dialog->height, first->data + off + 8); - - pp = &first->next; - - *pp = resid_to_bin (dialog->menu, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - *pp = resid_to_bin (dialog->class, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - *pp = unicode_to_bin (dialog->caption, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - if ((dialog->style & DS_SETFONT) != 0) - { - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = dialogex ? 6 : 2; - d->data = (unsigned char *) reswr_alloc (d->length); - - length += d->length; - - put_16 (big_endian, dialog->pointsize, d->data); - - if (dialogex) - { - if (dialog->ex == NULL) - { - put_16 (big_endian, 0, d->data + 2); - put_8 (0, d->data + 4); - put_8 (1, d->data + 5); - } - else - { - put_16 (big_endian, dialog->ex->weight, d->data + 2); - put_8 (dialog->ex->italic, d->data + 4); - put_8 (dialog->ex->charset, d->data + 5); - } - } - - *pp = d; - pp = &d->next; - - *pp = unicode_to_bin (dialog->font, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - } - - c = 0; - for (dc = dialog->controls; dc != NULL; dc = dc->next) - { - struct bindata *d; - int dcoff; - - ++c; - - dword_align_bin (&pp, &length); - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = dialogex ? 24 : 18; - d->data = (unsigned char *) reswr_alloc (d->length); - - length += d->length; - - if (! dialogex) - { - put_32 (big_endian, dc->style, d->data); - put_32 (big_endian, dc->exstyle, d->data + 4); - dcoff = 8; - } - else - { - put_32 (big_endian, dc->help, d->data); - put_32 (big_endian, dc->exstyle, d->data + 4); - put_32 (big_endian, dc->style, d->data + 8); - dcoff = 12; - } - - put_16 (big_endian, dc->x, d->data + dcoff); - put_16 (big_endian, dc->y, d->data + dcoff + 2); - put_16 (big_endian, dc->width, d->data + dcoff + 4); - put_16 (big_endian, dc->height, d->data + dcoff + 6); - - if (dialogex) - put_32 (big_endian, dc->id, d->data + dcoff + 8); - else - put_16 (big_endian, dc->id, d->data + dcoff + 8); - - *pp = d; - pp = &d->next; - - *pp = resid_to_bin (dc->class, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - *pp = resid_to_bin (dc->text, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 2; - d->data = (unsigned char *) reswr_alloc (2); - - length += 2; - - d->next = NULL; - *pp = d; - pp = &d->next; - - if (dc->data == NULL) - put_16 (big_endian, 0, d->data); - else - { - unsigned long sublen; - - dword_align_bin (&pp, &length); - - *pp = res_to_bin_rcdata (dc->data, big_endian); - sublen = 0; - while (*pp != NULL) - { - sublen += (*pp)->length; - pp = &(*pp)->next; - } - - put_16 (big_endian, sublen, d->data); - - length += sublen; - } - } - put_16 (big_endian, c, first->data + off); - - return first; -} - -/* Convert a fontdir resource to binary. */ - -static struct bindata * -res_to_bin_fontdir (const struct fontdir *fontdirs, int big_endian) -{ - struct bindata *first, **pp; - int c; - const struct fontdir *fd; - - first = (struct bindata *) reswr_alloc (sizeof *first); - first->length = 2; - first->data = (unsigned char *) reswr_alloc (2); - - first->next = NULL; - pp = &first->next; - - c = 0; - for (fd = fontdirs; fd != NULL; fd = fd->next) - { - struct bindata *d; - - ++c; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 2; - d->data = (unsigned char *) reswr_alloc (2); - - put_16 (big_endian, fd->index, d->data); - - *pp = d; - pp = &d->next; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = fd->length; - d->data = (unsigned char *) fd->data; - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - put_16 (big_endian, c, first->data); - - return first; -} - -/* Convert a group icon resource to binary. */ - -static struct bindata * -res_to_bin_group_icon (const struct group_icon *group_icons, int big_endian) -{ - struct bindata *first, **pp; - int c; - const struct group_icon *gi; - - first = (struct bindata *) reswr_alloc (sizeof *first); - first->length = 6; - first->data = (unsigned char *) reswr_alloc (6); - - put_16 (big_endian, 0, first->data); - put_16 (big_endian, 1, first->data + 2); - - first->next = NULL; - pp = &first->next; - - c = 0; - for (gi = group_icons; gi != NULL; gi = gi->next) - { - struct bindata *d; - - ++c; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 14; - d->data = (unsigned char *) reswr_alloc (14); - - d->data[0] = gi->width; - d->data[1] = gi->height; - d->data[2] = gi->colors; - d->data[3] = 0; - put_16 (big_endian, gi->planes, d->data + 4); - put_16 (big_endian, gi->bits, d->data + 6); - put_32 (big_endian, gi->bytes, d->data + 8); - put_16 (big_endian, gi->index, d->data + 12); - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - put_16 (big_endian, c, first->data + 4); - - return first; -} - -/* Convert a menu resource to binary. */ - -static struct bindata * -res_to_bin_menu (const struct menu *menu, int big_endian) -{ - int menuex; - struct bindata *d; - - menuex = extended_menu (menu); - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = menuex ? 8 : 4; - d->data = (unsigned char *) reswr_alloc (d->length); - - if (! menuex) - { - put_16 (big_endian, 0, d->data); - put_16 (big_endian, 0, d->data + 2); - - d->next = res_to_bin_menuitems (menu->items, big_endian); - } - else - { - put_16 (big_endian, 1, d->data); - put_16 (big_endian, 4, d->data + 2); - put_32 (big_endian, menu->help, d->data + 4); - - d->next = res_to_bin_menuexitems (menu->items, big_endian); - } - - return d; -} - -/* Convert menu items to binary. */ - -static struct bindata * -res_to_bin_menuitems (const struct menuitem *items, int big_endian) -{ - struct bindata *first, **pp; - const struct menuitem *mi; - - first = NULL; - pp = &first; - - for (mi = items; mi != NULL; mi = mi->next) - { - struct bindata *d; - int flags; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = mi->popup == NULL ? 4 : 2; - d->data = (unsigned char *) reswr_alloc (d->length); - - flags = mi->type; - if (mi->next == NULL) - flags |= MENUITEM_ENDMENU; - if (mi->popup != NULL) - flags |= MENUITEM_POPUP; - - put_16 (big_endian, flags, d->data); - - if (mi->popup == NULL) - put_16 (big_endian, mi->id, d->data + 2); - - *pp = d; - pp = &d->next; - - *pp = unicode_to_bin (mi->text, big_endian); - pp = &(*pp)->next; - - if (mi->popup != NULL) - { - *pp = res_to_bin_menuitems (mi->popup, big_endian); - while (*pp != NULL) - pp = &(*pp)->next; - } - } - - return first; -} - -/* Convert menuex items to binary. */ - -static struct bindata * -res_to_bin_menuexitems (const struct menuitem *items, int big_endian) -{ - struct bindata *first, **pp; - unsigned long length; - const struct menuitem *mi; - - first = NULL; - pp = &first; - - length = 0; - - for (mi = items; mi != NULL; mi = mi->next) - { - struct bindata *d; - int flags; - - dword_align_bin (&pp, &length); - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 12; - d->data = (unsigned char *) reswr_alloc (12); - - length += 12; - - put_32 (big_endian, mi->type, d->data); - put_32 (big_endian, mi->state, d->data + 4); - put_16 (big_endian, mi->id, d->data + 8); - - flags = 0; - if (mi->next == NULL) - flags |= 0x80; - if (mi->popup != NULL) - flags |= 1; - put_16 (big_endian, flags, d->data + 10); - - *pp = d; - pp = &d->next; - - *pp = unicode_to_bin (mi->text, big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - if (mi->popup != NULL) - { - dword_align_bin (&pp, &length); - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 4; - d->data = (unsigned char *) reswr_alloc (4); - - put_32 (big_endian, mi->help, d->data); - - *pp = d; - pp = &d->next; - - *pp = res_to_bin_menuexitems (mi->popup, big_endian); - while (*pp != NULL) - { - length += (*pp)->length; - pp = &(*pp)->next; - } - } - } - - return first; -} - -/* Convert an rcdata resource to binary. This is also used to convert - other information which happens to be stored in rcdata_item lists - to binary. */ - -static struct bindata * -res_to_bin_rcdata (const struct rcdata_item *items, int big_endian) -{ - struct bindata *first, **pp; - const struct rcdata_item *ri; - - first = NULL; - pp = &first; - - for (ri = items; ri != NULL; ri = ri->next) - { - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - - switch (ri->type) - { - default: - abort (); - - case RCDATA_WORD: - d->length = 2; - d->data = (unsigned char *) reswr_alloc (2); - put_16 (big_endian, ri->u.word, d->data); - break; - - case RCDATA_DWORD: - d->length = 4; - d->data = (unsigned char *) reswr_alloc (4); - put_32 (big_endian, ri->u.dword, d->data); - break; - - case RCDATA_STRING: - d->length = ri->u.string.length; - d->data = (unsigned char *) ri->u.string.s; - break; - - case RCDATA_WSTRING: - { - unsigned long i; - - d->length = ri->u.wstring.length * 2; - d->data = (unsigned char *) reswr_alloc (d->length); - for (i = 0; i < ri->u.wstring.length; i++) - put_16 (big_endian, ri->u.wstring.w[i], d->data + i * 2); - break; - } - - case RCDATA_BUFFER: - d->length = ri->u.buffer.length; - d->data = (unsigned char *) ri->u.buffer.data; - break; - } - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - return first; -} - -/* Convert a stringtable resource to binary. */ - -static struct bindata * -res_to_bin_stringtable (const struct stringtable *st, int big_endian) -{ - struct bindata *first, **pp; - int i; - - first = NULL; - pp = &first; - - for (i = 0; i < 16; i++) - { - int slen, j; - struct bindata *d; - unichar *s; - - slen = st->strings[i].length; - s = st->strings[i].string; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 2 + slen * 2; - d->data = (unsigned char *) reswr_alloc (d->length); - - put_16 (big_endian, slen, d->data); - - for (j = 0; j < slen; j++) - put_16 (big_endian, s[j], d->data + 2 + j * 2); - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - return first; -} - -/* Convert an ASCII string to a unicode binary string. This always - returns exactly one bindata structure. */ - -static struct bindata * -string_to_unicode_bin (const char *s, int big_endian) -{ - size_t len, i; - struct bindata *d; - - len = strlen (s); - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = len * 2 + 2; - d->data = (unsigned char *) reswr_alloc (d->length); - - for (i = 0; i < len; i++) - put_16 (big_endian, s[i], d->data + i * 2); - put_16 (big_endian, 0, d->data + i * 2); - - d->next = NULL; - - return d; -} - -/* Convert a versioninfo resource to binary. */ - -static struct bindata * -res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian) -{ - struct bindata *first, **pp; - unsigned long length; - struct ver_info *vi; - - first = (struct bindata *) reswr_alloc (sizeof *first); - first->length = 6; - first->data = (unsigned char *) reswr_alloc (6); - - length = 6; - - if (versioninfo->fixed == NULL) - put_16 (big_endian, 0, first->data + 2); - else - put_16 (big_endian, 52, first->data + 2); - - put_16 (big_endian, 0, first->data + 4); - - pp = &first->next; - - *pp = string_to_unicode_bin ("VS_VERSION_INFO", big_endian); - length += (*pp)->length; - pp = &(*pp)->next; - - dword_align_bin (&pp, &length); - - if (versioninfo->fixed != NULL) - { - const struct fixed_versioninfo *fi; - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = 52; - d->data = (unsigned char *) reswr_alloc (52); - - length += 52; - - fi = versioninfo->fixed; - - put_32 (big_endian, 0xfeef04bd, d->data); - put_32 (big_endian, 0x10000, d->data + 4); - put_32 (big_endian, fi->file_version_ms, d->data + 8); - put_32 (big_endian, fi->file_version_ls, d->data + 12); - put_32 (big_endian, fi->product_version_ms, d->data + 16); - put_32 (big_endian, fi->product_version_ls, d->data + 20); - put_32 (big_endian, fi->file_flags_mask, d->data + 24); - put_32 (big_endian, fi->file_flags, d->data + 28); - put_32 (big_endian, fi->file_os, d->data + 32); - put_32 (big_endian, fi->file_type, d->data + 36); - put_32 (big_endian, fi->file_subtype, d->data + 40); - put_32 (big_endian, fi->file_date_ms, d->data + 44); - put_32 (big_endian, fi->file_date_ls, d->data + 48); - - d->next = NULL; - *pp = d; - pp = &d->next; - } - - for (vi = versioninfo->var; vi != NULL; vi = vi->next) - { - struct bindata *vid; - unsigned long vilen; - - dword_align_bin (&pp, &length); - - vid = (struct bindata *) reswr_alloc (sizeof *vid); - vid->length = 6; - vid->data = (unsigned char *) reswr_alloc (6); - - length += 6; - vilen = 6; - - put_16 (big_endian, 0, vid->data + 2); - put_16 (big_endian, 0, vid->data + 4); - - *pp = vid; - pp = &vid->next; - - switch (vi->type) - { - default: - abort (); - - case VERINFO_STRING: - { - unsigned long hold, vslen; - struct bindata *vsd; - const struct ver_stringinfo *vs; - - *pp = string_to_unicode_bin ("StringFileInfo", big_endian); - length += (*pp)->length; - vilen += (*pp)->length; - pp = &(*pp)->next; - - hold = length; - dword_align_bin (&pp, &length); - vilen += length - hold; - - vsd = (struct bindata *) reswr_alloc (sizeof *vsd); - vsd->length = 6; - vsd->data = (unsigned char *) reswr_alloc (6); - - length += 6; - vilen += 6; - vslen = 6; - - put_16 (big_endian, 0, vsd->data + 2); - put_16 (big_endian, 0, vsd->data + 4); - - *pp = vsd; - pp = &vsd->next; - - *pp = unicode_to_bin (vi->u.string.language, big_endian); - length += (*pp)->length; - vilen += (*pp)->length; - vslen += (*pp)->length; - pp = &(*pp)->next; - - for (vs = vi->u.string.strings; vs != NULL; vs = vs->next) - { - struct bindata *vssd; - unsigned long vsslen; - - hold = length; - dword_align_bin (&pp, &length); - vilen += length - hold; - vslen += length - hold; - - vssd = (struct bindata *) reswr_alloc (sizeof *vssd); - vssd->length = 6; - vssd->data = (unsigned char *) reswr_alloc (6); - - length += 6; - vilen += 6; - vslen += 6; - vsslen = 6; - - put_16 (big_endian, 1, vssd->data + 4); - - *pp = vssd; - pp = &vssd->next; - - *pp = unicode_to_bin (vs->key, big_endian); - length += (*pp)->length; - vilen += (*pp)->length; - vslen += (*pp)->length; - vsslen += (*pp)->length; - pp = &(*pp)->next; - - hold = length; - dword_align_bin (&pp, &length); - vilen += length - hold; - vslen += length - hold; - vsslen += length - hold; - - *pp = unicode_to_bin (vs->value, big_endian); - put_16 (big_endian, (*pp)->length / 2, vssd->data + 2); - length += (*pp)->length; - vilen += (*pp)->length; - vslen += (*pp)->length; - vsslen += (*pp)->length; - pp = &(*pp)->next; - - put_16 (big_endian, vsslen, vssd->data); - } - - put_16 (big_endian, vslen, vsd->data); - - break; - } - - case VERINFO_VAR: - { - unsigned long hold, vvlen, vvvlen; - struct bindata *vvd; - const struct ver_varinfo *vv; - - *pp = string_to_unicode_bin ("VarFileInfo", big_endian); - length += (*pp)->length; - vilen += (*pp)->length; - pp = &(*pp)->next; - - hold = length; - dword_align_bin (&pp, &length); - vilen += length - hold; - - vvd = (struct bindata *) reswr_alloc (sizeof *vvd); - vvd->length = 6; - vvd->data = (unsigned char *) reswr_alloc (6); - - length += 6; - vilen += 6; - vvlen = 6; - - put_16 (big_endian, 0, vvd->data + 4); - - *pp = vvd; - pp = &vvd->next; - - *pp = unicode_to_bin (vi->u.var.key, big_endian); - length += (*pp)->length; - vilen += (*pp)->length; - vvlen += (*pp)->length; - pp = &(*pp)->next; - - hold = length; - dword_align_bin (&pp, &length); - vilen += length - hold; - vvlen += length - hold; - - vvvlen = 0; - - for (vv = vi->u.var.var; vv != NULL; vv = vv->next) - { - struct bindata *vvsd; - - vvsd = (struct bindata *) reswr_alloc (sizeof *vvsd); - vvsd->length = 4; - vvsd->data = (unsigned char *) reswr_alloc (4); - - length += 4; - vilen += 4; - vvlen += 4; - vvvlen += 4; - - put_16 (big_endian, vv->language, vvsd->data); - put_16 (big_endian, vv->charset, vvsd->data + 2); - - vvsd->next = NULL; - *pp = vvsd; - pp = &vvsd->next; - } - - put_16 (big_endian, vvlen, vvd->data); - put_16 (big_endian, vvvlen, vvd->data + 2); - - break; - } - } - - put_16 (big_endian, vilen, vid->data); - } - - put_16 (big_endian, length, first->data); - - return first; -} - -/* Convert a generic resource to binary. */ - -static struct bindata * -res_to_bin_generic (unsigned long length, const unsigned char *data) -{ - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - d->length = length; - d->data = (unsigned char *) data; - - d->next = NULL; - - return d; -} diff --git a/binutils/rescoff.c b/binutils/rescoff.c deleted file mode 100644 index 60122ded0..000000000 --- a/binutils/rescoff.c +++ /dev/null @@ -1,766 +0,0 @@ -/* rescoff.c -- read and write resources in Windows COFF files. - Copyright 1997, 1998, 1999, 2000, 2003 - Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file contains function that read and write Windows resources - in COFF files. */ - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "windres.h" - -#include - -/* 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. */ - bfd_vma secaddr; - /* Non-zero if the file is big endian. */ - int big_endian; -}; - -/* A resource directory table in a COFF file. */ - -struct 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]; -}; - -/* Macros to swap in values. */ - -#define getfi_16(fi, s) ((fi)->big_endian ? bfd_getb16 (s) : bfd_getl16 (s)) -#define getfi_32(fi, s) ((fi)->big_endian ? bfd_getb32 (s) : bfd_getl32 (s)) - -/* Local functions. */ - -static void overrun (const struct coff_file_info *, const char *); -static struct res_directory *read_coff_res_dir - (const bfd_byte *, const struct coff_file_info *, - const struct res_id *, int); -static struct res_resource *read_coff_data_entry - (const bfd_byte *, const struct coff_file_info *, const struct res_id *); - -/* Read the resources in a COFF file. */ - -struct res_directory * -read_coff_rsrc (const char *filename, const char *target) -{ - bfd *abfd; - char **matching; - asection *sec; - bfd_size_type size; - bfd_byte *data; - struct coff_file_info finfo; - - 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); - } - - size = bfd_section_size (abfd, sec); - data = (bfd_byte *) res_alloc (size); - - if (! bfd_get_section_contents (abfd, sec, data, 0, size)) - bfd_fatal (_("can't read resource section")); - - finfo.filename = filename; - finfo.data = data; - finfo.data_end = data + size; - finfo.secaddr = (bfd_get_section_vma (abfd, sec) - - pe_data (abfd)->pe_opthdr.ImageBase); - finfo.big_endian = bfd_big_endian (abfd); - - bfd_close (abfd); - - /* 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. */ - - return read_coff_res_dir (data, &finfo, (const struct res_id *) NULL, 0); -} - -/* Give an error if we are out of bounds. */ - -static void -overrun (const struct coff_file_info *finfo, const char *msg) -{ - fatal (_("%s: %s: address out of bounds"), finfo->filename, msg); -} - -/* Read a resource directory. */ - -static struct res_directory * -read_coff_res_dir (const bfd_byte *data, const struct coff_file_info *finfo, - const struct res_id *type, int level) -{ - const struct extern_res_directory *erd; - struct res_directory *rd; - int name_count, id_count, i; - struct res_entry **pp; - const struct extern_res_entry *ere; - - if ((size_t) (finfo->data_end - data) < sizeof (struct extern_res_directory)) - overrun (finfo, _("directory")); - - erd = (const struct extern_res_directory *) data; - - rd = (struct res_directory *) res_alloc (sizeof *rd); - rd->characteristics = getfi_32 (finfo, erd->characteristics); - rd->time = getfi_32 (finfo, erd->time); - rd->major = getfi_16 (finfo, erd->major); - rd->minor = getfi_16 (finfo, erd->minor); - rd->entries = NULL; - - name_count = getfi_16 (finfo, erd->name_count); - id_count = getfi_16 (finfo, erd->id_count); - - 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++) - { - unsigned long name, rva; - struct res_entry *re; - const bfd_byte *ers; - int length, j; - - if ((const bfd_byte *) ere >= finfo->data_end) - overrun (finfo, _("named directory entry")); - - name = getfi_32 (finfo, ere->name); - rva = getfi_32 (finfo, ere->rva); - - /* For some reason the high bit in NAME is set. */ - name &=~ 0x80000000; - - if (name > (size_t) (finfo->data_end - finfo->data)) - overrun (finfo, _("directory entry name")); - - ers = finfo->data + name; - - re = (struct res_entry *) res_alloc (sizeof *re); - re->next = NULL; - re->id.named = 1; - length = getfi_16 (finfo, ers); - 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] = getfi_16 (finfo, ers + j * 2 + 2); - - if (level == 0) - type = &re->id; - - if ((rva & 0x80000000) != 0) - { - rva &=~ 0x80000000; - if (rva >= (size_t) (finfo->data_end - finfo->data)) - overrun (finfo, _("named subdirectory")); - re->subdir = 1; - re->u.dir = read_coff_res_dir (finfo->data + rva, finfo, type, - level + 1); - } - else - { - if (rva >= (size_t) (finfo->data_end - finfo->data)) - overrun (finfo, _("named resource")); - re->subdir = 0; - re->u.res = read_coff_data_entry (finfo->data + rva, finfo, type); - } - - *pp = re; - pp = &re->next; - } - - for (i = 0; i < id_count; i++, ere++) - { - unsigned long name, rva; - struct res_entry *re; - - if ((const bfd_byte *) ere >= finfo->data_end) - overrun (finfo, _("ID directory entry")); - - name = getfi_32 (finfo, ere->name); - rva = getfi_32 (finfo, ere->rva); - - re = (struct 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 >= (size_t) (finfo->data_end - finfo->data)) - overrun (finfo, _("ID subdirectory")); - re->subdir = 1; - re->u.dir = read_coff_res_dir (finfo->data + rva, finfo, type, - level + 1); - } - else - { - if (rva >= (size_t) (finfo->data_end - finfo->data)) - overrun (finfo, _("ID resource")); - re->subdir = 0; - re->u.res = read_coff_data_entry (finfo->data + rva, finfo, type); - } - - *pp = re; - pp = &re->next; - } - - return rd; -} - -/* Read a resource data entry. */ - -static struct res_resource * -read_coff_data_entry (const bfd_byte *data, const struct coff_file_info *finfo, const struct res_id *type) -{ - const struct extern_res_data *erd; - struct res_resource *r; - unsigned long size, rva; - const bfd_byte *resdata; - - if (type == NULL) - fatal (_("resource type unknown")); - - if ((size_t) (finfo->data_end - data) < sizeof (struct extern_res_data)) - overrun (finfo, _("data entry")); - - erd = (const struct extern_res_data *) data; - - size = getfi_32 (finfo, erd->size); - rva = getfi_32 (finfo, erd->rva); - if (rva < finfo->secaddr - || rva - finfo->secaddr >= (size_t) (finfo->data_end - finfo->data)) - overrun (finfo, _("resource data")); - - resdata = finfo->data + (rva - finfo->secaddr); - - if (size > (size_t) (finfo->data_end - resdata)) - overrun (finfo, _("resource data size")); - - r = bin_to_res (*type, resdata, size, finfo->big_endian); - - memset (&r->res_info, 0, sizeof (struct res_res_info)); - r->coff_info.codepage = getfi_32 (finfo, erd->codepage); - r->coff_info.reserved = getfi_32 (finfo, erd->reserved); - - return r; -} - -/* This structure is used to build a list of bindata structures. */ - -struct bindata_build -{ - /* The data. */ - struct bindata *d; - /* The last structure we have added to the list. */ - struct bindata *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. */ - bfd *abfd; - /* Non-zero if the file is big endian. */ - int big_endian; - /* 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 bindata_build resources; - /* Relocations. */ - arelent **relocs; - /* Number of relocations. */ - unsigned int reloc_count; -}; - -/* Macros to swap out values. */ - -#define putcwi_16(cwi, v, s) \ - ((cwi->big_endian) ? bfd_putb16 ((v), (s)) : bfd_putl16 ((v), (s))) -#define putcwi_32(cwi, v, s) \ - ((cwi->big_endian) ? bfd_putb32 ((v), (s)) : bfd_putl32 ((v), (s))) - -static void coff_bin_sizes - (const struct res_directory *, struct coff_write_info *); -static unsigned char *coff_alloc (struct bindata_build *, size_t); -static void coff_to_bin - (const struct res_directory *, struct coff_write_info *); -static void coff_res_to_bin - (const struct 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 struct res_directory *resources) -{ - bfd *abfd; - asection *sec; - struct coff_write_info cwi; - struct bindata *d; - 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 (abfd, ".rsrc"); - if (sec == NULL) - bfd_fatal ("bfd_make_section"); - - if (! bfd_set_section_flags (abfd, sec, - (SEC_HAS_CONTENTS | SEC_ALLOC - | SEC_LOAD | SEC_DATA))) - bfd_fatal ("bfd_set_section_flags"); - - 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. */ - - cwi.abfd = abfd; - cwi.big_endian = bfd_big_endian (abfd); - 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) - { - unsigned char *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) - { - if (! bfd_set_section_contents (abfd, sec, d->data, offset, d->length)) - bfd_fatal ("bfd_set_section_contents"); - offset += d->length; - } - for (d = cwi.dataents.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.resources.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; - } - - 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 struct res_directory *resdir, - struct coff_write_info *cwi) -{ - const struct 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 unsigned char * -coff_alloc (struct bindata_build *bb, size_t size) -{ - struct bindata *d; - - d = (struct bindata *) reswr_alloc (sizeof *d); - - d->next = NULL; - d->data = (unsigned char *) 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 struct res_directory *resdir, struct coff_write_info *cwi) -{ - struct extern_res_directory *erd; - int ci, cn; - const struct res_entry *e; - struct extern_res_entry *ere; - - /* Write out the directory table. */ - - erd = ((struct extern_res_directory *) - coff_alloc (&cwi->dirs, sizeof (*erd))); - - putcwi_32 (cwi, resdir->characteristics, erd->characteristics); - putcwi_32 (cwi, resdir->time, erd->time); - putcwi_16 (cwi, resdir->major, erd->major); - putcwi_16 (cwi, resdir->minor, erd->minor); - - ci = 0; - cn = 0; - for (e = resdir->entries; e != NULL; e = e->next) - { - if (e->id.named) - ++cn; - else - ++ci; - } - - putcwi_16 (cwi, cn, erd->name_count); - putcwi_16 (cwi, ci, erd->id_count); - - /* 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) - putcwi_32 (cwi, e->id.u.id, ere->name); - else - { - unsigned char *str; - int i; - - /* For some reason existing files seem to have the high bit - set on the address of the name, although that is not - documented. */ - putcwi_32 (cwi, - 0x80000000 | (cwi->dirsize + cwi->dirstrs.length), - ere->name); - - str = coff_alloc (&cwi->dirstrs, e->id.u.n.length * 2 + 2); - putcwi_16 (cwi, e->id.u.n.length, str); - for (i = 0; i < e->id.u.n.length; i++) - putcwi_16 (cwi, e->id.u.n.name[i], str + i * 2 + 2); - } - - if (e->subdir) - { - putcwi_32 (cwi, 0x80000000 | cwi->dirs.length, ere->rva); - coff_to_bin (e->u.dir, cwi); - } - else - { - putcwi_32 (cwi, - cwi->dirsize + cwi->dirstrsize + cwi->dataents.length, - ere->rva); - - coff_res_to_bin (e->u.res, cwi); - } - } -} - -/* Convert the resource RES to binary. */ - -static void -coff_res_to_bin (const struct res_resource *res, struct coff_write_info *cwi) -{ - arelent *r; - struct extern_res_data *erd; - struct bindata *d; - unsigned long length; - - /* 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 (cwi->abfd, 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)); - - putcwi_32 (cwi, - (cwi->dirsize - + cwi->dirstrsize - + cwi->dataentsize - + cwi->resources.length), - erd->rva); - putcwi_32 (cwi, res->coff_info.codepage, erd->codepage); - putcwi_32 (cwi, res->coff_info.reserved, erd->reserved); - - d = res_to_bin (res, cwi->big_endian); - - if (cwi->resources.d == NULL) - cwi->resources.d = d; - else - cwi->resources.last->next = d; - - length = 0; - for (; d->next != NULL; d = d->next) - length += d->length; - length += d->length; - cwi->resources.last = d; - cwi->resources.length += length; - - putcwi_32 (cwi, length, erd->size); - - /* Force the next resource to have 32 bit alignment. */ - - if ((length & 3) != 0) - { - int add; - unsigned char *ex; - - add = 4 - (length & 3); - - ex = coff_alloc (&cwi->resources, add); - memset (ex, 0, add); - } -} diff --git a/binutils/resrc.c b/binutils/resrc.c deleted file mode 100644 index c290a9d0c..000000000 --- a/binutils/resrc.c +++ /dev/null @@ -1,2562 +0,0 @@ -/* resrc.c -- read and write Windows rc files. - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file contains functions that read and write Windows rc files. - These are text files that represent resources. */ - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "safe-ctype.h" -#include "windres.h" - -#include -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif - -#ifdef HAVE_SYS_WAIT_H -#include -#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. */ - unsigned char width; - /* Height of image. */ - unsigned char height; - /* Number of colors in image. */ - unsigned char 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. */ - -static 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 struct 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. */ - -struct fontdir *fontdirs; - -/* Resource info to use for fontdirs. */ - -struct res_res_info fontdirs_resinfo; - -/* The number of icon resources we have written out. */ - -static int icons; - -/* Local functions. */ - -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 *, unsigned char *, unsigned long, 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; -} - -/* 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; - - 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", - DEFAULT_PREPROCESSOR, preprocargs, filename); - - if (verbose) - fprintf (stderr, _("Using `%s'\n"), cmd); - - cpp_pipe = open_input_stream (cmd); - return cpp_pipe; -} - -/* Read an rc file. */ - -struct res_directory * -read_rc_file (const char *filename, const char *preprocessor, - const char *preprocargs, int language, int use_temp_file) -{ - char *cmd; - - istream_type = (use_temp_file) ? ISTREAM_FILE : ISTREAM_PIPE; - - if (preprocargs == NULL) - preprocargs = ""; - if (filename == NULL) - filename = "-"; - - if (preprocessor) - { - cmd = xmalloc (strlen (preprocessor) - + strlen (preprocargs) - + strlen (filename) - + 10); - sprintf (cmd, "%s %s %s", preprocessor, preprocargs, filename); - - 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) -#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); - yyin = cpp_pipe; - 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) - pclose (cpp_pipe); - } - - /* 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, unsigned char *p, unsigned long c, const char *msg) -{ - unsigned long got; - - got = fread (p, 1, c, e); - if (got == c) - return; - - fatal (_("%s: read of %lu returned %lu"), msg, c, got); -} - -/* Define an accelerator resource. */ - -void -define_accelerator (struct res_id id, const struct res_res_info *resinfo, - struct accelerator *data) -{ - struct 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 (struct res_id id, const struct res_res_info *resinfo, - const char *filename) -{ - FILE *e; - char *real_filename; - struct stat s; - unsigned char *data; - int i; - struct 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 = (unsigned char *) 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 (struct res_id id, const struct res_res_info *resinfo, - const char *filename) -{ - FILE *e; - char *real_filename; - int type, count, i; - struct icondir *icondirs; - int first_cursor; - struct res_resource *r; - struct 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++) - { - unsigned char *data; - struct res_id name; - struct 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 = (unsigned char *) res_alloc (icondirs[i].bytes); - - get_data (e, data, icondirs[i].bytes, real_filename); - - c = (struct cursor *) res_alloc (sizeof *c); - 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++) - { - struct group_cursor *cg; - - cg = (struct group_cursor *) res_alloc (sizeof *cg); - 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 (struct res_id id, const struct res_res_info *resinfo, - const struct dialog *dialog) -{ - struct dialog *copy; - struct res_resource *r; - - copy = (struct 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. */ - -struct dialog_control * -define_control (const struct res_id iid, unsigned long id, unsigned long x, - unsigned long y, unsigned long width, unsigned long height, - unsigned long class, unsigned long style, - unsigned long exstyle) -{ - struct dialog_control *n; - - n = (struct dialog_control *) res_alloc (sizeof *n); - 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.named = 0; - n->class.u.id = class; - n->text = iid; - n->data = NULL; - n->help = 0; - - return n; -} - -struct dialog_control * -define_icon_control (struct res_id iid, unsigned long id, unsigned long x, - unsigned long y, unsigned long style, - unsigned long exstyle, unsigned long help, - struct rcdata_item *data, struct dialog_ex *ex) -{ - struct dialog_control *n; - struct res_id tid; - - if (style == 0) - style = SS_ICON | WS_CHILD | WS_VISIBLE; - res_string_to_id (&tid, ""); - n = define_control (tid, id, x, y, 0, 0, CTL_STATIC, 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 (struct res_id id, const struct res_res_info *resinfo, - const char *filename) -{ - FILE *e; - char *real_filename; - struct stat s; - unsigned char *data; - struct res_resource *r; - long offset; - long fontdatalength; - unsigned char *fontdata; - struct fontdir *fd; - const char *device, *face; - struct fontdir **pp; - - e = open_file_search (filename, FOPEN_RB, "font file", &real_filename); - - if (stat (real_filename, &s) < 0) - fatal (_("stat failed on bitmap file `%s': %s"), real_filename, - strerror (errno)); - - data = (unsigned char *) 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 = (unsigned char *) res_alloc (fontdatalength); - memcpy (fontdata, data, 56); - strcpy ((char *) fontdata + 56, device); - strcpy ((char *) fontdata + 57 + strlen (device), face); - - fd = (struct fontdir *) res_alloc (sizeof *fd); - 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; -} - -/* 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) -{ - struct res_resource *r; - struct 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; -} - -/* 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 (struct res_id id, const struct res_res_info *resinfo, - const char *filename) -{ - FILE *e; - char *real_filename; - int type, count, i; - struct icondir *icondirs; - int first_icon; - struct res_resource *r; - struct 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++) - { - unsigned char *data; - struct 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 = (unsigned char *) 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++) - { - struct 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 = (struct group_icon *) res_alloc (sizeof *cg); - 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; -} - -/* Define a menu resource. */ - -void -define_menu (struct res_id id, const struct res_res_info *resinfo, - struct menuitem *menuitems) -{ - struct menu *m; - struct res_resource *r; - - m = (struct menu *) res_alloc (sizeof *m); - 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. */ - -struct menuitem * -define_menuitem (const char *text, int menuid, unsigned long type, - unsigned long state, unsigned long help, - struct menuitem *menuitems) -{ - struct menuitem *mi; - - mi = (struct menuitem *) res_alloc (sizeof *mi); - mi->next = NULL; - mi->type = type; - mi->state = state; - mi->id = menuid; - if (text == NULL) - mi->text = NULL; - else - unicode_from_ascii ((int *) NULL, &mi->text, text); - mi->help = help; - mi->popup = menuitems; - return mi; -} - -/* Define a messagetable resource. */ - -void -define_messagetable (struct res_id id, const struct res_res_info *resinfo, - const char *filename) -{ - FILE *e; - char *real_filename; - struct stat s; - unsigned char *data; - struct 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 = (unsigned char *) 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 (struct res_id id, const struct res_res_info *resinfo, - struct rcdata_item *data) -{ - struct 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. */ - -struct rcdata_item * -define_rcdata_string (const char *string, unsigned long len) -{ - struct rcdata_item *ri; - char *s; - - ri = (struct rcdata_item *) res_alloc (sizeof *ri); - 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 number. */ - -struct rcdata_item * -define_rcdata_number (unsigned long val, int dword) -{ - struct rcdata_item *ri; - - ri = (struct rcdata_item *) res_alloc (sizeof *ri); - 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 struct res_res_info *resinfo, - unsigned long stringid, const char *string) -{ - struct res_id id; - struct 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 = ((struct stringtable *) - res_alloc (sizeof (struct 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; - } - - unicode_from_ascii (&r->u.stringtable->strings[stringid & 0xf].length, - &r->u.stringtable->strings[stringid & 0xf].string, - string); -} - -/* Define a user data resource where the data is in the rc file. */ - -void -define_user_data (struct res_id id, struct res_id type, - const struct res_res_info *resinfo, - struct rcdata_item *data) -{ - struct res_id ids[3]; - struct res_resource *r; - - 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 = data; - r->res_info = *resinfo; -} - -/* Define a user data resource where the data is in a file. */ - -void -define_user_file (struct res_id id, struct res_id type, - const struct res_res_info *resinfo, const char *filename) -{ - FILE *e; - char *real_filename; - struct stat s; - unsigned char *data; - struct res_id ids[3]; - struct res_resource *r; - - e = open_file_search (filename, FOPEN_RB, "font file", &real_filename); - - if (stat (real_filename, &s) < 0) - fatal (_("stat failed on bitmap file `%s': %s"), real_filename, - strerror (errno)); - - data = (unsigned char *) 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 = ((struct rcdata_item *) - res_alloc (sizeof (struct 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 (struct res_id id, int language, - struct fixed_versioninfo *fixedverinfo, - struct ver_info *verinfo) -{ - struct res_resource *r; - - r = define_standard_resource (&resources, RT_VERSION, id, language, 0); - r->type = RES_TYPE_VERSIONINFO; - r->u.versioninfo = ((struct versioninfo *) - res_alloc (sizeof (struct 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. */ - -struct ver_info * -append_ver_stringfileinfo (struct ver_info *verinfo, const char *language, - struct ver_stringinfo *strings) -{ - struct ver_info *vi, **pp; - - vi = (struct ver_info *) res_alloc (sizeof *vi); - vi->next = NULL; - vi->type = VERINFO_STRING; - unicode_from_ascii ((int *) NULL, &vi->u.string.language, language); - vi->u.string.strings = strings; - - for (pp = &verinfo; *pp != NULL; pp = &(*pp)->next) - ; - *pp = vi; - - return verinfo; -} - -/* Add variable version info to a list of version information. */ - -struct ver_info * -append_ver_varfileinfo (struct ver_info *verinfo, const char *key, - struct ver_varinfo *var) -{ - struct ver_info *vi, **pp; - - vi = (struct ver_info *) res_alloc (sizeof *vi); - vi->next = NULL; - vi->type = VERINFO_VAR; - unicode_from_ascii ((int *) NULL, &vi->u.var.key, 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. */ - -struct ver_stringinfo * -append_verval (struct ver_stringinfo *strings, const char *key, - const char *value) -{ - struct ver_stringinfo *vs, **pp; - - vs = (struct ver_stringinfo *) res_alloc (sizeof *vs); - vs->next = NULL; - unicode_from_ascii ((int *) NULL, &vs->key, key); - unicode_from_ascii ((int *) NULL, &vs->value, value); - - for (pp = &strings; *pp != NULL; pp = &(*pp)->next) - ; - *pp = vs; - - return strings; -} - -/* Append version variable information to a list. */ - -struct ver_varinfo * -append_vertrans (struct ver_varinfo *var, unsigned long language, - unsigned long charset) -{ - struct ver_varinfo *vv, **pp; - - vv = (struct ver_varinfo *) res_alloc (sizeof *vv); - 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 struct res_directory *, const struct res_id *, - const struct res_id *, int *, int); -static void write_rc_subdir - (FILE *, const struct res_entry *, const struct res_id *, - const struct res_id *, int *, int); -static void write_rc_resource - (FILE *, const struct res_id *, const struct res_id *, - const struct res_resource *, int *); -static void write_rc_accelerators (FILE *, const struct accelerator *); -static void write_rc_cursor (FILE *, const struct cursor *); -static void write_rc_group_cursor (FILE *, const struct group_cursor *); -static void write_rc_dialog (FILE *, const struct dialog *); -static void write_rc_dialog_control (FILE *, const struct dialog_control *); -static void write_rc_fontdir (FILE *, const struct fontdir *); -static void write_rc_group_icon (FILE *, const struct group_icon *); -static void write_rc_menu (FILE *, const struct menu *, int); -static void write_rc_menuitems (FILE *, const struct menuitem *, int, int); -static void write_rc_rcdata (FILE *, const struct rcdata_item *, int); -static void write_rc_stringtable - (FILE *, const struct res_id *, const struct stringtable *); -static void write_rc_versioninfo (FILE *, const struct versioninfo *); -static void write_rc_filedata (FILE *, unsigned long, const unsigned char *); - -/* 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. - - Actually, we don't use the format of an rc file, because it's way - too much of a pain--for example, we'd have to write icon resources - into a file and refer to that file. We just generate a readable - format that kind of looks like an rc file, and is useful for - understanding the contents of a resource file. Someday we may want - to generate an rc file which the rc compiler can read; if that day - comes, this code will have to be fixed up. */ - -void -write_rc_file (const char *filename, const struct res_directory *resources) -{ - FILE *e; - int 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 = -1; - write_rc_directory (e, resources, (const struct res_id *) NULL, - (const struct 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 struct res_directory *rd, - const struct res_id *type, const struct res_id *name, - int *language, int level) -{ - const struct res_entry *re; - - /* Print out some COFF information that rc files can't represent. */ - - if (rd->time != 0) - fprintf (e, "// Time stamp: %lu\n", rd->time); - if (rd->characteristics != 0) - fprintf (e, "// Characteristics: %lu\n", rd->characteristics); - if (rd->major != 0 || rd->minor != 0) - fprintf (e, "// Version: %d %d\n", 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) - { - fprintf (e, "LANGUAGE %lu, %lu\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 - { - fprintf (e, "// Resource at unexpected level %d\n", level); - write_rc_resource (e, type, (struct res_id *) NULL, re->u.res, - language); - } - } - } -} - -/* 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 struct res_entry *re, - const struct res_id *type, const struct res_id *name, - int *language, int level) -{ - fprintf (e, "\n"); - switch (level) - { - case 1: - fprintf (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; - default: s = NULL; break; - } - - if (s != NULL) - fprintf (e, "%s", s); - else - res_id_print (e, re->id, 1); - } - fprintf (e, "\n"); - break; - - case 2: - fprintf (e, "// Name: "); - res_id_print (e, re->id, 1); - fprintf (e, "\n"); - break; - - case 3: - fprintf (e, "// Language: "); - res_id_print (e, re->id, 1); - fprintf (e, "\n"); - break; - - default: - fprintf (e, "// Level %d: ", level); - res_id_print (e, re->id, 1); - fprintf (e, "\n"); - } - - 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 struct res_id *type, - const struct res_id *name, const struct res_resource *res, - int *language) -{ - const char *s; - int rt; - int menuex = 0; - - fprintf (e, "\n"); - - switch (res->type) - { - default: - abort (); - - case RES_TYPE_ACCELERATOR: - s = "ACCELERATOR"; - rt = RT_ACCELERATOR; - break; - - case RES_TYPE_BITMAP: - s = "BITMAP"; - rt = RT_BITMAP; - break; - - case RES_TYPE_CURSOR: - s = "CURSOR"; - rt = RT_CURSOR; - break; - - case RES_TYPE_GROUP_CURSOR: - s = "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 = "FONT"; - rt = RT_FONT; - break; - - case RES_TYPE_FONTDIR: - s = "FONTDIR"; - rt = RT_FONTDIR; - break; - - case RES_TYPE_ICON: - s = "ICON"; - rt = RT_ICON; - break; - - case RES_TYPE_GROUP_ICON: - s = "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 = "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; - } - - if (rt != 0 - && type != NULL - && (type->named || type->u.id != (unsigned long) rt)) - { - fprintf (e, "// Unexpected resource type mismatch: "); - res_id_print (e, *type, 1); - fprintf (e, " != %d", rt); - } - - if (res->coff_info.codepage != 0) - fprintf (e, "// Code page: %lu\n", res->coff_info.codepage); - if (res->coff_info.reserved != 0) - fprintf (e, "// COFF reserved value: %lu\n", res->coff_info.reserved); - - if (name != NULL) - res_id_print (e, *name, 0); - else - fprintf (e, "??Unknown-Name??"); - - fprintf (e, " "); - if (s != NULL) - fprintf (e, "%s", s); - else if (type != NULL) - res_id_print (e, *type, 0); - 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", res->u.dialog->x, res->u.dialog->y, - res->u.dialog->width, res->u.dialog->height); - if (res->u.dialog->ex != NULL - && res->u.dialog->ex->help != 0) - fprintf (e, ", %lu", res->u.dialog->ex->help); - } - - 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 ? "// " : "", - res->res_info.language & ((1<res_info.language >> SUBLANG_SHIFT) & 0xff); - if (res->res_info.characteristics != 0) - fprintf (e, "%sCHARACTERISTICS %lu\n", - modifiers ? "// " : "", - res->res_info.characteristics); - if (res->res_info.version != 0) - fprintf (e, "%sVERSION %lu\n", - modifiers ? "// " : "", - 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_VERSIONINFO: - write_rc_versioninfo (e, res->u.versioninfo); - break; - - case RES_TYPE_BITMAP: - case RES_TYPE_FONT: - case RES_TYPE_ICON: - case RES_TYPE_MESSAGETABLE: - write_rc_filedata (e, res->u.data.length, res->u.data.data); - break; - } -} - -/* Write out accelerator information. */ - -static void -write_rc_accelerators (FILE *e, const struct accelerator *accelerators) -{ - const struct 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\"", acc->key); - printable = 1; - } - else - { - fprintf (e, "%d", acc->key); - printable = 0; - } - - fprintf (e, ", %d", 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 struct cursor *cursor) -{ - fprintf (e, "// Hotspot: x: %d; y: %d\n", cursor->xhotspot, - cursor->yhotspot); - write_rc_filedata (e, cursor->length, cursor->data); -} - -/* Write out group cursor data. This would normally be built from the - cursor data. */ - -static void -write_rc_group_cursor (FILE *e, const struct group_cursor *group_cursor) -{ - const struct group_cursor *gc; - - for (gc = group_cursor; gc != NULL; gc = gc->next) - { - fprintf (e, "// width: %d; height %d; planes %d; bits %d\n", - gc->width, gc->height, gc->planes, gc->bits); - fprintf (e, "// data bytes: %lu; index: %d\n", - gc->bytes, gc->index); - } -} - -/* Write dialog data. */ - -static void -write_rc_dialog (FILE *e, const struct dialog *dialog) -{ - const struct dialog_control *control; - - fprintf (e, "STYLE 0x%lx\n", dialog->style); - - if (dialog->exstyle != 0) - fprintf (e, "EXSTYLE 0x%lx\n", 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 (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, \"", dialog->pointsize); - unicode_print (e, dialog->font, -1); - fprintf (e, "\""); - if (dialog->ex != NULL - && (dialog->ex->weight != 0 - || dialog->ex->italic != 0 - || dialog->ex->charset != 1)) - fprintf (e, ", %d, %d, %d", - dialog->ex->weight, dialog->ex->italic, 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 struct 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"); - - if (control->text.named || control->text.u.id != 0) - { - fprintf (e, " "); - res_id_print (e, control->text, 1); - fprintf (e, ","); - } - - fprintf (e, " %d, ", 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%lx, ", control->style); - } - - fprintf (e, "%d, %d", control->x, control->y); - - if (control->style != SS_ICON - || control->exstyle != 0 - || control->width != 0 - || control->height != 0 - || control->help != 0) - { - fprintf (e, ", %d, %d", control->width, 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. */ - fprintf (e, ", 0x%lx", control->style); - - if (control->exstyle != 0 || control->help != 0) - fprintf (e, ", 0x%lx, %lu", control->exstyle, 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 struct fontdir *fontdir) -{ - const struct fontdir *fc; - - for (fc = fontdir; fc != NULL; fc = fc->next) - { - fprintf (e, "// Font index: %d\n", fc->index); - write_rc_filedata (e, fc->length, fc->data); - } -} - -/* Write out group icon data. This would normally be built from the - icon data. */ - -static void -write_rc_group_icon (FILE *e, const struct group_icon *group_icon) -{ - const struct group_icon *gi; - - for (gi = group_icon; gi != NULL; gi = gi->next) - { - fprintf (e, "// width: %d; height %d; colors: %d; planes %d; bits %d\n", - gi->width, gi->height, gi->colors, gi->planes, gi->bits); - fprintf (e, "// data bytes: %lu; index: %d\n", - gi->bytes, gi->index); - } -} - -/* Write out a menu resource. */ - -static void -write_rc_menu (FILE *e, const struct menu *menu, int menuex) -{ - if (menu->help != 0) - fprintf (e, "// Help ID: %lu\n", menu->help); - write_rc_menuitems (e, menu->items, menuex, 0); -} - -/* Write out menuitems. */ - -static void -write_rc_menuitems (FILE *e, const struct menuitem *menuitems, int menuex, - int ind) -{ - const struct 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 (e, mi->text, -1); - fprintf (e, "\""); - } - - if (! menuex) - { - if (mi->popup == NULL) - fprintf (e, ", %d", 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", mi->id); - if (mi->type != 0 || mi->state != 0 || mi->help != 0) - { - fprintf (e, ", %lu", mi->type); - if (mi->state != 0 || mi->help != 0) - { - fprintf (e, ", %lu", mi->state); - if (mi->help != 0) - fprintf (e, ", %lu", 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"); -} - -/* 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 struct rcdata_item *rcdata, int ind) -{ - const struct 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; - - indent (e, ind + 2); - - switch (ri->type) - { - default: - abort (); - - case RCDATA_WORD: - fprintf (e, "%d", ri->u.word); - break; - - case RCDATA_DWORD: - fprintf (e, "%luL", ri->u.dword); - break; - - case RCDATA_STRING: - { - const char *s; - unsigned long i; - - fprintf (e, "\""); - s = ri->u.string.s; - for (i = 0; i < ri->u.string.length; i++) - { - if (ISPRINT (*s)) - putc (*s, e); - else - fprintf (e, "\\%03o", *s); - } - fprintf (e, "\""); - break; - } - - case RCDATA_WSTRING: - fprintf (e, "L\""); - unicode_print (e, ri->u.wstring.w, ri->u.wstring.length); - fprintf (e, "\""); - break; - - case RCDATA_BUFFER: - { - unsigned long i; - int first; - - /* Assume little endian data. */ - - first = 1; - for (i = 0; i + 3 < ri->u.buffer.length; i += 4) - { - unsigned long l; - int j; - - if (! first) - indent (e, ind + 2); - l = ((((((ri->u.buffer.data[i + 3] << 8) - | ri->u.buffer.data[i + 2]) << 8) - | ri->u.buffer.data[i + 1]) << 8) - | ri->u.buffer.data[i]); - fprintf (e, "%luL", l); - if (i + 4 < ri->u.buffer.length || ri->next != NULL) - fprintf (e, ","); - for (j = 0; j < 4; ++j) - if (! ISPRINT (ri->u.buffer.data[i + j]) - && ri->u.buffer.data[i + j] != 0) - break; - if (j >= 4) - { - fprintf (e, "\t// "); - for (j = 0; j < 4; ++j) - { - if (! ISPRINT (ri->u.buffer.data[i + j])) - fprintf (e, "\\%03o", ri->u.buffer.data[i + j]); - else - { - if (ri->u.buffer.data[i + j] == '\\') - fprintf (e, "\\"); - fprintf (e, "%c", ri->u.buffer.data[i + j]); - } - } - } - fprintf (e, "\n"); - first = 0; - } - - if (i + 1 < ri->u.buffer.length) - { - int s; - int j; - - if (! first) - indent (e, ind + 2); - s = (ri->u.buffer.data[i + 1] << 8) | ri->u.buffer.data[i]; - fprintf (e, "%d", s); - if (i + 2 < ri->u.buffer.length || ri->next != NULL) - fprintf (e, ","); - for (j = 0; j < 2; ++j) - if (! ISPRINT (ri->u.buffer.data[i + j]) - && ri->u.buffer.data[i + j] != 0) - break; - if (j >= 2) - { - fprintf (e, "\t// "); - for (j = 0; j < 2; ++j) - { - if (! ISPRINT (ri->u.buffer.data[i + j])) - fprintf (e, "\\%03o", ri->u.buffer.data[i + j]); - else - { - if (ri->u.buffer.data[i + j] == '\\') - fprintf (e, "\\"); - fprintf (e, "%c", ri->u.buffer.data[i + j]); - } - } - } - fprintf (e, "\n"); - i += 2; - first = 0; - } - - if (i < ri->u.buffer.length) - { - if (! first) - indent (e, ind + 2); - if ((ri->u.buffer.data[i] & 0x7f) == ri->u.buffer.data[i] - && ISPRINT (ri->u.buffer.data[i])) - fprintf (e, "\"%c\"", ri->u.buffer.data[i]); - else - fprintf (e, "\"\\%03o\"", ri->u.buffer.data[i]); - if (ri->next != NULL) - fprintf (e, ","); - fprintf (e, "\n"); - first = 0; - } - - 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 struct res_id *name, - const struct stringtable *stringtable) -{ - unsigned long 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, \"", offset + i); - unicode_print (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 struct versioninfo *versioninfo) -{ - const struct fixed_versioninfo *f; - const struct ver_info *vi; - - f = versioninfo->fixed; - if (f->file_version_ms != 0 || f->file_version_ls != 0) - fprintf (e, " FILEVERSION %lu, %lu, %lu, %lu\n", - (f->file_version_ms >> 16) & 0xffff, - f->file_version_ms & 0xffff, - (f->file_version_ls >> 16) & 0xffff, - f->file_version_ls & 0xffff); - if (f->product_version_ms != 0 || f->product_version_ls != 0) - fprintf (e, " PRODUCTVERSION %lu, %lu, %lu, %lu\n", - (f->product_version_ms >> 16) & 0xffff, - f->product_version_ms & 0xffff, - (f->product_version_ls >> 16) & 0xffff, - f->product_version_ls & 0xffff); - if (f->file_flags_mask != 0) - fprintf (e, " FILEFLAGSMASK 0x%lx\n", f->file_flags_mask); - if (f->file_flags != 0) - fprintf (e, " FILEFLAGS 0x%lx\n", f->file_flags); - if (f->file_os != 0) - fprintf (e, " FILEOS 0x%lx\n", f->file_os); - if (f->file_type != 0) - fprintf (e, " FILETYPE 0x%lx\n", f->file_type); - if (f->file_subtype != 0) - fprintf (e, " FILESUBTYPE 0x%lx\n", f->file_subtype); - if (f->file_date_ms != 0 || f->file_date_ls != 0) - fprintf (e, "// Date: %lu, %lu\n", f->file_date_ms, f->file_date_ls); - - fprintf (e, "BEGIN\n"); - - for (vi = versioninfo->var; vi != NULL; vi = vi->next) - { - switch (vi->type) - { - case VERINFO_STRING: - { - const struct ver_stringinfo *vs; - - fprintf (e, " BLOCK \"StringFileInfo\"\n"); - fprintf (e, " BEGIN\n"); - fprintf (e, " BLOCK \""); - unicode_print (e, vi->u.string.language, -1); - fprintf (e, "\"\n"); - fprintf (e, " BEGIN\n"); - - for (vs = vi->u.string.strings; vs != NULL; vs = vs->next) - { - fprintf (e, " VALUE \""); - unicode_print (e, vs->key, -1); - fprintf (e, "\", \""); - unicode_print (e, vs->value, -1); - fprintf (e, "\"\n"); - } - - fprintf (e, " END\n"); - fprintf (e, " END\n"); - break; - } - - case VERINFO_VAR: - { - const struct ver_varinfo *vv; - - fprintf (e, " BLOCK \"VarFileInfo\"\n"); - fprintf (e, " BEGIN\n"); - fprintf (e, " VALUE \""); - unicode_print (e, vi->u.var.key, -1); - fprintf (e, "\""); - - for (vv = vi->u.var.var; vv != NULL; vv = vv->next) - fprintf (e, ", 0x%x, %d", (unsigned int) vv->language, - vv->charset); - - fprintf (e, "\n END\n"); - - break; - } - } - } - - fprintf (e, "END\n"); -} - -/* Write out data which would normally be read from a file. */ - -static void -write_rc_filedata (FILE *e, unsigned long length, const unsigned char *data) -{ - unsigned long i; - - for (i = 0; i + 15 < length; i += 16) - { - fprintf (e, "// %4lx: ", i); - fprintf (e, "%02x %02x %02x %02x %02x %02x %02x %02x ", - data[i + 0], data[i + 1], data[i + 2], data[i + 3], - data[i + 4], data[i + 5], data[i + 6], data[i + 7]); - fprintf (e, "%02x %02x %02x %02x %02x %02x %02x %02x\n", - data[i + 8], data[i + 9], data[i + 10], data[i + 11], - data[i + 12], data[i + 13], data[i + 14], data[i + 15]); - } - - if (i < length) - { - fprintf (e, "// %4lx:", i); - while (i < length) - { - fprintf (e, " %02x", data[i]); - ++i; - } - fprintf (e, "\n"); - } -} diff --git a/binutils/resres.c b/binutils/resres.c deleted file mode 100644 index ed2714db0..000000000 --- a/binutils/resres.c +++ /dev/null @@ -1,663 +0,0 @@ -/* resres.c: read_res_file and write_res_file implementation for windres. - Copyright 1998, 1999 Free Software Foundation, Inc. - Written by Anders Norlander . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "windres.h" - -#include -#include - -struct res_hdr - { - unsigned long data_size; - unsigned long header_size; - }; - -static void write_res_directory - PARAMS ((const struct res_directory *, - const struct res_id *, const struct res_id *, - int *, int)); -static void write_res_resource - PARAMS ((const struct res_id *, const struct res_id *, - const struct res_resource *, int *)); -static void write_res_bin - PARAMS ((const struct res_resource *, const struct res_id *, - const struct res_id *, const struct res_res_info *)); - -static void write_res_id PARAMS ((const struct res_id *)); -static void write_res_info PARAMS ((const struct res_res_info *)); -static void write_res_data PARAMS ((const void *, size_t, int)); -static void write_res_header - PARAMS ((unsigned long, const struct res_id *, const struct res_id *, - const struct res_res_info *)); - -static int read_resource_entry PARAMS ((void)); -static void read_res_data PARAMS ((void *, size_t, int)); -static void read_res_id PARAMS ((struct res_id *)); -static unichar *read_unistring PARAMS ((int *)); -static void skip_null_resource PARAMS ((void)); - -static unsigned long get_id_size PARAMS ((const struct res_id *)); -static void res_align_file PARAMS ((void)); - -static void - res_add_resource - PARAMS ((struct res_resource *, const struct res_id *, - const struct res_id *, int, int)); - -void - res_append_resource - PARAMS ((struct res_directory **, struct res_resource *, - int, const struct res_id *, int)); - -static struct res_directory *resources = NULL; - -static FILE *fres; -static const char *filename; - -extern char *program_name; - -/* Read resource file */ -struct res_directory * -read_res_file (fn) - const char *fn; -{ - filename = fn; - fres = fopen (filename, "rb"); - if (fres == NULL) - fatal ("can't open `%s' for output: %s", filename, strerror (errno)); - - skip_null_resource (); - - while (read_resource_entry ()) - ; - - fclose (fres); - - return resources; -} - -/* Write resource file */ -void -write_res_file (fn, resdir) - const char *fn; - const struct res_directory *resdir; -{ - int language; - static const unsigned char 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}; - long fpos; - - filename = fn; - - fres = fopen (filename, "wb"); - if (fres == NULL) - fatal ("can't open `%s' for output: %s", filename, strerror (errno)); - - /* Write 32 bit resource signature */ - write_res_data (sign, sizeof (sign), 1); - - /* write resources */ - - language = -1; - write_res_directory (resdir, (const struct res_id *) NULL, - (const struct res_id *) NULL, &language, 1); - - /* end file on DWORD boundary */ - fpos = ftell (fres); - if (fpos % 4) - write_res_data (sign, fpos % 4, 1); - - fclose (fres); -} - -/* Read a resource entry, returns 0 when all resources are read */ -static int -read_resource_entry (void) -{ - struct res_id type; - struct res_id name; - struct res_res_info resinfo; - struct res_hdr reshdr; - long version; - void *buff; - - struct res_resource *r; - - res_align_file (); - - /* Read header */ - if (fread (&reshdr, sizeof (reshdr), 1, fres) != 1) - return 0; - - /* read resource type */ - read_res_id (&type); - /* read resource id */ - read_res_id (&name); - - res_align_file (); - - /* Read additional resource header */ - read_res_data (&resinfo.version, sizeof (resinfo.version), 1); - read_res_data (&resinfo.memflags, sizeof (resinfo.memflags), 1); - read_res_data (&resinfo.language, sizeof (resinfo.language), 1); - read_res_data (&version, sizeof (version), 1); - read_res_data (&resinfo.characteristics, sizeof (resinfo.characteristics), 1); - - res_align_file (); - - /* Allocate buffer for data */ - buff = res_alloc (reshdr.data_size); - /* Read data */ - read_res_data (buff, reshdr.data_size, 1); - /* Convert binary data to resource */ - r = bin_to_res (type, buff, reshdr.data_size, 0); - 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 void -write_res_directory (rd, type, name, language, level) - const struct res_directory *rd; - const struct res_id *type; - const struct res_id *name; - int *language; - int level; -{ - const struct 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) - write_res_directory (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. */ - write_res_resource (type, name, re->u.res, language); - } - else - { - fprintf (stderr, "// Resource at unexpected level %d\n", level); - write_res_resource (type, (struct res_id *) NULL, re->u.res, - language); - } - } - } - -} - -static void -write_res_resource (type, name, res, language) - const struct res_id *type; - const struct res_id *name; - const struct res_resource *res; - int *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; - } - - 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 (); - } - - write_res_bin (res, type, name, &res->res_info); - return; -} - -/* Write a resource in binary resource format */ -static void -write_res_bin (res, type, name, resinfo) - const struct res_resource *res; - const struct res_id *type; - const struct res_id *name; - const struct res_res_info *resinfo; -{ - unsigned long datasize = 0; - const struct bindata *bin_rep, *data; - - bin_rep = res_to_bin (res, 0); - for (data = bin_rep; data != NULL; data = data->next) - datasize += data->length; - - write_res_header (datasize, type, name, resinfo); - - for (data = bin_rep; data != NULL; data = data->next) - write_res_data (data->data, data->length, 1); -} - -/* Get number of bytes needed to store an id in binary format */ -static unsigned long -get_id_size (id) - const struct res_id *id; -{ - if (id->named) - return sizeof (unichar) * (id->u.n.length + 1); - else - return sizeof (unichar) * 2; -} - -/* Write a resource header */ -static void -write_res_header (datasize, type, name, resinfo) - unsigned long datasize; - const struct res_id *type; - const struct res_id *name; - const struct res_res_info *resinfo; -{ - struct 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; - - res_align_file (); - write_res_data (&reshdr, sizeof (reshdr), 1); - write_res_id (type); - write_res_id (name); - - res_align_file (); - - write_res_info (resinfo); - res_align_file (); -} - - -/* Write data to file, abort on failure */ -static void -write_res_data (data, size, count) - const void *data; - size_t size; - int count; -{ - if (fwrite (data, size, count, fres) != (size_t) count) - fatal ("%s: could not write to file", filename); -} - -/* Read data from file, abort on failure */ -static void -read_res_data (data, size, count) - void *data; - size_t size; - int count; -{ - if (fread (data, size, count, fres) != (size_t) count) - fatal ("%s: unexpected end of file", filename); -} - -/* Write a resource id */ -static void -write_res_id (id) - const struct res_id *id; -{ - if (id->named) - { - unsigned long len = id->u.n.length; - unichar null_term = 0; - write_res_data (id->u.n.name, len * sizeof (unichar), 1); - write_res_data (&null_term, sizeof (null_term), 1); - } - else - { - unsigned short i = 0xFFFF; - write_res_data (&i, sizeof (i), 1); - i = id->u.id; - write_res_data (&i, sizeof (i), 1); - } -} - -/* Write resource info */ -static void -write_res_info (info) - const struct res_res_info *info; -{ - write_res_data (&info->version, sizeof (info->version), 1); - write_res_data (&info->memflags, sizeof (info->memflags), 1); - write_res_data (&info->language, sizeof (info->language), 1); - write_res_data (&info->version, sizeof (info->version), 1); - write_res_data (&info->characteristics, sizeof (info->characteristics), 1); -} - -/* read a resource identifier */ -void -read_res_id (id) - struct res_id *id; -{ - unsigned short ord; - unichar *id_s = NULL; - int len; - - read_res_data (&ord, sizeof (ord), 1); - if (ord == 0xFFFF) /* an ordinal id */ - { - read_res_data (&ord, sizeof (ord), 1); - id->named = 0; - id->u.id = ord; - } - else - /* named id */ - { - if (fseek (fres, -sizeof (ord), SEEK_CUR) != 0) - fatal ("%s: %s: could not seek in file", program_name, filename); - id_s = read_unistring (&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 (len) - int *len; -{ - unichar *s; - unichar c; - unichar *p; - int l; - - *len = 0; - l = 0; - - /* there are hardly any names longer than 256 characters */ - p = s = (unichar *) xmalloc (sizeof (unichar) * 256); - do - { - read_res_data (&c, sizeof (c), 1); - *p++ = c; - if (c != 0) - l++; - } - while (c != 0); - *len = l; - return s; -} - -/* align file on DWORD boundary */ -static void -res_align_file (void) -{ - int pos = ftell (fres); - int skip = ((pos + 3) & ~3) - pos; - if (fseek (fres, skip, SEEK_CUR) != 0) - fatal ("%s: %s: unable to align file", program_name, filename); -} - -/* 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 (void) -{ - struct res_hdr reshdr = - {0, 0}; - read_res_data (&reshdr, sizeof (reshdr), 1); - if ((reshdr.data_size != 0) || (reshdr.header_size != 0x20)) - goto skip_err; - - /* Subtract size of HeaderSize and DataSize */ - if (fseek (fres, reshdr.header_size - 8, SEEK_CUR) != 0) - 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 */ -void -res_add_resource (r, type, id, language, dupok) - struct res_resource *r; - const struct res_id *type; - const struct res_id *id; - int language; - int dupok; -{ - struct 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. - */ -void -res_append_resource (resources, resource, cids, ids, dupok) - struct res_directory **resources; - struct res_resource *resource; - int cids; - const struct res_id *ids; - int dupok; -{ - struct res_entry *re = NULL; - int i; - - assert (cids > 0); - for (i = 0; i < cids; i++) - { - struct res_entry **pp; - - if (*resources == NULL) - { - static unsigned long timeval; - - /* Use the same timestamp for every resource created in a - single run. */ - if (timeval == 0) - timeval = time (NULL); - - *resources = ((struct res_directory *) - res_alloc (sizeof **resources)); - (*resources)->characteristics = 0; - (*resources)->time = timeval; - (*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 = (struct res_entry *) res_alloc (sizeof *re); - 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; - - 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/sanity.sh b/binutils/sanity.sh deleted file mode 100755 index 942cabf9a..000000000 --- a/binutils/sanity.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -### quick sanity test for the binutils. -### -### This file was written and is maintained by K. Richard Pixley, -### rich@cygnus.com. - -### 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/size.c b/binutils/size.c deleted file mode 100644 index 98754934a..000000000 --- a/binutils/size.c +++ /dev/null @@ -1,575 +0,0 @@ -/* 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 Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "getopt.h" - -#ifndef BSD_DEFAULT -#define BSD_DEFAULT 1 -#endif - -/* Program options. */ - -enum - { - decimal, octal, hex - } -radix = decimal; - -int berkeley_format = BSD_DEFAULT; /* 0 means use AT&T-style output. */ -int show_version = 0; -int show_help = 0; -int show_totals = 0; - -static bfd_size_type total_bsssize; -static bfd_size_type total_datasize; -static bfd_size_type total_textsize; - -/* Program exit status. */ -int return_code = 0; - -static char *target = NULL; - -/* Static declarations. */ - -static void usage (FILE *, int); -static void display_file (char *); -static void display_bfd (bfd *); -static void display_archive (bfd *); -static int size_number (bfd_size_type); -#if 0 -static void lprint_number (int, bfd_size_type); -#endif -static void rprint_number (int, bfd_size_type); -static void print_berkeley_format (bfd *); -static void sysv_internal_sizer (bfd *, asection *, void *); -static void sysv_internal_printer (bfd *, asection *, void *); -static void print_sysv_format (bfd *); -static void print_sizes (bfd * file); -static void berkeley_sum (bfd *, sec_ptr, void *); - -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\ - --target= Set the binary file format\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 (status == 0) - fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); - exit (status); -} - -struct option long_options[] = -{ - {"format", required_argument, 0, 200}, - {"radix", required_argument, 0, 201}, - {"target", required_argument, 0, 202}, - {"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); - - bfd_init (); - set_default_bfd_target (); - - while ((c = getopt_long (argc, argv, "ABHhVvdfotx", long_options, - (int *) 0)) != EOF) - switch (c) - { - case 200: /* --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 202: /* --target */ - target = optarg; - break; - - case 201: /* --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; -} - -/* 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; - - 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; - } -} - -/* This is what lexical functions are for. */ - -static int -size_number (bfd_size_type num) -{ - char buffer[40]; - - sprintf (buffer, - (radix == decimal ? "%lu" : - ((radix == octal) ? "0%lo" : "0x%lx")), - (unsigned long) num); - - return strlen (buffer); -} - -#if 0 - -/* This is not used. */ - -static void -lprint_number (int width, bfd_size_type num) -{ - char buffer[40]; - - sprintf (buffer, - (radix == decimal ? "%lu" : - ((radix == octal) ? "0%lo" : "0x%lx")), - (unsigned long) num); - - printf ("%-*s", width, buffer); -} - -#endif - -static void -rprint_number (int width, bfd_size_type num) -{ - char buffer[40]; - - sprintf (buffer, - (radix == decimal ? "%lu" : - ((radix == octal) ? "0%lo" : "0x%lx")), - (unsigned long) 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_before_reloc (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); - - if (files_seen++ == 0) -#if 0 - /* Intel doesn't like bss/stk because they don't have core files. */ - puts ((radix == octal) ? " text\t data\tbss/stk\t oct\t hex\tfilename" : - " text\t data\tbss/stk\t dec\t hex\tfilename"); -#else - puts ((radix == octal) ? " text\t data\t bss\t oct\t hex\tfilename" : - " text\t data\t bss\t dec\t hex\tfilename"); -#endif - - 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_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; - - printf ("%-*s ", svi_namelen, bfd_section_name (file, sec)); - rprint_number (svi_sizelen, size); - printf (" "); - rprint_number (svi_vmalen, bfd_section_vma (file, sec)); - printf ("\n"); - } -} - -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); - 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); - - printf ("%-*s ", svi_namelen, "Total"); - rprint_number (svi_sizelen, svi_total); - printf ("\n\n"); -} - -static void -print_sizes (bfd *file) -{ - if (berkeley_format) - print_berkeley_format (file); - else - print_sysv_format (file); -} diff --git a/binutils/srconv.c b/binutils/srconv.c deleted file mode 100644 index 0ffa05883..000000000 --- a/binutils/srconv.c +++ /dev/null @@ -1,2013 +0,0 @@ -/* srconv.c -- Sysroff conversion program - Copyright 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 "bfd.h" -#include "bucomm.h" -#include "sysroff.h" -#include "coffgrok.h" -#include "libiberty.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 (char *); -static void checksum (FILE *, char *, int, int); -static void writeINT (int, char *, int *, int, FILE *); -static void writeBITS (int, char *, int *, int); -static void writeBARRAY (barray, char *, int *, int, FILE *); -static void writeCHARS (char *, 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 (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 *file, char *ptr, int size, int code) -{ - int j; - int last; - int sum = 0; - int bytes = size / 8; - - last = !(code & 0xff00); - if (size & 0x7) - abort (); - ptr[0] = code | (last ? 0x80 : 0); - ptr[1] = bytes + 1; - - for (j = 0; j < bytes; j++) - sum += ptr[j]; - - /* Glue on a checksum too. */ - ptr[bytes] = ~sum; - fwrite (ptr, bytes + 1, 1, file); -} - - -static void -writeINT (int n, char *ptr, int *idx, int size, FILE *file) -{ - 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 (file, 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, 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, char *ptr, int *idx, int size ATTRIBUTE_UNUSED, - FILE *file) -{ - int i; - - writeINT (data.len, ptr, idx, 1, file); - for (i = 0; i < data.len; i++) - writeINT (data.data[i], ptr, idx, 1, file); -} - -static void -writeCHARS (char *string, char *ptr, int *idx, int size, FILE *file) -{ - int i = *idx / 8; - - if (i > 240) - { - /* Lets write out that record and do another one. */ - checksum (file, 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 */ - }; - fwrite (b, 1, sizeof (b), file); -} - -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; - -#if 1 - un.nsections = ptr->nsections - 1; /* Don't count the abs section. */ -#else - /*NEW - only count sections with size. */ - un.nsections = nsecs; -#endif - - 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 < section->bfd_section->_raw_size) - { - struct IT_ob ob; - int todo = 200; /* Copy in 200 byte lumps. */ - - ob.spare = 0; - if (i + todo > section->bfd_section->_raw_size) - todo = section->bfd_section->_raw_size - 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; - - 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; -#if 0 - struct coff_symbol *symbol; - static int incit = 0x500000; - int used = 0; -#endif - 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; - } - - /* Look through all the symbols and try and work out the extents in this - source file. */ -#if 0 - for (symbol = sfile->scope->vars_head; - symbol; - symbol = symbol->next) - { - if (symbol->type->type == coff_secdef_type) - { - unsigned int low = symbol->where->offset; - unsigned int high = symbol->where->offset + symbol->type->size - 1; - struct coff_section *section = symbol->where->section; - - int sn = section->number; - if (low < lowest[sn]) - lowest[sn] = low; - if (high > highest[sn]) - highest[sn] = high; - } - } - - for (i = 0; i < du.sections; i++) - { - if (highest[i] == 0) - lowest[i] = highest[i] = incit; - - du.san[used] = i; - du.length[used] = highest[i] - lowest[i]; - du.address[used] = bfd_get_file_flags (abfd) & EXEC_P ? lowest[i] : 0; - - if (debug) - { - printf (" section %6s 0x%08x..0x%08x\n", - p->sections[i + 1].name, - lowest[i], - highest[i]); - } - used++; - } -#endif - - 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. */ -#if 0 - i = 0; - - for (sfile = p->source_head; - sfile; - sfile = sfile->next) - { - dus.drb[i] = 0; - dus.spare[i] = 0; - dus.fname[i] = sfile->name; - i++; - } -#else - dus.drb[0] = 0; - dus.fname[0] = sfile->name; -#endif - - 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) -{ -#if 0 - if (n == 0) - { - /* Count up all the linenumbers */ - struct coff_symbol *sy; - int lc = 0; - struct IT_dln dln; - - int idx; - - for (sy = p->symbol_list_head; - sy; - sy = sy->next_in_ofile_list) - { - struct coff_type *t = sy->type; - if (t->type == coff_function_type) - { - struct coff_line *l = t->u.function.lines; - lc += l->nlines; - } - } - - dln.sfn = nints (lc); - dln.sln = nints (lc); - dln.lln = 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 = p->symbol_list_head; - sy; - sy = sy->next_in_ofile_list) - { - if (sy->type->type == coff_function_type) - { - int i; - struct coff_line *l = sy->type->u.function.lines; - for (i = 0; i < l->nlines; i++) - { - dln.section[idx] = sy->where->section->number; - dln.sfn[idx] = n; - dln.sln[idx] = l->lines[i]; - dln.from_address[idx] = l->addresses[i]; - if (idx) - dln.to_address[idx - 1] = dln.from_address[idx]; - idx++; - } - } - n++; - } - sysroff_swap_dln_out (file, &dln); - } - -#endif -#if 1 - /* 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); -#endif -} - -/* 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 */ - }; - fwrite (b, 1, sizeof (b), file); -} - -/* 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; - } -#if 0 - /* NEW */ - if (sc.length) - { -#endif - sysroff_swap_sc_out (file, &sc); - scount++; -#if 0 - } -#endif - } - 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 *tree) -{ - struct coff_symbol *s; - struct coff_section *common_section; - - /* Find the common section - always section 3. */ - common_section = tree->sections + 3; - - for (s = tree->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 *file, int status) -{ - fprintf (file, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name); - fprintf (file, _("Convert a COFF object file into a SYSROFF object file\n")); - fprintf (file, _(" 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")); - - if (status == 0) - fprintf (file, _("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); - - 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 (strcmp (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/stabs.c b/binutils/stabs.c deleted file mode 100644 index 7af10ef54..000000000 --- a/binutils/stabs.c +++ /dev/null @@ -1,5349 +0,0 @@ -/* stabs.c -- Parse stabs debugging information - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 - Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 - -#include "bfd.h" -#include "bucomm.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_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, bfd_vma value, const char *string) -{ - const char *p; - char *name; - int type; - debug_type dtype; - bfd_boolean synonym; - bfd_boolean self_crossref; - unsigned int lineno; - 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; - } - } - - /* GCC 2.x puts the line number in desc. SunOS apparently puts in - the number of bytes occupied by a type or object, which we - ignore. */ - if (info->gcc_compiled >= 2) - lineno = desc; - else - lineno = 0; - - /* 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; - - 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 *typename, 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 (typename != NULL - && strncmp (typename, *pp, p - *pp) == 0 - && typename[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, typename, 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, typename, 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 *typename, 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 (strncmp (s2, LLLOW, sizeof LLLOW - 1) == 0 - && strncmp (s3, LLHIGH, sizeof LLHIGH - 1) == 0) - return debug_make_int_type (dhandle, 8, FALSE); - if (! ov2 - && n2 == 0 - && strncmp (s3, ULLHIGH, sizeof ULLHIGH - 1) == 0) - 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 (typename != NULL) - { - if (strcmp (typename, "long long int") == 0) - return debug_make_int_type (dhandle, 8, FALSE); - else if (strcmp (typename, "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 = 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; - - /* For some odd reason, all forms of char put a c here. This is strange - because no other type has this honor. We can safely ignore this because - we actually determine 'char'acterness by the number of bits specified in - the descriptor. */ - if (**pp == 'c') - ++*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); - 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) -{ - const char *orig; - bfd_vma size; - debug_baseclass *baseclasses; - debug_field *fields; - bfd_boolean statics; - debug_method *methods; - debug_type vptrbase; - bfd_boolean ownvptr; - - orig = *pp; - - /* 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)) - 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 virtual; - enum debug_visibility visibility; - bfd_vma bitpos; - debug_type type; - - switch (**pp) - { - case '0': - virtual = FALSE; - break; - case '1': - virtual = TRUE; - break; - default: - warn_stab (orig, _("unknown virtual character for baseclass")); - 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, 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)) - 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); - 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 *typename; - 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 */ - typename = debug_get_type_name (dhandle, context); - if (typename == NULL) - { - warn_stab (orig, _("unnamed $vb type")); - typename = "FOO"; - } - name = concat ("_vb$", typename, (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) - return FALSE; - - if (**pp == ':') - { - char *varname; - - /* This is a static class member. */ - ++*pp; - p = strchr (*pp, ';'); - if (p == NULL) - { - bad_stab (orig); - 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); - return FALSE; - } - ++*pp; - - bitpos = parse_number (pp, (bfd_boolean *) NULL); - if (**pp != ',') - { - bad_stab (orig); - return FALSE; - } - ++*pp; - - bitsize = parse_number (pp, (bfd_boolean *) NULL); - if (**pp != ';') - { - bad_stab (orig); - 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 "" - 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; - - *retp = NULL; - - orig = *pp; - - alloc = 0; - methods = NULL; - c = 0; - - while (**pp != ';') - { - const char *p; - char *name; - debug_method_variant *variants; - 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); - return FALSE; - } - 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; - char *argtypes; - 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) - return FALSE; - if (**pp != ':') - { - bad_stab (orig); - return FALSE; - } - } - - ++*pp; - p = strchr (*pp, ';'); - if (p == NULL) - { - bad_stab (orig); - return FALSE; - } - - 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); - return FALSE; - } - ++*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); - return FALSE; - } - ++*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. */ - if (! stub) - physname = argtypes; - else - { - debug_type class_type, return_type; - - class_type = stab_find_type (dhandle, info, typenums); - if (class_type == DEBUG_TYPE_NULL) - return FALSE; - return_type = debug_get_return_type (dhandle, type); - if (return_type == DEBUG_TYPE_NULL) - { - bad_stab (orig); - return FALSE; - } - type = parse_stab_argtypes (dhandle, info, class_type, name, - tagname, return_type, argtypes, - constp, volatilep, &physname); - if (type == DEBUG_TYPE_NULL) - return FALSE; - } - - 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) - return FALSE; - - ++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; -} - -/* 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')) - || strncmp (argtypes, "__ct", 4) == 0); - - is_constructor = (is_full_physname_constructor - || (tagname != NULL - && strcmp (fieldname, tagname) == 0)); - is_destructor = ((argtypes[0] == '_' - && (argtypes[1] == '$' || argtypes[1] == '.') - && argtypes[2] == '_') - || strncmp (argtypes, "__dt", 4) == 0); - is_v3 = argtypes[0] == '_' && argtypes[1] == 'Z'; - - if (is_destructor || is_full_physname_constructor || is_v3) - *pphysname = argtypes; - else - { - 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;lower;upper;". - OS9000: "arlower,upper;". - - 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 index; - struct stab_types **ps; - - filenum = typenums[0]; - index = typenums[1]; - - if (filenum < 0 || (unsigned int) filenum >= info->files) - { - fprintf (stderr, _("Type file number %d out of range\n"), filenum); - return NULL; - } - if (index < 0) - { - fprintf (stderr, _("Type index number %d out of range\n"), index); - return NULL; - } - - ps = info->file_types + filenum; - - while (index >= STAB_TYPES_SLOTS) - { - if (*ps == NULL) - { - *ps = (struct stab_types *) xmalloc (sizeof **ps); - memset (*ps, 0, sizeof **ps); - } - ps = &(*ps)->next; - index -= STAB_TYPES_SLOTS; - } - if (*ps == NULL) - { - *ps = (struct stab_types *) xmalloc (sizeof **ps); - memset (*ps, 0, sizeof **ps); - } - - return (*ps)->types + index; -} - -/* 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 - && strncmp (name, "type", 4) == 0 - && (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) - 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; - - if (! stab_demangle_get_count (pp, &len)) - { - 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, constp, volatilep; - debug_type class_type = DEBUG_TYPE_NULL; - debug_type *args; - bfd_boolean varargs; - unsigned int n; - const char *name; - - memberp = **pp == 'M'; - constp = FALSE; - volatilep = FALSE; - 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') - { - constp = TRUE; - ++*pp; - } - else if (**pp == 'V') - { - volatilep = TRUE; - ++*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': - { - const char *hold; - - hold = *pp; - 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; - unsigned int alloc, count; - 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; - } - - alloc = 10; - pargs = (debug_type *) xmalloc (alloc * sizeof *pargs); - *pvarargs = FALSE; - - count = 0; - - for (dc = dc->u.s_binary.right->u.s_binary.right; - 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 demangle tree\n")); - free (mem); - return NULL; - } - - arg = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, - NULL, &varargs); - if (arg == NULL) - { - if (varargs) - { - *pvarargs = TRUE; - continue; - } - free (mem); - 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; - - free (mem); - - 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_FUNCTION_TYPE: - case DEMANGLE_COMPONENT_ARRAY_TYPE: - case DEMANGLE_COMPONENT_PTRMEM_TYPE: - case DEMANGLE_COMPONENT_ARGLIST: - default: - fprintf (stderr, _("Unrecognized demangle component\n")); - 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_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/stamp-h.in b/binutils/stamp-h.in deleted file mode 100644 index 9788f7023..000000000 --- a/binutils/stamp-h.in +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/binutils/strings.c b/binutils/strings.c deleted file mode 100644 index 68c244caf..000000000 --- a/binutils/strings.c +++ /dev/null @@ -1,651 +0,0 @@ -/* strings -- print the strings of printable characters in files - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003 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., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 - Specify a non-default object file format. - - --help - -h Print the usage message on the standard output. - - --version - -v Print the program version number. - - Written by Richard Stallman - and David MacKenzie . */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include "bfd.h" -#include -#include "getopt.h" -#include -#include "bucomm.h" -#include "libiberty.h" -#include "safe-ctype.h" - -/* Some platforms need to put stdin into binary mode, to read - binary files. */ -#ifdef HAVE_SETMODE -#ifndef O_BINARY -#ifdef _O_BINARY -#define O_BINARY _O_BINARY -#define setmode _setmode -#else -#define O_BINARY 0 -#endif -#endif -#if O_BINARY -#include -#define SET_BINARY(f) do { if (!isatty (f)) setmode (f,O_BINARY); } while (0) -#endif -#endif - -#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) - -#ifdef HAVE_FOPEN64 -typedef off64_t file_off; -#define file_open(s,m) fopen64(s, m) -#else -typedef off_t file_off; -#define file_open(s,m) fopen(s, m) -#endif - -/* 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} -}; - -static void strings_a_section (bfd *, asection *, void *); -static bfd_boolean strings_object_file (const char *); -static bfd_boolean strings_file (char *file); -static int integer_arg (char *s); -static void print_strings (const char *, FILE *, file_off, int, int, char *); -static void usage (FILE *, int); -static long get_char (FILE *, file_off *, int *, char **); - -int main (int, char **); - -int -main (int argc, char **argv) -{ - int optc; - int exit_status = 0; - bfd_boolean files_given = FALSE; - -#if defined (HAVE_SETLOCALE) - setlocale (LC_ALL, ""); -#endif - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); - - program_name = argv[0]; - xmalloc_set_program_name (program_name); - string_min = -1; - print_addresses = FALSE; - print_filenames = FALSE; - datasection_only = TRUE; - target = NULL; - encoding = 's'; - - while ((optc = getopt_long (argc, argv, "afhHn:ot:e: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 = integer_arg (optarg); - if (string_min < 1) - fatal (_("invalid number %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: - if (string_min < 0) - string_min = optc - '0'; - else - string_min = string_min * 10 + optc - '0'; - break; - } - } - - if (string_min < 0) - string_min = 4; - - 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; -#ifdef SET_BINARY - SET_BINARY (fileno (stdin)); -#endif - 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 FILE. - If it contains initialized data, - set `got_a_section' and print the strings in it. */ - -static void -strings_a_section (bfd *abfd, asection *sect, void *filearg) -{ - const char *file = (const char *) filearg; - - if ((sect->flags & DATA_FLAGS) == DATA_FLAGS) - { - bfd_size_type sz = bfd_get_section_size_before_reloc (sect); - void *mem = xmalloc (sz); - - if (bfd_get_section_contents (abfd, sect, mem, (file_ptr) 0, sz)) - { - got_a_section = TRUE; - print_strings (file, (FILE *) NULL, sect->filepos, 0, sz, 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) -{ - bfd *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; - bfd_map_over_sections (abfd, strings_a_section, (void *) file); - - 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) -{ - if (get_file_size (file) < 1) - 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 = file_open (file, FOPEN_RB); - if (stream == NULL) - { - fprintf (stderr, "%s: ", program_name); - perror (file); - return FALSE; - } - - print_strings (file, stream, (file_off) 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_off *address, int *magiccount, char **magic) -{ - int c, i; - long r = EOF; - unsigned char buf[4]; - - for (i = 0; i < encoding_bytes; i++) - { - if (*magiccount) - { - (*magiccount)--; - c = *(*magic)++; - } - else - { - if (stream == NULL) - return EOF; -#ifdef HAVE_GETC_UNLOCKED - c = getc_unlocked (stream); -#else - c = getc (stream); -#endif - if (c == EOF) - return EOF; - } - - (*address)++; - buf[i] = c; - } - - switch (encoding) - { - case 'S': - case 's': - r = buf[0]; - break; - case 'b': - r = (buf[0] << 8) | buf[1]; - break; - case 'l': - r = buf[0] | (buf[1] << 8); - break; - case 'B': - r = ((long) buf[0] << 24) | ((long) buf[1] << 16) | - ((long) buf[2] << 8) | buf[3]; - break; - case 'L': - r = buf[0] | ((long) buf[1] << 8) | ((long) buf[2] << 16) | - ((long) buf[3] << 24); - break; - } - - if (r == EOF) - return 0; - - 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_off address, - int stop_point, int magiccount, char *magic) -{ - char *buf = (char *) xmalloc (sizeof (char) * (string_min + 1)); - - while (1) - { - file_off 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) - 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)) - printf ("%7Lo ", (unsigned long long) start); - else -#else -# if !BFD_HOST_64BIT_LONG - if (start != (unsigned long) start) - printf ("++%7lo ", (unsigned long) start); - else -# endif -#endif - printf ("%7lo ", (unsigned long) start); - break; - - case 10: -#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) - if (sizeof (start) > sizeof (long)) - printf ("%7Ld ", (unsigned long long) start); - else -#else -# if !BFD_HOST_64BIT_LONG - if (start != (unsigned long) start) - printf ("++%7ld ", (unsigned long) start); - else -# endif -#endif - printf ("%7ld ", (long) start); - break; - - case 16: -#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) - if (sizeof (start) > sizeof (long)) - printf ("%7Lx ", (unsigned long long) start); - else -#else -# if !BFD_HOST_64BIT_LONG - if (start != (unsigned long) start) - printf ("%lx%8.8lx ", start >> 32, start & 0xffffffff); - else -# endif -#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'); - } -} - -/* Parse string S as an integer, using decimal radix by default, - but allowing octal and hex numbers as in C. */ - -static int -integer_arg (char *s) -{ - int value; - int radix = 10; - char *p = s; - int c; - - if (*p != '0') - radix = 10; - else if (*++p == 'x') - { - radix = 16; - p++; - } - else - radix = 8; - - value = 0; - while (((c = *p++) >= '0' && c <= '9') - || (radix == 16 && (c & ~40) >= 'A' && (c & ~40) <= 'Z')) - { - value *= radix; - if (c >= '0' && c <= '9') - value += c - '0'; - else - value += (c & ~40) - 'A'; - } - - if (c == 'b') - value *= 512; - else if (c == 'B') - value *= 1024; - else - p--; - - if (*p) - fatal (_("invalid integer argument %s"), s); - - return value; -} - -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\ - - 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= 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")); - list_supported_targets (program_name, stream); - if (status == 0) - fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); - exit (status); -} diff --git a/binutils/sysdump.c b/binutils/sysdump.c deleted file mode 100644 index a1df1e05b..000000000 --- a/binutils/sysdump.c +++ /dev/null @@ -1,811 +0,0 @@ -/* Sysroff object format dumper. - Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - - -/* Written by Steve Chamberlain . - - This program reads a SYSROFF object file and prints it in an - almost human readable form to stdout. */ - -#include "bfd.h" -#include "bucomm.h" -#include "safe-ctype.h" - -#include -#include "libiberty.h" -#include "getopt.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 char *getCHARS (unsigned char *, int *, int, int); -extern int fillup (char *); -extern barray getBARRAY (unsigned char *, int *, int, int); -extern int getINT (unsigned char *, int *, int, int); -extern int getBITS (char *, int *, int, int); -extern void sysroff_swap_tr_in (void); -extern void sysroff_print_tr_out (void); -extern int main (int, char **); - -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"); - } -} - -int -fillup (char *ptr) -{ - int size; - int sum; - int i; - - size = getc (file) - 2; - fread (ptr, 1, size, file); - 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 - 1; -} - -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; -} - -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; -} - -int -getBITS (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 code) -{ - printf ("\n%s 0x%02x\n", name, code); -} - -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 - -void -sysroff_swap_tr_in (void) -{ - char raw[255]; - - memset (raw, 0, 255); - fillup (raw); -} - -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); -} - -#if 0 - -/* This is no longer used. */ - -static void -unit_info_list (void) -{ - while (opt (IT_un_CODE)) - { - getone (IT_us_CODE); - - while (getone (IT_sc_CODE)) - getone (IT_ss_CODE); - - while (getone (IT_er_CODE)) - ; - - while (getone (IT_ed_CODE)) - ; - } -} - -#endif - -#if 0 - -/* This is no longer used. */ - -static void -object_body_list (void) -{ - while (getone (IT_sh_CODE)) - { - while (getone (IT_ob_CODE)) - ; - while (getone (IT_rl_CODE)) - ; - } -} - -#endif - -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 (); - printf (s); - printf ("\n"); - } -} - -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, ""); -} - -#if 0 - -/* This is no longer used. */ - -static void -program_structure (void) -{ - tab (1, "PROGRAM STRUCTURE"); - while (opt (IT_dps_CODE)) - { - must (IT_dso_CODE); - opt (IT_dss_CODE); - dump_symbol_info (); - must (IT_dps_CODE); - } - tab (-1, ""); -} - -#endif - -#if 0 - -/* This is no longer used. */ - -static void -debug_list (void) -{ - tab (1, "DEBUG LIST"); - - must (IT_du_CODE); - opt (IT_dus_CODE); - program_structure (); - must (IT_dln_CODE); - - tab (-1, ""); -} - -#endif - -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); - -#if 0 - must (IT_cs_CODE); - must (IT_hd_CODE); - opt (IT_hs_CODE); - - unit_info_list (); - object_body_list (); - debug_list (); - - must (IT_tr_CODE); -#endif - 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 *file, int status) -{ - fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name); - fprintf (file, _("Print a human readable interpretation of a SYSROFF object file\n")); - fprintf (file, _(" The options are:\n\ - -h --help Display this information\n\ - -v --version Print the program's version number\n")); - - if (status == 0) - fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO); - exit (status); -} - -int -main (int ac, char **av) -{ - 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); - - while ((opt = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF) - { - switch (opt) - { - 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/sysinfo.y b/binutils/sysinfo.y deleted file mode 100644 index bf19263c5..000000000 --- a/binutils/sysinfo.y +++ /dev/null @@ -1,439 +0,0 @@ -/* Copyright 2001, 2003 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 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -%{ -#include -#include - -extern char *word; -extern char writecode; -extern int number; -extern int unit; -char nice_name[1000]; -char *it; -int sofar; -int width; -int code; -char * repeat; -char *oldrepeat; -char *name; -int rdepth; -char *loop [] = {"","n","m","/*BAD*/"}; -char *names[] = {" ","[n]","[n][m]"}; -char *pnames[]= {"","*","**"}; -%} - - -%union { - int i; - char *s; -} -%token COND -%token REPEAT -%token '(' ')' -%token TYPE -%token NAME -%token NUMBER UNIT -%type attr_size -%type 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 \n"); - printf("#include \n"); - printf("#include \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 PARAMS ((struct IT_%s *));\n", - $2, it); - printf("extern void sysroff_swap_%s_out PARAMS ((FILE *, struct IT_%s *));\n", - $2, it); - printf("extern void sysroff_print_%s_out PARAMS ((struct IT_%s *));\n", - $2, it); - printf("struct IT_%s { \n", it); - break; - case 'i': - printf("void sysroff_swap_%s_in(ptr)\n",$2); - printf("struct IT_%s *ptr;\n", it); - printf("{\n"); - printf("char raw[255];\n"); - printf("\tint idx = 0 ;\n"); - printf("\tint size;\n"); - printf("memset(raw,0,255);\n"); - printf("memset(ptr,0,sizeof(*ptr));\n"); - printf("size = fillup(raw);\n"); - break; - case 'g': - printf("void sysroff_swap_%s_out(file,ptr)\n",$2); - printf("FILE * file;\n"); - printf("struct IT_%s *ptr;\n", it); - printf("{\n"); - printf("\tchar raw[255];\n"); - printf("\tint idx = 16 ;\n"); - printf("\tmemset (raw, 0, 255);\n"); - printf("\tcode = IT_%s_CODE;\n", it); - break; - case 'o': - printf("void sysroff_swap_%s_out(abfd,ptr)\n",$2); - printf("bfd * abfd;\n"); - printf("struct IT_%s *ptr;\n",it); - printf("{\n"); - printf("int idx = 0 ;\n"); - break; - case 'c': - printf("void sysroff_print_%s_out(ptr)\n",$2); - printf("struct IT_%s *ptr;\n", 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(file,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,file);\n", - type, - id, - names[rdepth],size/8); - } - break; - case 'i': - { - - if (rdepth >= 1) - - { - printf("if (!ptr->%s) ptr->%s = (%s*)xcalloc(%s, sizeof(ptr->%s[0]));\n", - id, - id, - type, - repeat, - id); - } - - if (rdepth == 2) - { - printf("if (!ptr->%s[n]) ptr->%s[n] = (%s**)xcalloc(%s[n], sizeof(ptr->%s[n][0]));\n", - id, - id, - type, - repeat, - id); - } - - } - - if (size % 8) - { - printf("\tptr->%s%s = getBITS(raw,&idx, %d,size);\n", - id, - names[rdepth], - size); - } - else { - printf("\tptr->%s%s = get%s(raw,&idx, %d,size);\n", - id, - names[rdepth], - type, - size/8); - } - break; - case 'o': - printf("\tput%s(raw,%d,%d,&idx,ptr->%s%s);\n", type,size/8,size%8,id,names[rdepth]); - break; - case 'd': - if (repeat) - printf("\t/* repeat %s */\n", repeat); - - if (type[0] == 'I') { - printf("\tint %s%s; \t/* %s */\n",ptr,id, desc); - } - else if (type[0] =='C') { - printf("\tchar %s*%s;\t /* %s */\n",ptr,id, desc); - } - else { - printf("\tbarray %s%s;\t /* %s */\n",ptr,id, desc); - } - break; - case 'c': - printf("tabout();\n"); - printf("\tprintf(\"/*%-30s*/ ptr->%s = \");\n", desc, id); - - if (type[0] == 'I') - printf("\tprintf(\"%%d\\n\",ptr->%s%s);\n", id,p); - else if (type[0] == 'C') - printf("\tprintf(\"%%s\\n\",ptr->%s%s);\n", id,p); - - else if (type[0] == 'B') - { - printf("\tpbarray(&ptr->%s%s);\n", id,p); - } - else abort(); - break; - } - } - - ; - - -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; -char writecode; - -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; -} - -int -yyerror (char *s) -{ - fprintf(stderr, "%s\n" , s); - return 0; -} diff --git a/binutils/syslex.l b/binutils/syslex.l deleted file mode 100644 index ffaf4fad2..000000000 --- a/binutils/syslex.l +++ /dev/null @@ -1,70 +0,0 @@ -%{ -/* Copyright 2001, 2003 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GLD is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GLD; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#include "sysinfo.h" -char *word; -int number; -int unit; - -#ifndef yywrap -static int yywrap (void) { return 1; } -#endif -%} -%% -"(" { return '(';} -")" { return ')';} -"[" { return '[';} -"]" { return ']';} -" " { ; } -";".* { ; } -"\t" { ; } -"\n" { ; } -"\""[^\"]*"\"" { -yylval.s = malloc(strlen (yytext)); -strcpy(yylval.s, yytext+1); -yylval.s[strlen(yylval.s)-1] = 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/sysroff.info b/binutils/sysroff.info deleted file mode 100644 index 390fe4201..000000000 --- a/binutils/sysroff.info +++ /dev/null @@ -1,504 +0,0 @@ -("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/testsuite/ChangeLog b/binutils/testsuite/ChangeLog deleted file mode 100644 index 6c8de84da..000000000 --- a/binutils/testsuite/ChangeLog +++ /dev/null @@ -1,17 +0,0 @@ -2004-02-27 Andreas Schwab - - * binutils-all/ar.exp (argument_parsing): New test. - -2004-02-20 Nathan Sidwell - - * binutils-all/objcopy.exp: Reorder arguments for POSIXLY_CORRECT - systems. - -For older changes see ChangeLog-9303 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/binutils/testsuite/ChangeLog-9303 b/binutils/testsuite/ChangeLog-9303 deleted file mode 100644 index 50b4e336d..000000000 --- a/binutils/testsuite/ChangeLog-9303 +++ /dev/null @@ -1,1044 +0,0 @@ -2003-12-03 Nick Clifton - - * binutils-all/objdump.exp (cpus_expected): Add "msp". - -2003-10-06 Dave Brolley - - * binutils-all/objdump.exp (cpu_expected): Add fr550. - -2003-09-29 H.J. Lu - - * 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 - - * binutils-all/objcopy.exp: Initialise $test_prog to - testprog.exe on mingw targeted systems too. - -2003-06-28 Danny Smith - - * 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 - - * binutils-all/readelf.ss-tmips: Adjust symbol indices. - -2003-06-19 Nick Clifton - - * 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 - - * 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 - - * 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 - - * binutils-all/readelf.wi: Update. - -2003-04-22 Dimitrie O. Paun - - * 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 - - * 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 - - * binutils-all/windres/dialogid.rc: New test source file. - * binutils-all/windres/dialogid.rsd: New test expected results. - -2002-11-07 Casper S. Hornstrup - - * 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 - - * binutils-all/objcopy.exp: Revert last change. - -2002-08-26 Alan Modra - - * binutils-all/objcopy.exp (strip_test): Adjust for "no symbols" on - stdout. - (strip_executable): Likewise. - -2002-08-13 Alan Modra - - * binutils-all/objdump.exp (cpus_expected): Add fr500, ip2022, - tic80, tms320c30. - * binutils-all/objcopy.exp (simple copy): Revise xfails. - -2002-05-29 Alan Modra - - * binutils-all/objcopy.exp (strip_test_with_saving_a_symbol): - Revert 2001-11-15. Instead allow `D main'. - -2002-04-16 Eric Kohl - - * 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 - - * 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 - - * binutils-all/ar.exp (long_filenames): Use 'file delete' instead - of 'exec rm -f'. - -2002-04-10 Nick Clifton - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils-all/readelf.ss-mips: Do not expect an explicit - ordering of the sections. - -2002-02-10 Nick Clifton - - * binutils-all/objdump.exp: Add 'xscale' to the list of expected - CPUs. - -2002-01-14 Nick Clifton - - * 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 - - * binutils-all/objcopy.exp (strip_test): Add strip on archive. - -2001-11-15 Alan Modra - - * binutils-all/objcopy.exp: (strip_test_with_saving_a_symbol): - Allow '? main', to suit powerpc64. - -2001-11-14 Geoffrey Keating - - * binutils-all/readelf.exp: powerpc-*-eabi* is an ELF target. - -2001-10-03 Thiemo Seufer - - * 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 - - * 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 - - * 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 - - * binutils-all/windres/windres.exp: Don't set xfail for - bmpalign (compare) on none-ix86/pe targets. - -2001-07-24 H.J. Lu - - * binutils-all/windres/windres.exp: Set xfail on none-ix86/pe - targets. - -2001-07-18 DJ Delorie - - * 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 - - * lib/utils-lib.exp (target_assemble): Remove duplicate copy. - (default_target_assemble): Likewise. - -2001-06-18 Thiemo Seufer - - * binutils-all/readelf.exp: Typo. - -2001-06-19 Andreas Jaeger - - * binutils-all/readelf.r: Don't check for specific info value to - pass testsuite on ia64 and alpha. - -2001-06-07 H.J. Lu - - * binutils-all/readelf.ss-mips: Support stabs. - * binutils-all/readelf.ss-tmips: Likewise. - -2001-05-25 H.J. Lu - - * 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 - - * 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 - - * binutils-all/objdump.exp (cpus_expected): Add s390. - -2001-03-30 H.J. Lu - - * binutils-all/readelf.exp: Run on more ELF targets. - -2001-02-11 H.J. Lu - - * 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 and don't use - exit (). - -2001-01-16 Matthew Green - - * binutils-all/readelf.s-64: Match readelf -S output. - -2000-12-09 Nick Clifton - - * binutils-all/objdump.exp (cpus_expected): Add tic54x and - tms320c54x. - -2000-11-28 Hans-Peter Nilsson - - * binutils-all/readelf.s: Adjust to readelf.c formatting changes. - -2000-11-02 Chris Demetriou - - * 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 - - * binutils-all/readelf.exp (-wi test): Add cris-*-* to xfails. - -2000-10-19 Chris Demetriou - - * 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 - - * lib/utils-lib.exp (default_binutils_assemble): Don't do the hppa - sed fudges for hppa-linux. - -2000-07-01 Frank Ch. Eigler - - * binutils-all/objdump.exp (cpus_expected, cpus_regex): Reorganize - syntax to display more tcl nature. - -2000-06-18 Stephane Carrez - - * binutils-all/objdump.exp (cpus_expected): Recognize m68hc11 and - m68hc12. - -2000-06-18 Nick Clifton - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils-all/objdump.exp: Add pj to cpus_expected. - -Sat Aug 28 00:24:27 1999 Jerry Quinn - - * binutils-all/hppa/freg.s: New file. - * binutils-all/hppa/objdump.exp: Add freg.s test. - -1999-08-09 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for simple copy test - for i*86-*-msdos*. - -1999-07-21 H.J. Lu - - * binutils-all/testprog.c: Include . - -1999-06-29 Nick Clifton - - * 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 - - * 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 - - * binutils-all/objdump.exp: Tighten regexp to match `objdump -i' - output to avoid massive exponential behaviour. - -1999-05-28 Ian Lance Taylor - - * binutils-all/readelf.h: Update for changes of 1999-04-08. - -1999-03-12 Nick Clifton - - * binutils-all/readelf.wi: Remove FR30 specific components. - * binutils-all/readelf.s: Remove RELA specific components. - -1999-02-16 Nick Clifton - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils-all/objcopy.exp: ARM simple objcopy now passes. - -Wed Jun 24 09:20:21 1998 Nick Clifton - - * 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 - - * 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 - - * binutils-all/objcopy.exp: Don't xfail the simple objcopy test - when cross compiling. - -Thu Nov 6 14:32:37 1997 Bob Manson - - * 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 - - * binutils-all/objcopy.exp(strip_executable): Make a new copy of - the executable being tested. - -Mon Sep 15 21:25:20 1997 Bob Manson - - * 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 - - * binutils-all/objdump.exp (cpus_expected): Add arc. - -Tue Aug 5 00:03:20 1997 Ian Lance Taylor - - * config/default.exp: Look for nm-new and strip-new. - -Tue Jun 3 17:12:54 1997 Bob Manson - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - * lib/utils-lib.exp (binutil_version): Fix for current version - printing. - -Sun Aug 4 22:25:40 1996 Ian Lance Taylor - - * 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 - - * binutils-all/objcopy.exp: Simple copy test works for i960 b.out - targets. - -Mon Jun 24 14:33:04 1996 Ian Lance Taylor - - * 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 - - * 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 - - * binutils-all/objcopy.exp: Use the lma, not the vma, when testing - address adjustments. - -Fri Dec 15 16:31:55 1995 Ian Lance Taylor - - * binutils-all/objdump.exp: Update objdump -i test for current - objdump output. - -Mon Nov 27 15:15:09 1995 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils-all/nm.exp: Add setup_xfails for XCOFF. - -Mon Oct 2 12:41:48 1995 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * binutils-all/objcopy.exp: Add xfail for i*86-*-aout* for simple - copy test. - -Wed Aug 16 16:52:53 1995 Ian Lance Taylor - - * 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 - - * binutils-all/objcopy.exp: Add setup_xfail for a29k-*-vxworks* - for simple copy test. - -Tue Jul 25 11:57:12 1995 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * binutils-all/objcopy.exp: Add setup_xfail for simple copy test - for m68*-*-vxworks*. - -Fri Mar 24 11:44:25 1995 Ian Lance Taylor - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - 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 - - * 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. diff --git a/binutils/testsuite/binutils-all/ar.exp b/binutils/testsuite/binutils-all/ar.exp deleted file mode 100644 index 7f01c7640..000000000 --- a/binutils/testsuite/binutils-all/ar.exp +++ /dev/null @@ -1,256 +0,0 @@ -# Copyright 1995, 1997, 2004 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# Written by Ian Lance Taylor - -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 { } { - global AR - global host_triplet - - 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 - - # 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 - - 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; - } - - verbose -log "$AR x $dest" - 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 - } - - 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 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 -} - -# Run the tests. - -long_filenames -symbol_table -argument_parsing diff --git a/binutils/testsuite/binutils-all/bintest.s b/binutils/testsuite/binutils-all/bintest.s deleted file mode 100644 index 9e0065022..000000000 --- a/binutils/testsuite/binutils-all/bintest.s +++ /dev/null @@ -1,12 +0,0 @@ - .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/testsuite/binutils-all/dlltool.exp b/binutils/testsuite/binutils-all/dlltool.exp deleted file mode 100644 index 77b09eb40..000000000 --- a/binutils/testsuite/binutils-all/dlltool.exp +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2002 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -if {![istarget "i*86-*-*"]} { - return -} - -if {![istarget "i*86-*-*pe*"] \ - && ![istarget "i*86-*-cygwin*"] \ - && ![istarget "i*86-*-mingw32*"] } { - set target_xfail "yes" -} else { - set target_xfail "no" -} - -if {![info exists DLLTOOL]} then { - return -} - -if {[which $DLLTOOL] == 0} then { - return -} - -verbose "$DLLTOOL -d $srcdir/$subdir/fastcall.def" 1 -catch "exec $DLLTOOL -d $srcdir/$subdir/fastcall.def" err - -if ![string match "" $err] then { - send_log "$err\n" - verbose "$err" 1 - fail "dlltool (fastcall export)" - continue; -} - -pass "dlltool (fastcall export)" diff --git a/binutils/testsuite/binutils-all/fastcall.def b/binutils/testsuite/binutils-all/fastcall.def deleted file mode 100644 index bef49682c..000000000 --- a/binutils/testsuite/binutils-all/fastcall.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS -@fastcall@4 diff --git a/binutils/testsuite/binutils-all/hppa/addendbug.s b/binutils/testsuite/binutils-all/hppa/addendbug.s deleted file mode 100644 index 659306f07..000000000 --- a/binutils/testsuite/binutils-all/hppa/addendbug.s +++ /dev/null @@ -1,23 +0,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 - .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/testsuite/binutils-all/hppa/freg.s b/binutils/testsuite/binutils-all/hppa/freg.s deleted file mode 100644 index 501e10f93..000000000 --- a/binutils/testsuite/binutils-all/hppa/freg.s +++ /dev/null @@ -1,23 +0,0 @@ - .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/testsuite/binutils-all/hppa/objdump.exp b/binutils/testsuite/binutils-all/hppa/objdump.exp deleted file mode 100644 index 001e6dfd8..000000000 --- a/binutils/testsuite/binutils-all/hppa/objdump.exp +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 1993, 1994, 1995, 1997, 1999, 2000 -# 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# 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 -# and rewritten by Ian Lance Taylor - -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\\+0xffffffe0.*" -} else { - set want "00000000 R_DP_RELATIVE\[ \]+is_idchar\\+0xffffffe0.*" -} - - -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/testsuite/binutils-all/nm.exp b/binutils/testsuite/binutils-all/nm.exp deleted file mode 100644 index 8069eda60..000000000 --- a/binutils/testsuite/binutils-all/nm.exp +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 1993, 1994, 1995, 1997 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# 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 -# and rewritten by Ian Lance Taylor - -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" -} - -# 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" -} - -# There are certainly other tests that could be run. diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp deleted file mode 100644 index c6a2d530e..000000000 --- a/binutils/testsuite/binutils-all/objcopy.exp +++ /dev/null @@ -1,650 +0,0 @@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# Written by Ian Lance Taylor - -if ![is_remote host] { - if {[which $OBJCOPY] == 0} then { - perror "$OBJCOPY does not exist" - return - } -} - -send_user "Version [binutil_version $OBJCOPY]" - -if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then { - perror "unresolved 1" - unresolved "objcopy (simple copy)" - return -} - -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. - -set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS $tempfile ${copyfile}.o"] - -if ![string match "" $got] then { - fail "objcopy (simple copy)" -} 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 "a29k-*" - setup_xfail "h8300-*-rtems*" "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*" "sh-*-rtems*" - setup_xfail "tic4x-*-*" "tic80-*-*" "w65-*" "z8*-*" - - clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*" - clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*" "m68*-*-sysv4*" - - if [string match "" $exec_output] then { - pass "objcopy (simple copy)" - } 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*" - - # This fails for COFF i960-vxworks targets. - setup_xfail "i960-*-vxworks*" - - fail "objcopy (simple copy)" - } -} - -# 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 ${copyfile}.srec"] - 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 - - set test "strip" - - if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } { - untested $test - return - } - - 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 - return - } - - set exec_output [binutils_run $STRIP "$STRIPFLAGS $archive"] - if ![string match "" $exec_output] { - fail $test - return - } - - 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 *-*-mingw32] } { - set test_prog "testprog.exe" -} else { - set test_prog "testprog" -} - -proc copy_setup { } { - global srcdir - global subdir - global gcc_gas_flag - global test_prog - - set res [build_wrapper testglue.o]; - set flags { debug }; - - if { $res != "" } { - lappend flags "additional_flags=[lindex $res 1]"; - set add_libs "testglue.o"; - } else { - set add_libs ""; - } - - if { [istarget *-*-linux*] } { - 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" } { - perror "unresolved setup, status = $status" - return 3 - } - - return 0 -} - -# Test copying an executable. - -proc copy_executable { prog flags test1 test2 } { - global test_prog - - 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 - 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 "xscale-*-coff" - setup_xfail "arm*-*-pe" - setup_xfail "thumb*-*-coff" - setup_xfail "thumb*-*-pe" - - fail $test1 - } - - set output [remote_load target tmpdir/copyprog] - set status [lindex $output 0]; - if { $status != "pass" } { - fail $test2 - } else { - pass $test2 - } -} - -# Test stripping an executable - -proc strip_executable { prog flags test } { - global NM - global NMFLAGS - - 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 { $status != "pass" } { - fail $test - return - } - - 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 - - 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 { $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]+ T main} $exec_output] \ - && ![regexp {^[0-9a-fA-F]+ T _main} $exec_output]} { - fail $test - return - } - pass $test -} - -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" - -switch [copy_setup] { - "1" { - # do nothing - } - "2" { - untested $test1 - untested $test2 - untested $test3 - untested $test4 - } - "3" { - unresolved $test1 - unresolved $test2 - unresolved $test3 - unresolved $test4 - } - "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" - } -} diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp deleted file mode 100644 index 409d9d8f1..000000000 --- a/binutils/testsuite/binutils-all/objdump.exp +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 -# 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# 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 -# and rewritten by Ian Lance Taylor - -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 a29k alliant alpha arc arm convex -lappend cpus_expected d10v d30v fr30 fr500 fr550 h8 hppa i386 i860 i960 ip2022 -lappend cpus_expected m32r m68hc11 m68hc12 m68k m88k MCore -lappend cpus_expected mips mn10200 mn10300 msp ns32k pj powerpc pyramid -lappend cpus_expected romp rs6000 s390 sh sparc -lappend cpus_expected tahoe tic54x tic80 tms320c30 tms320c4x tms320c54x v850 -lappend cpus_expected vax we32k x86-64 xscale 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" -} - -# 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/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp deleted file mode 100644 index 4c5f99e92..000000000 --- a/binutils/testsuite/binutils-all/readelf.exp +++ /dev/null @@ -1,343 +0,0 @@ -# Copyright 1999, 2000 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# Written by Nick Clifton -# Based on scripts written by Ian Lance Taylor -# and Ken Raeburn . - -# 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 -} - -# regexp_diff, based on simple_diff taken from ld test suite -# compares two files line-by-line -# file1 contains strings, file2 contains regexps and #-comments -# blank lines are ignored in either file -# returns non-zero if differences exist -# -proc regexp_diff { file_1 file_2 } { - - set eof -1 - set end_1 0 - set end_2 0 - set differences 0 - set diff_pass 0 - - if [file exists $file_1] then { - set file_a [open $file_1 r] - } else { - warning "$file_1 doesn't exist" - return 1 - } - - if [file exists $file_2] then { - set file_b [open $file_2 r] - } else { - fail "$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 } { - 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 "#..." $line_b ] { - if { [gets $file_b line_b] == $eof } { - set end_2 1 - break - } - verbose "looking for \"^$line_b$\"" 3 - while { ![regexp "^$line_b$" "$line_a"] } { - 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 { - verbose "regexp \"^$line_b$\"\nline \"$line_a\"" 3 - if ![regexp "^$line_b$" "$line_a"] { - send_log "regexp_diff match failure\n" - send_log "regexp \"^$line_b$\"\nline \"$line_a\"\n" - 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 - } - - close $file_a - close $file_b - - return $differences -} - -# 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" - catch "exec $READELF $READELFFLAGS -h $binary_file > readelf.out" got - - if ![string match "" $got] 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" - catch "exec $READELF $READELFFLAGS $options $binary_file > readelf.out" got - - foreach xfail $xfails { - setup_xfail $xfail - } - - if ![string match "" $got] 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*"] } 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. - send_log "exec $READELF $READELFFLAGS -wi $tempfile > readelf.out\n" - catch "exec $READELF $READELFFLAGS -wi $tempfile > readelf.out" got - - # 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 $got] - - if ![string match "" $got] then { - fail "readelf $options (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\).*" - } - - 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" -} - - -# Exclude non-ELF targets. -if ![is_elf_format] { - verbose "$READELF is only intended for ELF targets" 2 - return -} - -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 "unresolved 1" - 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 diff --git a/binutils/testsuite/binutils-all/readelf.h b/binutils/testsuite/binutils-all/readelf.h deleted file mode 100644 index 01103fbab..000000000 --- a/binutils/testsuite/binutils-all/readelf.h +++ /dev/null @@ -1,20 +0,0 @@ -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/testsuite/binutils-all/readelf.r b/binutils/testsuite/binutils-all/readelf.r deleted file mode 100644 index 689049f12..000000000 --- a/binutils/testsuite/binutils-all/readelf.r +++ /dev/null @@ -1,4 +0,0 @@ - -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/testsuite/binutils-all/readelf.r-64 b/binutils/testsuite/binutils-all/readelf.r-64 deleted file mode 100644 index 3e3b0a4a1..000000000 --- a/binutils/testsuite/binutils-all/readelf.r-64 +++ /dev/null @@ -1,4 +0,0 @@ - -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/testsuite/binutils-all/readelf.s b/binutils/testsuite/binutils-all/readelf.s deleted file mode 100644 index 985a48bf7..000000000 --- a/binutils/testsuite/binutils-all/readelf.s +++ /dev/null @@ -1,24 +0,0 @@ -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: - W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) - I \(info\), L \(link order\), G \(group\), x \(unknown\) - O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) - diff --git a/binutils/testsuite/binutils-all/readelf.s-64 b/binutils/testsuite/binutils-all/readelf.s-64 deleted file mode 100644 index 5496b4145..000000000 --- a/binutils/testsuite/binutils-all/readelf.s-64 +++ /dev/null @@ -1,25 +0,0 @@ -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: - W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) - I \(info\), L \(link order\), G \(group\), x \(unknown\) - O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) diff --git a/binutils/testsuite/binutils-all/readelf.ss b/binutils/testsuite/binutils-all/readelf.ss deleted file mode 100644 index 325403dd6..000000000 --- a/binutils/testsuite/binutils-all/readelf.ss +++ /dev/null @@ -1,16 +0,0 @@ - -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 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 -# 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 3 data_symbol - ..: 00000004 4 OBJECT GLOBAL DEFAULT ( COM|ANSI_COM) common_symbol diff --git a/binutils/testsuite/binutils-all/readelf.ss-64 b/binutils/testsuite/binutils-all/readelf.ss-64 deleted file mode 100644 index b29276d47..000000000 --- a/binutils/testsuite/binutils-all/readelf.ss-64 +++ /dev/null @@ -1,13 +0,0 @@ - -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 OBJECT GLOBAL DEFAULT COM common_symbol diff --git a/binutils/testsuite/binutils-all/readelf.ss-mips b/binutils/testsuite/binutils-all/readelf.ss-mips deleted file mode 100644 index c71ee0461..000000000 --- a/binutils/testsuite/binutils-all/readelf.ss-mips +++ /dev/null @@ -1,15 +0,0 @@ - -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 . - 2: 00000000 0 SECTION LOCAL DEFAULT . - 3: 00000000 0 SECTION LOCAL DEFAULT . - 4: 00000000 0 SECTION LOCAL DEFAULT . - 5: 00000000 0 SECTION LOCAL DEFAULT . - 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 OBJECT GLOBAL DEFAULT (PRC|COM) common_symbol diff --git a/binutils/testsuite/binutils-all/readelf.ss-tmips b/binutils/testsuite/binutils-all/readelf.ss-tmips deleted file mode 100644 index 4f2fba222..000000000 --- a/binutils/testsuite/binutils-all/readelf.ss-tmips +++ /dev/null @@ -1,15 +0,0 @@ - -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 OBJECT GLOBAL DEFAULT (PRC|COM) common_symbol diff --git a/binutils/testsuite/binutils-all/size.exp b/binutils/testsuite/binutils-all/size.exp deleted file mode 100644 index b91ba23c2..000000000 --- a/binutils/testsuite/binutils-all/size.exp +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright 1993, 1994, 1995, 1997, 1998 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# 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 -# and rewritten by Ian Lance Taylor - -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 { - 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/testsuite/binutils-all/testprog.c b/binutils/testsuite/binutils-all/testprog.c deleted file mode 100644 index 2a347c887..000000000 --- a/binutils/testsuite/binutils-all/testprog.c +++ /dev/null @@ -1,30 +0,0 @@ -/* This program is used to test objcopy, readelf and strip. */ - -extern int strcmp (char *, const char *); - -int common; -int global = 1; -static int local = 2; -static unsigned char string[] = "string"; - -int -fn () -{ - return 3; -} - -int -main () -{ - 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/testsuite/binutils-all/windres/README b/binutils/testsuite/binutils-all/windres/README deleted file mode 100644 index f99034949..000000000 --- a/binutils/testsuite/binutils-all/windres/README +++ /dev/null @@ -1,26 +0,0 @@ -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 *-*-* - -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. diff --git a/binutils/testsuite/binutils-all/windres/bmp1.bmp b/binutils/testsuite/binutils-all/windres/bmp1.bmp deleted file mode 100644 index 208a8aa28d7a47d17b2096e91a53560dbd314bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 122 zcwTeztzv+HG9cCfVn#S-0gJOR-~tU`#L& - -# 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/testsuite/binutils-all/windres/nocaption.rc b/binutils/testsuite/binutils-all/windres/nocaption.rc deleted file mode 100644 index 1f3c20f55..000000000 --- a/binutils/testsuite/binutils-all/windres/nocaption.rc +++ /dev/null @@ -1,4 +0,0 @@ -101 DIALOG DISCARDABLE 0, 0, 186, 95 -BEGIN - DEFPUSHBUTTON "OK",1,129,7,50,14 -END diff --git a/binutils/testsuite/binutils-all/windres/nocaption.rsd b/binutils/testsuite/binutils-all/windres/nocaption.rsd deleted file mode 100644 index 270b62234..000000000 --- a/binutils/testsuite/binutils-all/windres/nocaption.rsd +++ /dev/null @@ -1,8 +0,0 @@ - 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/testsuite/binutils-all/windres/printstyle.rc b/binutils/testsuite/binutils-all/windres/printstyle.rc deleted file mode 100644 index 0066c995e..000000000 --- a/binutils/testsuite/binutils-all/windres/printstyle.rc +++ /dev/null @@ -1,6 +0,0 @@ -101 DIALOG DISCARDABLE 0, 0, 186, 95 -STYLE 0 -BEGIN - DEFPUSHBUTTON "OK",1,129,7,50,14 -END - diff --git a/binutils/testsuite/binutils-all/windres/printstyle.rsd b/binutils/testsuite/binutils-all/windres/printstyle.rsd deleted file mode 100644 index 6a4a919c9..000000000 --- a/binutils/testsuite/binutils-all/windres/printstyle.rsd +++ /dev/null @@ -1,8 +0,0 @@ - 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/testsuite/binutils-all/windres/quoteclass.rc b/binutils/testsuite/binutils-all/windres/quoteclass.rc deleted file mode 100644 index c1f98e19e..000000000 --- a/binutils/testsuite/binutils-all/windres/quoteclass.rc +++ /dev/null @@ -1,8 +0,0 @@ -// parse-only - -101 DIALOG DISCARDABLE 0, 0, 186, 95 -CLASS "myclass" -BEGIN - DEFPUSHBUTTON "OK",1,129,7,50,14 -END - diff --git a/binutils/testsuite/binutils-all/windres/scrollbar.rc b/binutils/testsuite/binutils-all/windres/scrollbar.rc deleted file mode 100644 index 9391d1abb..000000000 --- a/binutils/testsuite/binutils-all/windres/scrollbar.rc +++ /dev/null @@ -1,4 +0,0 @@ -501 DIALOGEX 0, 0, 168, 137 -BEGIN - SCROLLBAR 1001,43,68,105,10,0,0,0x81f503e9 -END diff --git a/binutils/testsuite/binutils-all/windres/scrollbar.rsd b/binutils/testsuite/binutils-all/windres/scrollbar.rsd deleted file mode 100644 index c509c4cd1..000000000 --- a/binutils/testsuite/binutils-all/windres/scrollbar.rsd +++ /dev/null @@ -1,8 +0,0 @@ - 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/testsuite/binutils-all/windres/strtab1.rc b/binutils/testsuite/binutils-all/windres/strtab1.rc deleted file mode 100644 index a1a246d8e..000000000 --- a/binutils/testsuite/binutils-all/windres/strtab1.rc +++ /dev/null @@ -1,8 +0,0 @@ -#include "windows.h" - -LANGUAGE 0, 0 - -STRINGTABLE MOVEABLE PURE DISCARDABLE -BEGIN - 1 "hello, world" -END diff --git a/binutils/testsuite/binutils-all/windres/strtab1.rsd b/binutils/testsuite/binutils-all/windres/strtab1.rsd deleted file mode 100644 index 4d6107393..000000000 --- a/binutils/testsuite/binutils-all/windres/strtab1.rsd +++ /dev/null @@ -1,8 +0,0 @@ - 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/testsuite/binutils-all/windres/sublang.rc b/binutils/testsuite/binutils-all/windres/sublang.rc deleted file mode 100644 index a37921b33..000000000 --- a/binutils/testsuite/binutils-all/windres/sublang.rc +++ /dev/null @@ -1,5 +0,0 @@ -LANGUAGE 9, 1 -101 DIALOG DISCARDABLE 0, 0, 186, 95 -BEGIN - DEFPUSHBUTTON "OK",1,129,7,50,14 -END diff --git a/binutils/testsuite/binutils-all/windres/sublang.rsd b/binutils/testsuite/binutils-all/windres/sublang.rsd deleted file mode 100644 index 270b62234..000000000 --- a/binutils/testsuite/binutils-all/windres/sublang.rsd +++ /dev/null @@ -1,8 +0,0 @@ - 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/testsuite/binutils-all/windres/windres.exp b/binutils/testsuite/binutils-all/windres/windres.exp deleted file mode 100644 index bd761780a..000000000 --- a/binutils/testsuite/binutils-all/windres/windres.exp +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright 2001, 2003 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# Written by DJ Delorie - -if {![istarget "i*86-*-*"]} { - return -} - -if {![istarget "i*86-*-*pe*"] \ - && ![istarget "i*86-*-cygwin*"] \ - && ![istarget "i*86-*-mingw32*"] } { - set target_xfail "yes" -} else { - set target_xfail "no" -} - -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" - set target_xfail "no" -} 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 rc [open $res] - while { [gets $rc line] != -1 } { - if ![regexp "^(//|/\*|#)" $line] { - break - } - if [regexp "\[xp\]fail *(\[^ \]*)" $line junk sys] { - setup_xfail $sys - continue; - } - } - - if { "$broot" != "bmpalign" && "$target_xfail" == "yes" } { - setup_xfail *-* - } - - verbose "$wr -J rc -O res $res tmpdir/$broot.res" 1 - catch "exec $wr -J rc -O res $res tmpdir/$broot.res" err - - if ![string match "" $err] then { - send_log "$err\n" - verbose "$err" 1 - 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; - } - - if { "$broot" != "bmpalign" && "$target_xfail" == "yes" } { - setup_xfail *-* - } - - 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/testsuite/config/default.exp b/binutils/testsuite/config/default.exp deleted file mode 100644 index 4aa9ab330..000000000 --- a/binutils/testsuite/config/default.exp +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002 -# 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# 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 util-defs.exp -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 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 symlink 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]} then { - catch "exec mkdir tmpdir/gas" status - if {[file isfile ../gas/as-new]} then { - catch "exec ln -s ../../../gas/as-new tmpdir/gas/as" status - } - if {[file isfile ../ld/ld-new]} then { - catch "exec ln -s ../../../ld/ld-new tmpdir/gas/ld" status - } -} -set gcc_gas_flag "-B[pwd]/tmpdir/gas/" - -# -# 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 $source $object -} diff --git a/binutils/testsuite/config/hppa.sed b/binutils/testsuite/config/hppa.sed deleted file mode 100644 index d8607d85d..000000000 --- a/binutils/testsuite/config/hppa.sed +++ /dev/null @@ -1,4 +0,0 @@ -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 assebmlers.// -s/ \.comm common_symbol,4/common_symbol .comm 4/ diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp deleted file mode 100644 index 11860f7c4..000000000 --- a/binutils/testsuite/lib/utils-lib.exp +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001 -# 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 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# 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 -# and extended by Ian Lance Taylor - -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" - } - return $exec_output -} - -# -# default_binutils_assemble -# assemble a file -# -proc default_binutils_assemble { source object } { - 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 ""]; - 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 - } -} - -# -# is_elf_format -# true if the object format is known to be ELF -# -proc is_elf_format {} { - if { ![istarget *-*-sysv4*] \ - && ![istarget *-*-unixware*] \ - && ![istarget *-*-elf*] \ - && ![istarget *-*-eabi*] \ - && ![istarget hppa*64*-*-hpux*] \ - && ![istarget ia64-*-hpux*] \ - && ![istarget *-*-linux*] \ - && ![istarget *-*-irix5*] \ - && ![istarget *-*-irix6*] \ - && ![istarget *-*-netbsd*] \ - && ![istarget *-*-solaris2*] } { - return 0 - } - - if { [istarget *-*-linux*aout*] \ - || [istarget *-*-linux*oldld*] } { - 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 - } - return 1 -} diff --git a/binutils/unwind-ia64.c b/binutils/unwind-ia64.c deleted file mode 100644 index 2e7e726e4..000000000 --- a/binutils/unwind-ia64.c +++ /dev/null @@ -1,1082 +0,0 @@ -/* unwind-ia64.c -- utility routines to dump IA-64 unwind info for readelf. - Copyright 2000, 2001, 2003 Free Software Foundation, Inc. - Contributed by David Mosberger-Tang - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "unwind-ia64.h" -#include -#include - -#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 *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 *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[10]; \ - \ - 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[10]; \ - \ - 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[10]; \ - \ - 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[10], tregname[10]; \ - \ - 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 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/unwind-ia64.h b/binutils/unwind-ia64.h deleted file mode 100644 index 3b6ab2256..000000000 --- a/binutils/unwind-ia64.h +++ /dev/null @@ -1,31 +0,0 @@ -/* unwind-ia64.h -- dump IA-64 unwind info. - Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - Contributed by David Mosberger-Tang - -This file is part of GNU Binutils. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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/version.c b/binutils/version.c deleted file mode 100644 index f965619d4..000000000 --- a/binutils/version.c +++ /dev/null @@ -1,40 +0,0 @@ -/* version.c -- binutils version information - Copyright 1991, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include -#include "bfd.h" -#include "bfdver.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 2004 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. This program has absolutely no warranty.\n")); - exit (0); -} diff --git a/binutils/windres.c b/binutils/windres.c deleted file mode 100644 index 1d23f1097..000000000 --- a/binutils/windres.c +++ /dev/null @@ -1,1003 +0,0 @@ -/* windres.c -- a program to manipulate Windows resources - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 - . - - * The res2coff program, written by Pedro A. Aranda . */ - -#include "bfd.h" -#include "getopt.h" -#include "bucomm.h" -#include "libiberty.h" -#include "safe-ctype.h" -#include "obstack.h" -#include "windres.h" -#include -#include - -/* Used by resrc.c at least. */ - -int verbose = 0; - -/* 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 struct 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 struct res_directory *sort_resources (struct res_directory *); -static void reswr_init (void); -static const char * quot (const char *); - -/* 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 (size_t bytes) -{ - return (void *) obstack_alloc (&res_obstack, 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 (size_t bytes) -{ - return (void *) obstack_alloc (&reswr_obstack, 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 (struct res_id a, struct 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, struct res_id id, int quote) -{ - if (! id.named) - fprintf (stream, "%lu", id.u.id); - else - { - if (quote) - putc ('"', stream); - unicode_print (stream, id.u.n.name, id.u.n.length); - if (quote) - putc ('"', stream); - } -} - -/* Print a list of resource ID's. */ - -void -res_ids_print (FILE *stream, int cids, const struct 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 (struct 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); -} - -/* 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 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. */ - -struct res_resource * -define_resource (struct res_directory **resources, int cids, - const struct res_id *ids, int dupok) -{ - struct res_entry *re = NULL; - int i; - - assert (cids > 0); - for (i = 0; i < cids; i++) - { - struct res_entry **pp; - - if (*resources == NULL) - { - static unsigned long timeval; - - /* Use the same timestamp for every resource created in a - single run. */ - if (timeval == 0) - timeval = time (NULL); - - *resources = ((struct res_directory *) - res_alloc (sizeof **resources)); - (*resources)->characteristics = 0; - (*resources)->time = timeval; - (*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 = (struct res_entry *) res_alloc (sizeof *re); - 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 = ((struct res_resource *) - res_alloc (sizeof (struct res_resource))); - memset (re->u.res, 0, sizeof (struct 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. */ - -struct res_resource * -define_standard_resource (struct res_directory **resources, int type, - struct res_id name, int language, int dupok) -{ - struct 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 struct res_entry **re1, **re2; - - re1 = (const struct res_entry **) p1; - re2 = (const struct res_entry **) p2; - return res_id_cmp ((*re1)->id, (*re2)->id); -} - -/* Sort the resources. */ - -static struct res_directory * -sort_resources (struct res_directory *resdir) -{ - int c, i; - struct res_entry *re; - struct 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 = (struct res_entry **) xmalloc (c * sizeof (struct res_entry *)); - - for (i = 0, re = resdir->entries; re != NULL; re = re->next, i++) - a[i] = re; - - qsort (a, c, sizeof (struct 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 struct dialog *dialog) -{ - const struct 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 struct menu *menu) -{ - return extended_menuitems (menu->items); -} - -static int -extended_menuitems (const struct menuitem *menuitems) -{ - const struct 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; - unsigned char 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 -I 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= Name input file\n\ - -o --output= Name output file\n\ - -J --input-format= Specify input format\n\ - -O --output-format= Specify output format\n\ - -F --target= Specify COFF target\n\ - --preprocessor= Program to use to preprocess rc file\n\ - -I --include-dir= Include directory when preprocessing rc file\n\ - -D --define [=] Define SYM when preprocessing rc file\n\ - -U --undefine Undefine SYM when preprocessing rc file\n\ - -v --verbose Verbose - tells you what it's doing\n\ - -l --language= 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\ - -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 (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. */ - -/* 150 isn't special; it's just an arbitrary non-ASCII char value. */ - -#define OPTION_PREPROCESSOR 150 -#define OPTION_USE_TEMP_FILE (OPTION_PREPROCESSOR + 1) -#define OPTION_NO_USE_TEMP_FILE (OPTION_USE_TEMP_FILE + 1) -#define OPTION_YYDEBUG (OPTION_NO_USE_TEMP_FILE + 1) - -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}, - {"include-dir", required_argument, 0, 'I'}, - {"define", required_argument, 0, 'D'}, - {"undefine", required_argument, 0, 'U'}, - {"verbose", no_argument, 0, 'v'}, - {"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} -}; - -/* 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; - struct 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); - - 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, "f:i:l:o:I:J:O:F:D:U:rhHvV", long_options, - (int *) 0)) != EOF) - { - switch (c) - { - case 'i': - input_filename = optarg; - break; - - case 'f': - /* For compatibility with rc we accept "-fo " as being the - equivalent of "-o ". 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 '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) - { - fprintf (stderr, _("Option -I is deprecated for setting the input format, please use -J instead.\n")); - input_format = input_format_tmp; - break; - } - - 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; - } - - { - struct include_dir *n, **pp; - - n = (struct include_dir *) xmalloc (sizeof *n); - n->next = NULL; - n->dir = optarg; - - for (pp = &include_dirs; *pp != NULL; pp = &(*pp)->next) - ; - *pp = n; - } - - 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); - } - - /* 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; -} diff --git a/binutils/windres.h b/binutils/windres.h deleted file mode 100644 index bd1c636c2..000000000 --- a/binutils/windres.h +++ /dev/null @@ -1,851 +0,0 @@ -/* windres.h -- header file for windres program. - Copyright 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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" - -/* We represent resources internally as a tree, similar to the tree - used in the .rsrc section of a COFF file. The root is a - res_directory structure. */ - -struct res_directory -{ - /* Resource flags. According to the MS docs, this is currently - always zero. */ - unsigned long characteristics; - /* Time/date stamp. */ - unsigned long time; - /* Major version number. */ - unsigned short major; - /* Minor version number. */ - unsigned short minor; - /* Directory entries. */ - struct res_entry *entries; -}; - -/* A resource ID is stored in a res_id structure. */ - -struct res_id -{ - /* Non-zero if this entry has a name rather than an ID. */ - unsigned int named : 1; - union - { - /* If the named field is non-zero, this is the name. */ - struct - { - /* Length of the name. */ - int length; - /* Pointer to the name, which is a Unicode string. */ - unichar *name; - } n; - /* If the named field is zero, this is the ID. */ - unsigned long id; - } u; -}; - -/* Each entry in the tree is a 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. */ - -struct res_entry -{ - /* Next entry. */ - struct res_entry *next; - /* Resource ID. */ - struct res_id id; - /* Non-zero if this entry is a subdirectory rather than a leaf. */ - unsigned int subdir : 1; - union - { - /* If the subdir field is non-zero, this is a pointer to the - subdirectory. */ - struct res_directory *dir; - /* If the subdir field is zero, this is a pointer to the resource - data. */ - struct res_resource *res; - } u; -}; - -/* Types of resources. */ - -enum 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 -}; - -/* 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. */ - -struct 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. */ - unsigned short language; - /* Characteristics of the resource. Entirely user defined. In a - COFF file, the res_directory structure has a characteristics - field, but I don't know if it's related to the one in the res - file. */ - unsigned long characteristics; - /* Version of the resource. Entirely user defined. In a COFF file, - the res_directory structure has a characteristics field, but I - don't know if it's related to the one in the res file. */ - unsigned long 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. */ - unsigned short memflags; -}; - -/* Each resource in a COFF file has some information which can does - not appear in a res file. */ - -struct res_coff_info -{ - /* The code page used for the data. I don't really know what this - should be. */ - unsigned long 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. */ - unsigned long reserved; -}; - -/* Resource data is stored in a res_resource structure. */ - -struct res_resource -{ - /* The type of resource. */ - enum res_type type; - /* The data for the resource. */ - union - { - struct - { - unsigned long length; - const unsigned char *data; - } data; - struct accelerator *acc; - struct cursor *cursor; - struct group_cursor *group_cursor; - struct dialog *dialog; - struct fontdir *fontdir; - struct group_icon *group_icon; - struct menu *menu; - struct rcdata_item *rcdata; - struct stringtable *stringtable; - struct rcdata_item *userdata; - struct versioninfo *versioninfo; - } u; - /* Information from a res file. */ - struct res_res_info res_info; - /* Information from a COFF file. */ - struct res_coff_info coff_info; -}; - -#define SUBLANG_SHIFT 10 - -/* Memory flags in the memflags field of a struct 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 - 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 - -/* An accelerator resource is a linked list of these structures. */ - -struct accelerator -{ - /* Next accelerator. */ - struct accelerator *next; - /* Flags. A combination of the ACC values defined below. */ - unsigned short flags; - /* Key value. */ - unsigned short key; - /* Resource ID. */ - unsigned short id; -}; - -/* Accelerator flags in the flags field of a struct 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. */ - -struct cursor -{ - /* X coordinate of hotspot. */ - short xhotspot; - /* Y coordinate of hotspot. */ - short yhotspot; - /* Length of bitmap data. */ - unsigned long length; - /* Data. */ - const unsigned char *data; -}; - -/* A group_cursor resource is a list of group_cursor structures. */ - -struct group_cursor -{ - /* Next cursor in group. */ - struct group_cursor *next; - /* Width. */ - unsigned short width; - /* Height. */ - unsigned short height; - /* Planes. */ - unsigned short planes; - /* Bits per pixel. */ - unsigned short bits; - /* Number of bytes in cursor resource. */ - unsigned long bytes; - /* Index of cursor resource. */ - unsigned short index; -}; - -/* A dialog resource. */ - -struct dialog -{ - /* Basic window style. */ - unsigned long style; - /* Extended window style. */ - unsigned long exstyle; - /* X coordinate. */ - unsigned short x; - /* Y coordinate. */ - unsigned short y; - /* Width. */ - unsigned short width; - /* Height. */ - unsigned short height; - /* Menu name. */ - struct res_id menu; - /* Class name. */ - struct res_id class; - /* Caption. */ - unichar *caption; - /* Font point size. */ - unsigned short pointsize; - /* Font name. */ - unichar *font; - /* Extended information for a dialogex. */ - struct dialog_ex *ex; - /* Controls. */ - struct dialog_control *controls; -}; - -/* An extended dialog has additional information. */ - -struct dialog_ex -{ - /* Help ID. */ - unsigned long help; - /* Font weight. */ - unsigned short weight; - /* Whether the font is italic. */ - unsigned char italic; - /* Character set. */ - unsigned char charset; -}; - -/* Window style flags, from the winsup Defines.h header file. These - can appear in the style field of a struct dialog or a struct - 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. */ - -struct dialog_control -{ - /* Next control. */ - struct dialog_control *next; - /* ID. */ - unsigned short id; - /* Style. */ - unsigned long style; - /* Extended style. */ - unsigned long exstyle; - /* X coordinate. */ - unsigned short x; - /* Y coordinate. */ - unsigned short y; - /* Width. */ - unsigned short width; - /* Height. */ - unsigned short height; - /* Class name. */ - struct res_id class; - /* Associated text. */ - struct res_id text; - /* Extra data for the window procedure. */ - struct rcdata_item *data; - /* Help ID. Only used in an extended dialog. */ - unsigned long help; -}; - -/* Control classes. These can be used as the ID field in a struct - 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 fontdir structures. */ - -struct fontdir -{ - struct fontdir *next; - /* Index of font entry. */ - short index; - /* Length of font information. */ - unsigned long length; - /* Font information. */ - const unsigned char *data; -}; - -/* A group_icon resource is a list of group_icon structures. */ - -struct group_icon -{ - /* Next icon in group. */ - struct group_icon *next; - /* Width. */ - unsigned char width; - /* Height. */ - unsigned char height; - /* Color count. */ - unsigned char colors; - /* Planes. */ - unsigned short planes; - /* Bits per pixel. */ - unsigned short bits; - /* Number of bytes in cursor resource. */ - unsigned long bytes; - /* Index of cursor resource. */ - unsigned short index; -}; - -/* A menu resource. */ - -struct menu -{ - /* List of menuitems. */ - struct 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. */ - unsigned long help; -}; - -/* A menu resource is a list of menuitem structures. */ - -struct menuitem -{ - /* Next menuitem. */ - struct menuitem *next; - /* Type. In a normal menu, rather than a menuex, this is the flags - field. */ - unsigned long type; - /* State. This is only used in a menuex. */ - unsigned long state; - /* Id. */ - unsigned short id; - /* Unicode text. */ - unichar *text; - /* Popup menu items for a popup. */ - struct menuitem *popup; - /* Help ID. This is only used in a menuex. */ - unsigned long help; -}; - -/* Menu item flags. These can appear in the flags field of a struct - 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 rcdata_item - structures. */ - -struct rcdata_item -{ - /* Next data item. */ - struct rcdata_item *next; - /* Type of data. */ - enum - { - RCDATA_WORD, - RCDATA_DWORD, - RCDATA_STRING, - RCDATA_WSTRING, - RCDATA_BUFFER - } type; - union - { - unsigned int word; - unsigned long dword; - struct - { - unsigned long length; - const char *s; - } string; - struct - { - unsigned long length; - const unichar *w; - } wstring; - struct - { - unsigned long length; - const unsigned char *data; - } buffer; - } u; -}; - -/* A stringtable resource is a pointer to a stringtable structure. */ - -struct stringtable -{ - /* Each stringtable resource is a list of 16 unicode strings. */ - struct - { - /* Length of string. */ - int length; - /* String data if length > 0. */ - unichar *string; - } strings[16]; -}; - -/* A versioninfo resource points to a versioninfo structure. */ - -struct versioninfo -{ - /* Fixed version information. */ - struct fixed_versioninfo *fixed; - /* Variable version information. */ - struct ver_info *var; -}; - -/* The fixed portion of a versioninfo resource. */ - -struct fixed_versioninfo -{ - /* The file version, which is two 32 bit integers. */ - unsigned long file_version_ms; - unsigned long file_version_ls; - /* The product version, which is two 32 bit integers. */ - unsigned long product_version_ms; - unsigned long product_version_ls; - /* The file flags mask. */ - unsigned long file_flags_mask; - /* The file flags. */ - unsigned long file_flags; - /* The OS type. */ - unsigned long file_os; - /* The file type. */ - unsigned long file_type; - /* The file subtype. */ - unsigned long file_subtype; - /* The date, which in Windows is two 32 bit integers. */ - unsigned long file_date_ms; - unsigned long file_date_ls; -}; - -/* A list of variable version information. */ - -struct ver_info -{ - /* Next item. */ - struct ver_info *next; - /* Type of data. */ - enum { VERINFO_STRING, VERINFO_VAR } type; - union - { - /* StringFileInfo data. */ - struct - { - /* Language. */ - unichar *language; - /* Strings. */ - struct ver_stringinfo *strings; - } string; - /* VarFileInfo data. */ - struct - { - /* Key. */ - unichar *key; - /* Values. */ - struct ver_varinfo *var; - } var; - } u; -}; - -/* A list of string version information. */ - -struct ver_stringinfo -{ - /* Next string. */ - struct ver_stringinfo *next; - /* Key. */ - unichar *key; - /* Value. */ - unichar *value; -}; - -/* A list of variable version information. */ - -struct ver_varinfo -{ - /* Next item. */ - struct ver_varinfo *next; - /* Language ID. */ - unsigned short language; - /* Character set ID. */ - unsigned short charset; -}; - -/* This structure is used when converting resource information to - binary. */ - -struct bindata -{ - /* Next data. */ - struct bindata *next; - /* Length of data. */ - unsigned long length; - /* Data. */ - unsigned char *data; -}; - -extern int verbose; - -/* Function declarations. */ - -extern struct res_directory *read_rc_file - (const char *, const char *, const char *, int, int); -extern struct res_directory *read_res_file (const char *); -extern struct res_directory *read_coff_rsrc (const char *, const char *); -extern void write_rc_file (const char *, const struct res_directory *); -extern void write_res_file (const char *, const struct res_directory *); -extern void write_coff_file - (const char *, const char *, const struct res_directory *); - -extern struct res_resource *bin_to_res - (struct res_id, const unsigned char *, unsigned long, int); -extern struct bindata *res_to_bin (const struct res_resource *, int); - -extern FILE *open_file_search - (const char *, const char *, const char *, char **); - -extern void *res_alloc (size_t); -extern void *reswr_alloc (size_t); - -/* Resource ID handling. */ - -extern int res_id_cmp (struct res_id, struct res_id); -extern void res_id_print (FILE *, struct res_id, int); -extern void res_ids_print (FILE *, int, const struct res_id *); -extern void res_string_to_id (struct res_id *, const char *); - -/* Manipulation of the resource tree. */ - -extern struct res_resource *define_resource - (struct res_directory **, int, const struct res_id *, int); -extern struct res_resource *define_standard_resource - (struct res_directory **, int, struct res_id, int, int); - -extern int extended_dialog (const struct dialog *); -extern int extended_menu (const struct menu *); - -/* Communication between the rc file support and the parser and lexer. */ - -extern int yydebug; -extern FILE *yyin; -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 - (struct res_id, const struct res_res_info *, struct accelerator *); -extern void define_bitmap - (struct res_id, const struct res_res_info *, const char *); -extern void define_cursor - (struct res_id, const struct res_res_info *, const char *); -extern void define_dialog - (struct res_id, const struct res_res_info *, const struct dialog *); -extern struct dialog_control *define_control - (const struct res_id, unsigned long, unsigned long, unsigned long, - unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); -extern struct dialog_control *define_icon_control - (struct res_id, unsigned long, unsigned long, unsigned long, unsigned long, - unsigned long, unsigned long, struct rcdata_item *, struct dialog_ex *); -extern void define_font - (struct res_id, const struct res_res_info *, const char *); -extern void define_icon - (struct res_id, const struct res_res_info *, const char *); -extern void define_menu - (struct res_id, const struct res_res_info *, struct menuitem *); -extern struct menuitem *define_menuitem - (const char *, int, unsigned long, unsigned long, unsigned long, - struct menuitem *); -extern void define_messagetable - (struct res_id, const struct res_res_info *, const char *); -extern void define_rcdata - (struct res_id, const struct res_res_info *, struct rcdata_item *); -extern struct rcdata_item *define_rcdata_string - (const char *, unsigned long); -extern struct rcdata_item *define_rcdata_number (unsigned long, int); -extern void define_stringtable - (const struct res_res_info *, unsigned long, const char *); -extern void define_user_data - (struct res_id, struct res_id, const struct res_res_info *, - struct rcdata_item *); -extern void define_user_file - (struct res_id, struct res_id, const struct res_res_info *, const char *); -extern void define_versioninfo - (struct res_id, int, struct fixed_versioninfo *, struct ver_info *); -extern struct ver_info *append_ver_stringfileinfo - (struct ver_info *, const char *, struct ver_stringinfo *); -extern struct ver_info *append_ver_varfileinfo - (struct ver_info *, const char *, struct ver_varinfo *); -extern struct ver_stringinfo *append_verval - (struct ver_stringinfo *, const char *, const char *); -extern struct ver_varinfo *append_vertrans - (struct ver_varinfo *, unsigned long, unsigned long); diff --git a/binutils/winduni.c b/binutils/winduni.c deleted file mode 100644 index 65bc6085f..000000000 --- a/binutils/winduni.c +++ /dev/null @@ -1,140 +0,0 @@ -/* winduni.c -- unicode support for the windres program. - Copyright 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, 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 "bfd.h" -#include "bucomm.h" -#include "winduni.h" -#include "safe-ctype.h" - -#ifdef _WIN32 -#include -#endif - -/* 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 (int *length, unichar **unicode, const char *ascii) -{ - int len; - const char *s; - unsigned short *w; - - len = strlen (ascii); - - if (length != NULL) - *length = len; - - *unicode = ((unichar *) res_alloc ((len + 1) * sizeof (unichar))); - -#ifdef _WIN32 - /* FIXME: On Windows, we should be using MultiByteToWideChar to set - the length. */ - MultiByteToWideChar (CP_ACP, 0, ascii, len + 1, *unicode, len + 1); -#else - for (s = ascii, w = *unicode; *s != '\0'; s++, w++) - *w = *s & 0xff; - *w = 0; -#endif -} - -/* 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, int length) -{ - while (1) - { - unichar ch; - - if (length == 0) - return; - if (length > 0) - --length; - - ch = *unicode; - - if (ch == 0 && length < 0) - return; - - ++unicode; - - if ((ch & 0x7f) == ch) - { - 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%x", (unsigned int) ch); - } -} diff --git a/binutils/winduni.h b/binutils/winduni.h deleted file mode 100644 index c55189c27..000000000 --- a/binutils/winduni.h +++ /dev/null @@ -1,60 +0,0 @@ -/* winduni.h -- header file for unicode support for windres program. - Copyright 1997, 1998, 2002 Free Software Foundation, Inc. - Written by Ian Lance Taylor, Cygnus Support. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "ansidecl.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. */ - -/* 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 - PARAMS ((int *, unichar **, const char *)); - -/* Print a unicode string to a file. */ - -extern void unicode_print PARAMS ((FILE *, const unichar *, int)); - -/* 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 PTR res_alloc PARAMS ((size_t)); diff --git a/binutils/wrstabs.c b/binutils/wrstabs.c deleted file mode 100644 index 0d301f6a2..000000000 --- a/binutils/wrstabs.c +++ /dev/null @@ -1,2272 +0,0 @@ -/* wrstabs.c -- Output stabs debugging information - Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - Written by Ian Lance Taylor . - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file contains code which writes out stabs debugging - information. */ - -#include -#include - -#include "bfd.h" -#include "bucomm.h" -#include "libiberty.h" -#include "safe-ctype.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 index, 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 = index; - 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 index, - unsigned int size) -{ - char buf[20]; - - sprintf (buf, "%ld", index); - return stab_push_string (info, buf, index, 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) - || ! bfd_hash_table_init (&info.typedef_hash.table, string_hash_newfunc)) - { - 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 index; - char buf[40]; - - index = info->type_index; - ++info->type_index; - - sprintf (buf, "%ld=%ld", index, index); - - return stab_push_string (info, buf, index, 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 index; - char buf[40]; - - index = info->type_index; - ++info->type_index; - - info->type_cache.void_type = index; - - sprintf (buf, "%ld=%ld", index, index); - - return stab_push_string (info, buf, index, 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 index; - char buf[100]; - - index = info->type_index; - ++info->type_index; - - cache[size - 1] = index; - - sprintf (buf, "%ld=r%ld;", index, index); - 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, index, 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 index; - 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); - - index = 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] = index; - - sprintf (buf, "%ld=r%s;%u;0;", index, int_type, size); - - free (int_type); - - return stab_push_string (info, buf, index, 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 index; - - index = info->type_index; - ++info->type_index; - - sprintf (buf, "%ld=r%ld;%u;0;", index, index, size); - - return stab_push_string (info, buf, index, 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 index; - - switch (size) - { - case 1: - index = -21; - break; - - case 2: - index = -22; - break; - - default: - case 4: - index = -16; - break; - - case 8: - index = -33; - break; - } - - return stab_push_defined_type (info, index, 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 index = 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 - { - index = info->type_index; - ++info->type_index; - sprintf (buf, "%s:T%ld=e", tag, index); - } - - 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, index, 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 index; - 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; - } - - index = (*cache)[targindex]; - if (index != 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, index, size)) - return FALSE; - } - else - { - index = info->type_index; - ++info->type_index; - - s = stab_pop_type (info); - buf = (char *) xmalloc (strlen (s) + 20); - sprintf (buf, "%ld=%c%s", index, mod, s); - free (s); - - (*cache)[targindex] = index; - - if (! stab_push_string (info, buf, index, 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 index; - 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) - { - index = 0; - *buf = '\0'; - } - else - { - /* We need to define a type in order to include the string - attribute. */ - index = info->type_index; - ++info->type_index; - definition = TRUE; - sprintf (buf, "%ld=@S;", index); - } - - 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, index, 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 index; - - definition = info->type_stack->definition; - - s = stab_pop_type (info); - buf = (char *) xmalloc (strlen (s) + 30); - - if (! bitstringp) - { - *buf = '\0'; - index = 0; - } - else - { - /* We need to define a type in order to include the string - attribute. */ - index = info->type_index; - ++info->type_index; - definition = TRUE; - sprintf (buf, "%ld=@S;", index); - } - - sprintf (buf + strlen (buf), "S%s", s); - free (s); - - if (! stab_push_string (info, buf, index, 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 index; - bfd_boolean definition; - char *buf; - - buf = (char *) xmalloc (40); - - if (id == 0) - { - index = 0; - *buf = '\0'; - definition = FALSE; - } - else - { - index = stab_get_struct_index (info, tag, id, DEBUG_KIND_ILLEGAL, - &size); - if (index < 0) - return FALSE; - sprintf (buf, "%ld=", index); - definition = TRUE; - } - - sprintf (buf + strlen (buf), "%c%u", - structp ? 's' : 'u', - size); - - if (! stab_push_string (info, buf, index, 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 index; - unsigned int size; - char *fields, *first, *buf; - - assert (info->type_stack != NULL && info->type_stack->fields != NULL); - - definition = info->type_stack->definition; - index = 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, index, 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 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] = 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 index; - unsigned int size; - - index = stab_get_struct_index (info, name, id, kind, &size); - if (index < 0) - return FALSE; - - return stab_push_defined_type (info, index, 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 index; - unsigned int size; - char *s, *buf; - struct string_hash_entry *h; - - index = info->type_stack->index; - size = info->type_stack->size; - s = stab_pop_type (info); - - buf = (char *) xmalloc (strlen (name) + strlen (s) + 20); - - if (index > 0) - sprintf (buf, "%s:t%s", name, s); - else - { - index = info->type_index; - ++info->type_index; - sprintf (buf, "%s:t%ld=%s", name, index, 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 = index; - 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 index; - - index = info->type_index; - ++info->type_index; - n = (char *) xmalloc (strlen (s) + 20); - sprintf (n, "%ld=%s", index, 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 (strcmp (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); -} diff --git a/gas/CONTRIBUTORS b/gas/CONTRIBUTORS deleted file mode 100644 index d564ba8f0..000000000 --- a/gas/CONTRIBUTORS +++ /dev/null @@ -1,110 +0,0 @@ -(This file is under construction.) -*- text -*- - -If you've contributed to gas and your name isn't listed here, it is -not meant as a slight. I just don't know about it. Email me, -nickc@redhat.com and I'll correct the situation. - -This file will eventually be deleted: The general info will go into -the documentation, and info on specific files will go into an AUTHORS -file, as requested by the FSF. - -++++++++++++++++ - -Dean Elsner wrote the original gas for vax. [more details?] - -Jay Fenlason maintained gas for a while, adding support for -gdb-specific debug information and the 68k series machines, most of -the preprocessing pass, and extensive changes in messages.c, -input-file.c, write.c. - -K. Richard Pixley maintained gas for a while, adding various -enhancements and many bug fixes, including merging support for several -processors, breaking gas up to handle multiple object file format -backends (including heavy rewrite, testing, an integration of the coff -and b.out backends), adding configuration including heavy testing and -verification of cross assemblers and file splits and renaming, -converted gas to strictly ansi C including full prototypes, added -support for m680[34]0 & cpu32, considerable work on i960 including a -coff port (including considerable amounts of reverse engineering), a -sparc opcode file rewrite, decstation, rs6000, and hp300hpux host -ports, updated "know" assertions and made them work, much other -reorganization, cleanup, and lint. - -Ken Raeburn wrote the high-level BFD interface code to replace most of -the code in format-specific I/O modules. - -The original Vax-VMS support was contributed by David L. Kashtan. -Eric Youngdale and Pat Rankin have done much work with it since. - -The Intel 80386 machine description was written by Eliot Dresselhaus. - -Minh Tran-Le at IntelliCorp contributed some AIX 386 support. - -The Motorola 88k machine description was contributed by Devon Bowen of -Buffalo University and Torbjorn Granlund of the Swedish Institute of -Computer Science. - -Keith Knowles at the Open Software Foundation wrote the original MIPS -back end (tc-mips.c, tc-mips.h), and contributed Rose format support -that hasn't been merged in yet. Ralph Campbell worked with the MIPS -code to support a.out format. - -Support for the Zilog Z8k and Hitachi H8/300, H8/500 and SH processors -(tc-z8k, tc-h8300, tc-h8500, tc-sh), and IEEE 695 object file format -(obj-ieee), was written by Steve Chamberlain of Cygnus Solutions. -Steve also modified the COFF back end (obj-coffbfd) to use BFD for -some low-level operations, for use with the Hitachi, 29k and Zilog -targets. - -John Gilmore built the AMD 29000 support, added .include support, and -simplified the configuration of which versions accept which -pseudo-ops. He updated the 68k machine description so that Motorola's -opcodes always produced fixed-size instructions (e.g. jsr), while -synthetic instructions remained shrinkable (jbsr). John fixed many -bugs, including true tested cross-compilation support, and one bug in -relaxation that took a week and required the proverbial one-bit fix. - -Ian Lance Taylor of Cygnus Solutions merged the Motorola and MIT -syntaxes for the 68k, completed support for some COFF targets (68k, -i386 SVR3, and SCO Unix), wrote the ECOFF support based on Michael -Meissner's mips-tfile program, wrote the PowerPC and RS/6000 support, -and made a few other minor patches. He handled the binutils releases -for versions 2.7 through 2.9. - -David Edelsohn contributed fixes for the PowerPC and AIX support. - -Steve Chamberlain made gas able to generate listings. - -Support for the HP9000/300 was contributed by Glenn Engel of HP. - -Support for ELF format files has been worked on by Mark Eichin of -Cygnus Solutions (original, incomplete implementation), Pete -Hoogenboom at the University of Utah (HPPA mainly), Michael Meissner -of the Open Software Foundation (i386 mainly), and Ken Raeburn of -Cygnus Solutions (sparc, initial 64-bit support). - -Several engineers at Cygnus Solutions have also provided many small -bug fixes and configuration enhancements. - -The initial Alpha support was contributed by Carnegie-Mellon -University. Additional work was done by Ken Raeburn of Cygnus -Solutions. Richard Henderson then rewrote much of the Alpha support. - -Ian Dall updated the support code for the National Semiconductor 32000 -series, and added support for Mach 3 and NetBSD running on the PC532. - -Klaus Kaempf ported the assembler and the binutils to openVMS/Alpha. - -Steve Haworth contributed the support for the Texas Instruction c30 -(tms320c30). - -H.J. Lu has contributed many patches and much testing. - -Alan Modra reworked much of the i386 backend, improving the error -checking, updating the code, and improving the 16 bit support, using -patches from the work of Martynas Kunigelis and H.J. Lu. - -Many others have contributed large or small bugfixes and enhancements. If -you've contributed significant work and are not mentioned on this list, and -want to be, let us know. Some of the history has been lost; we aren't -intentionally leaving anyone out. diff --git a/gas/COPYING b/gas/COPYING deleted file mode 100644 index c27986e64..000000000 --- a/gas/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright 1989, 1991, 1997 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public 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. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/gas/ChangeLog b/gas/ChangeLog deleted file mode 100644 index ba6c6ec36..000000000 --- a/gas/ChangeLog +++ /dev/null @@ -1,377 +0,0 @@ -2004-02-27 Kazuhiro Inaoka - - * config/tc-m32r.c (md_longopts): Added -no-bitinst option. - (md_parse_option): Ditto. - (OPTION_NO_SPECIAL_M32R): Added. - (md_show_usage): Document it. - (enable_speial_m32r): Changed a default value from 0 to 1. - * doc/c-m32r.texi: Document the -no-bitinst option. - -2004-02-27 Nick Clifton - - * config/tc-sh.c (get_operand): Revert previous delta. - (tc_gen_reloc): Check for an unknown reloc type before processing - the addend. - -2004-02-27 Hannes Reinecke - - * config/tc-s390.c (s390_insn): Correct range check for opcode in - .insn pseudo operation. - -2004-02-27 Anil Paranjpe - - * config/tc-sh.c (get_operand): In case of #Imm, check has been - added for wrong syntax. - -2004-02-26 Eric Christopher - - * config/tc-mips.c (mips_dwarf2_addr_size): New. - * config/tc-mips.h (DWARF2_ADDR_SIZE): Use. - -2004-02-26 Andrew Stubbs - - * config/tc-sh.c (build_Mytes): Add REG_N_D and REG_N_B01 - nibble types to assembler. - -2004-02-25 Fred Fish - - * config/tc-iq2000.c: Add missing \n\ in multiline string literal. - -2004-02-20 James E Wilson - - * config/tc-ia64.c (slot_index): New arg before_relax. Use instead of - finalize_syms. - (fixup_unw_records): New arg before_relax. Pass to slot_index. - (ia64_estimate_size_before_relax): New. - (ia64_convert_frag): Pass 0 to fixup_unw_records. Add comment. - (generate_unwind_image): Pass 1 to fixup_unw_records. - * config/tc-ia64.h (ia64_estimate_size_before_relax): Declare. - (md_estimate_size_before_relax): Call ia64_estimate_size_before_relax. - -2004-02-19 Jakub Jelinek - - * stabs.c (generate_asm_file): Avoid warning about use of - uninitialized variable. - -2004-02-18 David Mosberger - - * config/tc-ia64.c (ia64_flush_insns): In addition to prologue, - body, and endp, allow unwind records which do not have a "t" - (time/instruction) field. - -2004-02-17 Petko Manolov - - * config/tc-arm.c (do_mav_dspsc_1): Correct offset of CRn. - (do_mav_dspsc_2): Likewise. - Fix accumulator registers move opcodes. - -2004-02-13 Hannes Reinecke - Jakub Jelinek - - * dwarf2dbg.c (get_filenum): Do not read beyond allocated memory. - -2004-02-10 Steve Ellcey - - * config/tc-ia64.h (ia64_frob_symbol): New declaration. - (tc_frob_symbol): New macro definition. - * config/tc-ia64.c (ia64_frob_symbol): New routine. - -2004-02-09 Daniel Jacobowitz - - * config/tc-arm.c (md_begin): Mark .note.gnu.arm.ident as - read-only. - -2004-02-09 Nathan Sidwell - - * read.h (IGNORE_OPCODE_CASE): Do not define. Replace with ... - (TC_CASE_SENSITIVE): ... this. - * read.c: Replace IGNORE_OPCODE_CASE with TC_CASE_SENSITIVE. - * doc/internals.texi (TC_CASE_SENSITIVE): Document. - -2004-02-06 James E Wilson - - * config/tc-ia64.c (dot_endp): Delete call to output_endp. - (generate_unwind_image): Re-add it here. - -2004-02-06 Nathan Sidwell - - * dwarf2dbg.c (DWARF2_ADDR_SIZE): Remove trailing ';' - * read.h (SKIP_WHITESPACE): Turn into an expression. - * read.c (read_a_source_file): A pseudo is removed by having a - NULL handler. - -2004-02-05 James E Wilson - - * config/tc-ia64.c (output_endp): New. - (count_bits): Delete. - (ia64_flush_insns, process_one_record, optimize_unw_records): Handle - endp unwind records. - (fixup_unw_records): Handle endp unwind records. Delete code for - shortening prologue regions not followed by a body record. - (dot_endp): Call add_unwind_entry to emit endp unwind record. - * config/tc-ia64.h (unw_record_type): Add endp. - -2004-02-03 James E Wilson - - * config/tc-ia64.c (ia64_convert_frag): Call md_number_to_chars to - fill padding bytes with zeroes. - (emit_one_bundle): New locals last_ptr, end_ptr. Rewrite code that - sets unwind_record slot_number and slot_frag fields. - -2004-02-02 Maciej W. Rozycki - - * config/tc-mips.c (add_got_offset_hilo): New function. - (macro): Use load_register() and add_got_offset_hilo() to load - constants instead of hardcoding code sequences throughout. - -2004-01-28 H.J. Lu - - * config/tc-ia64.c (emit_one_bundle): Add proper indentation. - -2004-01-26 Bernardo Innocenti - - * config/tc-m68k.h (EXTERN_FORCE_RELOC): Handle m68k-uclinux specially, - like m68k-elf. - * config/tc-m68k.c (RELAXABLE_SYMBOL): Use EXTERN_FORCE_RELOC instead - of hard-coded test for TARGET_OS=elf. - -2004-01-24 Chris Demetriou - - * config/tc-mips.c (hilo_interlocks): Change definition - so that MIPS32, MIPS64 and later ISAs are included, along with - the already-included machines. Update comments. - -2004-01-23 Daniel Jacobowitz - - * config/tc-arm.c (tc_gen_reloc): Improve error message for - undefined local labels. - -2004-01-23 Richard Sandiford - - * config/tc-mips.c (load_address, macro): Update comments about - NewABI GP relaxation. - -2004-01-23 Richard Sandiford - - * config/tc-mips.c (macro_build): Remove place and counter arguments. - (mips_build_lui, macro_build_ldst_constoffset): Likewise. - (mips16_macro_build, macro_build_jalr): Remove counter argument. - (set_at, load_register, load_address, move_register): Likewise. - (load_got_offset, add_got_offset): Likewise. - Update all calls and tidy accordingly. - -2004-01-23 Richard Sandiford - - * config/tc-mips.c (RELAX_ENCODE): Remove WARN argument. - (RELAX_FIRST, RELAX_SECOND): Turn into 8-bit quantities. - (RELAX_USE_SECOND): Bump to 0x10000. - (RELAX_SECOND_LONGER, RELAX_NOMACRO, RELAX_DELAY_SLOT): New flags. - (mips_macro_warning): New variable. - (md_assemble): Wrap macro expansion in macro_start() and macro_end(). - (s_cpload, s_cpsetup, s_cprestore, s_cpreturn): Likewise. - (relax_close_frag): Set mips_macro_warning.first_frag. Adjust use - of RELAX_ENCODE. - (append_insn): Update mips_macro_warning.sizes. - (macro_start, macro_warning, macro_end): New functions. - (macro_build): Don't emit warnings here. - (macro_build_lui, md_estimate_size_before_relax): ...or here. - (md_convert_frag): Check for cases where one macro alternative - needs a warning and the other doesn't. Emit a warning if the - longer sequence was chosen. - -2004-01-23 Richard Sandiford - - * config/tc-mips.h (tc_frag_data_type, TC_FRAG_TYPE): Remove. - * config/tc-mips.c (RELAX_ENCODE): Take three arguments: the size of - the first sequence, the size of the second sequence, and a flag - that says whether we should warn. - (RELAX_OLD, RELAX_NEW, RELAX_RELOC[123]): Delete. - (RELAX_FIRST, RELAX_SECOND): New. - (mips_relax): New variable. - (relax_close_frag, relax_start, relax_switch, relax_end): New fns. - (append_insn): Remove "place" argument. Use mips_relax.sequence - rather than "place" to check whether we're expanding the second - alternative of a relaxable macro. Remove redundant check for - branch relaxation. If generating a normal insn, and there - is not enough room in the current frag, call relax_close_frag() - to close it. Update mips_relax.sizes[]. Emit fixups for the - second version of a relaxable macro. Record the first relaxable - fixup in mips_relax. Remove tc_gen_reloc workaround. - (macro_build): Remove all uses of "place". Use mips_relax.sequence - in the same way as in append_insn. - (mips16_macro_build): Remove "place" argument. - (macro_build_lui): As for macro_build. Don't drop the add_symbol - when generating the second version of a relaxable macro. - (load_got_offset, add_got_offset): New functions. - (load_address, macro): Use new relaxation machinery. Remove - tc_gen_reloc workarounds. - (md_estimate_size_before_relax): Set RELAX_USE_SECOND if the second - version of a relaxable macro is needed. Return -RELAX_SECOND if the - first version is needed. - (tc_gen_reloc): Remove relaxation handling. - (md_convert_frag): Go through the fixups for a relaxable macro and - mark those that belong to the unneeded alternative as done. If the - second alternative is needed, adjust the fixup addresses to account - for the deleted first alternative. - -2004-01-23 Richard Sandiford - - * frags.h (frag_room): Declare. - * frags.c (frag_room): New function. - * doc/internals.texi: Document it. - -2004-01-22 Thiemo Seufer - - * config/tc-mips.c (append_insn): Don't do r3900 interlock - optimization for -mtune=r3900, as this will break on other CPUs. - -2004-01-11 Tom Rix - - * config/tc-m68hc11.c (build_indexed_byte): movb and movw cannot - be relaxed, use fixup. - (md_apply_fix3): Use 5 bit reloc from movb and movw fixup. - -2004-01-19 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Disallow %f32-%f63 for single - precision operands. - -2004-01-14 Maciej W. Rozycki - - * config/tc-mips.c (append_insn): Properly detect variant frags - that preclude swapping of relaxed branches. Correctly swap - instructions between frags when dealing with relaxed branches. - -2004-01-14 Maciej W. Rozycki - - * acinclude.m4: Quote names of macros to be defined by AC_DEFUN - throughout. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2004-01-12 Anil Paranjpe - - * config/tc-h8300.c (build_bytes): Apply relaxation to bit - manipulation insns. - -2004-01-12 Richard Sandiford - - * config/tc-mips.c (macro_build_jalr): When adding an R_MIPS_JALR - reloc, reserve space for the delay slot as well as the jalr itself. - -2004-01-09 Paul Brook - - * config/tc-arm.c (do_vfp_reg2_from_sp2): Rename from do_vfp_sp_reg2. - (do_vfp_sp2_from_reg2): New function. - (insns): Use them. - (do_vfp_dp_from_reg2): Check return values properly. - -2004-01-08 Ian Lance Taylor - - * config/tc-mips.c (warn_nops): Remove static variable. - (macro): Remove test of warn_nops. - (md_shortops): Remove 'n'. - (md_parse_option): Remove 'n' case. - (md_show_usage): Remove -n. - * doc/as.texinfo (Overview): Remove MIPS -n option. - * doc/c-mips.texi (MIPS Opts): Remove mention -n. - * NEWS: Mention removal of MIPS -n option. - - * config/tc-mips.c (ISA_HAS_COPROC_DELAYS): Remove. - (cop_interlocks): Check ISA level. - (cop_mem_interlocks): Define. - (reg_needs_delay): Check cop_interlocks rather than - ISA_HAS_COPROC_DELAYS. - (append_insn): Likewise. Use cop_mem_interlocks rather than - directly checking mips_opts.isa. - (mips_emit_delays): Likewise. - -2004-01-07 H.J. Lu - - * config/tc-ia64.c (unwind): Move next_slot_number and - next_slot_frag to ... - (unw_rec_list): Here. - (free_list_records): Removed. - (output_unw_records): Likewise. - (generate_unwind_image): Make it void. - (alloc_record): Initialize next_slot_number and next_slot_frag. - (slot_index): Take .org, .space and .align into account. - (fixup_unw_records): Don't set slot_number to 0. Use - list->next_slot_number and list->next_slot_frag instead of - unwind.next_slot_number and unwind.next_slot_frag. - (ia64_convert_frag): New. - (generate_unwind_image): Generate a rs_machine_dependent frag - for unwind record. - (emit_one_bundle): Use list->next_slot_number and - list->next_slot_frag instead of unwind.next_slot_number and - unwind.next_slot_frag. - - * config/tc-ia64.h (md_convert_frag): Defined as - ia64_convert_frag. - (md_estimate_size_before_relax): Defined as (f)->fr_var. - -2004-01-06 Alexandre Oliva - - 2003-12-19 Alexandre Oliva - * config/tc-frv.h (md_apply_fix3): Don't define. - * config/tc-frv.c (md_apply_fix3): New. Shift/truncate %hi/%lo - operands. - * config/tc-frv.h (TC_FORCE_RELOCATION_SUB_LOCAL): Define. - 2003-10-07 Alexandre Oliva - * config/tc-frv.c (line_separator_chars): Add `!'. - 2003-09-19 Alexandre Oliva - * config/tc-frv.c (md_assemble): Clear insn upfront. - 2003-09-18 Alexandre Oliva - * config/tc-frv.c (OPTION_FDPIC): New macro. - (md_longopts): Add mfdpic. - (md_parse_option): Handle it. - 2003-08-04 Alexandre Oliva - * config/tc-frv.c (md_cgen_lookup_reloc) : Use reloc type encoded in fix-up. - (frv_pic_ptr): Parse funcdesc. - -2004-01-05 Maciej W. Rozycki - - * doc/as.texinfo: Let texi2pod parse asconfig.texi and - gasver.texi. Remove duplicate symbol definitions for texi2pod. - -2004-01-05 Maciej W. Rozycki - - * Makefile.am (Makefile): Move the dependency on - $(BFDDIR)/configure.in to... - (CONFIG_STATUS_DEPENDENCIES): ... here. - (AUTOMAKE_OPTIONS): Require automake 1.8. - * Makefile.in: Regenerate. - * doc/Makefile.am (BASEDIR, BFDDIR): Define. - (CONFIG_STATUS_DEPENDENCIES): Add a dependency on - $(BFDDIR)/configure.in here as well. - * doc/Makefile.in: Regenerate. - -2004-01-05 Maciej W. Rozycki - - * Makefile.am (install, install-info, RECURSIVE_TARGETS): Remove. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * doc/Makefile.am (install, install-info): Remove. - (install-data-local): A new hook for install-info. - (AUTOMAKE_OPTIONS): Require automake 1.8. - * doc/Makefile.in: Regenerate. - -2004-01-02 Nutan Singh - - * doc/c-sh.texi: Update description about floating point behavior - of SH family. - -2004-01-02 Bernardo Innocenti - - * configure.in: Add m68k-uClinux target. - * configure: Regenerate. - -For older changes see ChangeLog-0203 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/gas/ChangeLog-0001 b/gas/ChangeLog-0001 deleted file mode 100644 index 9d8af6fbe..000000000 --- a/gas/ChangeLog-0001 +++ /dev/null @@ -1,7703 +0,0 @@ -2001-12-31 Richard Henderson - - * config/tc-ia64.c (errata_nop_necessary_p): Prototype. - (make_unw_section_name): Constify local variables. - - * config/tc-ia64.c (has_suffix_p): New. - (note_register_values): Use it instead of strstr. - -2001-12-31 Jeffrey A Law (law@redhat.com) - - * config/tc-hppa.c (pa_ip): Handle new 'c' mode completers, - 'X', 'M', and 'A'. - -2001-12-21 Jakub Jelinek - - * config/tc-sparc.h (TC_PARSE_CONS_EXPRESSION): Define. - (sparc_cons): Provide prototype. - * config/tc-sparc.c (tc_gen_reloc): Handle BFD_RELOC_*_PCREL and - BFD_RELOC_SPARC_PLT{32,64}. Enumerate for which relocs - reloc->addend = fixp->fx_addnumber shouldn't be done instead of - enumarating for which pc relative ones it should be done. - (sparc_cons_special_reloc): New variable. - (sparc_cons): New function. - (cons_fix_new_sparc): Use sparc_cons_special_reloc. - * testsuite/gas/sparc/pcrel.s: New test. - * testsuite/gas/sparc/pcrel.d: Expected output. - * testsuite/gas/sparc/pcrel64.s: New test. - * testsuite/gas/sparc/pcrel64.d: Expected output. - * testsuite/gas/sparc/plt.s: New test. - * testsuite/gas/sparc/plt.d: Expected output. - * testsuite/gas/sparc/plt64.s: New test. - * testsuite/gas/sparc/plt64.d: Expected output. - * testsuite/gas/sparc/sparc.exp: Add pcrel, pcrel64, plt and plt64 - tests. - -2001-12-20 Thiemo Seufer - Daniel Jacobowitz - - * config/tc-mips.c (file_mips_gp32): Initialize to invalid value. - (file_mips_fp32): Likewise. - (md_begin): Compatibility handling for -mipsN option. - -2001-12-20 Alexandre Oliva - - * config/tc-sh.c (parse_at): Reject @(r0) and @(r0,). - -2001-12-20 matthew green - - * config/tc-ppc.c (md_parse_option): Make -maltivec default - to generating PowerPC instructions. - -2001-12-20 Jason Thorpe - - * configure.in (mips-dec-netbsd*): Delete. - * configure: Regenerate. - - * configure.in (arm-*-netbsdelf*): Add target. - * configure: Regenerate. - -2001-12-18 Nick Clifton - - * config/tc-mips.h (TC_HANDLE_FX_DONE): Remove redundant - definition. - -2001-12-18 Niibe Yutaka - - * configure.in (assign object format): Bug fix for setting - endian. - * configure: Regenerate. - -2001-12-18 matthew green - - * configure.in (m68k-*-netbsdelf*): New target. - (m68k-*-netbsd*): Also include ELF support. - (m68k-*-netbsdaout*): New alias for m68*-*-netbsd*. - * configure: Regenerate. - -2001-12-18 Thiemo Seufer - - * gasp.c (main): Protoype. - -2001-12-17 Richard Henderson - - * config/tc-alpha.c (alpha_handle_align): Encode unop with RB as $sp. - -2001-12-17 Nick Clifton - - * cgen.c: Add prototype for queue_fixup. - (gas_cgen_parse_operand): Move initilisastion of errmsg to avoid - possible longjmp corruption. - * cgen.h: Add prototype for gas_cgen_md_operand. - -2001-12-15 Alan Modra - - * config/obj-elf.c (obj_elf_init_stab_section): References are - kept to section name strings. Don't alloca them! - -2001-12-12 Alexandre Oliva - - * config/tc-d10v.c (get_operands): Mark OPERAND_PLUS after - OPERAND_ATSIGN as O_absent. - -2001-12-07 Geoffrey Keating - Richard Henderson - - * configure.in: Add support for xstormy16. - * configure: Regenerated. - * Makefile.am: Add support for xstormy16. - * Makefile.in: Regenerated. - * config/tc-xstormy16.c: New file. - * config/tc-xstormy16.h: New file. - -2001-12-06 Richard Earnshaw (rearnsha@arm.com) - - * tc-arm.c (do_arit, do_cmp, do_mov, do_ldst, do_ldstt, do_ldmstm) - (do_branch, do_swi, do_adr, do_adrl, do_empty, do_mul, do_mla) - (do_swap, do_msr, do_mrs, do_mull, do_ldstv4, do_bx, do_blx) - (do_bkpt, do_clz, do_lstc2, do_cdp2, do_co_reg2, do_smla, do_smlal) - (do_smul, do_qadd, do_pld, do_ldrd, do_co_reg2c, do_cdp, do_lstc) - (do_co_reg, do_fpa_ctrl, do_fpa_ldst, do_fpa_ldmstm, do_fpa_monadic) - (do_fpa_dyadic, do_fpa_cmp, do_fpa_from_reg, do_fpa_to_reg, do_mia) - (do_mar, do_mra, do_c_binops, do_c_binops_1, do_c_binops_2) - (do_c_binops_3, do_c_triple, do_c_triple_4, do_c_triple_5, do_c_quad) - (do_c_quad_6, do_c_dspsc, do_c_dspsc_1, do_c_dspsc_2, do_c_shift) - (do_c_shift_1, do_c_shift_2, do_c_ldst, do_c_ldst_1, do_c_ldst_2) - (do_c_ldst_3, do_c_ldst_4, do_branch25): Delete redundant argument, - FLAGS. - (struct asm_opcode): Adjust parms field accordingly. - (md_assemble): Don't pass dummy second argument when calling worker - functions. - (build_arm_ops_hsh): Add prototype - (BAD_FLAGS): Delete. - -2001-12-05 Richard Earnshaw - - * tc-arm.c (struct asm_opcode): Delete comp_suffix and flags. Add - cond_offset. Rename variants->variant. - (insns): Adjust for new format. Explicitly code each variant that - takes flags. Remove temporary instructions. - (struct arm_it): Remove redundant field suffix. - (s_flag, ldr_flags, str_flags, byte_flag, cmp_flags, ldm_flags) - (stm_flags, lfm_flags, sfm_flags, round_flags, fix_flags, except_flag) - (long_flag): Delete. - (struct asm_flg): Delete. - (LONGEST_INST): Delete. - (V4_STR_BIT): Define. - (struct thumb_opcode): Rename variants->variant. - (do_empty): Renamed from do_nop. - (ldst_extend): Delete argument hwse. Split code for half-word and - signed byte instructions to ... - (ldst_extend_v4): ... here. - (ld_mode_required_here): Use ldst_extend_v4. - (do_ldrd): Simplify now that this is only called for ldrd. No - need to test for XScale, which was wrong anyway. Don't reject r12 - as a target register. Add test that ldrd doesn't update an index - register. - (do_pld): Don't allow post-indexed or write-back addressing modes. - Adjust call to ldst_extend. - (do_adr): Split code for adrl to ... - (do_adrl): ... here. - (do_cmp): No need to fold in COND_BIT. - (do_ldst): Simplify. Split code for ldrt/strt into do_ldstt. Split - code to handle half-word and signed byte instructions to ... - (do_ldstv4): ... here. - (do_ldstt): New function. Handle load/store with translate. - (do_ldmstm): Write feature modification bits directly into - inst.instruction. - (do_fpa_ldst): Remove suffix handling code. - (do_fpa_dyadic, do_fpa_monadic, do_fpa_from_reg): Likewise. - (do_fpa_ldmstm): Type of access is now held in inst.instruction. - (build_arm_ops_hsh): New function. - (md_begin): Call it. Don't build the ARM opcode directly. - (md_assemble): Simplify ARM instruction handling. - -2001-12-05 Arati Dikey - - * tc-sh.c (parse_at): Corrected incorrect op->type selection due - to missing 'else'. - -2001-12-04 Alexandre Oliva - - * config/tc-d10v.c (write_2_short): Don't skip dummy fixups, so - that we can tell which operand refers to the insn put in the L - container and mark it as such, so that the relocation type can be - adjusted. - -2001-12-04 Thiemo Seufer - - * config/tc-mips.c (mips_cpreturn_offset): Better comment. - (load_register): Better error message. Cast away signedness - mismatches. Add casts needed for varargs. - (load_address): Replace checks of HAVE_64BIT_ADDRESS with dbl. - Remove superfluous casts. - (macro): Cast away signedness mismatches. Remove superfluous casts. - (s_cpload): Fix wrong comment. - (s_mips_weakext): Standardize output message. - (get_number): Likewise. - -2001-12-04 Thiemo Seufer - - * config/tc-mips.c (append_insn): Add jump address range overflow - check. - -2001-12-04 Thiemo Seufer - - * config/tc-mips.c (md_parse_option): Fix comment. Allow -mabi option - for ELF only. - (show): Document -mabi option. - -2001-12-03 Jeroen Dobbelaere - - * config/tc-arm.c (md_parse_option): Only clear cpu part when - specifying 'xscale' cpu (don't change the fpu part). - -2001-12-04 Alexandre Oliva - - * config/tc-d10v.c (find_opcode): Reject SP operand if - OPERAND_NOSP flag is present. - -2001-12-03 Eric Christopher - - * config/tc-mips.c (tc_gen_reloc): One missed BFD_RELOC_MIPS_GPREL. - -2001-12-02 Thiemo Seufer - - * config/tc-mips.c (macro_build): Replace BFD_RELOC_MIPS_GPREL - by BFD_RELOC_GPREL16. - (load_address): Likewise. - (macro): Likewise. - (md_apply_fix): Likewise. Replace BFD_RELOC_MIPS_GPREL32 by - BFD_RELOC_GPREL32. - (s_gpword): Replace BFD_RELOC_MIPS_GPREL32 by BFD_RELOC_GPREL32. - (tc_gen_reloc): Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. - *config/tc-mips.h: Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. - -2001-11-29 Alexandre Oliva - - * config/tc-d10v.c (get_operands): Emit OPERAND_PLUS for - prefix `+'. - - * config/tc-d10v.c (find_opcode): Reject non-SP operand if - flags requires SP. - -2001-11-29 Arati Dikey - - * tc-sh.c (parse_at): Removed case-sensitivity of index register - R8, R9. - -2001-11-28 Jakub Jelinek - - * write.c (adjust_reloc_syms): Mark SEC_MERGE symbols as used - in reloc if it has non-zero addend. - * config/tc-alpha.c (tc_gen_reloc): Reinstall SEC_MERGE check. - * config/tc-sparc.c (md_apply_fix3): Likewise. - -2001-11-28 Andreas Schwab - - * as.c (parse_args): Call md_after_parse_args if defined. - * config/tc-ia64.h (md_after_parse_args): Define. - * config/tc-ia64.c (ia64_after_parse_args): Reject --gstabs. - * doc/internals.texi (CPU backend): Document md_after_parse_args. - -2001-11-23 Jakub Jelinek - - * config/tc-alpha.c (tc_gen_reloc): Remove SEC_MERGE test. - * write.c (adjust_reloc_syms): Don't handle relocs against - SEC_MERGE section symbols specially. - (fixup_segment): Likewise. - -2001-11-21 Richard Sandiford - - * config/tc-mips.c (mips_need_elf_addend_fixup): New, extracted from... - (md_apply_fix3): ...here. Don't prevent the symbol value being - subtracted twice from GPREL addends. - (tc_gen_reloc): Add the symbol value to a GPREL addend if it was - subtracted by the previous function. - -2001-11-20 Nick Clifton - - * config/tc-avr.c (md_apply_fix3): Fix typo introduced by - md_apply_fix3 change. - -2001-11-20 Ben Elliston - - * config/tc-m88k.c (md_apply_fix3): Match local variable `val' to - usage after md_apply_fix3 cleanups. - -2001-11-19 Hans-Peter Nilsson - - * doc/c-mmix.texi: Use texinfo 4 features. - (MMIX-mmixal): Fix typo. - -2001-11-17 Hans-Peter Nilsson - - * config/tc-cris.c (md_apply_fix3): Cast value, not pointer, in - val assignment. - -2001-11-16 Michael Snyder - - * stabs.c (stabs_generate_asm_lineno): Remember file and line number - from one call to the next, and eliminate consecutive duplicates - (thereby emitting only one line symbol per source line). - * dwarf2dbg.c (dwarf2_gen_line_info): Ditto. - -2001-11-16 Alan Modra - - * config/tc-m68k.c (md_apply_fix3): Change val back to a signed type. - -2001-11-15 H.J. Lu - - * config/tc-hppa.c (md_apply_fix3): Fix a typo. - -2001-11-15 H.J. Lu - - * config/tc-alpha.c (md_apply_fix3): Fix a typo. - -2001-11-15 Nick Clifton - - * write.c (fixup_segment): Remove references to md_apply_fix and - TC_HANDLE_FX_DONE. - * cgen.c, config/obj-coff.c, config/tc-*.c: Update all occurances - of md_apply_fix to md_apply_fix3. - Make all md_apply_fix3 functions void. - * cgen.h, config/obj-coff.h, tc-*.h: Remove all definitions of - MD_APPLY_FIX3 and TC_HANDLE_FX_DONE. - * doc/internals.texi: Update references to md_apply_fix3. - * tc.h: Update prototype for md_apply_fix3. - -2001-11-15 Alan Modra - - * config/tc-i386.h (md_end): Define. - (i386_elf_emit_arch_note): Declare. - (CpuUnknown): Delete. - * config/tc-i386.c (default_arch): Constify. - (smallest_imm_type): Remove CpuUnknown test. - (md_assemble): Don't bother checking cpu_arch_flags non-zero. - (i386_elf_emit_arch_note): New function. - - * po/POTFILES.in: Regenerate. - -2001-11-15 Thiemo Seufer - - * config/tc-mips.c (mips_ip): Re-allow %hi() op for non-ELF assembler. - -2001-11-15 Alan Modra - - * frags.c (frag_grow): Revert last change. - - * dwarf2dbg.c (get_frag_fix): Align last frag size. - - * config/tc-ppc.c (ppc_insert_operand): Pass (ppc_cpu | ppc_size) - to operand->insert. - (md_assemble): Likewise. - -2001-11-12 Nick Clifton - - * frags.c (frag_grow): Use frag_make_room() to grow the - obstack. - -2001-11-14 Nick Clifton - - * config/tc-sparc.c (md_apply_fix3): Do not remove the symbol's - value from the addend for fixups against local symbols in - SEC_MERGE sections - it was not added in, in the first place. - -2001-11-11 Timothy Wall - - * write.c (relax_segment): Convert symbol address into an octet - offset prior to adding to the frag address, which is an octet - offset. Add comments to that effect. - * config/tc-tic54x.c: Fix bugs causing tests to fail. - * config/tc-tic54x.h: Ditch PARAMS macro. - -2001-11-13 Alan Modra - - * config/obj-elf.c (obj_elf_version): Ensure terminating NUL is - put in note section. Use sizeof instead of hard-coded constants. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (support_64bit_objects): Define for OBJ_ELF only. - (md_longopts): Allow OPTION_MABI for ELF compilation only. RE-allow - OPTION_GP32, OPTION_GP64, OPTION_FP32 for non-ELF compilation. - Sort options a bit more logical. - (md_parse_option): Allow OPTION_32, OPTION_N32, OPTION_N64, - OPTION_MABI only for elf targets. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (set_at): Add cast needed for varargs. - (load_register): Likewise. - (macro): Likewise. Some code reformatting. - (macro2): Add cast needed for varargs. - (mips16_macro): Likewise. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (md_assemble): Remove superflous casts. - (append_insn): Likewise. - (mips16_macro_build): Likewise. - (macro): Likewise. - (mips16_ip): Likewise. - (s_cpload): Likewise. - (mips_relax_frag): Likewise. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (mips_abi_level): Move in front of - mips_set_options. - (mips_set_options): Add members gp32, fp32, abi. - (file_mips_gp32): New flag. - (file_mips_fp32): New flag. - (mips_opts): Initialize the new members. - (mips_gp32): Remove. - (mips_fp32): Remove. - (HAVE_32BIT_GPRS): Use the new values from mips_opts. - (HAVE_32BIT_FPRS): Likewise. - (HAVE_NEWABI): Likewise. - (HAVE_64BIT_OBJECTS): Likewise. - (md_begin): Likewise. Save default (file) values. - (md_parse_option): Use the new values from mips_opts. - (s_mipsset): Likewise. Fix logic to keep the ABI selection if - possible. Let .set mipsN work together with .set push/pop. - Enhance error messages. - (mips_elf_final_processing): Use file_mips_* for header processing. - -2001-11-09 Marek Michalkiewicz - - * config/tc-avr.c (mcu_types): Update for new devices. - -2001-11-09 Stephane Carrez - - * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for - the page man title. - * doc/Makefile.in: Rebuild. - * doc/as.texinfo: Do not put man SEEALSO in document; - Use @command for commands, @option for options; Reorganize usage - to clearly identify target specific options. - -2001-11-08 Thiemo Seufer - - * config/tc-mips.c (mips_force_relocation): Remove duplicate code. - -2001-11-06 Thiemo Seufer - - * config/tc-mips.c (my_getSmallParser): Fix small parser bug. - -2001-11-05 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_force_relocation): Force all relocations - that need the global offset table. - (md_apply_fix3): Add code to undo opertions done in fixup_segment - triggered by TC_FORCE_RELOCATION. - * config/tc-s390.h (TC_FORCE_RELOCATION): Replace macro code with - a call to function tc_s390_force_relocation. - (TC_FIX_ADJUSTABLE): Define. - -2001-11-04 Chris Demetriou - - * configure.in (mips-*-netbsd*): Add support for target. - * configure: Regenerate. - -2001-11-02 Nick Clifton - - * configure.in (ALL_LINGUAS): Add 'fr'. - * configure: Regernate. - * po/fr.po: New file. Obtained from the translation project web - site. - -2001-11-02 Richard Earnshaw - - * tc-arm.c: Re-arrange prototypes by architecture. - (insns): Re-arrange instructions by archtitecture. Pld instruction - is part of ARMv5E. - (tinsns): blx and bkpt are part of ARMv5T. - (do_fp_{ctrl,ldst,ldstm,dyadic,monadic,cmp,from_reg,to_reg}): Rename - to do_fpa_*. All callers changed. - - * tc-arm.c (insns): Add two temporary instructions to handle - ldrd/strd. - -2001-11-01 Stephane Carrez - - * config/tc-m68hc11.c (build_jump_insn): Allocate worst case storage - for bra/bsr and use frag_variant(), this ensure that the possible - 16-bit BFD_RELOC_16 will be in the same frag. - -2001-10-31 Chris Demetriou - - * config/tc-mips.c (HAVE_32BIT_ADDRESSES): If compiling embedded - PIC code, assume pointers the same size as GPRs. - (macro): In M_LA_AB handling for embedded PIC code, support - "la $treg,foo-bar($breg)". In load/store handling - (label ld_st) support " $treg,-($breg)" - which is used by the compiler for switch statements. - In load/store double multi-instruction macro handling - (label ldd_std) add a comment that no special handling - is currently done for embedded PIC. - (mips_ip): In 'o' (16-bit offset) case, only accept 16 - bit offsets. - -2001-10-31 Richard Earnshaw - - General cleanup of feature definitions. - * tc-arm.c (ARM_EXT_LONGMUL, ARM_EXT_HALFWORD, ARM_EXT_THUMB): Delete. - (ARM_2UP, ARM_ALL, ARM_3UP, ARM_6UP): Delete. - (FPU_CORE, FPU_FPA10, FPA_FPA11, FPU_ALL, FPA_MEMMULTI): Delete. - (ARM_EXT_V{1,2,2S,3,3M,4,4T,5T,5ExP}): New defines. - (ARM_EXT_V{5,5E}): Synchronize with above. - (ARM_ARCH_V*): Define a complete set in terms of above features. - (ARM_{1,2,3,250,6,7,8,9,STRONG}): Define in terms of architecture. - (FPU_FPA_EXT_V[12]): Define. - (FPU_ARCH_FPE, FPU_ARCH_FPA): Define in terms of above. - (FPU_ANY): Define. - (FPU_DEFAULT): Default to FPA. - (CPU_DEFAULT): For XScale, this is now just ARM_ARCH_XSCALE; for - Thumb, this is now ARM_ARCH_V5T. - (insns): Rework for new feature defines. - (tinsns): Likewise. - (opcode_select, do_ldst, md_begin, md_parse_option): Likewise. - -2001-10-31 NIIBE Yutaka - - * configure.in: Handle sh*eb-*-linux* and sh*-*-linux*. - * configure: Regenerate. - * Makefile.in: Regenerate. - * doc/c-sh.texi (SH Options): Added descriptions. - -2001-10-30 Hans-Peter Nilsson - - * configure.in: Update for MMIX port. - * Makefile.am: Ditto. Regenerate dependencies. - * Makefile.in: Regenerate. - * configure: Regenerate. - * config/tc-mmix.h, config/tc-mmix.c: New files. - * doc/Makefile.am (CPU_DOCS): Add c-mmix.texi - * doc/Makefile.in: Regenerate. - * doc/all.texi: @set MMIX. - * doc/as.texinfo: Ditto. Add MMIX gas manpage option overview. - Include c-mmix.texi. - * doc/c-mmix.texi: New file. - -2001-10-24 Chris Demetriou - - * config/tc-mips.c (hilo_interlocks, cop_interlocks): Make - these evaluate to true if mips_arch indicates SB-1. - -2001-10-23 Alan Modra - - * as.c (parse_args): Print the date as well for --version. - -2001-10-20 Chris Demetriou - - * config/tc-mips.c (md_show_usage): Print "sb1" for Broadcom - SB-1 CPU for consistency. - (mips_cpu_info_table): Tweak comment about SB-1. - -2001-10-20 H.J. Lu - - * config/tc-arm.c (do_c_shift): Use ISDIGIT instead of isdigit. - (cirrus_parse_offset): Likewise. - -2001-10-19 Nick Clifton - - * config/tc-arm.c: Restore line_comment_chars. - -2001-10-18 Nick Clifton - - * config/tc-arm.c (comment_chars): Remove semi-colon accidentally - added to the list. - -2001-10-18 Hans-Peter Nilsson - - * write.c (fixup_segment): Handle fixups for SEC_MERGE sections as - for undefined symbols. - -2001-10-17 Chris Demetriou - - * doc/as.texinfo (MIPS ISA options): Added accidentally - omitted "-mips64" option to list of options. - -2001-10-17 matthew green - - * config/tc-ppc.c (md_show_usage): Add missing -maltivec, -m7400, - -m7410, -m7450 and -m7455 options. - -2001-10-17 Alan Modra - - * config/tc-ppc.c (PPC_HA, PPC_HIGHERA, PPC_HIGHESTA): Simplify. - (ppc_size): Select PPC_OPCODE_64 if 64 bit. - (md_begin): Don't set ppc_size here. - (ppc_target_format): Test ppc_size as well as BFD_DEFAULT_TARGET_SIZE. - (md_shortopts): Constify. - (md_longopts): Likewise. - (md_longopts_size): Likewise. - (ppc_elf_suffix): Only allow 64-bit relocs when ppc_size specifies - 64-bit opcodes. - (ppc_machine): Explain why this function is a nop. - -2001-10-17 Alan Modra - - * bit_fix.h: Comment typo fix. - * config/tc-mips.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-arc.c (arc_code_symbol): Remove unnecessary test. - - * configure.in (MIPS_STABS_ELF): AC_DEFINE in only one place so - that autoheader doesn't duplicate config.in entries. - (DEFAULT_ARCH): Ditto. - * configure: Regenerate. - * config.in: Regenerate. - -2001-10-16 Alan Modra - - From Andrew Pines - * config/tc-m68k.c (m68k_ip): Correct absolute jmp opcodes. - -2001-10-16 NIIBE Yutaka , - Hans-Peter Nilsson - - * config/tc-sh.c (shl): Remove. - (big): New function. - (little): Remove shl handling. Emit error for endian mismatch. - (md_show_usage): Add description of -big. - (md_parse_option): Handle OPTION_BIG. Remove shl handling. - (OPTION_BIG): Add. - (md_pseudo_table): Add .big. - (md_longopts): Add -big. - (md_begin): Don't set target_big_endian here. - * config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove. - (LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian. - (shl): Remove. - * configure.in (endian): Default is big. - (sh-*-pe*): Little endian. - (cpu_type): Set sh for target sh*. - * configure: Regenerate. - -2001-10-15 Thiemo Seufer - - * config/tc-mips.c (md_apply_fix): Preliminary handling of NewABI - relocations. - -2001-10-13 Nick Clifton - - * config/tc-arm.c: Replace CONST with const. - - * cgen.c: Tidy up formatting. - -2001-10-12 matthew green - - * config/tc-ppc.c (md_parse_option): New -m7410, -m7450 and -m7455 - flags, equivalent to -m7400. New -maltivec to enable AltiVec - instructions. New -mbook64 and -mbooke/-mbooke32 flags to enable - 64-bit and 32-bit BookE support, respectively. Change -m403 and - -m405 to set PPC403 option. - (md_show_usage): Adjust for new options. - * doc/all.texi: Set PPC. - * doc/as.texinfo: Add PPC support and pull in c-ppc.texi. - * doc/c-ppc.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-ppc.texi. - * doc/Makefile.in: Regenerate. - -2001-10-12 Nick Clifton - - * read.c (s_bad_endr): New function. Issues a warning message - about a bad use of the .rept pseudo op. - (po_table[]): Add .endr. - * read.h: Prototype s_bad_endr. - - * CONTRIBUTORS: Update contact email address. - -2001-10-11 Kazu Hirata - - * config/tc-alpha.c: Fix comment typos. - * config/tc-cris.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-mn10200.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-v850.c: Likewise. - -2001-10-11 Kazu Hirata - - * app.c: Fix comment typos. - * bit_fix.h: Likewise. - * expr.c: Likewise. - * itbl-ops.c: Likewise. - -2001-10-11 Nick Clifton - - * input-file.c: Include safe-ctype.h. - (input_file_open): Use ISSPACE instead of isspace. - -2001-10-10 Thiemo Seufer - - * config/tc-mips.c (mips_cpreturn_offset): New variable. - (mips_cpreturn_register): Likewise. - (mips_gp_register): Likewise. - (s_cpsetup): New function prototype. - (s_cplocal): Likewise. - (s_cpreturn): Likewise. - (s_gpvalue): Likewise. - (mips_pseudo_table): Add .cpsetup, .cplocal, .cpreturn, .gpvalue - pseudo-ops. - (macro): Don't warn about .cprestore for NewABI. - (md_pcrel_from): Code cleanup. - (mips_force_relocation): Force output of some NewABI relocations even - without a defined symbol. - (s_cpload): Ignore .cpload for NewABI. - (s_cpsetup): Handle .cpsetup. - (s_cplocal): Handle .cplocal. - (s_cprestore): Ignore .cprestore for NewABI. - (s_cpreturn): Handle .cpreturn. - (s_gpvalue): Handle .gpvalue. - (s_cpadd): Ignore .cpadd for NewABI. - (nopic_need_relax): Take g_switch_value into account as gp - optimization. - (tc_gen_reloc): Don't handle BFD_RELOC_MIPS_{CALL,GOT}* for NewABI. - -2001-10-10 Thiemo Seufer - - * config/tc-mips.c (my_getSmallParser): New function prototype. - (small_ex_type): Named this enum, more return values for - my_getSmallExpression. - (mips_ip): Allow SPC and HT between arguments. Handle some NewABI - triple relocations. Protect some parts with ifdef OBJ_ELF. - (percent_op_match): New struct, lookup table for %some_reloc(). - (my_getSmallParser): New function, parses nested percent_ops also. - (my_getSmallExpression): Rewite to support nested percent_ops. - -2001-10-10 Thiemo Seufer - - * config/tc-mips.c - (load_address): Support both 32- and 64-bit addresses. - (macro): Call load_register correctly. Expand 64-bit loads ans stores. - (macro2): Call load_address correctly. - -2001-10-09 Christian Groessler - - * config/tc-z8k.c: Include opcodes/z8k-opc.h after bfd.h - since z8k-opc.h now uses the PARAMS macro. - -2001-10-09 Aldy Hernandez - - * config/tc-arm.c: Change MAVERIK to MAVERICK. - -2001-10-09 Alan Modra - - * config/obj-elf.c: Make use of elf_group_name and elf_next_in_group - throughout file. - (obj_elf_change_section): Rename "group" to "group_name". - (obj_elf_section): Likewise. - (elf_frob_file): Don't use sec->lineno for SHT_GROUP section to store - first member section; Instead use elf_next_in_group. - -2001-10-09 Alan Modra - - * config/obj-elf.c: (obj_elf_change_section): Add "group" param. - Set elf_section_data group from it. Warn if group name changed. - (obj_elf_parse_section_letters): Parse 'G' too. - (obj_elf_section): Parse group name. - (struct group_list): New. - (build_group_lists): New function. - (elf_frob_file): Create SEC_GROUP section(s). - - * config/obj-elf.c: (elf_copy_symbol_attributes): Zap trailing - whitespace. - -2001-10-08 Aldy Hernandez - - * doc/arm/c-arm.texi (ARM Options): Add arm9e documentation. - - * config/tc-arm.c (ARM_EXT_MAVERIK): New macro. - (cirrus_regtype): New enum. - (LONGEST_INST): Change to 10. - (CIRRUS_MODE1): New. - (CIRRUS_MODE2): New. - (CIRRUS_MODE3): New. - (CIRRUS_MODE4): New. - (CIRRUS_MODE5): New. - (CIRRUS_MODE6): New. - (insns): Add cirrus dsp instructions. - (ARM_EXT_MAVERIKSC_REG): New. - (cirrus_register): New. - (cirrus_mvf_register): New. - (cirrus_mvd_register): New. - (cirrus_mvfx_register): New. - (cirrus_mvdx_register): New. - (cirrus_mvax_register): New. - (ARM_EXT_MAVERIKsc_register): New. - (reg_table): Add cirrus registers. - (cirrus_valid_reg): New. - (cirrus_reg_required_here): New. - (do_c_binops_1): New. - (do_c_binops_2): New. - (do_c_binops_3): New. - (do_c_triple_4): New. - (do_c_triple_5): New. - (do_c_quad_6): New. - (do_c_dspsc_1): New. - (do_c_dspsc_2): New. - (do_c_shift_1): New. - (do_c_shift_2): New. - (do_c_ldst_1): New. - (do_c_ldst_2): New. - (do_c_ldst_3): New. - (do_c_ldst_4): New. - (do_c_binops): New. - (do_c_triple): New. - (do_c_quad): New. - (do_c_dspsc): New. - (do_c_shift): New. - (cirrus_parse_offset): New. - (do_c_ldst): New. - (md_parse_option): Add arm9e. - (md_show_usage): Same. - -2001-10-08 Tom Rix - - * config/tc-ppc (ppc_bf, ppc_biei) : Set first .bi lineno value to - location of next .bf - * config/obj-coff.c (coff_frob_symbol) : XCOFF does not use endndx. - -2001-10-07 Alan Modra - - * config/obj-elf.c: Standardize error/warning messages - don't - capitalise, no final period or newline, don't say "ignoring" for - as_bad messages. In some cases, change the wording to that used - elsewhere for similar messages. - (obj_elf_section_name): New function, split out from .. - (obj_elf_section): .. here. Correctly mask off SHF_MERGE if - entsize not specified. - -2001-10-05 Jakub Jelinek - - * doc/as.texinfo: Document M and S ELF section flags. - -2001-10-05 Alan Modra - - * subsegs.c (subseg_text_p): Return 0 for absolute section. - * read.c (do_align): If in absolute section, warn about and ignore - non-zero fill pattern. - -2001-10-05 Alexandre Oliva - - * config/tc-mn10300.c (tc_gen_reloc): Don't free - reloc->sym_ptr_ptr if it's not allocated. - -2001-10-04 Thiemo Seufer - - * config/tc-mips.c (prev_insn_reloc_type): Make it an array to hold a - relocation triple. - (prev_insn_fixp): Likewise. - (append_insn): Changed prototype to accept a relocation pointer. - (imm_reloc): Make it an array. - (offset_reloc): Likewise. - (md_assemble): Handle triple relocations. - (append_insn): Likewise. Add handling for some NewABI relocations. - (mips_no_prev_insn): Handle triple relocations. - (macro_build): Likewise. Add handling for some NewABI relocations. - Move handling for the 'u' case to append_insn(). - (mips16_macro_build): Handle triple relocations. - (macro_build_lui): Likewise. Don't handle _gp_disp as special symbol - for NewABI. - (mips_ip): Handle triple relocations. - (mips16_ip): Likewise. - (mips_force_relocation): Force handling of triple relocations - without symbols for NewABI. - (md_apply_fix): Add handling for some NewABI relocations. - -2001-10-05 Alan Modra - - * config/tc-i386.c (parse_register): If not producing code for - x86_64, reject x86_64 register name matches. - (md_assemble): Remove now redundant check for x86_64 regs. - -2001-10-04 Alan Modra - - * config/tc-ppc.c (md_assemble ): Test ppc_size as well - as BFD_DEFAULT_TARGET_SIZE. - (ppc_tc): Likewise. - (ppc_is_toc_sym): Likewise. - (md_apply_fix3): Likewise. - -2001-10-03 Thiemo Seufer - - * config/tc-mips.c (mips_64): Remove. - (mips_target_format): Move downwards in file, use HAVE_64BIT_OBJECTS - in it. - (mips_abi_level, mips_abi): New enum. - (mips_32bit_abi): Remove. - (HAVE*PRS): Use mips_abi instead of mips_32bit_abi. - (HAVE_NEWABI): New define. - (HAVE_64BIT_OBJECTS): New define. - (HAVE_32BIT_ADDRESSES): Don't return true for 64bit objects. - (HAVE_64BIT_ADDRESSES): New define, inverse of HAVE_32BIT_ADDRESSES. - (support_64bit_objects): New prototype. - (md_begin): Use mips_abi instead of mips_32bit_abi. Don't write - .reginfo section for n32, use .MIPS.options instead. - (support_64bit_objects): New function, code from md_parse_option. - (md_longopts): Add -n32 option. - (md_parse_option): Use mips_abi instead of mips_32bit_abi/mips64. - Add -n32 option. Protect with OBJ_ELF. - (s_mipsset): Use mips_abi instead of mips_32bit_abi. - (mips_elf_final_processing): Likewise. Don't write .reginfo section - for n32, use .MIPS.options instead. - -2001-10-03 Alan Modra - - * po/POTFILES.in: Regenerate. - * configure: Regenerate. - -2001-10-02 Alan Modra - - * config/tc-ppc.c (md_apply_fix3 ): Make it 64 - bits if target is 64 bit. - - * doc/as.texinfo (listing): Fix typo. - - * as.c (print_version_id): Use BFD_VERSION_STRING in place of - BFD_VERSION. - * Makefile.am (Makefile): Depend on bfd/configure.in. - Run "make dep-am". - * Makefile.in: Regenerate. - -2001-09-30 H.J. Lu - - * config/obj-elf.c (obj_elf_parse_section_letters): Accept "am" - and "ams" for compatibility. - -2001-09-30 Hans-Peter Nilsson - - * config/tc-sh.c (md_pcrel_from_section): Transformed from - md_pcrel_from. Handle pc-relativeness against link-time - symbol. Handle relativeness to elsewhere than the fixup. - * config/tc-sh.h (MD_PCREL_FROM_SECTION): Define. - (md_pcrel_from_section): Prototype. - - * Makefile.am: Update dependencies with "make dep-am". - * Makefile.in: Regenerate. - -2001-09-30 Stephane Carrez - - * config/tc-m68hc11.c (cmp_opcode): Define prototype. - (print_opcode_format, skip_whites): Likewise. - (convert_branch, m68hc11_new_insn): Likewise. - (build_dbranch_insn, build_indexed_byte): Likewise. - (build_reg_mode, find, find_opcode): Likewise. - (print_insn_format): Fix call to print_opcode_format. - (md_assemble): Fix call to build_dbranch_insn. - -2001-09-27 Nick Clifton - - * config/tc-arm.c: Add missing prototypes. - -2001-09-26 Jeff Johnston - - * input-file.c (input_file_open): When reading the - first line looking for #NO_APP, prepare for the possibility - of finding #APP instead. Also fix algorithm to allow - white-space to follow either #NO_APP or #APP directives. - -2001-09-25 Geoff Berry - - * listing.c (buffer_line): Don't write past the end of `line' when - EOF is reached. - -2001-09-25 Alexandre Oliva - - * config/tc-mn10300.c (tc_gen_reloc): Don't emit an *ABS* - relocation for differences between symbols in a section other - than the one in which the difference is to be placed; apply - the relocation instead. - -2001-09-24 Nick Clifton - - * config/tc-arc.c: Add missing prototype. - (md_atof): Change type to int. Add missing prototype. - * config/tc-arc.h: Prototype exported functions. - -2001-09-22 Nick Clifton - - * as.c: Add missing function prototype. - * config/obj-aout.c: Fix compile time warning. - -2001-09-21 Bruno Haible - - * config/tc-openrisc.c: Don't include . - -2001-09-19 Martin Schwidefsky - - * gas/config/tc-s390.c: Add option -mwarn-areg-zero. - -2001-09-19 Alan Modra - - * config/tc-i370.c: Fix typo in last change. - -2001-09-19 Nick Clifton - - * doc/as.texinfo (Symbol Names): Improve documentation on local - labels and add documenation about dollar labels. - -2001-09-18 Bruno Haible - - * as.h: Don't include . - * as.c (main): For gettext, also set the LC_CTYPE locate facet. - * atof-generic.c: Include "safe-ctype.h" instead of . - (atof_generic): Use ISDIGIT instead of isdigit. - * config/m68k-parse.y: Include "safe-ctype.h". - (yylex): Use ISDIGIT/ISALNUM instead of isdigit/isalnum. - * config/obj-elf.c: Include "safe-ctype.h". - (obj_elf_vtable_inherit): Use ISSPACE instead of isspace. - * config/obj-vms.c: Include "safe-ctype.h". - (Write_VMS_MHD_Records): Use TOUPPER instead of islower/toupper. - (VMS_Case_Hack_Symbol): Use ISUPPER/ISLOWER/TOUPPER/TOLOWER - instead of isupper/islower/toupper/tolower. - * config/tc-a29k.c: Include "safe-ctype.h" instead of . - (insert_sreg): Use TOUPPER instead of islower/toupper. - (machine_ip): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead of - isalpha/isalnum/isupper/tolower. - (a29k_unrecognized_line, md_operand): Use ISDIGIT instead of - isdigit. - * config/tc-alpha.c: Include "safe-ctype.h" instead of . - (md_undefined_symbol, s_alpha_ent): Use ISDIGIT instead of isdigit. - * config/tc-arc.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE/ISALNUM instead of isspace/isalnum. - (arc_extoper): Use TOLOWER instead of isupper/tolower. - * config/tc-arm.c: Include "safe-ctype.h" instead of . - (arm_psr_parse): Use ISALPHA instead of isalpha. - (accum0_required_here): Use ISALNUM instead of isalnum. - (do_ldrd): Use ISSPACE instead of isspace. - (decode_shift): Use ISALPHA instead of isalpha. - (insert_reg): Use TOUPPER instead of islower/toupper. - (arm_reg_parse): Use ISALPHA instead of isalpha. - (arm_parse_reloc): Use ISALNUM/ISPUNCT/TOLOWER instead of - isalnum/ispunct/tolower. - * config/tc-avr.c: Include "safe-ctype.h" instead of . - (md_parse_option): Use TOLOWER instead of tolower. - (avr_operand): Use ISDIGIT/TOLOWER instead of isdigit/tolower. - * config/tc-cris.c: Include "safe-ctype.h" instead of . - (cris_process_instruction): Use ISLOWER instead of islower. - (get_gen_reg): Use ISALNUM/ISDIGIT instead of isalnum/isdigit. - (get_spec_reg): Use TOLOWER/ISALNUM instead of isupper/tolower/isalnum. - (get_flags): Use ISSPACE instead of isspace. - * config/tc-d10v.c: Include "safe-ctype.h" instead of . - (do_assemble): Use TOLOWER instead of tolower. - * config/tc-d30v.c: Include "safe-ctype.h" instead of . - (do_assemble): Use TOLOWER instead of tolower. - (d30v_start_line): Use ISSPACE instead of isspace. - * config/tc-fr30.c: Include "safe-ctype.h" instead of . - (fr30_is_colon_insn): Use TOLOWER instead of tolower. - * config/tc-h8300.c: Include "safe-ctype.h" instead of . - (skip_colonthing, get_operand): Use ISDIGIT instead of isdigit. - * config/tc-h8500.c: Include "safe-ctype.h" instead of . - (start_label): Use ISALPHA instead of isalpha. - * config/tc-hppa.c: Include "safe-ctype.h" instead of . - (pa_ip): Use ISUPPER/ISLOWER/TOLOWER instead of - isupper/islower/tolower. - (pa_parse_number): Use ISDIGIT instead of isdigit. - (pa_chk_field_selector): Use TOLOWER instead of tolower. - (pa_stringer): Use ISDIGIT instead of isdigit. - * config/tc-i370.c: Include "safe-ctype.h" instead of . - (register_name): Use ISALPHA instead of isalpha. - (i370_elf_suffix): Use ISALNUM/TOLOWER instead of - isalnum/islower/tolower. - (i370_addr_offset): Use ISDIGIT/ISALPHA instead of - isdigit/isalpha. - (i370_addr_cons): Use ISALPHA/ISXDIGIT instead of - isalpha/isxdigit. - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-i386.c: Include "safe-ctype.h" instead of . - (md_begin): Use ISDIGIT/ISLOWER/ISUPPER/TOLOWER/ISALPHA - instead of isdigit/islower/isupper/tolower/isalpha. - (output_invalid): Use ISPRINT instead of isprint. - * config/tc-i860.c: Include "safe-ctype.h" instead of . - (i860_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. - * config/tc-i960.c: Include "safe-ctype.h" instead of . - (get_args): Use ISALNUM instead of isalnum. - * config/tc-ia64.c: Include "safe-ctype.h". - (dot_pred_rel): Use TOUPPER/ISDIGIT instead of toupper/isdigit. - (ia64_unrecognized_line): Use ISDIGIT instead of isdigit. - (ia64_parse_name): Likewise. - * config/tc-m32r.c: Include "safe-ctype.h" instead of . - (assemble_two_insns): Use ISSPACE/ISALNUM/ISUPPER/TOLOWER - instead of isspace/isalnum/isupper/tolower. - * config/tc-m68hc11.c: Include "safe-ctype.h" instead of . - (md_assemble): Use TOLOWER/ISALNUM instead of tolower/isalnum. - * config/tc-m68k.c: Include "safe-ctype.h" instead of . - (mklower_table): Remove variable. - (mklower): Remove macro. - (insert_reg): Use TOUPPER instead of islower/toupper. - (md_begin): Remove initialization of mklower_table. - (s_reg): Use ISALNUM instead of isalnum. - (mri_assemble): Use ISUPPER/TOLOWER instead of isupper/tolower. - (parse_mri_condition): Use TOLOWER instead of isupper/tolower. - (build_mri_control_operand): Use TOLOWER instead of tolower. - (s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise. - * config/tc-m88k.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE instead of isspace. - (get_imm16): Use ISALNUM instead of isalnum. - (get_cnd): Use ISDIGIT/ISUPPER/TOLOWER instead of - isdigit/isupper/tolower. - (get_bf_offset_expression): Use ISALPHA/ISUPPER/TOLOWER - instead of isalpha/isupper/tolower. - (hexval): Use ISDIGIT/ISLOWER/ISUPPER instead of - isdigit/islower/isupper. - * config/tc-mcore.c: Include "safe-ctype.h" instead of . - (mcore_s_section): Use ISSPACE instead of isspace. - (parse_reg): Use ISSPACE/TOLOWER/ISALNUM instead of - isspace/tolower/isalnum. - (parse_creg): Use ISSPACE/TOLOWER instead of isspace/tolower. - (parse_psrmod): Use TOLOWER instead of isascii/tolower. - (parse_exp, parse_mem, md_assemble): Use ISSPACE instead of - isspace. - * config/tc-mips.c: Include "safe-ctype.h" instead of . - (mips_ip): Use ISSPACE/ISDIGIT instead of isspace/isdigit. - (mips16_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. - (my_getSmallExpression): Use ISDIGIT/TOLOWER instead of - isdigit/tolower. - (tc_get_register): Likewise. - (get_number): Use ISDIGIT/ISXDIGIT instead of isdigit/isxdigit. - (s_mips_ent): Use ISDIGIT instead of isdigit. - * config/tc-mn10200.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-mn10300.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-ns32k.c: Don't include . - * config/tc-pdp11.c: Include "safe-ctype.h". - (mklower): Remove function. - (parse_reg): Use TOLOWER instead of mklower. - * config/tc-pj.c: Include "safe-ctype.h". - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-ppc.c: Include "safe-ctype.h" instead of . - (register_name): Use ISALPHA instead of isalpha. - (ppc_elf_suffix): Use ISALNUM/TOLOWER instead of - isalnum/islower/tolower. - (md_assemble): Use ISSPACE instead of isspace. - (ppc_canonicalize_symbol_name): Use ISLOWER/TOUPPER instead of - islower/toupper. - * config/tc-s390.c: Include "safe-ctype.h" instead of . - (register_name): Use ISALPHA instead of isalpha. - (s390_elf_suffix, s390_lit_suffix): Use ISALNUM instead of isalnum. - (md_gather_operands, md_assemble, s390_insn): Use ISSPACE instead of - isspace. - * config/tc-sh.c: Include "safe-ctype.h" instead of . - (sh_elf_suffix): Use ISALNUM/TOLOWER instead of - isalnum/islower/tolower. - (IDENT_CHAR): Use ISALNUM instead of isalnum. - (parse_reg): Use TOLOWER instead of tolower. - (find_cooked_opcode): Use TOLOWER instead of isupper/tolower. - * config/tc-sparc.c: Include "safe-ctype.h" instead of . - (sparc_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. - (parse_keyword_arg): Use ISALNUM instead of isalnum. - * config/tc-tahoe.c: Include "safe-ctype.h". - (tahoe_reg_parse): Use ISDIGIT instead of isdigit. - (tip_op): Use TOLOWER instead of isupper/tolower. - * config/tc-tic30.c: Include "safe-ctype.h". - (md_begin): Use ISLOWER/ISDIGIT/ISUPPER/TOLOWER/ISLOWER/ - ISALPHA instead of islower/isdigit/isupper/tolower/islower/isalpha. - (tic30_operand): Use TOLOWER instead of tolower. - (tic30_find_parallel_insn): Likewise. - (output_invalid): Use ISPRINT instead of isprint. - * config/tc-tic54x.c: Include "safe-ctype.h". - (tic54x_asg, tic54x_eval): Use ISALPHA instead of isalpha. - (lookup_version): Use TOUPPER instead of toupper. - (tic54x_var): Use ISALPHA instead of isalpha. - (tic54x_mlib): Use ISSPACE instead of isspace. - (subsym_iscons): Use TOUPPER instead of toupper. - (get_operands): Use ISSPACE instead of isspace. - (is_type): Use TOUPPER/ISDIGIT instead of toupper/isdigit. - (encode_indirect, encode_operand): Use TOUPPER instead of toupper. - (next_line_shows_parallel): Use ISSPACE instead of isspace. - (subsym_get_arg, subsym_substitute): Use ISDIGIT instead of isdigit. - (tic54x_start_line_hook, md_assemble, tic54x_start_label): Use - ISSPACE instead of isspace. - * config/tc-tic80.c: Include "safe-ctype.h". - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-v850.c: Include "safe-ctype.h" instead of . - (system_register_name): Use ISDIGIT instead of isdigit. - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-vax.c: Include "safe-ctype.h" instead of . - (vax_reg_parse): Use TOLOWER/ISDIGIT instead of - isupper/tolower/isdigit. - (vip_op): Use TOLOWER instead of isupper/tolower. - * config/tc-w65.c: Don't include . - * config/tc-z8k.c: Include "safe-ctype.h" instead of . - (tohex): Use ISDIGIT/ISLOWER instead of isdigit/islower. - (whatreg): Use ISDIGIT instead of isdigit. - * ecoff.c: Include "safe-ctype.h" instead of . - (ecoff_directive_ent, ecoff_stab): Use ISDIGIT instead of isdigit. - * expr.c: Include "safe-ctype.h" instead of . - (integer_constant): Use ISALNUM/TOUPPER instead of - isalnum/islower/toupper. - (operand): Use TOLOWER instead of isupper/tolower. - * gasp.c: Include "safe-ctype.h" instead of . - (sb_strtol, level_0, change_base, doinstr): Use ISDIGIT instead - of isdigit. - (process_assigns, whatcond): Use TOUPPER instead of toupper. - (chartype_init): Use ISALPHA/ISDIGIT instead of isalpha/isdigit. - (main): For gettext, also set the LC_CTYPE locate facet. - * hash.c: Include "safe-ctype.h". - (main): Use TOLOWER instead of isupper/tolower. - * itbl-lex.l: Don't include . - * listing.c: Include "safe-ctype.h" instead of . - (listing_newline): Use ISCNTRL instead of isascii/iscntrl. Don't - omit non-ASCII characters. - (debugging_pseudo): Use ISSPACE instead of isspace. - * macro.c: Include "safe-ctype.h" instead of . - (buffer_and_nest): Use ISALNUM instead of isalnum. - (get_token): Use ISALPHA/ISALNUM instead of isalpha/isalnum. - (define_macro): Use ISUPPER/TOLOWER instead of isupper/tolower. - (macro_expand_body): Use ISALNUM/ISDIGIT/ISUPPER/ISALPHA - instead of isalnum/isdigit/isupper/isalpha. - (check_macro): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead - of isalpha/isalnum/isupper/tolower. - * read.c: Include "safe-ctype.h" instead of . - (read_a_source_file): Use ISUPPER/TOLOWER/ISDIGIT instead of - isupper/tolower/isdigit. - (s_mri_common): Use ISDIGIT instead of isdigit. - (s_mri_sect): Use ISDIGIT/TOUPPER instead of isdigit/toupper. - (s_float_space): Use ISALPHA instead of isalpha. - (ignore_rest_of_line): Use ISPRINT instead of isprint. - (float_cons): Use ISALPHA instead of isalpha. - (next_char_of_string): Use ISDIGIT/ISXDIGIT instead of - isdigit/isxdigit. - * symbols.c: Include "safe-ctype.h" instead of . - (save_symbol_name): Use ISLOWER/TOUPPER instead of - islower/toupper. - (symbol_find_base): Use TOUPPER instead of islower/toupper. - (decode_local_label_name): Use ISDIGIT instead of isdigit. - -2001-09-18 Martin Schwidefsky - - * tc-s390.c (s390_insn): Add code to cope with 6 byte O_constants - in 64 bit mode and make format "e" work. - -2001-09-18 Alan Modra - - * dwarf2dbg.c (dwarf2_directive_file): Avoid signed/unsigned warning. - - * write.c (set_symtab): Update bfd_alloc declaration. Use a temp - var to ensure bfd_alloc arg is the right type. - (write_object_file): Cast args of bfd_seek. Replace bfd_write with - bfd_bwrite. - - * config/obj-coff.c: Replace calls to bfd_write with calls to - bfd_bwrite. Cast args of bfd_seek. - - * config/obj-elf.c (obj_elf_change_section): Avoid signed/unsigned - warning. - - * config/tc-mn10300.c (set_arch_mach): Make param unsigned. - - * config/tc-tic54x.c (tic54x_mlib): Replace bfd_read call with - call to bfd_bread. - -2001-09-15 Hans-Peter Nilsson - - * config/tc-sh.h (sh_force_relocation): Prototype. - (struct fix): Forward declare. - * config/tc-sh.c (type sh_operand_info): Move to top of file. - (cons, s_align_bytes): Remove old-type declarations. - (sh_elf_suffix, parse_reg, dot, parse_exp, parse_at, get_operand, - get_operands, get_specific, insert, build_relax, - insert_loop_bounds, build_Mytes): Prototype. - (little): Make static. Prototype. - (check, tc_Nout_fix_to_chars): Delete unused functions. - -2001-09-14 Eric Christopher - - * config/tc-mips.c (md_parse_option): Remove setting mips_64 via - -mgp32/mgp64. - -2001-09-14 Kevin Lo - - * configure.in: Add arm-openbsd target. - * configure: Regenerate. - -2001-09-14 Thiemo Seufer - - * configure.in: Change machine triplets from mips-*-linux-gnu* to - mips*-*-linux*. - -2001-09-12 Thiemo Seufer - - * config/tc-mips.c (append_insn): Don't rightshift BFD_RELOC_16_PCREL. - -2001-09-11 Richard Henderson - - * config/tc-alpha.c (alpha_elf_section_letter): New. - (alpha_elf_section_flags): New. - * config/tc-alpha.h (md_elf_section_letter): New. - (md_elf_section_flags): New. - * config/tc-ia64.c (ia64_elf_section_letter): New. - * config/tc-ia64.h (md_elf_section_letter): New. - -2001-09-11 Jakub Jelinek - - * config/obj-elf.c (obj_elf_parse_section_letters): Use 'M' instead - of 'm', 'S' instead of 's'. Update bad_msg. - * config/tc-ppc.c (ppc_section_letter): Update bad_msg. - * config/tc-i370.c (i370_sectioN_letter): Update bad_msg. - -2001-09-09 Alan Modra - - * expr.c (expr): Move code setting "retval" to the end of the loop, - and rearrange for efficiency. For "PIC code" subtraction, use - "rightseg" rather than recalculating. For "symbol OP symbol" - subtract, set "retval" to absolute_section if symbols in same - section. - * symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an - O_symbol. Simplify a +/- b code. Allow equality and non-equality - comparisons on symbols from any section. Allow other comparison - operators as for subtraction. - (symbol_equated_reloc_p): New predicate function. - * symbols.h (symbol_equated_reloc_p): Declare. - * write.c (relax_segment ): Ensure segment - for expression syms is set correctly. - (adjust_reloc_syms): Use symbol_equated_reloc_p. - (write_relocs): Likewise. - (write_object_file): Likewise. - * config/tc-mips.c (md_estimate_size_before_relax): Likewise. - * config/tc-i386.c (md_assemble ): Don't lose part - of a complex expression when setting up frag_var. - -2001-09-07 Richard Henderson - - * config/tc-alpha.c (alpha_reloc_op_tag): Replace need_seq with - require_seq and allow_seq. Let !literal omit the sequence number. - (tokenize_arguments): Reject sequence numbers of !allow_seq. - -2001-09-08 Jakub Jelinek - - * config/tc-sparc.c (md_apply_fix3): Handle relocs against SEC_MERGE - section symbols the same way as externs. - -2001-09-07 Thiemo Seufer - - * config/tc-mips.c (s_mipsset): Reallow unrestricted use of .set mipsX - pseudo-op. - -2001-09-07 Thiemo Seufer - - * config/tc-mips.c (append_insn): Handle BFD_RELOC_16_PCREL. - (macro_build): Use BFD_RELOC_16_PCREL_S2 only for embedded - PIC, BFD_RELOC_16_PCREL for the rest. - (mips_ip): Likewise. - (md_pcrel_from): return the right offset for the differently shifted - pcrel relocs. - (md_apply_fix): Handle BFD_RELOC_16_PCREL. - -2001-09-05 Richard Henderson - - * config/tc-ia64.c (FUNC_IPLT_RELOC): New. - (pseudo_func): Add @iplt. - (pseudo_opcode): Add data16 and data16.ua. - (md_begin): Set iplt pseudo. - (ia64_cons_fix_new): Handle 16 byte iplt reloc specially. - -2001-09-04 Richard Henderson - - * config/tc-alpha.c (struct alpha_insn): Make sequence scalar long. - (MACRO_LITERAL, MACRO_BASE, MACRO_BYTOFF, MACRO_JSR): Remove. - (alpha_macros): Remove occurrences of same. - (O_lituse_addr, O_gprel): New. - (DUMMY_RELOC_LITUSE_*): New. - (s_alpha_ucons, s_alpha_arch): Prototype. - (alpha_reloc_op): Construct elements via DEF macro. - (ALPHA_RELOC_SEQUENCE_OK): Remove. - (struct alpha_reloc_tag): Rename from alpha_literal_tag; rename - members to not be literal specific. - (next_sequence_num): New. - (md_apply_fix3): Cope with missing GPDISP_LO16. Adjust for - added/removed BFD relocations. - (alpha_force_relocation, alpha_fix_adjustable): Likewise. - (alpha_adjust_symtab_relocs): Handle GPDISP relocs as well. - (tokenize_arguments): Parse ! relocations properly. - (find_macro_match): Delete unused macro argument types. - (assemble_insn): Add reloc parameter; emit that instead of the - default as appropriate. - (get_alpha_reloc_tag): New. Split from ... - (emit_insn): ... here. Allocate a reloc tag for GPDISP. - (assemble_tokens): Don't search macros if user relocation present. - Copy reloc sequence number to insn struct. - (emit_ldgp): Remove user reloc handling. - (load_expression, emit_lda, emit_ldah, emit_ir_load): Likewise. - (emit_loadstore, emit_ldXu, emit_ldil, emit_stX): Likewise. - (emit_sextX, emit_division, emit_jsrjmp, emit_retjcr): Likewise. - * config/tc-alpha.h (tc_adjust_symtab): Always define. - (struct alpha_fix_tag): Name members less literal specific. - -2001-09-04 Jeffrey A Law (law@cygnus.com) - - * tc-h8300.c (tc_gen_reloc): Give an error if we try to take the - address of two symbols in different sections. - -2001-08-31 Eric Christopher - Jason Eckhardt - - * config/tc-mips.c (mips_cpu_info): Add support for mipsisa32, - 5kc, and 20kc. Clean up old entries. - -2001-08-31 J"orn Rennecke - Jeff Law - - * config/tc-h8300.c (build_bytes): For OBJ_ELF, make relocation's - offset match H8 ELF spec. - (md_section_align): Alternate implementation for BFD_ASSEMBLER. - (md_apply_fix): Fix argument and return types for BFD_ASSEMBLER. - - * tc-h8300.c (relocation mappings): Remove. Moved to tc-h8300.h. - (build_bytes): Mark fixups for PCrel branches as signed. For - OBJ_ELF, make sure the reloc's offset points to the first byte - to be modified. - (md_convert_frag): Update definiton based on BFD_ASSEMBLER. - * tc-h8300.h (relocation mappings): Add. - -2001-08-30 J"orn Rennecke - - * tc-h8300.c (tc_crawl_symbol_chain, tc_headers_hook): Don't - define for BFD_ASSEMBLER. - (tc_reloc_mangle): Likewise. - (tc_gen_reloc): New function for BFD_ASSEMBLER. - -2001-08-29 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (h8300hmode): Record the machine type - if BFD_ASSEMBLER is defined. - (h8300smode, md_begin): Similarly. - -2001-08-29 Joel Sherrill - - * configure.in (i[3456]86-*-rtems*, m68*-*-rtems*): Change - default from coff to elf. - * configure: Regenerate. - -2001-08-29 J"orn Rennecke - - * tc-h8300.c: If OBJ_ELF, include elf/h8.h, and define - assorted coff relocations to the corresponding elf relocations. - * tc-h8300.h (TARGET_ARCH, TARGET_FORMAT): Define appropriately. - - * configure.in: Add case for h8300-*-elf. - * configure: Regenerate. - -2001-08-29 J"orn Rennecke - - * doc/internals.texi (MD_PCREL_FROM_SECTION): Change - documentation to reflect reality. - -2001-08-27 Thiemo Seufer - - * config/tc-mips.c (load_address): Reflect change to MAX_GPREL_OFFSET. - (macro): Reflect change to MAX_GPREL_OFFSET. - -2001-08-27 Torbjorn Granlund - Staffan Ulfberg - Linus Nordberg - Alan Modra - - * configure.in: Recognise powerpc*le*, not just powerpcle*. - * configure: Regenerate. - * config/tc-ppc.c (PPC_LO, PPC_HI, PPC_HA, PPC_HIGHER, - PPC_HIGHERA, PPC_HIGHEST, PPC_HIGHESTA, SEX16): New macros. - (md_assemble): Use them. - (ppc_machine): Support stub for ELF64 as well as XCOFF. - (md_pseudo_table): Add "llong", "quad". - (md_parse_option): Match default_cpu of powerpc*. - (ppc_arch): Likewise. - (ppc_subseg_align): Only for OBJ_XCOFF. - (ppc_target_format): Return elf64-powerpc strings for 64 bit ELF. - (md_begin): Select PPC_OPCODE_64 for 64 bit. - (ppc_insert_operand): Don't bother testing 'file' before calling - as_bad_where. Use as_bad_where for operand->insert errors. - (mapping): Add ELF64 relocation modifiers. - (ppc_elf_suffix): Replace symbol on BFD_RELOC_PPC64_TOC reloc - expressions with abs_symbol. - (ppc_elf_cons): Correct offset for little endian targets. - (ppc_elf_frob_symbol): New. - (md_assemble): Add support for 64 bit ELF relocs. - (ppc_tc): Ensure 8 byte alignment when 64 bit. - (ppc_is_toc_sym): Only define for OBJ_XCOFF and OBJ_ELF. Match - ".toc" section for 64 bit ELF. - (ppc_fix_adjustable): New. Macro body moved from tc-ppc.h. - (md_apply_fix3): Silence warning with ATTRIBUTE_UNUSED. Only do - the ppc_is_toc_sym check for OBJ_XCOFF and OBJ_ELF. For 64 bit, - use BFD_RELOC_PPC64_TOC16_DS instead of BFD_RELOC_PPC_TOC16. - Expand on comments, error message. Add support for 64 bit relocs, - and use PPC_HI etc. macros. - * config/tc-ppc.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. - (HANDLE_ALIGN): Define to generate nops in code sections rather - than zeros. - (TC_FORCE_RELOCATION): Force for BFD_RELOC_PPC64_TOC. - (ELF_TC_SPECIAL_SECTIONS): Add 64 bit ELF sections. - (tc_fix_adjustable): Move body of macro to tc-ppc.c. - (ppc_fix_adjustable): Declare. - (tc_frob_symbol): Define. - (ppc_elf_frob_symbol): Declare. - -2001-08-26 Andreas Jaeger - - * config/tc-s390.c: Add missing prototypes - (md_gather_operands): Make static. - -2001-08-26 Thiemo Seufer - - * config/tc-mips.h (MAX_GPREL_OFFSET): Change it to the maximum - allowed value, not the word beyond maximum. - * config/tc-mips.c (macro_build_lui): Code cleanup. - (macro): Reflect change to MAX_GPREL_OFFSET. - (mips_ip): Check explicitly against S_EX_NONE. - (my_get_SmallExpression): parse for %gp_rel, not %gprel. - (md_apply_fix): Code cleanup. - -2001-08-24 Andreas Jaeger - - * config/tc-ppc.h: Fix prototype declaration. - -2001-08-23 Jakub Jelinek - - * config/tc-ia64.c (dot_endp): Set function symbol sizes. - * config/obj-elf.c (obj_elf_size): When size is constant, free - and clear symbol_get_obj(sym)->size if any. - -2001-08-21 Thiemo Seufer - - * config/tc-mips.c (md_begin): Warn about incompatibility between - -march=FOO and -mipsN option, continue with default ISA. - -2001-08-21 Thiemo Seufer - - * config/tc-mips.c (md_parse_option): #ifdef the - traditional/non-traditional names as it is done in mips_target_format. - -2001-08-20 Richard Henderson - - * config/tc-alpha.h (MD_APPLY_FIX3): Define. - * config/tc-alpha.c (md_apply_fix3): Rename from md_apply_fix; - use seg parameter instead of now_seg. - -2001-08-18 H.J. Lu - - * config/tc-mips.c (show): Add the missing prototype. - -2001-08-18 Thiemo Seufer - - * config/tc-mips.c (S_EX_*): New enum for my_getSmallExpression() - return values. - (mips_ip): Use the new return values instead of characters. Add - support for %higher and %highest. - (LP): Remove. - (RP): Remove. - (my_getSmallExpression): Make parsing case insensitive and more - reliable. Add support for %higher and %highest. Further support to - parse %gprel and %neg is implemented but currently deactivated. - -2001-08-17 Alan Modra - - * ecoff.c (ecoff_frob_symbol): Remove casts from bfd_get_gp_size. - (ecoff_build_symbols): Likewise. - * read.c (s_lcomm_internal): Fix signed/unsigned warning. - -2001-08-16 Thiemo Seufer - - * config/tc-mips.c (mips_elf_final_processing): Set elf header flags - for n32 ABI if appropriate. - -2001-08-16 Thiemo Seufer - - * config/tc-mips.c (cons_fix_new_mips): Remove. - * config/tc-mips.h (TC_CONS_FIX_NEW): Remove. - (cons_fix_new_mips): Remove. - -2001-08-14 Jeff Johnston - - * expr.c (operand)[LITERAL_PREFIXDOLLAR_HEX]: Treat $L as - a label, not a hex constant. - -2001-08-13 Nick Clifton - - * config/tc-v850.h: Add missing prototypes. - -2001-08-12 Martin Schwidefsky - - * config/tc-s390.c (s390_elf_cons): Correct fixups for PLT - relocations. - -2001-08-12 TAKAI Kousuke - - * config/tc-sparc.c (cons_fix_new_sparc): Move - `sparc_no_align_cons = 0;' to... - (s_uacons): ...here so that sparc_no_align_cons will get - cleared properly. - -2001-08-11 Kazu Hirata - - * config/tc-mips.c: Fix a comment typo. - -2001-08-10 Richard Sandiford - - * config/tc-mips.c (move_register): New function. - (macro_build): Remove OPCODE_IS_MEMBER's gp32 argument. - (mips_ip): Likewise. - (macro2): Use move_register rather than macro_build for moves. - (mips16_macro): Likewise. - (macro): Likewise. Handle M_MOVE. - -2001-08-10 Andreas Jaeger - - * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes - to build warnings. - * configure: Regenerate. - -2001-08-10 Alan Modra - - * as.h (alloca): Don't declare if __GNUC__. Remove an old comment. - Comment indentation of #pragma. - * macro.c (alloca): Likewise. - - * config/tc-ppc.c: Revert 2001-08-08. - -2001-08-09 Alan Modra - - * symbols.c: Add missing prototypes. - * config/e-i386elf.c: Likewise. - * config/e-i386coff.c: Likewise. - * config/e-i386aout.c: Likewise. - * config/obj-coff.c: Likewise. - (def_symbol_in_progress, stack): Move definition. - * config/obj-elf.c: Add missing prototypes. - (obj_elf_change_section): Make static. - (obj_elf_parse_section_letters): Likewise. - (obj_elf_section_word): Likewise. - (obj_elf_section_type): Likewise. - -2001-08-08 Alan Modra - - From 1999-10-25 Torbjorn Granlund - * config/tc-ppc.c (md_apply_fix3): Replace haphazard code for - determining reloc type with code reading operands->reloc field. - -2001-08-08 Alan Modra - - * config/obj-elf.c (elf_copy_symbol_attributes): Make it a global - function, and expand old obj-elf.h OBJ_COPY_SYMBOL_ATTRIBUTES here. - * config/obj-elf.h (elf_copy_symbol_attributes): Declare. - (OBJ_COPY_SYMBOL_ATTRIBUTES): Call elf_copy_symbol_attributes. - - * output-file.c (output_file_create): Don't try to open a second - time as it's unnecessary. FOPEN_W was undefined too. - -2001-08-07 Thiemo Seufer - - * config/tc-mips.c (macro_build): Replace magic constants by defines. - (mips_ip): Likewise. Typo. - -2001-08-04 Thiemo Seufer - - * config/tc-mips.c (mips_abi_string): Initialize with NULL instead - of 0. - (RELAX_ENCODE): Replace bfd_vma by valueT. - (load_address): Formatting. - (macro): Likewise. Code cleanup. Typo. - (macro2): Formatting. - (md_parse_option): Typo. - (s_mipsset): Reorder cases to look nicer. - (md_estimate_size_before_relax): Formatting. Code cleanup. - (mips_elf_final_processing): Check against NULL instead of 0. - (md_obj_end): Remove ugly `' in message string. - (s_mips_ent): Remove ugly `' in message string. - -2001-07-30 Thiemo Seufer - - * config/tc-mips.c (md_begin): Take -mcpu value into account even when - -mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs - mutually exclusive (if they are different). - (md_parse_option): Warn if an -march/-mtune/-mcpu/-m option is - set more than once. - -2001-08-03 Richard Sandiford - - * config/tc-mips.c (md_apply_fix): Don't subtract the symbol value - from GPREL addends. - -2001-08-02 Richard Sandiford - - * doc/c-mips.tex (-mgp32, -mfp32): Added -mfp32, unified with -mgp32. - * config/tc-mips.c (mips_fp32, mips_32bit_abi): New static variables. - (md_long_opts): Add -mfp32 option. - (md_parse_option): Handle it. Set mips_32bit_abi given -mabi=32. - (md_show_usage): Show usage for -mfp32 and -mgp32. - (HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): New macros. - (HAVE_64BIT_GPRS, HAVE_64BIT_FPRS): New macros, inverse of the above. - (HAVE_32BIT_ADDRESSES): New macro. - (load_register): Use HAVE_32BIT_GPRS to determine the register width. - (load_address): Use HAVE_32BIT_ADDRESSES to determine the address size. - (s_cprestore, s_cpadd): Likewise. - (macro): Use HAVE_32BIT_GPRS to determine the width of registers - used in branch and M_LI_D macros. Use HAVE_64BIT_FPRS to determine - the width registers used in M_LI_DD macros. Use HAVE_32BIT_ADDRESSES - to determine the width of addresses in load, store and jump macros. - (macro2): Use HAVE_32BIT_GPRS to determine the width of registers - used in set instructions; do not check the address size for them. - Use HAVE_32BIT_ADDRESSES to determine the width of addresses in - unaligned load and store macros. - (mips_ip): Use the new macros to check the width of a register when - processing float constants. Force a constant into memory if it is - destined for an FPR and the FPRs are wider than the GPRs. Warn about - odd FPR numbers if HAVE_32BIT_FPRS. Use HAVE_32BIT_GPRS rather - than mips_gp32 to select synthetic instructions. - (macro_build): Use HAVE_32BIT_GPRS rather than mips_gp32 to select - synthetic instructions. - -2001-08-01 Christian Groessler - - * config/tc-z8k.c (parse_reg): If a string starts with "r", "rl", - "rh", "rr", "rq", or "sp" then don't automatically assume - it's a register name. Check whether there is a number - following. - -2001-08-01 Alan Modra - - * config/tc-i386.c (lex_got): Match lower case relocation tokens. - Don't allocate more space than necessary for the input line copy. - -2001-08-01 Alan Modra - - * read.c: Standardize error/warning messages - don't capitalise, no - final period or newline, don't say "ignored" or "zero assumed" for - as_bad messages. In some cases, change the wording to that used - elsewhere for similar messages. - * app.c: Likewise. - * as.c: Likewise. - * atof-generic.c: Likewise. - * cgen.c: Likewise. - * cond.c: Likewise. - * depend.c: Likewise. - * dwarf2dbg.c: Likewise. - * ecoff.c: Likewise. - * expr.c: Likewise. - * frags.c: Likewise. - * input-file.c: Likewise. - * input-scrub.c: Likewise. - * listing.c: Likewise. - * output-file.c: Likewise. - * stabs.c: Likewise. - * subsegs.c: Likewise. - * symbols.c: Likewise. - * write.c: Likewise. - * ecoff.c (ecoff_directive_end): Test for missing name by - comparing input line pointers rather than reading string. - (ecoff_directive_ent): Likewise. - * read.c (s_set): Likewise. - (s_align): Report a warning rather than an error for - alignment too large. - (s_comm): Check for missing symbol name. - (s_lcomm_internal): Likewise. - (s_lsym): Likewise. - (s_globl): Use is_end_of_line instead of looking for '\n'. - (s_lcomm_internal): Likewise. - (ignore_rest_of_line): Report a warning rather than an error. - -2001-07-31 Geoffrey Keating - - * config/tc-ppc.c (ppc_elf_validate_fix): It's OK to have - any kind of relocation against a not-loaded section. - -2001-07-30 Alan Modra - - * config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type - to include '@' in symbol names when parsing versioned symbols - rather than calling get_symbol_end multiple times. - * config/tc-i370.c (register_name): Format fixes. Don't call - get_symbol_end after parsing number. - * config/tc-mn10200.c (data_register_name): Format fixes. Hoist - code out of conditional. - (address_register_name): Likewise. - (other_register_name): Likewise. - * config/tc-mn10300.c (r_register_name): Likewise. - (xr_register_name): Likewise. - (data_register_name): Likewise. - (address_register_name): Likewise. - (other_register_name): Likewise. - * config/tc-ppc.c (register_name): Likewise. - * config/tc-s390.c (register_name): Likewise. - -2001-07-27 Stephane Carrez - - * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix bsr - and bra relax: update fragP->fr_fix after the fixup. - -2001-07-27 Tracy Kuhrt - - * read.c (s_set): Check for missing symbol name. - -2001-07-26 Alan Modra - - * write.c (relax_segment ): Account for fr_fix. - -2001-07-25 H.J. Lu - - * config/tc-mips.c (md_estimate_size_before_relax): Make sure - we treat weak like extern only for ELF. - (mips_fix_adjustable): Make sure we don't adjust extern/weak - symbols only for ELF. - -2001-07-25 Chris Demetriou - - * config/tc-mips.c: Fix spelling error in comment. - -2001-07-25 Dave Brolley - - * app.c (LEX_IS_PARALLEL_SEPARATOR): New macro. - (IS_PARALLEL_SEPARATOR): New macro. - (do_scrub_begin): Set up characters in tc_parallel_separator_chars - as LEX_IS_PARALLEL_SEPARATOR, if it is defined. - (do_scrub_chars): Handle LEX_PARALLEL_SEPARATOR chars like - LEX_LINE_SEPARATOR except that we go to state 1 (as if the label has - been seen). - -2001-07-24 Alan Modra - - * Makefile.am (DEP_FLAGS): Define, add -DOBJ_MAYBE_ELF. - (DEP1, DEPTC, DEPOBJ, DEP2): Use it. - Update dependencies with "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2001-07-23 Kazu Hirata - - * config/tc-alpha.h: Fix formatting. - * config/tc-arc.c: Likewise. - * config/tc-d10v.h: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.h: Likewise. - * config/tc-i960.h: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-ia64.h: Likewise. - * config/tc-m32r.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-pdp11.c: Likewise. - * config/tc-pj.h: Likewise. - * config/tc-s390.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-sparc.h: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-w65.h: Likewise. - -2001-07-23 Alan Modra - - * symbols.c (S_GET_VALUE): Don't treat O_constant and local - symbols specially. Always resolve, adding fr_address to value. - * write.c (write_object_file): Don't add fr_address to sym values. - (relax_frag): Likewise. - (relax_segment): Likewise. - * config/obj-ieee.c (do_symbols): Likewise. - * config/tc-cris.c (md_convert_frag): Likewise. - * config/tc-fr30.c (md_convert_frag): Likewise. - * config/tc-i386.c (md_convert_frag): Likewise. - * config/tc-m32r.c (md_convert_frag): Likewise. - * config/tc-m68hc11.c (md_convert_frag): Likewise. - * config/tc-mcore.c (md_convert_frag): Likewise. - * config/tc-mips.c (mips16_extended_frag): Likewise. - * config/tc-ns32k.c (md_convert_frag): Likewise. - * config/tc-m68k.c (md_convert_frag_1): Likewise. - (BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR, - DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement. - (md_relax_table): Remove first four entries. Format. - (md_estimate_size_before_relax): Remove old_fix. Don't bother - setting fr_var. Simplify byte branch checks. - -2001-07-23 Alan Modra - - * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Remove - "isbranch" param as all calls have it set. - (pa_parse_neg_cmpsub_cmpltr): Likewise. - (pa_parse_nonneg_add_cmpltr): Likewise. Remember result of - strcasecmp in "nullify" var. - (pa_parse_neg_add_cmpltr): Likewise. - (pa_ip): Don't "save_s" unnecessarily. Update calls to above - functions. Don't print wrong conditions in error messages. - -2001-07-23 Andreas Jaeger - - * config/tc-s390.c (s390_force_relocation): Removed. - - * config/tc-s390.h: Remove double declaration of - TC_FORCE_RELOCATION. - -2001-07-22 H.J. Lu - - * config/tc-mips.c (s_mips_end): Remove unused variables. - (s_mips_frame): Add ATTRIBUTE_UNUSED. - -2001-07-17 Andreas Schwab - - * config/tc-m68k.c (md_pseudo_table) [OBJ_ELF]: Add .file and - .loc. - (md_assemble) [OBJ_ELF]: Call dwarf2_emit_insn before emitting - insn. - * config/tc-m68k.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2001-07-17 matthew green - - * config/tc-i386.c (comment_chars): Don't use '/' as comment start if - TE_NetBSD. - (line_comment_chars): Set to '/' if TE_NetBSD. - -2001-07-14 matthew green - - * configure.in (i386-*-netbsdelf*): New target. - * configure: Regenerate. - -2001-07-10 Mark Elbrecht - - * config/obj-coff.c (coff_frob_symbol): Don't merge if the storage - class of the non-debug symbol is C_NULL. - -2001-07-10 Anders Norlander - - * doc/as.texinfo (Incbin): Fix grammatical errors. - -2001-07-10 Nick Clifton - - * depend.c: Use FOPEN_.. macros in calls to fopen(). - * input-file.c: As above. - * itbl-ops.c: As above. - * listing.c: As above. - * output-file.c: As above. - * read.c: As above. - -2001-07-08 Anders Norlander - - * read.c (s_incbin): New .incbin function. - * read.c (potable): Add "incbin" pseudo-op. - * read.h: Add s_incbin prototype. - * doc/as.texinfo (incbin): Document .incbin pseudo-op. - * NEWS: Mention new feature. - -2001-07-07 Nick Clifton - - * ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is - DEBUG_UNSPECIFIED. - -2001-07-06 John Healy - - * cgen.c (gas_cgen_save_fixups): Modified to allow more than one - set of fixups to be stored. - (gas_cgen_restore_fixups): Modified to allow the fixup chain to be - restored to be chosen from any that are saved. - (gas_cgen_swap_fixups): Modified to allow the current set of - fixups to be swapped with any other set that has been saved. - (gas_cgen_initialize_saved_fixups_array): New routine. - * cgen.h: Modifed prototypes for gas_cgen_save_fixups, - gas_cgen_restore_fixups, and gas_cgen_swap_fixups. Added definitions - or MAX_SAVED_FIXUP_CHAINS. - * config/tc-m32r.c (assemble_two_insns): Changed calls to fixup - store, swap and restore fuctions to reflect the new interface. - -2001-07-06 Nick Clifton - - * config/tc-m68k.c (md_estimate_size_before_relax): Catch and - ignore empty, ineffectual alignment frags when deciding if a - branch can be short. - -2001-07-05 Steve Ellcey - - * config/tc-ia64.c (special_section): Add SPECIAL_SECTION_INIT_ARRAY - and SPECIAL_SECTION_FINI_ARRAY. - (special_section_name): Add .init_array and .fini_array. - (md_pseudo_table): Add init_array and fini_array. - (md): Add pointer_size and pointer_size_shift fields. - (setup_unwind_header): New static function. - (output_unw_records): Modify to use setup_unwind_header. - (generate_unwind_image, dot_endp): Modify to use md.pointer_size and - md.pointer_size_shift. - (md_begin): Initialize md.pointer_size and md.pointer_size_shift. - -2001-07-05 Ben Elliston - - * README (Supported platforms): m88k no longer suffers bitrot. - - * config/tc-m88k.c (md_pseudo_table): Remove redundant "global". - -2001-07-05 Alan Modra - - * struc-symbol.h (struct local_symbol): Rename lsy_offset to - lsy_value. Correct typos in comments. - * symbols.c (local_symbol_make): Update for name change. - (local_symbol_convert): Likewise. - (colon): Likewise. - (S_GET_VALUE): Likewise. - (S_SET_VALUE): Likewise. - (print_symbol_value_1): Likewise. - (resolve_symbol_value): Likewise. Don't divide local sym values - by OCTETS_PER_BYTE twice. - -2001-07-04 Jim Wilson - - * config/tc-ia64.c (md_pseudo_table): Add 2byte, 4byte, and 8byte. - - * config/tc-ia64.c (is_conditional_branch): Rewrite to exclude mod - sched branches. - -2001-07-05 Ben Elliston - - * read.c (s_fill): Correct spelling error in comments. - - * doc/c-m88k.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-m88k.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Set M880X0. - * doc/as.texinfo: Hook in m88k-dependent documentation. - -2001-07-04 Eric Christopher - - * doc/c-mips.texi (MIPS Opts): Document 12000 as valid cpu. - - * config/tc-mips.c (mips_cpu_info_table): Add rm5200, rm5231, rm5261, - and rm5721 as valid cpu strings. - (md_show_usage): Add rm5200, rm5231, rm5261, rm5721. - -2001-07-04 Richard Sandiford - - * config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero - if it's expected to be non-zero. - -2001-07-03 Nick Clifton - - * config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with - fscan->fx_frag. - - * write.c (TC_FINALIZE_SYMS_BEFORE_SIZE_SEG): Default to 1. - (write_object_file): Set finalize_syms to - TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is - called. - - * doc/internals.texi: Document - TC_FINALIZE_SYMS_BEFORE_SIZE_SEG. - -2001-07-02 Alan Modra - - * config/tc-ppc.c: Formatting fixes. - -2001-07-01 Ben Elliston - - * config/tc-m88k.c: Back out warning fixes from 2001-06-24, as - they cause some subtle breakage. Will fix them again later. - -2001-06-28 Nick Clifton - - * config/obj-coff.c (obj_coff_ln): Treat a .ln directive - outside of a function as a .appline directive. - -2001-06-28 Eric Christopher - H.J. Lu - - * config/tc-mips.c (mips_arch): New. Use mips_arch instead - of mips_cpu for the ISA selection. - (md_longopts): Add OPTION_MARCH and OPTION_MTUNE. - (md_parse_option): Handle OPTION_MARCH and OPTION_MTUNE. - (mips_tune): New. Use mips_tune for scheduling and optimization - issues. - (append_insn): Use mips_tune and mips_arch. - (macro_build): Ditto. - (mips_ip): Ditto. - (md_begin): Handle mips_arch, mips_tune and mips_cpu. For - backwards compatability mips_cpu generates arch and tune. - (md_show_usage): Document new behavior. - - * doc/c-mips.texi (MIPS Opts): Document -march and -mtune. - Deprecate -mcpu. - - * NEWS: Update. - -2001-06-27 Nick Clifton - - * write.c (write_object_file): Do not set finalize_syms until - after the segments have been sized. Some backends may still - need to access the syms's frags in order to adjust relaxed - frags. - - * config/tc-arm.c (do_ldst): Use MVN to build simple inverted - constants. - -2001-06-27 Alan Modra - - * write.c (fixup_segment ): Don't - subtract MD_PCREL_FROM_SECTION for 68k. - (fixup_segment ): Only fudge - by adding MD_PCREL_FROM_SECTION for 68k or if not already pcrel. - -2001-06-27 Tracy A. Kuhrt - - * write.c (fixup_segment ): If - pcrel, subtract MD_PCREL_FROM_SECTION value. - -2001-06-24 Ben Elliston - - * stabs.c (generate_asm_file): Make local variable `len' a size_t. - -2001-06-24 Jakub Jelinek - - * config/tc-alpha.c (tc_gen_reloc): Handle relocs against SEC_MERGE - section symbols the same way as externs. - -2001-06-24 Ben Elliston - - * config/tc-m88k.c (md_number_to_imm): Remove; unused since 1993. - (emit_relocations): Ditto. - (s_bss): Ditto. - (md_begin): Reformat comments to conform to the GNU standards. - (md_assemble): Ditto. - - * config/tc-m88k.c (get_reg): Adjust type of `reg_prefix' to char. - (md_parse_option): Mark parameters as unused. - (md_show_usage): Ditto. - (calcop): Adjust type of `reg_prefix' to char. - (get_reg): Ditto. - (getval): Adjust type of local `c' to char. - (md_create_short_jump): Mark from_addr, to_addr params as unused. - (md_create_long_jump): Ditto. - (md_estimate_size_before_relax): Mark parameters as unused. - - * config/tc-m88k.c (md_pseudo_table): Properly terminate the table - to allay a possible compiler warning. - -2001-06-22 Nick Clifton - - * doc/internals.texi (CPU backend): Document md_atof. - -2001-06-22 Matthew Wilcox - - * config/tc-hppa.c (pre_defined_registers): Add %mrp (millicode - return pointer) alias for %r2 or %r31, depending on 32 or 64 bit - architecture. - -2001-06-21 Philip Blundell - - * config/tc-arm.c (cplong_flag): Rename to long_flag. All uses - updated. - (insns): Remove entry for adrl. Add long_flag for adr. - (do_adr): Handle `l' suffix. - (do_adrl): Delete. - -2001-06-21 Alan Modra - - * config/tc-hppa.c (CHECK_FIELD_WHERE): Define. - (md_apply_fix): Use it here. Replace printf with equivalent - as_bad_where. - (tc_gen_reloc): Use as_bad_where instead of as_bad. - (md_apply_fix): Here too. - * config/tc-i386.c (tc_gen_reloc): Use as_bad_where instead of as_bad. - * config/tc-m68k.c (tc_gen_reloc): Likewise. - (md_convert_frag_1): Likewise. - -2000-06-20 Tom Rix - - * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes. - -2001-06-18 H.J. Lu - - * doc/Makefile.am (info): Depend on $(MANS). - (as.1): Remove the prefix `$(srcdir)/'. - * doc/Makefile.in: Regenerated. - - * as.1: Removed. - -2001-06-18 Philip Blundell - - * config/tc-arm.c (do_msr): Remove restriction on usage of - immediate operands. - -2001-06-19 Alan Modra - - * dwarf2dbg.c (dwarf2_finish): Output file info even when no - line info. - -2001-06-13 Philip Blundell - - * config/tc-arm.c (thumb_shift): Improve wording of error message. - (do_t_arit): Likewise. - -2001-06-13 Nick Clifton - - * config/tc-sh.c (md_pseudo_table): Only intercept the .file and - .loc pseudos if the dfwarf2 functions are available. - (md_assemble): Only call dwarf2_emit_insn if it is available. - - * expr.c: Fix typo in comment. - -2001-06-12 Nick Clifton - - * doc/as.texinfo (Infix Ops): Document that comparison and - combiner operators can be used as infix operators. - -2001-06-12 Peter Jakubek - - * config/tc-m68k.c (parse_mri_control_operand): Fix handling - of AND/OR. - (swap_mri_condition): Add HS (alias fo CC) and LO (alias for CS). - (reverse_mri_condition): Likewise. - (swap_mri_condition): Issue warning for conditions that can not be - swapped. - (build_mri_control_operand): Fix order of operands (swapped). - (build_mri_control_operand): Allow upper case extension in structured - control directives. - (s_mri_else): Likewise. - (s_mri_next): Likewise. - (s_mri_for): Likewise. - (s_mri_if): Fix handling comment ('*') in mri mode. - (s_mri_while): Likewise. - * macro.c (macro_expand): Allow macro invocation with empty - extension. - -2001-06-12 Nick Clifton - - * config/tc-arm.c: Fix test for overlow of literal pool. - -2001-06-11 H.J. Lu - - * NEWS: Updated for the new -n option for the MIPS assembler. - - * config/tc-mips.c (md_show_usage): Add -n. - - * doc/as.texinfo: Document the new -n option. - * doc/c-mips.texi: Likewise. - * doc/as.1: Regenerated. - -2001-06-10 Alan Modra - - * config/obj-coff.c (obj_coff_section): Formatting fix. - - * config/tc-i386.c (md_assemble): Accept branch hints as ",pt" and - ",pn". - -2001-06-08 H.J. Lu - - * config/tc-mips.c (warn_nops): New variable. Set to 0 to - disable warning about all NOPS that the assembler generates. - (macro): Warn NOPS generated only if warn_nops is not 0. - (md_shortopts): Add `n'. - (md_parse_option): Set warn_nops to 1 for `n'. - -2001-06-08 H.J. Lu - - * config/tc-mips.c (mips_ip): Properly handle illegal operands. - -2001-06-08 H.J. Lu - - * config/tc-mips.c (md_apply_fix): Don't adjust common - extern/weak symbols for ELF. - (md_estimate_size_before_relax): Treat weak like extern for - ELF. - (mips_fix_adjustable): Don't adjust extern/weak symbols for - ELF. - -2001-06-08 Alan Modra - - * Makefile.am: 'som' is not wrongly spelled 'some'. - * Makefile.in: Regenerate. - - * config/tc-mips.c (mips16_mark_labels): Reduce number of calls to - S_GET_VALUE by using a temp. - (append_insn): Likewise, and for S_SET_VALUE too. - (mips_emit_delays): Likewise. - (my_getExpression): Likewise. - (md_apply_fix): Likewise. Use "valueT" rather than "long" for "value". - (mips16_extended_frag): Remove code concerned with avoiding - locking in a frag address now that symbols are not finalized until - relaxation is complete. Cater for first relaxation pass having - bogus addresses. Use relax_marker to reliably determine whether a - symbol frag has been reached on the current pass. - -2001-06-07 H.J. Lu - - * configure.in: Move "mips-*-linux-gnu*" before "mips-*-gnu*". - * configure: Regenerate. - -2001-06-07 H.J. Lu - - * configure.in: Use MIPS_STABS_ELF for Linux/mips and remove - ecoff emulation. - * configure: Regenerate. - -2001-06-07 H.J. Lu - - * config/tc-mips.c (mips_pseudo_table): Add "extern" if - MIPS_STABS_ELF is defined. - -2001-06-06 Nick Clifton - - * as.c (show_usage): Remove L from listing options. It is not a - generic option. - -2001-06-06 Christian Groessler - - * config/tc-z8k.c: Removed many warnings by removing unused - variables and tagging unused parameters as such. - (md_begin): Fixed a typo (","instead of ";"). - (struct ctrl_table): Add parentheses to initialize array - correctly. - (struct flag_table): Likewise. - (struct intr_table): Likewise. - (struct table): Likewise. - (check_operand): "#if 0"'ed since it doesn't seem to be used. - -2001-06-06 Peter Jakubek - - * config/tc-m68k.c (md_show_usage): Add all supported ColdFire - options to list (e.g. m5206e, m5307, m5407). - -2001-06-06 Martin Schwidefsky - - * config/tc-s390.h (TC_FORCE_RELOCATION): Always emit relocations - BFD_RELOC_VTABLE_INHERIT and BFD_RELOC_VTABLE_ENTRY. - -2001-06-06 Alan Modra - - * config/tc-i386.c (md_assemble): Handle Pentium4 branch hints. - : Remove dead code. - -2001-06-06 Tracy Kuhrt - - * as.c (parse_args): Correct option name "listing-lhs-width2". - -2001-06-05 Nick Clifton - - * symbols.c (S_SET_EXTERNAL): Do not override a section symbol's - status. - -2001-05-30 Richard Henderson - - * read.c (emit_leb128_expr): Call md_cons_align. - -2001-05-28 Jeff Sturm - - * config/tc-sparc.c (md_apply_fix3): Handle BFD_RELOC_SPARC_UA16, - BFD_RELOC_SPARC_UA32 and BFD_RELOC_SPARC_UA64. - (tc_gen_reloc): Likewise. - (sparc_cons_align): Don't clear sparc_no_align_cons. - (cons_fix_new_sparc): Substitute BFD_RELOC_SPARC_UA{16|32|64} for - BFD_RELOC_{16|32|64} iff sparc_no_align_cons is set. - -2001-05-27 Alan Modra - - * write.c (relax_segment ): Check the section of a - symbol to determine whether it is absolute rather than comparing - its frag against zero_address_frag as listings play tricks with - frags. - - * config/tc-m68k.c (md_assemble): Ensure variable part of frag is - allocated in the same chunk as the fixed part. - -2001-05-26 Alan Modra - - * write.c (relax_segment ): Calculate growth using - addresses before stretch. Prevent repeated error messages. - From Peter Jakubek - Use as_bad_where and as_warn_where to pinpoint errors. - -2001-05-25 Alan Modra - - * symbols.c (resolve_symbol_value): Always set segment, even when - not finalizing symbol value. - - * config/obj-ieee.c (write_object_file): Set finalize_syms. - * config/obj-coff.c (write_object_file): Likewise. - * (size_section): Remove rs_space assert as fr_symbol is no longer - removed. - (fill_section): Likewise. - - * configure.in: Replace linuxoldld with linux*oldld. - * configure: Regenerate. - - From 2.11 branch 2001-03-30 Richard Henderson - * config/tc-i386.c (md_convert_frag): Don't die on local symbols - that have been finalized. - - * symbols.c (resolve_symbol_value): Clear sy_resolving before - taking exit_dont_set_value. - - * write.c (relax_segment ): Don't zap fr_symbol when - relaxing. - -2000-05-24 Tom Rix - - * config/obj-coff.c (add_lineno): xcoff allows negative line - numbers - * config/tc-ppc.c (ppc_stabx): fix generated symbol - -2001-05-24 Alan Modra - - * write.c (write_object_file): Set finalize_syms = 1 before - size_seg is called. - -2001-05-23 Thiemo Seufer - - * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add ISA_MIPS64 as 64 bit - architecture, remove erraneous ISA_MIPS32. - (md_show_usage): Add MIPS r12k support. - (mips_cpu_info_table): Add MIPS r12k support. - -2001-05-22 Alan Modra - - * config/tc-arc.c (md_assemble): Use is_end_of_line instead of - testing for NULs. - - * symbols.c (resolve_symbol_value): Remove "finalize" param, - instead use finalize_syms directly. Don't treat expressions - specially with regard to finalize_syms. Update calls to self. - (resolve_local_symbol): Update call to resolve_symbol_value. - (S_GET_VALUE): Likewise. Return resolve_symbol_value if - !finalize_syms. - * symbols.h (resolve_symbol_value): Update prototype. - * config/obj-aout.c (obj_crawl_symbol_chain): Update call - to resolve_symbol_value. - * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. - * config/obj-coff.c (do_relocs_for): Likewise. - (yank_symbols): Likewise. - (fixup_segment): Likewise. - * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. - * config/tc-mips.c (md_convert_frag): Likewise. - * config/tc-ppc.c (ppc_frob_symbol): Likewise. - (ppc_fix_adjustable): Likewise. - * dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise. - (dwarf2dbg_convert_frag): Likewise. - * ehopt.c (eh_frame_estimate_size_before_relax): Likewise. - (eh_frame_convert_frag): Likewise. - * expr.c (make_expr_symbol): Likewise. - * write.c (adjust_reloc_syms): Likewise. - (write_object_file): Likewise. - (relax_segment): Likewise. - (fixup_segment): Likewise. - (finalize_syms): Init to zero, and update comment. - (write_object_file): Set finalize_syms to 1 rather than 2. - * doc/internals.texi (sy_value): Mention finalize_syms. - (S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called. - - * config/tc-m68k.c (relaxable_symbol): Only treat external symbols - as relaxable if embedded system, make weak syms non-relaxable. - Move definition.. - (tc_m68k_fix_adjustable): ..so it can be used here. - (md_apply_fix_2): Sign extend without conditional. - - * config/tc-v850.c: Update copyright. - -2001-05-16 Jeff Johnston - - * cgen.c (gas_cgen_tc_gen_reloc): Changed error message when - howto entry is not found. - -2001-05-15 Alexandre Oliva - - * config/tc-mn10300.c (mn10300_force_relocation): Don't - optimize differences between symbols in code sections to - constants. - (mn10300_fix_adjustable): Don't adjust to section+offset - relocations pointing at symbols in code sections. - -2001-05-16 Alan Modra - - * config/tc-arc.c (md_assemble): Correct dwarf2_emit_insn param - for 8 byte insns. - * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn before - opcodes are output rather than after. Delete insn_size. - * config/tc-v850.c (md_assemble): Similarly, but delete - total_insn_size. - -2001-05-14 Richard Henderson - - * ehopt.c (eh_frame_convert_frag): Fix missed subtype adjustment - last change. - -2001-05-14 Richard Henderson - - * ehopt.c (get_cie_info): Rename from eh_frame_code_alignment; - also collect whether to expect an FDE augmentation. - (check_eh_frame): Rewrite as a state machine. Track where in - an FDE we are located, skip any augmentation. - (eh_frame_estimate_size_before_relax): Get code alignment from - the fragment subtype. - (eh_frame_relax_frag, eh_frame_convert_frag): Likewise. - * read.c (emit_leb128_expr): Call check_eh_frame. - -2001-05-14 Alexandre Oliva - - * config/tc-mn10300.c (md_assemble): Anchor dwarf2 line info - before a relaxable insns. - -2001-05-13 Alexandre Oliva - - * config/tc-mn10300.c (tc_gen_reloc): Don't reject differences - between symbols if the base symbol is in the current section; - emit a PC-relative relocation instead. - -2001-05-12 Peter Targett - - * config/tc-arc.c: Update copyright and tidy source comments. - (md_pseudo_table): Add directive .cpu back as an alias for - .option. Add .file and .line for dwarf2 support. - (arc_mach_type): Make bfd_mach_arc_6 default. - (md_longopts): Add entry 'pre-v6' representing old command line - option when assembling for 'arc5' core versions. - (md_parse_option): Make OPTION_ARC same as OPTION_ARC6, for new - default behaviour. - (arc_code_symbol): Make symbol value for @h30 fixup expression - equal to O_constant. - (md_assemble): Call dwarf2_emit_insn. - Include "dwarf2dbg2.h". Formatting fixes throughout file. - * config/tc-arc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - * doc/c-arc.texi (ARC_CORE_DEFAULT): Update to new default. - -2001-05-11 Jakub Jelinek - - * config/tc-ia64.c (special_linkonce_name): New. - (make_unw_section): Map .gnu.linkonce.t.FOO text section into - .gnu.linkonce.ia64unw{,i}.FOO. - (ia64_elf_section_type): Handle .gnu.linkonce.ia64unw{,i}.FOO. - (dot_endp): Add comment about it. - -2001-05-11 Nick Clifton - - * config/tc-arm.c (arm_handle_align): When truncating an aligned - block, ensure that the low order bits of the alignment are - preserved. - -2001-05-10 Alan Modra - - * config/obj-vms.c (obj_crawl_symbol_chain): Don't take address of - symbol_next. - - * config/tc-fr30.c (md_estimate_size_before_relax): Return size of - current variable part of frag. - * config/tc-m32r.c (md_estimate_size_before_relax): Likewise. - * config/tc-openrisc.c (md_estimate_size_before_relax): Likewise. - * config/tc-m68hc11.c (RELAX_STATE): Define. - (RELAX_LENGTH): Define. - (md_estimate_size_before_relax): Handle non-relaxable cases - separately from relaxable cases for clarity, and return correct - size for multi-pass relaxation. - * config/tc-tahoe.c (RELAX_LENGTH): Correct. - (md_estimate_size_before_relax): As for tc-m68hc11.c. - (md_convert_frag): Remove "length_code". - * config/tc-vax.c (RELAX_STATE): Define. - (RELAX_LENGTH): Define. - (md_relax_table): Add missing entry. - (md_estimate_size_before_relax): As for tc-m68hc11.c. - (md_convert_frag): Remove "length_code". - * config/tc-ns32k.c (md_estimate_size_before_relax): Simplify and - don't bother setting fr_var. Return correct size for multi-pass - relaxation. - * config/tc-v850.c (md_estimate_size_before_relax): Rewrite. - (md_convert_frag): Don't bother clearing fr_var. - (md_pseudo_table): Correct initialization. - * config/tc-h8500.c (md_convert_frag): Don't bother clearing fr_var. - (md_estimate_size_before_relax): No need to set fr_var. - * config/tc-mcore.c (md_convert_frag): Don't bother clearing fr_var. - (md_estimate_size_before_relax): No need to set fr_var. - -2001-05-09 Richard Henderson - - * config/tc-ia64.c (generate_unwind_image): Align the fragment - beginning a function's unwind info block. - -2001-05-09 Alexandre Oliva - - * config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs. - -2001-05-08 Andreas Schwab - - * config/tc-m68k.c: Instead of replacing -1 by 64 in assignment to - fx_pcrel_adjust explicitly sign extend when reading it. - -2001-05-08 Alan Modra - - * config/tc-m68k.c (md_estimate_size_before_relax): Set fr_var - from md_relax_table, and combine some switch cases. - -2001-05-06 Alexandre Oliva - - * config/tc-mn10300.c (md_assemble): Subtract operand->shift - from offset in non-pcrel operands too. - -2001-05-06 Nick Clifton - - * config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. - * config/tc-arm.c (arm_handle_align): Do not insert more than - MAX_MEM_FOR_RS_ALIGN_CODE bytes. - (arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE. - -2001-05-03 Thiemo Seufer - - * Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h. - Run "make dep-am". - * Makefile.in: Regenerate. - * configure.in: Remove duplicate mips-*-ecoff* entry. - * configure: Regenerate. - - * config/obj-ecoff.c (obj_pseudo_table): Fix terminating entry. - (n_names): Cast away type mismatch. - (ecoff_sec_sym_ok_for_reloc): Add unused attribute. - (obj_ecoff_frob_symbol): Likewise. - * ecoff.c: (add_file): Add unused attribute. - (ecoff_directive_begin): Likewise. - (ecoff_directive_bend): Likewise. - (ecoff_directive_def): Likewise. - (ecoff_directive_dim): Likewise. - (ecoff_directive_scl): Likewise. - (ecoff_directive_size): Likewise. - (ecoff_directive_type): Likewise. - (ecoff_directive_tag): Likewise. - (ecoff_directive_val): Likewise. - (ecoff_directive_endef): Likewise. - (ecoff_directive_end): Likewise. - (ecoff_directive_ent): Likewise. - (ecoff_directive_extern): Likewise. - (ecoff_directive_file): Likewise. - (ecoff_directive_fmask): Likewise. - (ecoff_directive_frame): Likewise. - (ecoff_directive_mask): Likewise. - (ecoff_directive_loc): Likewise. - (mark_stabs): Likewise. - (ecoff_stab): Likewise. - (ecoff_frob_symbol): Cast away type mismatch. - (ecoff_padding_adjust): Likewise. - (ecoff_build_symbols): Likewise. - (ecoff_build_procs): Likewise. - (ecoff_build_aux): Likewise. - (ecoff_build_strings): Likewise. - (ecoff_build_fdr): Likewise. - (ecoff_build_debug): Likewise. - * itbl-ops.c (itbl_assemble): Variable initialization. - -2001-05-03 Alan Modra - - * config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF - expressions rather than triggering an assert. - -2001-05-02 Johan Rydberg - - * config/tc-openrisc.c: New file. - * config/tc-openrisc.h: Likewise. - - * Makefile.am: Add OpenRISC target. - * Makefile.in: Regenerated. - - * configure.in (openrisc-*-*): Add target. - * configure: Regenerated. - -2001-05-02 Nick Clifton - - * config/tc-arm.c (arm_frag_align_code): Change error message to - more explanatory version. - -2001-04-29 Keith M Wesolowski - - * config/tc-mips.c (md_parse_option): Also accept - elf64-tradbigmips and elf64-tradlittlemips for OPTION_64. - -2001-04-27 David Mosberger - - * config/tc-ia64.c (dot_spillmem_p): Fix output_spill_?sprel_p() - argument passing order: predicate goes last, not first. - -2001-04-27 Sean McNeil - - * configure.in: Add arm-vxworks. - * configure: Regenerate. - -2001-04-26 Nick Clifton - - * config/tc-arm.c (arm_handle_align): New Function: Generate - no-op filled alignment frags. - (arm_frag_align_code): New Function: Create a code alignment frag. - (arm_init_frag): New Function: Initialse the target dependent - parts of a frag. - - * config/tc-arm.h (TC_FRAG_TYPE): Define. - (TC_FRAG_INIT): Define. - (HANDLE_ALIGN): Define. - (md_do_align): Define. - -2001-04-25 Nick Clifton - - * config/obj-coff.c (do_linenos_for): Check to see if the filename - symbol has been initialised before extracting its symbol index. - -2001-04-24 H.J. Lu - - * configure: Regenerated with the right version of autoconf. - -2001-04-24 Christian Groessler - - * config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now - generate R_CALLR and R_REL16 relocations - -2000-04-20 Jason Eckhardt - - * config/tc-d10v.h (tc_frob_label): Update the symbol's frag - since frag_now can change after d10v_cleanup is called. - -2001-04-16 David O'Brien - - * configure.in: Add the em type for FreeBSD targets. - * configure: Regenerate. - -2001-04-14 Alexandre Oliva - - * struc-symbol.h (struct local_symbol): New TC_LOCAL_SYMFIELD_TYPE. - * symbols.c (local_symbol_convert): Call TC_LOCAL_SYMFIELD_CONVERT. - - * config/tc-mn10300.c (md_assemble): Simplify offset adjustment of - pc-relative relocations not placed at the end of the instruction. - -2001-04-13 Jim Wilson - - * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. - excluding br.i. - -2001-04-13 Jakub Jelinek - - * config/obj-elf.c (obj_elf_change_section): Add entsize argument, - handle SHF_MERGE and SHF_STRINGS. - (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. - (obj_elf_section): Allow additional argument specifying entity size. - * write.c (adjust_reloc_syms): Keep relocations against local symbols - in SEC_MERGE sections. - -2001-04-12 Jason Merrill - - * dwarf2dbg.c (process_entries): Don't optimize redundant line notes. - -2001-04-12 Alexandre Oliva - - * expr.c (operand): Pass &c to md_parse_name(). - * config/tc-ia64.h, config/tc-ppc.h, config/tc-tic54x.h: Adjust. - -2001-04-07 Steven J. Hill - - * config/tc-mips.c: Support ELF64 for traditional MIPS targets. - - * Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h. - * Makefile.in: Regenerated. - - * configure.in: Use traditional MIPS targets for Linux/MIPS. - * configure: Regenerated. - -2001-04-06 Alexandre Oliva - - * config/tc-mn10300.c (xr_registers): Added `pc'. - -2001-04-05 Alan Modra - - * configure.in: Add h8500-*-coff and h8500-*-rtems targets. - * configure: Regenerate. - - * config/tc-h8500.c (md_estimate_size_before_relax): Add missing - cases, and always return size based on current fr_subtype. - (md_begin): Move initialization of md_relax_table.. - (md_relax_table): ..to static initializer. Set rlx_length for - UNDEF_WORD_DISP cases. - * config/tc-w65.c (md_estimate_size_before_relax): Likewise. - (md_begin): Likewise. - (md_relax_table): Likewise. - * config/tc-mcore.c (md_estimate_size_before_relax): Likewise. - (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. - Set rlx_backward and rlx_forward to zero for unused states. - * config/tc-sh.c (md_estimate_size_before_relax): Likewise. - (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. - (UNCOND12, UNCOND32): Remove duplicate defines. - -2001-04-04 Hans-Peter Nilsson - - * config/tc-cris.c (md_estimate_size_before_relax) : Don't emit - 32-bit branch, just set fragP->fr_subtype. Set fragP->fr_var. - : Always set fragP->fr_var using md_cris_relax_table. - Add cases to cover all relax states. - (cris_insn_first_word_frag): New. - (md_assemble): Call cris_insn_first_word_frag to get the first - frag in an insn, not frag_more. Don't call dwarf2_emit_insn at - end. Drop variable insn_size. - (gen_bdap): Call cris_insn_first_word_frag, not frag_more. - (cris_sym_leading_underscore): Wrap first as_bad parameter in _(). - (cris_sym_no_leading_underscore, s_cris_file, s_cris_loc): Ditto. - - * write.c (write_object_file): Reset broken word state before - calling relax_seg. - -2001-03-31 Alan Modra - - * listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT - for one line if not already enabled. - * cond.c (s_elseif): Correct conditional assembly listing. - (s_else): Likewise. - - * cond.c (s_endif): Correct handling of "if .. elseif .." trees. - Don't abort on NULL current_cframe. - -2001-03-30 Alan Modra - - * dwarf2dbg.c (dwarf2_directive_file): Fix warnings. - (dwarf2dbg_convert_frag): Pass `finalize_syms' to resolve_symbol_value. - * config/obj-aout.c (obj_crawl_symbol_chain): Likewise. - * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. - * config/obj-coff.c (do_relocs_for): Likewise. - (yank_symbols): Likewise. - (fixup_segment): Likewise. - * config/tc-ppc.c (ppc_frob_symbol): Likewise. - (ppc_fix_adjustable): Likewise. - * config/tc-mips.c (md_convert_frag): Likewise. - * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. - * ehopt.c (eh_frame_convert_frag): Likewise. - * expr.c (make_expr_symbol): Likewise. - - * frags.h (struct frag): Add last_fr_address. Reorder fields for - better packing. - * symbols.c (resolve_symbol_value): Don't fix expression values - until relaxation is complete. - (resolve_local_symbol): Pass `finalize_syms' to resolve_symbol_value. - (S_GET_VALUE): Likewise, and return unresolved expression value. - * write.c (finalize_syms): New. - (relax_and_size_seg): Split into.. - (relax_seg): New function, returns 1 if anything changed.. - (size_seg): And the remainder of relax_and_size_seg. - (fixup_segment): Arrange for final resolution of sym values. - (adjust_reloc_syms): Likewise. - (write_object_file): Likewise, and repeatedly call relax_seg until - nothing more changes. - (relax_segment): Return 1 if anything changed. Use correct types - for rs_org `target' and `after'. - * write.h (finalize_syms): Declare. - (relax_segment): Update prototype. - - * config/tc-sh.c (md_estimate_size_before_relax): Add extra - do-nothing cases to switch to avoid abort on a second relaxation - pass, and tidy code a little. - * config/tc-cris.c (md_estimate_size_before_relax): Likewise. - * config/tc-h8500.c (md_estimate_size_before_relax): Likewise. - * config/tc-w65.c (md_estimate_size_before_relax): Likewise. - * config/tc-i386.c (UNCOND_JUMP, COND_JUMP, COND_JUMP86): Decrement. - (md_relax_table): Remove first four unused entries. Increment - rlx_length by one throughout table, and update comments to suit. - (md_estimate_size_before_relax): Return size of current variable - part of frag to reflect reality when relaxing more than once. - * config/tc-mcore.c (COND12, UNCD12): Rename to DISP12 throughout. - (COND32, UNCD32): Rename to DISP32 throughout. - (UNDEF_WORD_DISP): Renumber to 3. - (md_estimate_size_before_relax): Add extra do-nothing cases. - * config/tc-mn10200.c (md_estimate_size_before_relax): Rewrite. - * config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite. - * config/tc-ns32k.c (md_estimate_size_before_relax): Add cases to - handle word and dword branches. - -2001-03-29 Hans-Peter Nilsson - - * config/tc-cris.h (tc_fix_adjustable): Allow only - BFD_RELOC_CRIS_32_GOTREL of the PIC relocs. - * config/tc-cris.c (cris_get_pic_suffix): Correct reloc type in - example in comment to valid type. - -2001-03-28 H.J. Lu - - * read.c (equals): Set to local for COFF only if it hasn't been - defined before. - -2001-03-28 Alan Modra - - * config/tc-hppa.c (DEFAULT_LEVEL): Define. - (md_begin): Use it when setting default architecture. - -2001-03-27 Nick Papadonis - - * read.c (equals): (for COFF) default symbols to being local. - -2001-03-27 Hans-Peter Nilsson - - * configure.in (cris-*-*): Change default emulation to criself. - (cris-*-*aout*): New rule. - * configure: Regenerate. - -2001-03-26 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_fix_adjustable): Add test for - BFD_RELOC_390_GOTENT. - * config/tc-s390.h (TC_RELOC_RTSYM_LOC_FIXUP): Add test for - BFD_RELOC_390_GOTENT. - -2001-03-26 Nick Clifton - - * config/tc-s390.h (TC_FORCE_RELOCATION): Define. - * config/tc-s390.c (s390_force_relocation): New function: Force - relocations for VTINHERIT relocs. - -2001-03-23 Stephane Carrez - - * doc/as.texinfo: Put @c man begin to generate the as man page. - When generating man, define all the variables. Re-organize some - options to obtain better indentation of man page. - * doc/Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. - (as.1): Build from as.texinfo. - * doc/Makefile.in: Regenerate.Index: binutils/Makefile.am - -2001-03-25 Alan Modra - - * config/tc-i386.c (i386_scale): Accept an absolute expression for - scale factor, and return the end of the expression. - (i386_operand): Modify for above. - -2001-03-23 Nick Clifton - - * doc/as.texinfo: Document --listing-XXX command line switches. - Explain why listings behave differently when -pipe is used. - -2001-03-23 Richard Sandiford - - * write.c (fix_new_exp): Print an error if passed a register. - -2001-03-23 Hans-Peter Nilsson - - * config/tc-cris.c: Tweak attribution. Fix typos. PIC support. - (PIC_SUFFIX_CHAR): New macro. - (cris_get_pic_suffix, cris_get_pic_reloc_size): New functions. - (pic): New variable. - (md_longopts): New option --pic. - (OPTION_PIC): Define. - (md_estimate_size_before_relax): Tweak longish comment. - (md_create_long_jump): Make the long jumps generate ADD.D offset,PC. - (md_assemble): Handle a PIC relocation on prefix and normal - instruction operands. - : Handle - "complex" operand expressions. Call frag_more outside - gen_cond_branch_32 parameter list. - (cris_process_instruction): Handle PIC relocs on parsed - operand expressions. Validize PIC reloc sizes. - (get_autoinc_prefix_or_indir_op): Handle PIC suffix. - (gen_bdap): Handle "complex" operand expressions. - (gen_cond_branch_32): Use as_warn_where, not as_warn. Use - ADD.D offset,PC as jump instruction if generating PIC. Generate - error instead of crashing on complex expressions. - (cris_number_to_imm): Add segT parameter. All callers changed. - Use segT parameter, not now_seg, for segment of fixup. Handle - PCREL relocations but check that they are fully resolved. - (md_parse_option): Handle OPTION_PIC. - (tc_gen_reloc): Handle PIC relocs. - (md_show_usage): Update for --pic. - (md_apply_fix3): Renamed from md_apply_fix. - (md_pcrel_from): Accept emitting PCREL relocs when ELF. - (md_cris_force_relocation): Force relocation for PIC relocs. - - * config/tc-cris.h: Tweak attribution. - (MD_APPLY_FIX3): Define. - (IS_CRIS_PIC_RELOC): New macro. - (TC_RELOC_RTSYM_LOC_FIXUP): Define. - (tc_fix_adjustable): Don't adjust a globally visible symbol when - generating ELF. - (tc_frob_symbol): Avoid emitting undefined symbols. - -2001-03-20 Alan Modra - - * frags.h (struct frag): Add relax_marker. - * write.c (is_dnrange): Delete. - (relax_frag): Use correct types for `aim', `target', `address'. - Delete `offset', `was_address'. Test `relax_marker' instead of - using fragile (and slow) address test. - (relax_segment): Init and flip `relax_marker'. - -2001-03-19 Alan Modra - - * config/tc-i386.c (md_assemble ): Correct - used register name. - -2001-03-18 Stephane Carrez - - * config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply - with 'Motorola specification for assembly language input standard'. - -2001-03-17 Richard Henderson - - * dwarf2dbg.c (user_filenum, user_filenum_allocated): Remove. - (dwarf2_directive_loc): Don't use them. - (dwarf2_directive_file): Reject duplicate file definitions. - (get_filenum): Zero allocated memory. - (out_file_list): Complain about missing file definitions. - -2001-03-17 Alan Modra - - * read.c (do_org): Handle complex expressions. - * cgen.c (gas_cgen_finish_insn): Likewise. - -2001-03-15 David Mosberger - - * config/tc-ia64.c (md): New member keep_pending_output. - (ia64_flush_pending_output): Flush only if md.keep_pending_output - is not set. - (dot_xdata): Turn on md.keep_pending_output for the duration of - this function. - (dot_xfloat_cons): Ditto. - (dot_xstringer): Ditto. - (dot_xdata_ua): Ditto. - (dot_xfloat_cons_ua): Ditto. - -2001-03-15 Jim Wilson - - * config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local - label support. - -2001-03-15 Alexandre Oliva - - * config/tc-sh.c (parse_reg): Match capital MACH and MACL. - -2001-03-15 DJ Delorie - - * stabs.c (s_stab_generic): Don't corrupt the notes obstack by - blindly freeing string if it isn't at the top of the obstack. - -2001-03-13 Alan Modra - - * config/tc-i386.c (RELOC_ENUM): Define. Use throughout file. - (NUM_FLAG_CODE): Define. - (lex_got): New function. - (got_reloc): New global var. - (x86_cons_fix_new): New function. - (x86_cons): New function. - (i386_immediate): Use lex_got here, replacing inline code. Change - "ignoring junk.." error message to "junk.." - (i386_displacement): Likewise. - * config/tc-i386.h (TC_PARSE_CONS_EXPRESSION): Define. - (x86_cons): Declare. - (TC_CONS_FIX_NEW): Define. - (x86_cons_fix_new): Declare. - -2001-03-12 Nick Clifton - - * config/tc-arm.c (md_begin): Always set machine type based on - cpu_variant. - -2001-03-07 Alan Modra - - * config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc. - (md_assemble) : Use correct field of i.op[] - union. - : Use correct i.disp_reloc[]. - : Likewise. - -2001-03-06 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Clear bit zero of offset in - BLX(1) instruction. - -2001-03-06 Igor Shevlyakov - - * config/tc-m68k.c : Add 5407 to archs[] table. - (HAVE_LONG_BRANCH): Add mcf5407. - (select_control_regs): Recognize 5407. - -2001-03-02 Dave Brolley - - * config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather - than m32r_do_align. - -2001-03-02 Richard Sandiford - - * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): New macro. - (gen_to_words): Print warnings if NaNs are found and the target CPU - does not support them. Allow largest exponent to be used in normal - numbers if TC_LARGEST_EXPONENT_IS_NORMAL evaluates to true. - -2001-02-28 Andreas Jaeger , Bo Thorsen - - * config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed - anymore since we use bfd_elf_generic_reloc now. - (md_apply_fix3): Only apply hack for partial_inplace if not using RELA. - -2001-02-27 Alan Modra - - * configure.in (BFD_VERSION): New. - (AM_INIT_AUTOMAKE): Use $BFD_VERSION. - * configure: Regenerate. - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2001-02-26 Mark Elbrecht - - * config/obj-coff.c [BFD_ASSEMBLER] (obj_coff_section): Set - SEC_NEVER_LOAD when the 'n' flag is used. - Add SEC_NEVER_LOAD to matchflags. - -2001-02-24 Stephane Carrez - - * symbols.c (decode_local_label_name): Initialize message_format - only when an error is reported (perf pb due to I18N). - -2001-02-23 H.J. Lu - - * dwarf2dbg.c (dwarf2_directive_file): Call s_app_file (0) if - BFD_ASSEMBLER is not defined. - -2001-02-23 Richard Sandiford - - * config/tc-mn10300.c (md_apply_fix3): Don't mark a fixup as - done if it's against a symbol. - -2001-02-22 Timothy Wall - - * config/tc-ia64.c (ia64_target_format): Return ia64-aix-specific - target formats if applicable. - * config/te-ia64aix.h: New. Configuration for AIX5 on IA-64. - * Makefile.am (TARG_ENV_HFILES): Added config/te-ia64aix.h. - * Makefile.in: Regenerated. - * configure.in: Added configuration for ia64-*-aix*. - * configure: Regenerated. - -2001-02-21 David Mosberger - - * config/tc-ia64.c (enum operand_match_result): New type. - (operand_match): Change return type to operand_match_result. - Fix all returns appropriately, adding support for returning the - out-of-range result. - (parse_operands): New locals result, error_pos, out_of_range_pos, - curr_out_of_range_pos. Rewrite operand matching loop to give better - error messages. - -2001-02-21 David Mosberger - - * config/tc-ia64.c (struct unwind): Add member "prologue_count". - (dot_proc): Clear unwind.prologue_count to zero. - (dot_prologue): Increment unwind.prologue_count. - (dot_restore): If second operand is omitted, use - unwind.prologue_count -1 for "ecount" (# of additional regions to - pop). Decrement unwind.prologue_count by number of regions - popped. - -2001-02-21 Nick Clifton - - * doc/as.texinfo (Section): Note that some flags to the COFF - version of .section remove attributes rather than setting them. - -2001-02-20 Kazu Hirata - - * config/tc-pdp11.c: Fix formatting. - * config/tc-pdp11.h: Likewise. - -2001-02-20 Bo Thorsen - - * config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT - entry. - -2001-02-18 David O'Brien - - * configure.in (cpu_type, arch): Add a generic FreeBSD specification as - all FreeBSD platforms should look the same at this level. - * configure: Rebuilt. - * config/tc-i386.c: Add support for old FreeBSD a.out hosts. - -2001-02-18 lars brinkhoff - - * Makefile.am: Add PDP-11 target. - * configure.in: Likewise. - * config/tc-pdp11.c: New file. - * config/tc-pdp11.h: New file. - * doc/Makefile.am: Add PDP-11 documentation. - * doc/all.texi: Likewise. - * doc/as.texinfo: Likewise. - * doc/c-pdp11.texi: New file. - -2001-02-16 matthew green - - * cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64. - -2001-02-13 Jim Wilson - - * config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED - reloc instead of a 0 reloc. - (md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it - as done. - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise. - -2001-02-13 Ian Lance Taylor - - * write.c (is_dnrange): Stop as soon as the address becomes - larger. - (relax_frag): Add segment parameter. Only call symbol_get_frag - once. Only call is_dnrange if the symbol is in the same segment, - and the symbol address is larger. - (relax_segment): Pass segment to md_relax_frag and relax_frag. - * write.h (relax_frag): Update declaration. - * config/tc-fr30.c (fr30_relax_frag): Add segment parameter. Pass - it to relax_frag. - * config/tc-m32r.c (m32r_relax_frag): Likewise. - * config/tc-m32r.h (md_relax_frag): Add segment parameter. - (m32r_relax_frag): Update declaration. - * config/tc-mips.h (md_relax_frag): Add segment parameter. - * config/tc-tic54x.h (md_relax_frag): Likewise. - * doc/internals.texi (CPU backend): Update documentation for - md_relax_frag. - -2001-02-13 Alan Modra - - * doc/c-i386.texi (i386-Arch): Add "jumps"/"nojumps" blurb. - Mention effect of < 386 architectures on jump promotion. - (i386-Jumps): xref above. Don't assume long disp is 32 bits. - - * config/tc-i386.c (no_cond_jump_promotion): New. - (set_cpu_arch): Parse "jumps" arch modifier. - (insn_size): Modify usage comment. - (ENCODE_RELAX_STATE): Reformat and protect macro arg. - (SIZE_FROM_RELAX_STATE): Rename to DISP_SIZE_FROM_RELAX_STATE. - (TYPE_FROM_RELAX_STATE): New define. - (UNCOND_JUMP, COND_JUMP): Renumber. - (md_relax_table): Reorder to suit. - (COND_JUMP86): New define. - (md_relax_table): Handle COND_JUMP86 cases. Add a few comments. - (md_assemble): Create frag var for jumps of max size, encode relax - state for COND_JUMP86. - (md_estimate_size_before_relax): Handle COND_JUMP86 cases, and - leave conditional jumps small if no_cond_jump_promotion. - (md_convert_frag): Likewise. - - * expr.c (operator): Don't bump input_line_pointer for two char - operators. Instead return operator size via new param num_chars. - (expr): Use above to parse multi-char operators correctly. - -2001-02-12 Jan Hubicka - - * config/tc-i386.c (i386_displacement): Fix handling of - BFD_RELOC_X86_64_GOTPCREL. - (i386_validate_fix): Likewise. - -2001-02-12 Philip Blundell - - * config/tc-arm.c (do_ldst): Improve warnings for unpredictable - ldrt/strt instructions. - -2001-02-11 Maciej W. Rozycki - - * config/tc-mips.c (macro): For M_LA_AB emit a - BFD_RELOC_MIPS_CALL16 relocation or a - BFD_RELOC_MIPS_CALL_HI16/BFD_RELOC_MIPS_CALL_LO16 pair instead of - BFD_RELOC_MIPS_GOT16 and - BFD_RELOC_MIPS_GOT_HI16/BFD_RELOC_MIPS_GOT_LO16, respectively for - loading the jump register when generating SVR4_PIC code. - -2001-02-10 Chris Demetriou - - * configure.in: Make 'mipself' and 'mipsecoff' emulations - map to MIPS-specific files, as they used to do before the - change on 2000-05-21. - * configure: Regerate. - -2001-02-10 Chris Demetriou - - * config/tc-mips.c (md_parse_option): Don't try to compile - ELF-only option code if not ELF. - -2001-02-08 David Mosberger - - * config/tc-ia64.h (md_elf_section_type): New macro. - (ELF_TC_SPECIAL_SECTIONS): Drop .IA_64.unwind and .IA_64.unwind_info - (they're now handled via ia64_elf_section_type. - - * config/tc-ia64.c (unwind): New members saved_text_seg, - saved_text_subseg, and force_unwind_entry. - (optimize_unw_records): New function to optimize away unnecessary - unwind directives. - (ia64_elf_section_type): New function. - (output_unw_records): Generate unwind info only if the size is - non-zero or if it's forced for some other reason (e.g., - handlerdata or a personality routine). - (generate_unwind_image): Don't switch back to previous - section---stay inside the unwind info section instead so that - handlerdata that may follow goes into the right place. - (dot_handlerdata): Force generation of unwind entry and save the - current active text segment before generating unwind image. - (dot_unwentry): Force generation of unwind entry. - (dot_personality): Ditto. - (dot_endp): Generate unwind table entry only if there is - some unwind info or the unwind entry was forced. - - * config/tc-ia64.c (make_unw_section_name): New macro to form - unwind section name. - (generate_unwind_image): Add "text_name" argument. Use it to - form unwind section name. - (dot_handlerdata): Determine current segment (section) name and - pass it to generate_unwind_image(). - (dot_endp): Determine current segment (section) name and use - it to determine the appropriate unwind section name. - (ia64_md_do_align): Add missing ATTRIBUTE_UNUSED declarations to - n, fill, and max arguments. - -2001-02-09 Schwidefsky - - * Makefile.am: Add linux target for S/390. - * configure.in: Likewise. - * config/tc-s390.c: New file. - * config/tc-s390.h: New file. - -2001-02-09 Alexandre Oliva - - * config/tc-sh.c (md_pseudo_table): Add uaquad. Use s_uacons for - 2byte, 4byte and 8byte. - -2001-02-08 Alan Modra - - * config/tc-hppa.c (pa_build_unwind_subspace): Don't call - md_number_to_chars with size > sizeof (valueT). - -2001-02-06 H.J. Lu - - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if - there is no relocation. - -2001-02-06 H.J. Lu - - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): New. Defined. - - * config/tc-ia64.c (md_parse_option): Only accept the valid - ia64 options on "-axxx". - -2001-02-05 Jim Wilson - - * config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of - aborting for invalid operands. - -2001-02-06 Alan Modra - - * config/tc-hppa.c (fix_new_hppa): Pass in unwind directly rather - than via pointer. Update all callers. - (UNWIND_LOW32): Define. - (UNWIND_HIGH32): Define. - (pa_build_unwind_subspace): Use the above macros instead of dumping - bitfields directly. Call frag_more once rather than multiple times. - (md_assemble): Use UNWIND_LOW32. - (pa_entry): Likewise - (pa_procend): Likewise. - (process_exit): Use UNWIND_HIGH32. - -2001-02-04 Stephane Carrez - - * config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header - function to select the header according to the cpu. - (md_after_pass_hook, md_do_align): Remove. - (md_cleanup, m68hc11_cleanup): Remove. - (md_pcrel_from_section): Declare. - * config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size. - (build_jump_insn, build_insn): Likewise. - (m68hc11_listing_header): New function. - (m68hc11_cleanup): Remove. - -2001-02-02 Stephane Carrez - - * config/tc-m68hc11.c (relaxable_symbol): Relax externally visible - symbols because there is no support for shared libraries and these - symbols can't be overridden (unless they are weak). - -2001-02-01 Momchil Velikov - - * dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations - for the compilation unit with a zero byte. - -2001-01-30 Alan Modra - - * config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute - destinations. Correct range check for 17 and 22 bit branches. - -2001-01-25 Nick Clifton - - * config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is - still set. Issue an error message instead. - (md_estimate_size_before_relax): Delete unused variable - 'buffer_address'. Fixup parentheses around if statement. - -2001-01-23 Kazu Hirata - - * as.c: Fix formatting. - * ehopt.c: Likewise. - * messages.c: Likewise. - * stabs.c: Likewise. - * symbols.c: Likewise. - -2001-01-23 Ben Elliston - - * config/tc-m32r.c (m32r_handle_align): Declare type of fragp. - -2001-01-22 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - -2001-01-19 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - -2001-01-18 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - -2001-01-18 Nick Clifton - - * config/tc-arm.c (ldm_flags): Remove redundant bit from "fa" and - "da" flags. - (stm_flags): Remove redundant bit from "ed" and "da" flags. - -2001-01-18 Alexandre Oliva - - * configure.in (cpu_type, arch): Match i386 too. - * configure: Rebuilt. - -2001-01-16 Kazu Hirata - - * config/tc-i386.c: Fix formatting. - -2001-01-16 Alan Modra - - * config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32 - relocs for .PARISC.unwind section. - - * config/tc-hppa.c (pa_build_unwind_subspace): Build unwind - depending on section flags, not just for .text. - -2001-01-15 Jim Wilson - - * config/tc-ia64.c (ia64_flush_insns): Handle unwind directives - not immediately followed by an instruction. - -2001-01-15 Kazu Hirata - - * config/tc-m68hc11.c: Fix formatting. - -2001-01-15 Nick Clifton - - * symbols.c (colon): Change 'already defined symbol' from a - fatal error to an ordinary error. There is no reason why this - error should be fatal. - - * message.c (as_fatal): Delete output file, if one has been - created. - -2001-01-14 Alan Modra - - * config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants. - -2001-01-14 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - * config/tc-arc.c: Likewise. - * config/tc-arc.h: Likewise. - * config/tc-d10v.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - - * config/tc-arc.c: Fix formatting. - - * config/tc-arc.c: Fix formatting. - -2001-01-14 Alan Modra - - * config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for - both 32 and 64 bit ELF. - - * config/tc-hppa.c (pa_ip): Store `a' flag in bit zero of operand - and don't bother storing `m' for "ce" completer. Tidy handling of - 'J' and 'K' operands to suit. Handle '<' and '>' operands. - -2001-01-14 Jan Hubicka - - * config/tc-i386.h (TARGET_MACH): New macro. - (i386_mach): Declare. - * config/tc-i386.c (i386_mach): New function. - -2001-01-13 Philip Blundell - - * doc/as.texinfo: Fix spelling and cross-references. - - * doc/c-arm.texi: Fix typos. Say that `;' is a line separator - character for all systems, not just GNU/Linux. Make it explicit - that `-k' doesn't affect code generation, just ELF flags. - -2001-01-13 Jan Hubicka - - * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary - instructions. - -2001-01-12 Frank Ch. Eigler - - * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn. - -2001-01-12 Nick Clifton - - * as.c (print_args): Update copyright date to 2001. - -2001-01-12 Peter Targett - - * doc/c-arc.texi: New file. - Some sections to be expanded. - -2001-01-12 Alan Modra - - * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF. - (md_parse_option): Always accept "--32". - -2001-01-11 Peter Targett - - * as.h (TC_ARC): Ensure struc-symbol.h included. - * as.c (dwarf2dbg.h): Include to remove implicit declaration - warnings. - * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define. - (TARGET_SYMBOL_FIELDS) added. - - * doc/Makefile.am (CPU_DOCS): Added c-arc.texi. - * doc/c-arc.texi: New file. - Some sections to be expanded. - * doc/as.texinfo: Update command-line options. - Removed outdated text for ARC dependant features, instead include - text from above file. - - * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag. - (TARGET_SYMBOL_FIELDS): Alias to previous definition. - (targ-cpu.h) header. - * config/tc-arc.h: - * config/tc-arc.c: New updated configuration for - ARC, including selection of core variants, and extensibility of - instructions, registers etc. through directives. - - * config/tc-arc.c (arc_extinst): Minor corrections for - error messages. - (arc_common) Likewise. Make alignment argument optional for local - symbols also, with default of zero. - -2001-01-11 Stephane Carrez - - * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix - STATE_INDEXED_OFFSET when the symbol is undefined (16-bit offset). - (build_indexed_byte): Don't relax indexed byte, use 16-bit offset - and fix_new_exp() instead. - (md_convert_frag): For indexed post byte use the symbol value - rather than the displacement. - (md_relax_table): Fix indexed offset relax. - -2001-01-11 Stephane Carrez - - * config/tc-m68hc11.c (md_estimate_size_before_relax):Don't - relax weak symbols. - (relaxable_symbol): New function. - -2001-01-11 Andreas Jaeger - - * config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's - not used anywhere. - -2001-01-10 Nick Clifton - - * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF. - * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF - -2001-01-10 Nick Clifton - - * symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic - character used to dollar local symbols. - (LOCAL_LABEL_CHAR): New constant - the magic character used to - local label symbols. - (dollar_label_name): Use DOLLAR_LABEL_CHAR. - (fb_label_name): Prefix local labels with LOCAL_LABEL_PREFIX, - if defined. - Use LOCAL_LABEL_CHAR. - (decode_local_label_name): Skip LOCAL_LABEL_PREFIX. - Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. - (S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. - -2001-01-08 Bo Thorsen - - * config/tc-i386.c (i386_immediate, i386_displacement): - GOTPCREL check fix. - -2001-01-07 Ian Lance Taylor - - * doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted - in last change. - -2001-01-07 Philip Blundell - - * doc/as.texinfo (Bug Reporting): Update email address for - reports. - * README: Likewise. - -2001-01-06 Jan Hubicka - - * configure.in: Define DEFAULT_ARCH for i386. - * config/tc-i386.c (md_assemble): Return after the error message; - move testing for 64bit operands to proper place. - -2001-01-06 Jan Hubicka , Andreas Jaeger - - * doc/as.texinfo: Document '#' as comment character for i386 and - x86_64. Add AMD x86-64 into menu of machine dependent information. - - * doc/c-i386.texi: Document x86_64 extensions. - -2001-01-05 Jan Hubicka - - * config/tc-i386.c (md_assemble): Handle third byte of the opcode as prefix. - -2001-01-04 Jan Hubicka - - * config/tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry. - * NEWS: Add note about Pentium4 support. - -2001-01-04 Jan Hubicka - - * config/tc-i387.c (pi, pte, pt): Update. - (type_names): Add new types. - -2001-01-03 Jan Hubicka - - * config/tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow, - CpuUnknown): Renumber - (CpuP4, CpuSSE2): New. - (CpuUnknownFlags): Add CpuP4 and CpuSSE2 - -2001-01-03 Philip Blundell - - * config/tc-alpha.c (alpha_force_relocation): Handle vtable - relocs. - (alpha_fix_adjustable): Likewise. - (md_apply_fix): Likewise. - -2000-12-31 H.J. Lu - - * listing.c (listing_message): Allocate string only if it is - used. - - * configure: Rebuild. - -2000-12-31 Hans-Peter Nilsson - - * doc/internals.texi (Relaxing with a table) : - Point out caveats with generating fixups for the opcode in a frag. - -2000-12-30 Jan Hubicka - - * configure.in: Add support for x86_64 and x86_64-*-linux-gnu* - * NEWS: Add x86_64. - -2000-12-29 H.J. Lu - - * listing.c (calc_hex): Print the variable part only if the - fragment type is rs_fill. - -2000-12-29 Hans-Peter Nilsson - - * doc/internals.texi (tc_conditional_pseudoop, - TC_LINKRELAX_FIXUP): Fix typos. - -2000-12-28 Richard Henderson - - * write.c (subsegs_finish): Fix thinko last change -- don't - "optimize" the alignment == 0 case. - -2000-12-28 Richard Henderson - - * as.h (rs_align_test): New. - * frags.c (NOP_OPCODE): Move default from read.c. - (MAX_MEM_FOR_RS_ALIGN_CODE): New default. - (frag_align_code): New. - * frags.h (frag_align_code): Declare. - * read.c (NOP_OPCODE): Remove. - (do_align): Use frag_align_code. - * write.c (NOP_OPCODE): Remove. - (get_recorded_alignment): New. - (cvt_frag_to_fill): Handle rs_align_test. - (relax_segment): Likewise. - (subsegs_finish): Align last subseg in section to the - section alignment. Use frag_align_code. - * write.h (get_recorded_alignment): Declare. - * config/obj-coff.c (size_section): Handle rs_align_test. - (fill_section, fixup_mdeps): Likewise. - (write_object_file): Use frag_align_code. - - * config/tc-alpha.c (alpha_align): Use frag_align_code. - (alpha_handle_align): New. - * config/tc-alpha.h (HANDLE_ALIGN): New. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-i386.h (md_do_align): Use frag_align_code. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-ia64.c (ia64_md_do_align): Don't do code alignment. - (ia64_handle_align): New. - * config/tc-ia64.h (HANDLE_ALIGN): New. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-m32r.c (m32r_do_align): Remove. - (m32r_handle_align): New. - (fill_insn): Use frag_align_code. - * config/tc-m32r.h (md_do_align): Remove. - (HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New. - * config/tc-m88k.c, config/tc-m88k.h: Similarly. - * config/tc-mips.c, config/tc-mips.h: Similarly. - - * config/tc-sh.c (sh_cons_align): Use rs_align_test. - (sh_handle_align): Likewise. Handle rs_align_code. - (sh_do_align): Remove. - * config/tc-sh.h (md_do_align): Remove. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-sparc.c (sparc_cons_align): Use rs_align_test. - (sparc_handle_align): Likewise. Handle rs_align_code. - * config/tc-sparc.h (md_do_align): Remove. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - -2000-12-22 DJ Delorie - - * config/tc-d10v.c (md_assemble): set prev_seg and prev_subseg - when we assemble the first half of a pair. - -2000-12-22 H.J. Lu - - * config/tc-i386.c (reloc): Update the macro for non-bfd - assembler. - (BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler. - -2000-12-22 H.J. Lu - - * dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER. - -2000-12-20 Jan Hubicka - - * config/tc-i386.h (i386_target_format): Define even for ELFs. - (QWORD_MNEM_SUFFIX): New macro. - (CpuK6,CpuAthlon,CpuSledgehammer, Cpu64, CpuNo64, CpuUnknownFlags): - New macros - (CpuMMX,CpuSSE,Cpu3dnow, CpuUnknown): Renumber. - (IgnoreSize, DefaultSize, No_?Suf, FWait, IsString, regKludge, IsPrefix, - ImmExt): Renumber. - (Size64, No_qSuf, NoRex64, Rex64): New macros. - (Reg64, Imm32S, Imm64, Disp32S, Disp64): New macros. - (Imm8, Imm8S, Imm16, Imm32, Imm1, BaseIndex, Disp8, Disp16, Disp32, - InOutPortReg,ShiftCount, Control, Debug, Test, FloatReg, FloatAcc, - SReg2, SReg3, Acc, JumpAbsolute, RegMMX, RegXMM, EsSeg, InvMem): - Renumber. - (Reg, WordReg): Add Reg64. - (Imm): Add Imm32S and Imm64. - (EncImm): New. - (Disp): Add Disp64 and Disp32S. - (AnyMem): Add Disp32S. - (RegRex, RegRex64): New macros. - (rex_byte): New type. - * config/tc-i386.c (set_16bit_code_flag): Kill. - (fits_in_unsigned_long, fits_in_signed_long): New functions. - (reloc): New parameter "signed"; support x86_64. - (set_code_flag): New. - (DEFAULT_ARCH): New macro; default to "i386". - (default_arch): New static variable. - (struct _i386_insn): New fields Operand_PCrel; rex. - (flag_16bit_code): Kill; All tests replaced to "flag_code == CODE_64BIT" - (flag_code): New enum and static variable. - (use_rela_relocations): New static variable. - (flag_code_names): New static variable. - (cpu_arch_flags): Default to CpuUnknownFlags|CpuNo64. - (cpu_arch): Add "sledgehammer"; Add CPUAthlon to Athlon and CpuK6 to - K6 and Athlon. - (i386_align_code): Return plain "nop" for x86_64. - (mode_from_disp_size): Support Disp32S. - (smallest_imm_type): Support Imm32S and Imm64. - (offset_in_range): Support size of 8. - (set_cpu_arch): Do not clobber to Cpu64/CpuNo64. - (md_pseudo_table): Add "code64"; use set_code_flat. - (md_begin): Emit sane error message on hash failure. - (tc_i386_fix_adjustable): Support x86_64 relocations. - (md_assemble): Support QWORD_MNEM_SUFFIX, REX registers, - instructions supported on particular arch just partially, - output of 64bit immediates, handling of Imm32S and Disp32S type. - (i386_immedaite): Support x86_64 relocations; support 64bit constants. - (i386_displacement): Likewise. - (i386_index_check): Cleanup; support 64bit addresses. - (md_apply_fix3): Support x86_64 relocation and rela. - (md_longopts): Add "32" and "64". - (md_parse_option): Add OPTION_32 and OPTION_64. - (i386_target_format): Call even for ELFs; choose between - elf64-x86-64 and elf32-i386. - (i386_validate_fix): Refuse GOTOFF in 64bit mode. - (tc_gen_reloc): Support rela relocations and x86_64. - (intel_e09_1): Support QWORD. - -2000-12-15 Diego Novillo - - * config/tc-i386.c (intel_e09_1): Only flag as a memory operand if - it's not an offset expression. - (intel_e10_1): Ditto. Also, if the operand is an offset expression, - keep the braces '[' and ']' in the output string. - (intel_e11): Ditto. Also remove comparison intel_parser.op_modifier - != FLAT. There is no such op_modifier. - -2000-12-14 Michael Sokolov - - * dwarf2dbg.c: If we don't have , try including - if we have it. - -2000-12-13 Kazu Hirata - - * as.h: Fix formatting. - * cgen.h: Likewise. - * dwarf2dbg.c: Likewise. - * input-scrub.c: Likewise. - * read.h: Likewise. - -2000-12-13 Mark Elbrecht - - * configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes. - configure: Regenerate. - -2000-12-13 Michael Sokolov - - * dwarf2dbg.c: #include only if it exists. - -2000-12-13 Rodney Brown - - * config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo. - (md_apply_fix): Here too. - -2000-12-12 Jim Wilson - - * config/tc-ia64.h (ia64_init): Add prototype. - -2000-12-12 H.J. Lu - - * dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined. - - * read.h (outputting_stabs_line_debug): Change it to int. - * stabs.c (outputting_stabs_line_debug): Likewise. - -2000-12-12 Geoffrey Keating - - * config/obj-bout.c (obj_crawl_symbol_chain): Don't take - the address of a function result. - -2000-12-12 Franz Sirl - - * config/tc-ppc.c (md_pseudo_table): Add .file and .loc. - (md_assemble): Call dwarf2_emit_insn. - (shlib): Fix typo SHILB -> SHLIB. - (md_parse_option): Likewise. - (ppc_elf_validate_fix): Likewise: - * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - -2000-12-12 Nick Clifton - - * cgen.h: Fix formatting. - * input-scrub.c: Fix formatting. - * macro.c: Fix formatting. - * config/tc-mips.c: Fix formatting. - * doc/c-mips.texi: Fix formatting. - -2000-12-11 Jan hubicka - - * config/tc-i386.c (md_assemble): Refuse 's' and 'l' suffixes in the intel - mode; convert 'd' suffix to 's' or 'l'; remove all DWORD_MNEM_SUFFIX - references. - (intel_e09_1): Convert QWORD to 'l' suffix for FP operations; refuse - otherwise. - * config/tc-i386.h (DWORD_MNEM_SUFFIX): Kill. - (No_dSuf): Kill. - - * i386.h (*_Suf): Remove No_dSuf. - (d_suf, wld_Suf,sld_Suf, sldx_Suf, bwld_Suf, d_FP, sld_FP, sldx_FP) - Remove. - (i386_optab): Remove 'd' in the suffixes. - -2000-12-06 Mark Elbrecht - - * config/tc-i386.c (T_SHORT): Undefine before defining. - -2000-12-05 Kazu Hirata - - * config/tc-mips.c: Fix formatting. - -2000-12-04 Matthew Hiller - - * config/tc-d10v.c (flag_allow_gstabs_packing): New variable. - (md_longopts): New options --gstabs-packing, --no-gstabs-packing. - (md_show_usage): Ditto. - (md_parse_option): Ditto. - (d10v_cleanup): Writes pending instruction only if - ! outputting_stabs_line_debug || ! flag_allow_gstabs_packing. - Fix compile time warning messages. - - * doc/c-d10v.texi: Documents new options. - -2000-12-04 Matthew Hiller - - * stabs.c (outputting_stabs_line_debug): New variable. - (stabs_generate_asm_lineno): Set outputting_stabs_line_debug at - function entry and unset at function exit. - - * read.h (outputting_stabs_line_debug): New extern declaration. - - * as.c: Include dwarf2dbg.h for definition of dwarf2_finish. - - * dwarf2dbg.c: Fix compile time warning messages. - -2000-12-03 Kazu Hirata - - * config/tc-a29k.c: Fix formatting. - * config/tc-alpha.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-cris.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - -2000-12-01 Chris Demetriou - - * config/tc-mips.c (mips_ip): When calculating offsets, - don't accept as constant the difference between the - addresses of symbols in two different sections. - - * config/tc-mips.c (macro_build): Add new 'U' and 'J' operand - specifiers. - (validate_mips_insn): Likewise. Also, update 'B' operand - specifier to use OP_*_CODE20 constants and delete 'm' operand - specifier. - (mips_ip): Remove 'm' operand specifier, add 'U' and 'J' - operand specifiers. Change warning generated by 'B' operand - specifier to reflect its new multi-purpose usage. - - * config/tc-mips.c (mips_set_options): Use ISA_UNKNOWN rather than - -1, and update comment. - (file_mips_isa): Likewise. - (mips_cpu): Use CPU_UNKNOWN rather than -1, and update comment. - (ISA_HAS_COPROC_DELAYS, ISA_HAS_64BIT_REGS, gpr_interlocks): Use - ISA_* constants rather than hard-coded numbers. - (mips_cpu_info): New structure. - (mips_cpu_info_table): New table describing CPU and ISA names - and numbers. - (mips_cpu_info_from_name, mips_cpu_info_from_isa, - mips_cpu_info_from_cpu): New functions. - (mips_isa_to_str): New function to get string for ISA name. - (mips_cpu_to_str): Convert to use mips_cpu_info_from_cpu, and - return const char *. - (md_begin): Redo CPU and ISA selection logic, using - mips_cpu_info_from_*. Convert to use ISA_* constants rather - than hard-coded numbers. - (append_insn, mips_emit_delays, macro, macro2): Convert to use - ISA_* constants rather than hard-coded numbers. - (mips_ip): Convert to use mips_isa_to_str to get ISA name. - (md_longopts): Delete OPTION_NO_MIPS32. - (md_parse_option): Convert to use ISA_* constants rather than - hard-coded numbers. Make OPTIONS_MIPS32 case treat MIPS32 - as an ISA. Delete OPTION_NO_MIPS32 case. Convert OPTION_MCPU - to use strcasecmp to recognize "default" and to use - mips_cpu_info_from_name to get CPU numbers from argument. - (md_show_usage): Move -mips32 so it's with the rest of the ISA - flags. Change 4Kc, 4Kp and 4Km CPU entries to just be - mips32-4k. - (s_mipsset): Accept ISA value 32. - * doc/as.texinfo: Clean up MIPS options summary slightly, - remove -no-mips32. Add note about -mips4 and -mips32 - specifying those ISA levels. Delete -mips32 and -no-mips32 - cpu flag descriptions. - * doc/c-mips.texi: Add -mips32 to list of ISA switches. Clean - up the supported CPU switch list, and replace 4Kc, 4Km, and - 4Kp entries with a single mips32-4k entry. Note that you can - use ".set mips32". - - * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add checks for ISA_MIPS5 and - ISA_MIPS64. - (md_longopts, OPTION_MIPS5, OPTION_MIPS64): Add options for - -mips5 and -mips64. - (md_parse_option): Add cases for OPTION_MIPS5 and - OPTION_MIPS64. - (md_show_usage): Mention -mips5 and -mips64 arguments. - (s_mipsset): Add cases for MIPS5 and MIPS64. - (mips_cpu_info_table): Add entries for MIPS5 and MIPS64 ISAs - and pseudo-CPUs. - * doc/as.texinfo: Mention -mips5 and -mips64 options - and their meanings. - * doc/c-mips.texi: Likewise. Also update introduction - and ".set" usage information. - - * config/tc-mips.c (md_show_usage): Add "sb1" to the - CPU list. - (mips_cpu_info_table): Add SB-1 entries. - * doc/c-mips.texi: Add "sb1" to the list of CPUs - known to the -mcpu option. - - * doc/as.texinfo: Correct description of MIPS -mcpu - option, by copying some of the text from doc/c-mips.texi. - -2000-12-01 Joel Sherrill - - * configure.in (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*): - New targets. - (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. - (sparc*-*-rtems*): Switched from a.out to ELF. - * configure: Regenerate. - * config.in: Regenerate. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * po/gas.pot: Regenerate. - -2000-11-30 Philip Blundell - - * config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists, - even in non BFD_ASSEMBLER case. - -2000-11-30 Diego Novillo - - * config/tc-i386.c (md_assemble): Swap i.disp_relocs when using intel - syntax. - -2000-11-29 Richard Henderson - - * dwarf2dbg.c: Rewrite from scratch. Queue all debugging output - until dwarf2_finish; use relaxation to get cross-fragment offsets; - thread multiple subsegments properly; handle multiple code - sections properly; emit proper compilation unit info for assembler - generated debugging. - - * as.h (enum _relax_state): Add rs_dwarf2dbg. - * dwarf2dbg.h (struct dwarf2_line_info): Remove filename. - (dwarf2dbg_estimate_size_before_relax): Declare. - (dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare. - * write.c: Include dwarf2dbg.h. - (cvt_frag_to_fill): Handle rs_dwarf2dbg. - (relax_segment): Likewise. - -2000-11-28 Hans-Peter Nilsson - - * config/tc-sh.c (md_convert_frag) : Use as_bad_where instead of as_bad. Tweak error message - accordingly. Stabilize frag by updating fix part and resetting - variant part. - : Ditto. - (sh_elf_cons): Cast *input_line_pointer to unsigned char when - indexing is_end_of_line[]. - (md_assemble): Initialize size to 0. - (md_section_align): Mark parameter seg as unused. - (parse_reg): Parse names case-insensitively. - -2000-11-28 Kazu Hirata - - * config/obj-aout.h: Fix formatting. - * config/obj-bout.h: Likewise. - * config/obj-coff.c: Likewise. - * config/obj-coff.h: Likewise. - * config/obj-elf.h: Likewise. - * config/obj-som.h: Likewise. - * config/obj-vms.c: Likewise. - * config/obj-vms.h: Likewise. - * config/tc-h8300.h: Likewise. - * config/tc-ns32k.h: Likewise. - * config/tc-sparc.h: Likewise. - * config/tc-tic54x.h: Likewise. - * config/tc-z8k.h: Likewise. - -2000-11-28 Nick Clifton - - * doc/as.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. - -2000-11-28 Hans-Peter Nilsson - - * Makefile.am (CPU_OBJ_VALID): Add case to filter out invalid coff - targets. Remove i860 from valid a.out targets. - * Makefile.in: Regenerate. - - * config/tc-cris.c: Include dwarf2dbg.h. - (md_pseudo_table): Add .file and .loc. - (md_assemble): Call dwarf2_emit_insn if generating ELF. - (s_cris_file, s_cris_loc): New. - * config/tc-cris.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-11-28 Alan Modra - - * expr.c (STANDARD_MUL_PRECEDENCE): Correct value. - (MRI_MUL_PRECEDENCE): Likewise. - (op_rank): Fix a comment typo. - -2000-11-26 Stephane Carrez - - * config/tc-m68hc11.c (build_indexed_byte): Print the offset in - the error message. - (get_operand): Fix analysis for movw/movb instructions. - -2000-11-24 Nick Clifton - - * configure.in (xscale-elf): Add target. - (xscale-coff): Add target. - * configure: Regenerate. - - * config/tc-arm.c (ARM_EXT_V5E): New ARM architecture - extenstion. - (ARM_EXT_XSCALE): New ARM architecture extension. - (ARM_LONGMUL): Rename to ARM_EXT_LONGMUL. - (ARM_HALFWORD): Rename to ARM_EXT_HALFWORD. - (ARM_THUMB): Rename to ARM_EXT_THUMB. - (ARM_ARCH_V4): Remove processor from architecture. - (ARM_ARCH_3M): New architecutre definition. - (ARM_ARCH_V5TE): New architecutre definition. - (ARM_ARCH_XSCALE): New architecutre definition. - (CPU_DEFAULT): Allow to be defaulted to XScale. - (atpcs): New boolean variable. - (ldr_flags): Support 'd' flag for double word loads. - (str_flags): Support 'd' flag for double word stored. - (do_mia): New function. - (do_mar): New function. - (do_mra): New function. - (do_pld): New function. - (do_ldrd): New function. - (do_blx): New function. - (do_bkpt): New function. - (do_clz): New function. - (do_lstc2): New function. - (do_cdp2): New function. - (do_t_blx): New function. - (do_t_bkpt): New function. - (do_smla): New function. - (do_smlal): New function. - (do_smul): New function. - (do_qadd): New function. - (do_co_reg2c): New function. - (LONGEST_INSN): Redefine to 7. - - * doc/c-arm.texi: Document -mxscale, -mmarmv5te and -matpcs - command line switches. - -2000-11-22 Jim Wilson - - * config/tc-ia64.c (pseudo_func): Add missing initializers. - (struct rsrc): Make line unsigned. - (gr_values): Add missing initializer. - (SLOT_NUM_NOT_SET): Add unsigned cast. - (ia64_elf_section_flags, output_vbyte_mem, count_output, dot_radix, - dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save, - dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata, - dot_unwentry, dot_altrp, dot_saveg, dot_savef, dot_saveb, dot_savegf, - dot_spill, dot_spillreg, dot_spillreg_p, dot_label_state, - dot_copy_state, dot_unwabi, dot_personality, dot_proc, dot_body, - dot_prologue, dot_endp, dot_regstk, dot_psr, dot_alias, dot_ln, - dot_reg_val, dot_entry, dot_mem_offset, ia64_init, mark_resource, - md_undefined_symbol, md_apply_fix3, tc_gen_reloc, ia64_md_do_align): - Add ATTRIBUTE_UNUSED to unused parameters. - (convert_expr_to_ab_reg): Add parens. - (convert_expr_to_xy_reg): Add parens. Comment out >= REG_GR test. - (dot_prologue): Initialize grsave when declared. - (md_pseudo_table): Add missing initializers. - (operand_match): Add casts to bfd_vma. - (emit_one_bundle): Delete unused local prev. Make required_template - unsigned. - (specify_resource): Cast i to unsigned. - (note_register_values): Use fprintf_vma. - (print_dependency): Likewise. - -2000-11-21 Jim Wilson - - * config/tc-ia64.c (generate_unwind_image): Call record_alignment - for unwind info section. - (dot_endp): Likewise for unwind section. - - * config/tc-ia64.c (emit_one_bundle): Pass size of 8 not 4 to - fix_new_exp. - -2000-11-21 Jakub Jelinek - - * config/tc-sparc.c (md_pseudo_table): Add .file and .loc. - (output_insn): Call dwarf2_emit_insn. - * config/tc-sparc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - -2000-11-17 Richard Henderson - - * ehopt.c (eh_frame_code_alignment): New arg `in_seg', update all - callers. Don't switch segments. Expect CIE == -1 in .debug_frame. - (check_eh_frame): Handle .eh_frame and .debug_frame concurrently. - -2000-11-17 Nick Clifton - - * config/tc-arm.c (md_pseudo_table): Add support for .line and - .file pseudo ops. - -2000-11-17 Richard Henderson - - * config/tc-i386.c (md_pseudo_table): Add .file and .loc. - -2000-11-17 Richard Henderson - - * dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number. - * config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for - tri-state definition of alpha_flag_mdebug. - * config/tc-alpha.c (alpha_flag_mdebug): Init to -1. - (s_alpha_file): Store first .file directive. - (s_alpha_stab): New. - (md_pseudo_table): Add stabs and stabn. - -2000-11-17 Richard Henderson - - * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn. - -2000-11-17 Richard Henderson - - * as.c (debug_type): Init to DEBUG_UNSPECIFIED. - (main): Call dwarf2_finish. - * as.h (debug_type): Clarify documentation of the meaning - of this variable. - * dwarf2dbg.c (DWARF2_LINE_MIN_INSN_LENGTH): Default to 1. - (print_stats): Fix parenthesis problem. - (now_subseg_size): New. - (dwarf2_finish): Use it. If DEBUG_DWARF2, emit bits for .debug_info. - (dwarf2_directive_file): Don't set debug_type. - (dwarf2_where): Honor DEBUG_DWARF2 first. - (dwarf2_emit_insn): Renamed from dwarf2_generate_asm_lineno; - do nothing if not emitting dwarf2 debug info, or no work. - * dwarf2dbg.h (dwarf2_emit_insn): Update. - * ecoff.c (add_file): Turn on DEBUG_ECOFF only if DEBUG_UNSPECIFIED. - (ecoff_new_file): Likewise. - * read.c (generate_lineno_debug): Kill ecoff hackery. Update - commentary wrt dwarf2. - - * config/tc-alpha.c (alpha_adjust_symtab_relocs): Add - ATTRIBUTE_UNUSED as needed. - (emit_insn): Call dwarf2_emit_insn. - (s_alpha_file): New. - (s_alpha_loc): New. - (s_alpha_coff_wrapper): Don't handle them. - (md_pseudo_table): Update for .file and .loc. - * config/tc-alpha.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - - * config/tc-arm.c (output_inst): Update for dwarf2_emit_insn; - don't protect with debug_type. - * config/tc-hppa.c (md_assemble): Likewise. - * config/tc-m68hc11.c (m68hc11_new_insn): Likewise. - * config/tc-mn10300.c (md_assemble): Likewise. - * config/tc-sh.c (md_assemble): Likewise. - * config/tc-v850.c (md_assemble): Likewise. - - * config/tc-arm.c (arm_end_of_source): Remove. - * config/tc-hppa.c (pa_end_of_source): Remove. - * config/tc-m68hc11.c (m68hc11_end_of_source): Remove. - * config/tc-mn10300.c (mn10300_finalize): Remove. - * config/tc-sh.c (sh_finalize): Remove. - * config/tc-v850.c (sh_finalize): Remove. - - * config/tc-arm.h (md_end): Remove. - * config/tc-hppa.h (md_end): Remove. - (DWARF2_LINE_MIN_INSN_LENGTH): New. - * config/tc-m68hc11.h (md_end): Remove. - * config/tc-mn10300.h (md_end): Remove. - * config/tc-sh.h (md_end): Remove. - * config/tc-v850.h (md_end): Remove. - - * config/tc-ia64.c (emit_one_bundle): Don't protect - dwarf2 bits with debug_type. - (md_assemble): Likewise. - (ia64_end_of_source): Don't call dwarf2_finish. - -2000-11-16 Jim Wilson - - * config/tc-ia64.c (errata_nop_necessary_p): Abort if general regno - >= 128 instead of > 128. Abort if predicate regno is >= 64 instead of - > 16. - -2000-11-16 H.J. Lu - - * config/obj-elf.c (obj_elf_symver): Don't check the missing - version name. - -2000-11-15 Kazu Hirata - - * config/tc-tic30.c: Fix formatting. - * config/tc-tic80.c: Likewise. - * config/tc-v850.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - -2000-11-14 DJ Delorie - - * config/tc-v850.c: Support dwarf2. - * config/tc-v850.h: Ditto. - - * config/tc-v850.c (cons_fix_new_v850): Don't rely on - parse_cons_expression_v850 to initialize hold_cons_reloc. - -2000-11-15 Bernd Schmidt - - * config/tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX. - (errata_nops_necessary_p): New function. - (emit_one_bundle): Call it. Update the GROUP_IDX field in struct - md. - -2000-11-14 Jim Wilson - - * config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then - return little endian bfd formats. - -2000-11-14 Kazu Hirata - - * config/aout_gnu.h: Fix formatting. - * config/atof-vax.c: Likewise. - * config/m68k-parse.h: Likewise. - * config/m88k-opcode.h: Likewise. - * config/obj-elf.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-cris.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/te-386bsd.h: Likewise. - * config/te-hppa.h: Likewise. - * config/te-nbsd.h: Likewise. - * config/te-ppcnw.h: Likewise. - * config/te-sparcaout.h: Likewise. - * config/te-tmips.h: Likewise. - * config/vax-inst.h: Likewise. - * config/vms-conf.h: Likewise. - -2000-11-14 Jakub Jelinek - - * config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits. - -2000-11-13 H.J. Lu - - * config/obj-elf.c (elf_frob_symbol): Support - ".symver name,name2@@@nodename". - (elf_frob_file_before_adjust): Likewise. - - * doc/as.texinfo: Updated for ".symver name,name2@@@nodename" - and ".symver name,name2@@@nodename". - Fix a typo. - -2000-11-12 H.J. Lu (hjl@gnu.org) - - * config/obj-elf.c (obj_elf_symver): Check missing version - name. - -2000-11-12 H.J. Lu (hjl@gnu.org) - - * dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT - instead of bfd_vma for non-bfd assemblers. - -2000-11-09 Kazu Hirata - - * itbl-ops.c: Fix comment typos. - -2000-11-08 Jim Wilson - - * config/tc-ia64.c (struct unw_rec_list): Add slot_frag field. - (struct unwind): Add next_slot_frag field. - (slot_index): New parameters slot_frag and first_frag. Add code - to add in frag sizes when different. Add comments. - (fixup_unw_records): New locals first_frag and last_frag. Pass new - arguments to slot_index. - (emit_one_bundle): Set slot_frag field. Set next_slot_number after - loop end. Set next_slot_frag field. - -2000-11-07 H.J. Lu - - * doc/as.texinfo (.symver): Updated for versioned symbol - reference. - - * obj.h (format_ops): Add the frob_file_before_adjust field. - - * config/obj-aout.c (aout_format_ops): Set the - frob_file_before_adjust field to 0. - * config/obj-coff.c (coff_format_ops): Likewise. - * config/obj-ecoff.c (ecoff_format_ops): Likewise. - - * config/obj-elf.c (obj_elf_symver): Allow duplicated version - name. - (elf_frob_file_before_adjust): New function to remove unneeded - versioned symbols from the symbol table. - (elf_format_ops): Set the frob_file_before_adjust field to - elf_frob_file_before_adjust. - - * config/obj-elf.h (obj_frob_file_before_adjust): Defined if - not defined. - - * config/obj-multi.h (obj_frob_file_before_adjust): Defined. - -2000-11-07 Peter Targett - - * config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and - BIG_ENDIAN macros. - * config/tc-arc.c: Use S_IS_LOCAL to test local symbols. - Fix compile time warning messages. - -2000-11-07 Nick Clifton - - * stabs.c (generate_asm_file): Increase length of xmalloc'ed - buffer in order to avoid buffer overflows. - -2000-11-06 Steve Ellcey - - * config/tc-ia64.c (md_shortopts, md_parse_option, md_show_usage): - Change M to m for -milp32 or -mlp64 to match gcc. - (dot_endp): Use bytes_per_address instead of 8. - (emit_one_bundle): Use number_to_chars_littleendian instead of - md_number_to_chars. - (fix_insn): Likewise. - (ia64_init): New function. - (ia64_target_format): New function. - (md_begin): Set endianness, arch, and machine as appropriate. - * config/tc-ia64.h: (TARGET_BYTES_BIG_ENDIAN, md_number_to_chars): - Make these macros depend on TE_HPUX macro. - (TARGET_FORMAT): Define. - (HOST_SPECIAL_INIT): Define. - * config/te-hpux.h: New file. - * configure.in: Add "ia64-*-hpux*" target to configure. - * configure: Regenerate. - -2000-11-06 Kazu Hirata - - * as.c: Fix formatting. - * dwarf2dbg.c: Likewise. - * input-file.c: Likewise. - * input-file.h: Likewise. - * input-scrub.c: Likewise. - * itbl-ops.c: Likewise. - * listing.c: Likewise. - * macro.h: Likewise. - * messages.c: Likewise. - * read.c: Likewise. - * subsegs.c: Likewise. - * subsegs.h: Likewise. - * write.c: Likewise. - -2000-11-06 Nick Clifton - - * doc/as.texinfo: Add GNU Free Documentation License. - * doc/gasp.texi: Add GNU Free Documentation License. - * doc/as.1: Add GNU Free Documentation License. - -2000-11-05 Nick Clifton - - * config/tc-arm.c: Add include of "dwarf2dbg.h" - -2000-11-02 Per Lundberg - - * configure.in: Recognise i[3456]86-chaosdev-storm-chaos. - * configure: Regenerate. - -2000-11-01 Nick Clifton - - * read.c (original_case_string): New global variable. - (read_a_source_file): Copy opcode string into - original_case_string if clobbering the case of the opcode. - * read.h: Export the definition of original_case_string. - * config/tc-arm.c (md_assembler): When parsing a .req - directive use the original opcode string, not the case - clobbered version. - -2000-11-02 Nick Clifton - - * config/tc-mn10300.c (debug_line): Remove this static - variable. - (md_assemble): Call dwarf2_generate_asm_lineno instead of - dwarf2_where and dwarf2_gen_line_info. - -2000-11-02 Theo Honohan - - * config/tc-arm.c (do_msr): Improve error message. - -2000-10-31 Eric Christopher - - * config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved - or pc-relative, else use fx_offset. - -2000-10-31 Jim Wilson - - * config/tc-ia64.c (struct md): New field tag_fixups. - (ia64_flush_insns): Handle tag_fixups. Error if dangling - qualifying predicate. - (emit_one_bundle): Delete spurious multiplication by one. Handle - tag_fixups. - (ia64_start_line): Error if dangling qualifying predicate. - (defining_tag): New static variable. - (ia64_unrecognized_line, case '['): Parse tags. - (ia64_frob_label): Create tag_fixups. - (md_assemble): Reset md.qp.X_op after using it. - -2000-10-31 Kaz Kojima - - * config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094. - -2000-10-31 Bernd Schmidt - - * config/tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2. - -2000-10-30 Kazu Hirata - - * expr.c: Fix formatting. - * flonum-copy.c: Likewise. - * flonum.h: Likewise. - * gasp.c: Likewise. - * hash.c: Likewise. - -2000-10-30 Hans-Peter Nilsson - - * as.h (OPTION_MD_BASE): Bump to 190. - * as.c (parse_args) : Add comment about the need to - check OPTION_MD_BASE in as.h. - - * config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL - for weak symbols. - -2000-10-27 Nick Clifton - - * configure.in (emulations): Add m68hc12. - * configure: Regenerate. - * po/gas.pot: Regenerate. - -2000-10-27 Aldy Hernandez - - * config/tc-arm.c (psrs): Remove lowercase versions of spsr* and - cpsr*. - (arm_psr_parse): Handle lowercase CPSR and SPSR. - -2000-10-25 Nick Clifton - - * dwarf2out.c (dwarf2_generate_asm_lineno): New function: Generate - a DWARF2 line number information sequence. - - *dwarf2out.h: Add prototype for dwarf2_generate_asm_lineno. - - * read.c (generate_lineno_debug): Update comment describing why - DWARF2 line number debug information is not generated - automatically by this function. - - * doc/as.texinfo: Note that --gdwarf2 only works on some targets, - not all. - - * config/tc-arm.h (md_end): Define. - (DWARF2_LINE_MIN_INSN_LENGTH): Define. - - * config/tc-arm.c (output_inst): Call dwarf2_generate_asm_lineno - if generating DWARF2 line numbers. - (arm_end_of_source): New function. Call dwarf2_finish if - necessary. - - * config/tc-hppa.c (md_assemble): Use dwarf2_generate_asm_lineno. - * config/tc-m68hc11.c (m68hc11_new_insn): Use dwarf2_generate_asm_lineno. - * config/tc-sh.c (md_assemble): Use dwarf2_generate_asm_lineno. - -2000-10-25 Diego Novillo - - * config/tc-i386.c: Fix prototype declarations for functions taking no - arguments. - -2000-10-24 Diego Novillo - - * config/tc-i386.c (i386_operand_modifier): Remove. - (build_displacement_string): Remove. - (i386_parse_seg): Remove. - (i386_intel_memory_operand): Remove. - (i386_intel_operand): Re-write using recursive descent parser based - on MASM documentation. - (struct intel_parser_s): New structure. - (intel_parser): New static variable. - (struct intel_token): New structure. - (cur_token, prev_token): New static variables. - (T_NIL): Define. - (T_CONST): Define. - (T_REG): Define. - (T_BYTE): Define. - (T_WORD): Define. - (T_DWORD): Define. - (T_QWORD): Define. - (T_XWORD): Define. - (T_SHORT): Define. - (T_OFFSET): Define. - (T_PTR): Define. - (T_ID): Define. - (intel_match_token): New function. - (intel_get_token): New function. - (intel_putback_token): New function. - (intel_expr): New function. - (intel_e05): New function. - (intel_e05_1): New function. - (intel_e06): New function. - (intel_e06_1): New function. - (intel_e09): New function. - (intel_e09_1): New function. - (intel_e10): New function. - (intel_e10_1): New function. - (intel_e11): New function. - -2000-10-20 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p - instructions to loose any special insn->architecture mask. - - * config/tc-sparc.c (v9a_asr_table): Add v9b ASRs. - (sparc_md_end, sparc_arch_types, sparc_arch, - sparc_elf_final_processing): Handle v8plusb and v9b architectures. - (sparc_ip): Handle siam mode operands. Support v9b ASRs (and - request v9b architecture if they are used). - -2000-10-18 Michael Sokolov - - * config/tc-m68k.c: Fix the previous misapplied patch. - -2000-10-18 Michael Sokolov - - * config/tc-m68k.h (RELAX_RELOC_*): New definitions for both - BFD_ASSEMBLER and !BFD_ASSEMBLER. - * config/tc-m68k.c (md_convert_frag_1): Use them instead of - BFD_RELOC_*. - -2000-10-17 Kazu Hirata - - * debug.c: Fix formatting. - * depend.c: Likewise. - * dwarf2dbg.c: Likewise. - * dwarf2dbg.h: Likewise. - * ecoff.c: Likewise. - * expr.c: Likewise. - * expr.h: Likewise. - * flonum-konst.c: Likewise. - * frags.h: Likewise. - -2000-10-17 Chandrakala Chavva - - * as.c: New option OPTION_TARGET_HELP. Prints all target specific - options. - * doc/as.texinfo: Added notes about this new option. - -2000-10-16 Hans-Peter Nilsson - - * config/tc-sh.c (JREG): Remove. - (md_convert_frag): Remove #if 0:d code using JREG. - -2000-10-15 Diego Novillo - - * config/tc-i386.c (i386_operand_modifier): Only match - modifiers SHORT and FLAT if they are followed by a space. - (parse_register): When `allow_naked_reg' is set, do not confuse - identifiers that start with a register name with a register. - -2000-10-12 Kazu Hirata - - * app.c: Fix formatting. - * as.c: Likewise. - * as.h: Likewise. - * bit_fix.h: Likewise. - * cgen.c: Likewise. - * cgen.h: Likewise. - * cond.c: Likewise. - -2000-10-11 Alan Modra - - * config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change. - -2000-10-07 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Remove plainly wrong assert. - Re-arrange function a little and improve error message. - - * write.c (write_relocs): Fix a comment. - - * config/obj-elf.c (elf_frob_symbol): Make section syms global on - link-once sections. - -2000-10-05 Jim Wilson - - * config/tc-ia64.c (resources_match): Handle IA64_RS_PRr. - -2000-10-05 Alan Modra - - * config/tc-i386.c: Delete some useless comments, reformat others. - - * config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover - non-global syms in linkonce sections. - -2000-10-04 Ralf Baechle - - * config/tc-ia64.c (operand_match): Don't use // style comments. - * config/tc-i370.c: Likewise. - -2000-09-29 Hans-Peter Nilsson - - Changes to handle varying register prefix and user symbol prefix. - * config/tc-cris.c (SYNTAX_RELAX_REG_PREFIX, - SYNTAX_ENFORCE_REG_PREFIX, SYNTAX_USER_SYM_LEADING_UNDERSCORE, - SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, REGISTER_PREFIX_CHAR): New. - (s_syntax, cris_force_reg_prefix, cris_relax_reg_prefix, - cris_sym_leading_underscore, cris_sym_no_leading_underscore): New. - (demand_register_prefix): New variable. - (md_pseudo_table): New pseudo ".syntax". - (md_longopts): New options --no-underscore and --underscore. - (cris_target_format): Return elf32-us-cris or elf32-cris depending - on symbols_have_leading_underscore. - (get_gen_reg): Accept or require REGISTER_PREFIX_CHAR. - (get_spec_reg): Ditto. - (cris_number_to_imm) : Remove FIXME. - Fix formatting. - (md_parse_option) : Deprecate; add reference to - --help. - : New. - (md_show_usage): Be brief and reformat to match continuation of - --help. - * po/gas.pot: Regenerate. - -2000-09-28 Alan Modra - - * config/tc-hppa.c (hppa_force_relocation): If OBJ_SOM, don't - force relocs for 12 bit branches. - (md_apply_fix): Similarly, adjust logic here. - -2000-09-28 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Add fmt assertion. Don't - adjust for external and weak syms as we will use a reloc. Allow - for +8 offset when calculating limits of branches. - (hppa_fix_adjustable): Undo 2000-09-23 change. - (hppa_force_relocation): Likewise. Add fx_addsy assertion. - Correct distance calculation. - (tc_gen_reloc): Print the file name and line number if we can't - handle a fixup. - - From John David Anglin - * config/tc-hppa.c (nonzero_dibits): Define. - (arg_reloc_stub_needed): Check each arg and return value - separately for zero case. - (pa_align): Declare argument `bytes'. - -2000-09-25 Kazu Hirata - - * config/tc-cris.c: Fix formatting. - * config/tc-d10v.h: Likewise. - * config/tc-d30v.c: Likewise. - * config/tc-d30v.h: Likewise. - * config/tc-fr30.c: Likewise. - * config/tc-fr30.h: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m68k.h: Likewise. - * config/tc-pj.h: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-ppc.h: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sh.h: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-v850.h: Likewise. - * config/tc-vax.h: Likewise. - * config/tc-w65.h: Likewise. - * config/tc-z8k.h: Likewise. - -2000-09-23 Alan Modra - - * config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak - checks only for ELF. - (hppa_force_relocation): Likewise. - -2000-09-22 Jim Wilson - - * config/tc-ia64.c (dv_sem): Add "stop". - (specify_resource, case IA64_RS_PR): Only handles regs 1 to 15 now. - (specify_resource, case IA64_RS_PRr): New for regs 16 to 62. - (specify_resource, case IA64_RS_PR63): Reorder (note == 7) test to - match above. - (mark_resources): Check IA64_RS_PRr. - -2000-09-22 Michael Sokolov - - * config/tc-m68k.c (md_relax_table, m68k_ip, md_convert_frag_1, - md_estimate_size_before_relax): Redesign and clean up the - relaxation mechanism. - -2000-09-21 Kazu Hirata - - * config/tc-ns32k.c: Fix formatting. - * config/tc-ns32k.h: Likewise. - -2000-09-20 Kazu Hirata - - * config/tc-m32r.c: Fix formatting. - * config/tc-m32r.h: Likewise. - * config/tc-m68851.h: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68hc11.h: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-mcore.c: Likewise. - * config/tc-mcore.h: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-mips.h: Likewise. - * config/tc-mn10200.h: Likewise. - * config/tc-mn10300.h: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-tahoe.h: Likewise. - -2000-09-19 Michael Sokolov - - * config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci. - Likewise in relaxation description comments. - -2000-09-18 Alan Modra - - * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow - subtraction of two syms without emitting a relocation. - - From David Huggins-Daines - * config/tc-hppa.c (hppa_force_relocation): Force relocations for - global or weak symbols. - -2000-09-15 Kazu Hirata - - * config/tc-h8300.h: Fix formatting. - * config/tc-h8500.c: Likewise. - * config/tc-h8500.h: Likewise. - * config/tc-hppa.h: Likewise. - * config/tc-i370.h: Likewise. - * config/tc-i386.h: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i860.h: Likewise. - * config/tc-i960.h: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-ia64.h: Likewise. - -2000-09-14 Kazu Hirata - - * config/tc-a29k.c: Fix formatting. - * config/tc-alpha.c: Likewise. - * config/tc-arc.c: Likewise. - * config/tc-arc.h: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-arm.h: Likewise. - * config/tc-avr.c: Likewise. - * config/tc-avr.h: Likewise. - * config/tc-tic30.c: Likewise. - * config/tc-tic30.h: Likewise. - * config/tc-tic54x.c: Likewise. - * config/tc-tic54x.h: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-tic80.h: Likewise. - -2000-09-14 Timothy Wall - - * config/tc-ia64.c (specify_resource): For PR%/PR63, note types of - parallel comparisons for later use. - (struct rsrc): Add parallel comparison type. - (resources_match): Skip special cases of PR usage (non-conflicting - parallel compares). - -2000-09-13 Kazu Hirata - - * config/obj-ecoff.c: Fix formatting. - * config/obj-elf.c: Likewise. - * config/obj-elf.h: Likewise. - * config/obj-evax.h: Likewise. - * config/obj-generic.h: Likewise. - * config/obj-hp300.c: Likewise. - * config/obj-hp300.h: Likewise. - * config/obj-ieee.h: Likewise. - * config/obj-vms.c: Likewise. - * config/obj-vms.h: Likewise. - -2000-09-13 Anders Norlander - - * config/tc-mips.c (md_begin): Recognize 4Kc, 4Km and 4Kp processors. - (md_parse_option): Ditto. - (md_longopts): Add -mips32 option. - (md_show_usage): Document new options. - (mips_ip): Assemble sdbbp 20 bit 'm' args for MIPS32. - (mips_ip): Assemble mfc0 with a sub-selection code. - (validate_mips_insn): Handle 'H' (OP_*_SEL) and 'm' (OP_*_CODE20). - (mips_cpu_to_str): New function. - (mips_ip): Use mips_cpu_to_str instead of printing numeric cpu value. - Use CPU_* defines instead of hardcoded numbers. - - * doc/as.texinfo: Document new options. - * doc/c-mips.texi: Ditto. - -2000-09-12 Kazu Hirata - - * as.h: Fix formatting. - * asintl.h: Likewise. - * bit_fix.h: Likewise. - * config/obj-aout.c: Likewise. - * config/obj-aout.h: Likewise. - * config/obj-bout.c: Likewise. - * config/obj-bout.h: Likewise. - * config/obj-coff.c: Likewise. - * config/obj-coff.h: Likewise. - * dwarf2dbg.h: Likewise. - * expr.h: Likewise. - * flonum.h: Likewise. - * frags.h: Likewise. - * itbl-ops.h: Likewise. - * macro.h: Likewise. - * read.h: Likewise. - * sb.h: Likewise. - * struc-symbol.h: Likewise. - * subsegs.h: Likewise. - * symbols.h: Likewise. - * tc.h: Likewise. - * write.h: Likewise. - -2000-09-11 Kazu Hirata - - * bignum-copy.c: Fix formatting. - * config/tc-i370.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68k.c: Likewise. - * ehopt.c: Likewise. - * flonum-copy.c: Likewise. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - * literal.c: Likewise. - * read.c: Likewise. - * sb.c: Likewise. - * stabs.c: Likewise. - * subsegs.c: Likewise. - -2000-09-09 Philip Blundell - - * configure.in (arm*-*-uclinux*): New target. - * configure: Regenerate. - -2000-09-09 Kazu Hirata - - * input-file.c: Fix formatting. - * itbl-ops.c: Likewise. - * messages.c: Likewise. - -2000-09-08 Philip Blundell - - * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when - offset is negative. - -2000-09-07 H.J. Lu - - * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. - * configure: Rebuild. - -2000-09-07 Kazu Hirata - - * atof-generic.c: Fix formatting. - * config/tc-mips.c: Likewise. - * config/tc-vax.c: Likewise. - * input-scrub.c: Likewise. - -2000-09-07 Alexandre Oliva - - * config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets. - * configure.in (sh-*-linux*): Added. - * configure: Rebuilt. - -2000-09-06 Kazu Hirata - - * config/tc-hppa.c: Fix formatting. - - * ecoff.c: Fix formatting. - -2000-09-06 Alexandre Oliva - - * configure: Rebuilt with new libtool.m4. - -2000-09-05 Kazu Hirata - - * cgen.c: Fix formatting. - * config/tc-ia64.c: Likewise. - -2000-09-05 Nick Clifton - - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - * po/gas.pot: Regenerate. - -2000-09-05 Hans-Peter Nilsson - - * config/tc-cris.c: Correct comment typos. - -2000-09-05 Eric Christopher - - * config/tc-mn10300.c: Cleanup. - (md_pcrel_from): Enable. - -2000-09-05 Alan Modra - - * expr.c (operand): Fix a comment typo. - * write.c (write_relocs): Fix a signed/unsigned warning. - - * config/tc-hppa.c (fudge_reg_expressions): New - (hppa_force_reg_syms_absolute): New. - (pa_equ): Allow reg_section expressions. - * config/tc-hppa.c (md_optimize_expr): Define. - (hppa_force_reg_syms_absolute): Prototype. - - * config/tc-hppa.c (pa_11_fp_reg_struct): Delete. - (pa_parse_number): Pass in arg to select fp reg parsing. - Return 1 to indicate format checks pass. If strict, then only - accept a register or register symbol. Return value in... - (pa_number): New static for pa_parse_number. - (FP_REG_BASE): Define. - (FP_REG_RSEL): Define. - (pre_defined_registers): Apply FP_REG_BASE and FP_REG_RSEL as - appropriate. White space changes. - (need_pa11_opcode): Don't bother passing any params, get them from - globals instead. - (pa_ip): Modify all calls to pa_parse_number and need_pa11_opcode. - Remove extraneous check in case 'Q'. - (pa_equ): Modify call to pa_parse_number to do strict parsing. If - reg, set section of resulting symbol to reg_section. - (pa_parse_space_stmt): Modify call to pa_parse_number. - (pa_space): Likewise. - - * config/tc-hppa.c: (md_apply_fix): Handle vtable relocs. - (hppa_force_relocation): Handle vtable relocs. - (pa_vtable_entry): New. - (pa_vtable_inherit): New. - (md_pseudo_table): Add entries for vtable pseudos. - (hppa_fix_adjustable): Reject reduction of R_PARISC_GNU_VTINHERIT - and R_PARISC_GNU_VTENTRY relocs. Reject reduction of relocs - against weak syms. - (tc_gen_reloc): Remove ELF_ARG_RELOC_INSN code. - (pa_type_args): Don't call symbol_get_bfdsym multiple times. - Set STT_PARISC_MILLICODE for OBJ_ELF when encountering a - millicode import. - * config/obj-elf.c (obj_elf_type): Allow md_elf_symbol_type to - specify a symbol type. - - * config/tc-hppa.h: Reorganize file a little, grouping OBJ_ELF - dependent things together. - (md_elf_symbol_type): Define. - - * config/tc-hppa.c (fix_new_hppa): Elide "$PIC_pcrel$0" pseudo - symbol. - * config/tc-hppa.h (tc_frob_symbol): Elide "$PIC_pcrel$0" here too. - - * config/obj-elf.h (obj_elf_vtable_inherit): Declare. - (obj_elf_vtable_entry): Declare. - - * config/obj-elf.c (obj_elf_vtable_inherit): Return struct fix * - and export function. - (obj_elf_vtable_entry): Similarly. - (elf_pseudo_table): Fix the damage with a cast. - -2000-09-03 Richard Henderson - - * config/tc-ia64.c (emit_one_bundle): Stop collecting insns - for template selection when a label is needed. - -2000-09-02 Kazu Hirata - - * config/tc-ia64.c: Fix formatting. - -2000-09-02 Nick Clifton - - * configure.in: Increase version number to 2.10.91. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * po/gas.pot: Regenerate. - * Makefile.in: Regenerate. - -2000-09-01 Alexandre Oliva - - * config/tc-sh.h [OBJ_ELF] (TC_FIX_ADJUSTABLE): Define. - * config/tc-sh.c (md_apply_fix): Map 32-bit relocations that - become PC-relative to BFD_RELOC_32_PCREL. Reject 16- or 8-bit - similar relocs. - (sh_obj_adjustable): Return 1 for PC-relative offsets used in - branches. - -2000-09-01 Niibe Yutaka , Kaz Kojima , Alexandre Oliva - - * config/tc-sh.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME, - TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): Define. - * config/tc-sh.c (sh_elf_cons, sh_elf_suffix): New functions. - [OBJ_ELF] (md_pseudo_table) : Use them. - (GOT_symbol): New variable. - (md_undefined_symbol): Set it. - -2000-09-01 Richard Henderson - - * config/tc-ia64.c (match): Don't inline. - (extra_goodness): New. - (md_begin): Prefer nop.f and nop.b for best_template. - -2000-08-31 Kazu Hirata - - * as.c: Fix formatting. - * cond.c: Likewise. - * frags.c: Likewise. - * macro.c: Likewise. - -2000-08-31 Eric Christopher - - * config/tc-mn10300.c: Cleanup and fix warnings. - (md_pseudo_table): Add initializers. - (md_show_usage): Cleanup. - (md_parse_option): Fix warnings. - (md_undefined_symbol): Fix warnings. - (md_conver_frag): Fix warnings. - (tc_gen_reloc): Fix warnings. - (md_apply_fix3): Fix warnings. - (check_operand): Fix warnings. - -2000-08-31 Alexandre Oliva - - * acinclude.m4: Include libtool and gettext macros from the - top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-30 Mark Hatle - - * config/tc-ppc.c (md_parse_option): Recognize -m405. - -2000-08-31 Kazu Hirata - - * listing.c: Fix formatting. - -2000-08-29 Kazu Hirata - - * app.c: Fix a comment typo. Fix formatting. - -2000-08-25 J. David Anglin - - * config/tc-vax.c (md_convert_frag): Correctly calculate the pc relative - offset of the target destination for jmp instructions. - (md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments. - -2000-08-24 Hans-Peter Nilsson - - * NEWS: Mention support for CRIS. - -2000-08-24 Denis Chertykov - - * config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros. - Sets `.lcomm' alignment to zero. - -2000-08-23 Alexandre Oliva - - * config/tc-i386.h (OBJ_MAYBE_ELF, OBJ_MAYBE_COFF, - TC_FIX_ADJUSTABLE): Define. - -2000-08-23 Jim Wilson - - * config/tc-ia64.c (output_unw_records): Set U & E flags only if - unwind.personality_routine is set. - -2000-08-23 H.J. Lu - - * write.c (TC_FIX_ADJUSTABLE): Remove the duplicate. - -2000-08-23 Alexandre Oliva - - * config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target - environment is pe. - -2000-08-22 H.J. Lu - - * config.in (STRICTCOFF): New for strict COFF. - - * configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*, - i386-*-go32* and i386-go32-rtems*. - * configure: Rebuilt. - - * config/obj-coff.c (obj_coff_endef): Follow the historical - behavior if STRICTCOFF is not defined. - - * doc/internals.texi: Document STRICTCOFF. - -2000-08-22 Alexandre Oliva - - * write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined. - (fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE. - * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. - (TC_FIX_ADJUSTABLE): Define. - * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. - (TC_FIX_ADJUSTABLE): Define. - * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h: - Likewise. - -2000-08-22 Eric Christopher - - * config/tc-mn10300.c: (md_apply_fix): New function. - (mn10300_force_relocation): New function. - (mn10300_fix_adjustable): New function. - - * config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define. - (TC_HANDLES_FX_DONE): Define. - (obj_fix_adjustable): Define. - (MD_APPLY_FIX3): Define. - (TC_LINKRELAX_FIXUP): Define. - - * write.c: (TC_LINKRELAX_FIXUP): Define if not - previously defined. - (fixup_segment): Use TC_LINKRELAX_FIXUP. - - * doc/internals.texi: Document TC_LINKRELAX_FIXUP. - -2000-08-21 Jason Eckhardt - - * config/tc-i860.c (md_apply_fix3): Do not insert the immediate - if the fixup resulted in a relocation. - -2000-08-18 Nick Clifton - - * config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn. - Make reference to first element of shift_names explicit. - -2000-08-18 Alexandre Oliva - - * write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use - obj_fix_adjustable() and tc_fix_adjustable() to tell whether to - add a symbol's address. Removed all target-specific #ifdefs that - used to accomplished the same. - * config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - -2000-08-17 Kazu Hirata - - * dwarf2dbg.c: Fix formatting. - -2000-08-17 Nick Clifton - - * config/tc-arm.c (decode_shift): Allow illegal shifts by zero - to be recoded as logical shift lefts by zero. - -2000-08-16 Jim Wilson - - * config/tc-ia64.c (specify_resource, case IA64_RS_GR): Handle - postincrement modified registers. Handle IA64_OPND_R3_2 addl - source registers. - (note_register_values): Handle IA64_OPND_R3_2 operands. - -2000-08-16 Jason Eckhardt - - * config/tc-i860.c (md_operand): Silly typo fixed. - -2000-08-16 Nick Clifton - - * config/tc-arm.c (struct asm_shift): Delete. - (shift[]): Delete. - (enum asm_shift_index): New. - (struct asm_shift_properties): New. - (struct asm_shift_name): New. - (shift_properties[]); New. - (shift_names[]); New. - - (decode_shift): Use new structures. - Issue a warning is "ROR #0" is used. - Issue a warning if "ASR #0" or "LSR #0" is used. - - (md_begin): Initialise arm_shift_hsh table from new - asm_shift_name array. - -2000-08-16 Jakub Jelinek - - * config/tc-sparc.c: Kill all warnings. - (md_parse_option): Set -32/-64 for -xarch=, allow all -A archs - in -xarch= as well. - (md_show_usage): Update usage text. - -2000-08-16 Nick Clifton - - * config/tc-arm.c (do_bx): Warn about "bx px" not being very - useful. - -2000-08-15 Will Cohen - - * config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined. - - * config/tc-sh.c (md_assemble): Changed so debug_type - test performed for ppi_assemble - * config/tc-sh.c: Included dwarf2dbg.h. - (debug_line): Defined. - (md_assemble): Generates dwarf2 line info. - (sh_finalize): New function. Finalize dwarf2 info. - (assemble_ppi): Returns size of code generated. - (build_Mytes): Returns size of code generated. - (md_pseudo_table): Added "file" and "loc" psuedo ops. - * config/tc-sh.h (md_end): Defined. - (sh_finalize): Declared. - -2000-08-15 Alexandre Oliva - - * config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use - md_number_to_chars. - -2000-08-14 Nick Clifton - - * config/tc-arm.c (do_bx): Allow "bx pc". - -2000-08-14 Jim Wilson - - * config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic. - (md_parse_option): Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC. - (md_begin): Change assignment to md.flag to OR in the new bit. - -2000-08-14 Mark Elbrecht - - * config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Set the debug - flag for storage types C_ARG, C_REGPARM, C_FIELD, C_MOS, C_MOE, - C_MOU, and C_EOS. - -2000-08-14 Jason Eckhardt - - * NEWS: Mention i860 support. - -2000-08-14 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2000-08-14 Andreas Schwab - - * doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo. - -2000-08-11 Andreas Schwab - - * doc/c-i860.texi (Opcodes for i860): Remove braces from @item - argument. - -2000-08-11 Kazu Hirata - - * expr.c: Fix formatting. - * config/obj-bout.c: Likewise. - -2000-08-10 Jason Eckhardt - - * doc/c-i860.texi: Flesh out the i860 section more. - -2000-08-10 Kazu Hirata - - * symbols.c: Fix formatting. - * expr.c: Likewise. - -2000-08-09 Diego Novillo - - * config/tc-i386.c (md_assemble): Skip suffix check if the opcode - modifier has the IgnoreSize bit set. - -2000-08-09 Alan Modra - - From Rodney Brown - * configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0) - * configure: Regenerate. - -2000-08-09 Kazu Hirata - - * hash.c: Fix formatting. - * gasp.c: Likewise. - -2000-08-08 Jason Eckhardt - - * config/tc-i860.h: Rework completely for BFD_ASSEMBLER. - (i860_fix_info): New enum. - (MD_APPLY_FIX3): Define. - (WORKING_DOT_WORD): Define. - (TC_HANDLES_FX_DONE): Define. - (DIFF_EXPR_OK): Define. - (LISTING_HEADER): Define. - (TARGET_FORMAT): Select target format based on endian flag. - (TARGET_BYTES_BIG_ENDIAN): Default to little endian. - (target_big_endian): Add external declaration. - - * config/tc-i860.c: All existing code reworked completely. Other - new code shown below. - (SYNTAX_SVR4): Define. - (target_warn_expand): New variable. - (md_shortopts): Declare and define (-Qy, -Qn, and -V options). - (md_longopts): Declare and define with new options (-EL, -EB, - and -mwarn-expand). - (md_show_usage): New function. - (md_operand): New function. - (obtain_reloc_for_imm16): New function. - (md_apply_fix3): New function. - (tc_gen_reloc): New function. - -2000-08-08 Stephane Carrez - - * config/tc-m68hc11.c (build_jump_insn): Make sure the - 2 bytes of the jump address are in the same frag. - (find): Accept 68hc12 register indirect modes. - - * NEWS: Mention 68HC11 & 68HC12 support. - -2000-08-07 Richard Henderson - - * config/tc-ia64.c (unwind): Add prologue_mask member. - (dot_vframe): Elide psp_gr record if it overlaps prologue_gr. - (dot_save): Likewise for pfs_gr, rp_gr, and preds_gr. - (dot_body): Clear unwind.prologue_mask. - (dot_prologue): Set it. Accept a register second argument. - -2000-08-07 Kazu Hirata - - * config/atof-ieee.c: Fix formatting. - * config/atof-tahoe.c: Likewise. - -2000-08-06 Nick Clifton - - * config/tc-sparc.c (md_begin): Fix typo in recent formatting - work. - - * doc/as.texinfo (Pseudo Ops): Update to include descriptions - of .popsection, .previous, .pushsection, .subsection, - .version, .vtable_entry, .vtable_inherit and .weak. - -2000-08-05 Kazu Hirata - - * config/tc-cris.c: Fix formatting. - * config/tc-i386.c: Likewise. - * config/tc-sparc.c (sparc_ip): Simplify the code. - -2000-08-04 Kazu Hirata - - * config/tc-cris.c: Rearrange code for readability. - * config/tc-d10v.c: Fix formatting. - * config/tc-m32r.c: Likewise. - * config/tc-sparc.c: Likewise. - -2000-08-02 Jim Wilson - - * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode - before ia64_find_opcode. - (md_assemble): Likewise. - -2000-08-01 Nick Clifton - - * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag. - Undo some formatting fixes. - -2000-08-01 Kazu Hirata - - * config/obj-som.c: Fix formatting. - * config/obj-ieee.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-v850.c: Likewise. - -2000-08-01 Nick Clifton - - * doc/c-m68k.texi (section M680x0 Options): Turn into a table - index by command line option. - -2000-08-01 Michael Sokolov - - * doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description. - (@node M68K-Branch): Rewrite to match the reality. - -2000-07-31 Jason Eckhardt - - * doc/c-i860.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-i860.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Add I860 as relevant architecture. - * doc/as.texinfo: Include i860 dependent file c-i860.texi. - -2000-07-31 Kazu Hirata - - * config/tc-d30v.c: Fix formatting. - -2000-07-31 Michael Sokolov - - * config/tc-m68k.c (flag_keep_pcrel, OPTION_PCREL): Add --pcrel option. - (md_convert_frag_1, md_estimate_size_before_relax): When making DBcc - long emit a long branch if available instead of an absolute jump, never - emit absolute jumps for anything with --pcrel. - - * doc/c-m68k.texi: Document new command line option. - -2000-07-29 Marek Michalkiewicz - - * config/tc-avr.c: Use PARAMS macro in function declarations. - Don't declare md_pcrel_from_section (already in tc-avr.h). - (avr_operands): Use AVR_UNDEF_P and AVR_SKIP_P macros. - (avr_operand): Don't set (unsigned) op_mask to -1. - -2000-07-28 Jason Eckhardt - - * configure.in: Add bits for i860-stardent-{sysv4, elf}*. - * configure: Regenerated. - * config/obj-elf.c (obj_elf_type): Recognize a fifth type - of operand to the .type directive (.e.g, "type"). - -2000-07-28 Alan Modra - - * as.h (warn_comment, found_comment, found_comment_file): Declare. - * app.c (do_scrub_chars): Record where first comment found. - * read.c (read_a_source_file): Init found_comment on entry, and - notify whether comments found on exit. - * config/tc-hppa.c (md_shortopts): Add "c". - (md_longopts): Add warn-comment. - (md_parse_option): Handle it. - (md_show_usage): Show available options. - * config/tc-hppa.h (WARN_COMMENTS): Define if TE_LINUX - -2000-07-27 Andrew Cagney - - * config/tc-mn10300.c (md_convert_frag): Fix printfs. - (tc_gen_reloc): Add cast when assigning bfd_abs_symbol to - sym_ptr_ptr - (md_estimate_size_before_relax): Don't fall off end of function. - -2000-07-27 Kazu Hirata - - * config/tc-avr.c: Fix formatting. - * config/tc-ns32k.c: Likewise. - -2000-07-27 Alan Modra - - * config/tc-d10v.c (find_opcode): Remove extraneous `='. - -2000-07-27 Kazu Hirata - - * config/tc-d10v.c: Fix formatting. - * config/tc-z8k.c: Likewise. - * config/tc-sparc.c: Likewise. - -2000-07-26 Dave Brolley - - * cgen.c (queue_fixup): Declare opinfo. - (gas_cgen_parse_operand): Mark unused parameters with ATTRIBUTE_UNUSED. - (gas_cgen_md_operand): Ditto. - (gas_cgen_md_apply_fix3): Ditto. - -2000-07-24 Mark Elbrecht - - * config/obj-coff.c (obj_frob_symbol): Don't merge - labels. Don't merge if the symbol isn't constant. Return - immediately if a symbol is merged. - -2000-07-22 Alan Modra - - * frags.c (frag_align): Correct absolute section alignment. - -2000-07-20 DJ Delorie - - * config/obj-coff.c (obj_frob_symbol): revert previous change, - it breaks linking against DLLs. - -2000-07-20 Hans-Peter Nilsson - - * configure.in: Add CRIS support. - * configure: Regenerate. - * Makefile.am: (CPU_TYPES): Add cris. - (CPU_OBJ_VALID) [aout]: Add cris. - (MULTI_CPU_TYPES): Add cris. - (MULTI_CPU_OBJ_VALID) [aout]: Add cris. - [coff]: Only i386 and mips are valid. - (TARGET_CPU_CFILES): Add config/tc-cris.c. - (TARGET_CPU_HFILES): Add config/tc-cris.h. - (MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * as.c: Declare crisaout, criself. - * config/tc-cris.h, config/tc-cris.c: New. - * config/e-criself.c, config/e-crisaout.c: New. - * po/POTFILES.in, po/gas.pot: Regenerate. - -2000-07-20 Kazu Hirata - - * read.c: Fix formatting. - * write.c: Fix formatting. - -2000-07-19 H.J. Lu - - * sb.c: Include if exists for abort (). - -2000-07-19 Alan Modra - - * config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment. - (arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM. - (pa_type_args): Same here. - -2000-07-17 Mark Elbrecht - - * config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't - merge if the symbol isn't constant. Don't call S_SET_EXTERNAL if - the storage class is already set. - -2000-07-17 Kazu Hirata - - * config/tc-m68hc11.c: Fix formatting. - * config/tc-mn10200.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-w65.c: Likewise. - -2000-07-17 Frank Ch. Eigler - - * expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN - is defined. - -2000-07-15 Ian Lance Taylor - - * doc/c-mips.texi (MIPS Opts): Remove erroneous space after - @code. - -2000-07-15 Alan Modra - - * config/tc-hppa.c (hppa_fix_adjustable): Use the same checks for - ELF as are used for SOM (except the 32-bit reloc one) to decide - whether a symbol can be reduced to a section symbol. Expand on - the comment for symbols involved in LR% and RR% expressions. - -2000-07-14 Nick Clifton - - * config/tc-mips.c (mips_disable_float_construction): New - static variable. Set to true if doubles should not be - constructed by loading two single width fp registers with - halves of the value. - (mips_ip): Test mips_disable_float_construction. - (md_longopts): Add command line switches --construct-floats - and --no-construct-floats. - (md_parse_option): Parse new command line options. - (md_show_usage): Describe new command line options. - - * doc/c-mips.texi: Document new command line options. - -2000-07-13 Koundinya K - - * configure.in: Remove the test /usr/dde for mips-*-sysv4*MP* - * configure: Regenerate. - -2000-07-13 Hans-Peter Nilsson - - * configure.in (DEFAULT_EMULATION setting): Revert part of - 2000-07-01 change that set te_multi=multi unless set to tmips. - * configure: Regenerate. - -2000-07-12 Mark Elbrecht - - * config/obj-coff.c (coff_frob_section): Add padding to the last - section when aligning it increases its size. - -2000-07-11 Kazu Hirata - - * config/tc-tic54x.c: Fix formatting. - -2000-07-10 Kazu Hirata - - * config/tc-h8500.c: Fix formatting. - * config/tc-tic54x.c: Fix formatting. - -2000-07-10 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel - displacements correctly. - - * read.h (s_abort): Add ATTRIBUTE_NORETURN. - -2000-07-10 Ryan Bradetich - - * hash.c (hash_insert): Add cast to obstruct_alloc to fix - warning. - (hash_jam): Ditto. - -2000-07-09 Alan Modra - - From David Huggins-Daines - * config/te-hppalinux64.h: Add a new emulation. - * configure.in (emulations): Add configure bits to support the - 64-bit Linux/parisc target. - * configure: Regenerate. - - * config/tc-hppa.c (md_parse_option): Support `-V' for ELF. - (md_shortopts): Add `V' for ELF. - - * config/tc-hppa.c (arg_reloc_stub_needed): Define as zero except - when SOM or ELF_ARG_RELOC are defined. - (pa_type_args): Only set symbol_arg_reloc_info when SOM or - ELF_ARG_RELOC are defined. - (pa_stringer_aux): Don't pa_check_current_space_and_subspace here.. - (pa_stringer): ..Do it here instead. Fix comment typos. - (hppa_force_relocation): Cast enums to int before comparing with - ints. - - From Ryan Bradetich - * config/tc-hppa.c: Removed unneeded libbfd.h to fix macro - redifinition warning. - (md_apply_fix): Added cast from enum to int for fixP->fx_r_type. - (hppa_force_relocation): ditto - (md_apply_fix): Added cast to buf to fix warnings. - - * config/tc-hppa.h (pa_define_label, parse_cons_expression_hppa, - cons_fix_new_hppa, hppa_force_relocation): Prototype. - - * config/tc-hppa.c (reloc_type): It's an enum for OBJ_ELF. - (R_N0SEL, R_N1SEL): Define only for OBJ_SOM. - (tc_gen_reloc): Make `code' a reloc_type and `codes' a - reloc_type** to avoid warnings in switch. - (md_apply_fix): Make insn, val signed. Zap buf_wd and read insn a - little earlier instead. - - * config/tc-hppa.c (symbol_arg_reloc_info): Define for both som - and elf. - (pa_type_args): Use symbol_arg_reloc_info. - (struct pa_it): Make arg_reloc unsigned int. - (struct hppa_fix_struct): Likewise for fx_arg_reloc. - (pa_text, pa_data, pa_comm): Don't compile for TE_LINUX. - (pa_code): Delete. pa_text duplicates this function. - (md_pseudo_table): Call obj_elf_text for ".code" if TE_LINUX. - (fix_new_hppa): Argument offset is offsetT, arg_reloc is unsigned - int. - (cons_fix_new_hppa): Actually change selector to e_fsel when - warning about assuming so. - (tc_gen_reloc): More example elf arg reloc code. - (md_apply_fix): Use arg_reloc_stub_needed for elf too. - (hppa_force_relocation): Likewise. - - * config/tc-hppa.h: Use TARGET_ARCH_SIZE to select target include - files. - (pa_end_of_source): Prototype. - (hppa_fix_adjustable): Prototype. - (LABELS_WITHOUT_COLONS): Move it.. - * config/te-hppa.h: To here. - - * config/te-hppa64.h: New file. - - * config/tc-hppa.c: Use TARGET_ARCH_SIZE to select target reloc - type. - (md_apply_fix): Pass stdoutput to bfd_hppa_insn2fmt. Handle - format -10, -16, 16 relocs. - (hppa_elf_mark_end_of_function): Test for null - last_call_info->start_symbol - - * config/tc-hppa.c (pa_ip): In case 'V', pass `strict' to - CHECK_FIELD, not INSERT_FIELD_AND_CONTINUE. Don't pass opcode to - re_assesmble_* functions. Delete extraneous statements. Fix - typos in comments. - (md_apply_fix): Compare against 1048575 in case 21. Don't pass - insn to re_assemble_*. - -2000-07-08 Ulf Carlsson - - * doc/internals.texi (Expressions): Fix typo. - -2000-07-08 Kazu Hirata - - * config/tc-sh.c: Fix formatting. - * config/tc-tic54x.c: Fix formatting. - * depend.c: Fix formatting. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - -2000-07-07 Kazu Hirata - - * config/tc-sh.c: Fix comments. - * config/obj-vms.c: Fix comments. - * config/tc-a29k.c: Likewise. - * config/tc-alpha.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-h8500.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-z8k.c: Likewise. - -2000-07-06 Mark Elbrecht - - * config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New. - Default to '(SEC_LOAD | SEC_DATA)'. - (obj_coff_section) [BFD_ASSEMBLER]: Use it. - - * doc/internals.texi (CPU Backend): Describe - TC_COFF_SECTION_DEFAULT_ATTRIBUTES. - -2000-06-06 Andrew Cagney - - * as.c (parse_args): NULL terminate the long option list. - -2000-06-04 Andrew Cagney - - * config/tc-d30v.h: Include "write.h" for fixS. - (d30v_start_line, md_pcrel_from_section): Add function prototypes. - -2000-07-05 Nick Clifton - - * config/tc-d30v.c (write_2_short): Further changes to warning - messages produced when combining EITHER_BUT_PREFER_MU attributed - opcodes. - -2000-07-05 DJ Delorie - - * MAINTAINERS: new - -2000-07-04 Alexandre Oliva - - * config/tc-arm.c (psrs): Accept combinations of flags. - -2000-07-03 Marek Michalkiewicz - - * config/tc-avr.c: Change _ () to _() around all strings marked - for translation (exception from the usual coding style). - (avr_opt): New struct variable, how the new switches are set. - (OPTION_MMCU): Define as 'm' and actually use. - (md_longopts): Add -mall-opcodes, -mno-skip-bug, -mno-wrap. - (show_mcu_list): New function, display the list of known MCUs. - (md_show_usage): Document the new switches. Call show_mcu_list. - (avr_set_arch): Change 'm' to OPTION_MMCU. - (md_parse_option): Call show_mcu_list if unknown MCU specified. - Handle the new switches. - (avr_operands): Disable warnings for undefined combinations of - operands if -mall-opcodes. Disable warnings for skipping two-word - instructions if enhanced core or -mno-skip-bug. - (avr_operand): Accept all addressing modes on avr1 if -mall-opcodes. - (md_apply_fix3): Reject 8K wrap if >8K or -mno-wrap. - (md_assemble): Accept opcodes not supported by MCU if -mall-opcodes. - (avr_ldi_expression): Warn about implicit lo8(). - * config/tc-avr.h (md_pcrel_from_section): Add prototype. - -2000-07-01 Koundinya K - - * configure.in: Add entry for mips-*-sysv4*MP* - * configure: Rebuild - * config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or - elf32-tradlittlemips for traditional mips targets. - * config/tc-mips.c (md_estimate_size_before_relax): Duplicate the - test for Link Once sections as in adjust_reloc_syms. - * config/te-tmips.h: New file for traditional mips targets. Define - TE_TMIPS. - -2000-06-29 Mark Elbrecht - - * config/obj-coff.c (obj_coff_setcion) [BFD_ASSEMBLER]: If the - flags argument is not present, don't change an existing section's - section's attributes. If the flags argument is present, warn if the - attributes don't match the section's current attributes. When - long section names are supported, set SEC_LINK_ONCE and - SEC_LINK_DUPLICATES_DISCARD for a new .gnu.linkonce section. - -2000-06-29 Hans-Peter Nilsson - - * config/obj-aout.c (obj_aout_type): Do not ignore for undefined - symbols; create them. - -2000-06-29 Mark Elbrecht - - * write.c (set_segment_vma): New: Set vma and lma for a segment. - (write_object_file) [BFD_ASSEMBLER && OBJ_COFF && TE_GO32]: Use it. - -2000-06-27 Aldy Hernandez - - * config/tc-mips.c (mips_ip): handle "(foo-.-4)" type of - expressions. Ignore the problem when handling 16 bit signed - immediates, because the assembler will take care of the relocation - later. - -2000-06-27 Nick Clifton - - * config/tc-d30v.c (write_2_short): Do not allow opcodes with - the EITHER_BUT_PREFER_MU attribute to be combined into a reverse - sequential order, and emit warning messages if the input source - code contains constructs like that, or parallel constructs - containing such opcodes. - -2000-06-26 Marek Michalkiewicz - - * config/tc-avr.c (mcu_types): Rename avr4 to avr5, add avr4. - Add more MCU types for avr4 and avr5. Replace at94k{10,20,40} - with just at94k. Change AVR_ISA_85xx back to AVR_ISA_2xxx. - (md_show_usage): Update usage message. - (md_parse_option): Allow redefinition of MCU type within the - same avr[1-5] bfd machine type. Show both old and new MCU type - in the error message. - (md_apply_fix3): Support 8K wrap if AVR_ISA_MEGA is not set. - Simplify 8K wrap code. - -2000-06-25 Kazu Hirata - - * config/obj-aout.c: Remove all uses of DEFUN. - * config/obj-ieee.c: Likewise. - * config/tc-sh.c: Fix comment typos. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - * config/tc-h8300.c (build_bytes): Assemble ldmac correctly. - -2000-06-24 DJ Delorie - - * config/tc-i386.c (md_estimate_size_before_relax): Revert - more changes from Sept 1999 - (tc_i386_fix_adjustable): ditto - (md_apply_fix3): ditto - -2000-06-24 Frank Ch. Eigler - - * cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf. - (gas_cgen_parse_operand): Set it around expression() call. - (gas_cgen_md_operand): Test for it before longjmp(). - -2000-06-24 Kazu Hirata - - * config/tc-h8500.c: Remove all uses of DEFUN. - * config/tc-sh.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - - * config/tc-h8500.c: Fix typos in comments. - -2000-06-23 Frank Ch. Eigler - - * expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX - is defined. - -2000-06-23 matthew green - - * expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is - defined. Fix error message for `[' grouping. - -2000-06-22 Kazu Hirata - - * config/tc-h8300.c: Fix formatting and comment typos. - -2000-06-22 Timothy Wall - - * config/tc-ia64.c (note_register_values): Move premature QP - notation clearing into the appropriate place. - -2000-06-22 Alan Modra - - * dep-in.sed: Escape literal `.'s on patterns. Trim off `../' - first before anything else. Add bin-bugs.h, emul.h and progress.h - Sort list of files as for $(OBJS) in Makefile.am. - - * Makefile.am (DEP): grep for leading `/' in DEPA, and fail if we - find one. Remake dependencies. - ($(OBJS)): Add bin-bugs.h, emul.h, and progress.h Sort the list. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - - * config/tc-i386.c (i386_displacement): Don't assume a constant - displacement is necessarily 16 bits when in 16 bit code mode. - (md_assemble): Instead size the displacement here after we know - for sure that a .code16gcc operand hasn't automatically added - operand size prefixes. - -2000-06-21 H.J. Lu - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - -2000-06-21 Kazu Hirata - - * config/tc-h8300.c (parse_reg): Make the function static. - (parse_exp): Likewise. - -2000-06-20 DJ Delorie - - * config/tc-i386.c (tc_i386_fix_adjustable): Revert change from - Sept 1999; RVA relocs need to be treated more like DIR32 relocs - for cygwin import libraries to work properly. - -2000-06-20 H.J. Lu - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - * configure: Likewise. - * doc/Makefile.in: Likewise. - -2000-06-20 Timothy Wall - - * doc/internals.texi (CPU backend): Add @itemx for - TC_START_LABEL_WITHOUT_COLON. - * doc/c-tic54x.texi: New. - * doc/as.texinfo: Add tic54x features and include primary tic54x - documentation file. - * doc/all.texi: Add C54X. - * doc/Makefile.am (CPU_DOCS): Add c-tic54x.texi. - * doc/Makefile.in: Regenerate. - * configure.in: Add tic54x and define LIBM for tic54x. - * configure: Regenrate. - * config/tc-tic54x.[ch]: New. - * config/obj-coff.h: Add tic54x. - * Makefile.am: (CPU_TYPES): Add tic54x. - (TARGET_CPU_CFILES): Add 'tc-tic54x.c'. - (TARGET_CPU_HFILES): Add 'tc-tic54x.h'. - (as_new_LDADD): Add $(LIBM). - * Makefile.in: Regenerate. - -2000-06-18 Stephane Carrez - - * doc/Makefile.am (CPU_DOCS): Added 68hc11 file. - * doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port. - * doc/as.texinfo: Likewise. - - * configure, Makefile.in: Regenerate. - * configure.in (emulations): Recognize m6811 and m6812. - * Makefile.am (CPU_TYPES, TARGET_CPU_CFILES, TARGET_CPU_HFILES): - Added files for 68hc11 and 68hc12 assembler. - * config/tc-m68hc11.c: Assembler for 68hc11 and 68hc12. - * config/tc-m68hc11.h: Header definition for that assembler. - -2000-06-18 Nick Clifton - - * symbols.c (resolve_symbol_value): Use bfd_octets_per_byte - instead of OCTETS_PER_BYTE. - - * config/tc-v850.c: Fix compile time warnings. - * config/tc-ppc.c: Fix compile time warnings. - -2000-06-18 H.J. Lu - - * configure.in: Don't emulate i386-pc-pe-coff with i386coff. - * configure: Rebuild. - -2000-06-17 Mark Elbrecht - - * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER - to BFD_ASSEMBLER. - -2000-06-16 Nick Clifton - - * config/tc-mips.c (md_parse_option): Accept RM5200,RM5230, - RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants. - - * doc/c-mips.texi: Document newly accepted cpu variants. - -2000-06-15 Ulf Carlsson - - * config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES. - -2000-06-13 Ulf Carlsson - - * macro.c (getstring): Make it possible to escape the quote - character. - -2000-06-13 Catherine Moore - - * config/tc-hppa.c (pa_export): Weak symbols can be global. - -2000-06-13 H.J. Lu - - * configure: Regenerate. - -2000-06-09 Alan Modra - - * app.c (do_scrub_begin): Don't default lex[';'] as a line - separator. - * doc/internals.texi (line_separator_chars): Semicolon is no - longer a default. Mention null and newline as defaults. - - * read.c (is_end_of_line): Remove ifdef TC_HPPA. - - * config/tc-i386.h (line_separator_chars): Explicitly mention `;' - * config/tc-i860.h (line_separator_chars): Likewise. - * config/tc-h8300.c (line_separator_chars): Likewise. - * config/tc-i960.c (line_separator_chars): Likewise. - * config/tc-m68k.c (line_separator_chars): Likewise. - * config/tc-mips.c (line_separator_chars): Likewise. - * config/tc-ns32k.c (line_separator_chars): Likewise. - * config/tc-sparc.c (line_separator_chars): Likewise. - * config/tc-vax.c (line_separator_chars): Likewise. - - * config/tc-h8300.c (comment_chars): Use string initialiser. - * config/tc-i960.c (line_comment_chars): Likewise. - * config/tc-z8k.c (comment_chars, line_comment_chars, - line_separator_chars): Likewise. - - * config/tc-arm.c (line_separator_chars): Always use `;', not just - for TE_LINUX. - -2000-06-08 Nick Clifton - - * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value - for size 1 fixes. - -2000-06-08 David O'Brien - - * configure.in (VERSION): Update to show this is the CVS mainline. - -2000-06-08 Matthew Jacob - - * config/tc-alpha.c (md_undefined_symbol): Properly understand that - $at is the integer register $r28, vs. both $r28 and the floating - point register $f28. - -2000-06-08 James E. Wilson - - * config/tc-ia64.c (generate_unwind_image): Call ia64_flush_insns. - (dot_endp): Don't call ia64_flush_insns. - (emit_one_bundle): Don't delete prologue/body records from - unwind_record list in first loop. Rewrite second loop to account for - this. - -2000-06-07 David Mosberger - - * config/tc-ia64.c: Add missing prototypes. - (generate_unwind_image): Cast argument to output_unw_records call. - -2000-06-07 Denis Chertykov - - * config/tc-avr.c (avr_operand): fix the formatting of the comment. - -2000-06-07 Denis Chertykov - - * config/tc-avr.c (AVR_ISA_???): moved to include/opcode/avr.h - (REGISTER_P): likewise. - (avr_opcodes): uses include/opcode/avr.h - (avr_operand): enable ld r,Z or st r,Z for at90s1200. - -2000-06-04 Alan Modra - - * read.c (is_end_of_line): No ';' for TC_HPPA. Add missing - initializers too. - -2000-06-03 H.J. Lu - - * read.c (is_end_of_line): Put back `;'. - -2000-06-03 Alan Modra - - * config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf. - -2000-06-01 Alan Modra - - * expr.c (operand): Test is_end_of_line outside switch to catch - line separator chars that are also operators. - (operator): Return O_illegal for line separator chars. - - * read.c (is_end_of_line): Use 1 instead of 99. Don't set `;' - entry (or `!' entry for TC_HPPA). - - * config/tc-arm.c (my_get_float_expression): Cast to unsigned char - before indexing is_end_of_line. Remove redundant check for '\0'. - (fp_op2): Likewise. - * config/tc-h8500.c (md_assemble): Likewise. - * config/tc-mcore.c (md_assemble): Likewise. - * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. - (md_atof): Likewise - - * config/tc-m88k.c (s_bss): Cast to unsigned char before indexing - is_end_of_line. - * config/tc-mcore.c (mcore_cons): Likewise. - (mcore_float_cons): Likewise. - (mcore_stringer): Likewise. - * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. - -2000-06-01 Scott Bambrough - - * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. - -2000-05-29 Nick Clifton - - * config/tc-sh.c: Fix compile time warning messages. - - * config/tc-mips.c: Fix compile time warning messages. - -2000-05-29 Philip Blundell - - * doc/as.texinfo: Update copyright dates. - (Local Labels): Delete misplaced mention of ARM. - * NEWS: Mention ARM ELF support. - -2000-05-27 Alexandre Oliva - - * config/tc-mn10300.c (md_assemble): Copy size to real_size before - it is modified, and use the real_size to compute the frag address - for dwarf2 line info. - -2000-05-27 Alan Modra - - * Makefile.am (DEP, DEP1, dep, dep-in, dep-am): Use a better sed - line-matching scheme to cope with automake moving variables around. - ($(TARG_CPU_O)): Remove dependency on TARG_CPU_DEP_@target_cpu_type@ - * Makefile.in: Regenerate. - -2000-05-26 Jakub Jelinek - - * config/tc-sparc.c (sparc_relax): New. - (md_longopts): Add -relax and -no-relax options. - (md_parse_options, md_show_usage): Likewise. - (md_apply_fix3): Optimize tail call into branch always if possible. - -2000-05-04 Donald Lindsay - - * config/tc-d10v.c (write_2_short, parallel_ok, md_assemble, - d10v_cleanup) implement Mitsubishi's newly explained branch-packing - rules, with warning when a GAS statement specifies a packing that - will result in an instruction being squashed. - Added typdef packing_type and enumerals, changed various integer - literals to use the enumerals. - -2000-05-24 David Mosberger - - * config/tc-ia64.c (dot_restorereg_p): New function. - (md_pseudo_table): Add restorereg.p. - (output_X3_format): Fix typo: record type should be UNW_X3, not UNW_X1. - (output_X4_format): Fix typo: record type should be UNW_X4, not UNW_X2. - - * config/tc-ia64.h (unw_record_type): Add unwabi. - (unw_r_record): Rename member MASK to GRMASK. Add sub-structure - called MASK with members for imask, and the masks produced by - fr_mem, gr_mem, br_mem, and frgr_mem. - (unw_p_record): Add members ABI and CONTEXT. - (unw_x_record): Add member AB. - * config/tc-ia64.c (enum reg_symbol): Add REG_PSP and REG_PRIUNAT - as pseudo-register for use during unwind info generation. - (AR_PFS, AR_LC): New macros. - (enum pseudo_type): Add PSEUDO_FUNC_REG to permit declaring registers - whose names start with an at sign (as in "@priunat"). - (pseudo_func): Add "svr4", "hpux", "nt" constants and "priunat" - register. - (unwind_list, unwind_tail, current_unwind_entry, proc_start, - proc_end, unwind_info, personality_routine): Consolidate into - "unwind" structure to reduce offset-table use. Add member - NEXT_SLOT_NUMBER to track the slot number for the next instruction - to be emitted. - (output_R1_format, output_R3_format, output_P3_format, - output_P6_format): Initialize R with zero to reduce compiler warnings. - (output_P7_format): Ditto. Add `default' branch to switch - statement to reduce compiler warnings. - (output_P8_format, output_B1_format, output_B4_format): Ditto. - (output_P4_format): Rename 2nd & 3rd arg to IMASK and IMASK_SIZE. - (format_ab_reg): Rename from format_a_b_reg. Merge A and B args - into single argument. - (output_X1_format, output_X3_format): Initialize R with zero to reduce - compiler warnings. Merge A and B args into single argument. - (output_X2_format, output_X4_format): Remove unused variable R. Merge - A and B args into single argument. - (free_record): Removed (wasn't used). - (free_list_records): Also free imasks in prologue records. - (output_prologue, output_prologue_gr): Initialize mask bits to zero. - (output_spill_mask): Remove. - (output_unwabi): New function. - (output_epilogue, output_label_state, output_copy_state): Call - alloc_record. - (output_spill_psprel, output_spill_sprel, output_spill_psprel_p, - output_spill_sprel_p, output_spill_reg, output_spill_reg_p): Add AB - argument. - (process_one_record): New locals FR_MASK and GR_MASK. Ignore - gr_mem, fr_mem, br_mem, and frgr_mem records and instead emit them - as part of handling the prologue records. Emit region's imask if - we have one. Handle unwabi, epilogue, label_state, copy_state, - spill_psprel, spill_sprel, spill_reg, spill_psprel_p, - spill_sprel_p, and spill_reg_p records. - (set_imask, count_bits, slot_index): New function. - (fixup_unw_records): Fix region size computation. Handle - epilogue, spill_reg, spill_sprel, spill_psprel, spill_reg_p, - spill_sprel_p, and spill_psprel_p records. Merge mask bits of - frgr_mem, fr_mem, gr_mem, br_mem on a per-region basis and - set_imask accordingly. Update imask for gr_gr, and br_gr records. - (convert_expr_to_ab_reg, convert_expr_to_xy_reg): New function. - (dot_save): Use manifest constants for applicaton registers. - Handle REG_PR and REG_PRIUNAT. - (dot_restore): Don't just ignore it. - (dot_restorereg): New function.. - (generate_unwind_image): Ensure unwind info is a multiple of eight - bytes, not just four bytes. - (dot_handlerdata, dot_unwentry): Demand empty rest of line. - (dot_altrp): Don't just ignore it. - (dot_savemem): New function. Replaces dot_savesp() and - dot_savepsp(). Use manifest constants for applicaton registers. - Handle REG_PR and REG_PRIUNAT. - (dot_savef): Simplify. - (dot_saveb): Support generation of br_gr. - (dot_spillreg, dot_spillmem, dot_spillreg_p, dot_spillmem_p, - dot_label_state, dot_copy_state): New function. - (dot_unwabi): Don't just ignore it. - (md_pseudo_table): Add restorereg, spillreg, spillsp, spillpsp, - spillreg.p, spillsp.p, spillpsp, label_state, copy_state, - unwabi, vframesp, and vframepsp. Fix typo alprp->altrp. - (emit_one_bundle): Set slot number for prologue/body records - *before* emitting the first insn. - (emit_one_bundle): Set UNWIND.NEXT_SLOT_NUMBER. - (md_begin): Declare "psp" pseudo-register. - (md_operand): Handle PSEUDO_FUNC_REG. Fix printing of error message - so we don't get segfault. - (output_psp_sprel): Output sp/psp relative offsets as 4-byte word - counts as required per SW Conventions manual - (output_rp_psprel, output_rp_sprel, output_pfs_psprel,output_pfs_sprel, - output_preds_psprel, output_preds_sprel, output_spill_base, - output_unat_psprel, output_unat_sprel, output_lc_psprel, - output_lc_sprel, output_fpsr_psprel, output_fpsr_sprel, - output_priunat_psprel, output_priunat_sprel, output_bsp_psprel, - output_bsp_sprel, output_bspstore_psprel, output_bspstore_sprel, - output_rnat_psprel, output_rnat_sprel, output_spill_psprel, - output_spill_sprel, output_spill_psprel_p, output_spill_sprel_p):Ditto. - (dot_vframe): Implement. - (dot_vframesp, dot_vframepsp): New function. - -2000-05-23 Hans-Peter Nilsson - - * configure.in (i386-*-freebsd a.out entry): Quote properly. - * configure: Regenerate. - -2000-05-23 Alan Modra - - * config/tc-i386.c (md_assemble): Pass jump reloc in fr_var... - (md_estimate_size_before_relax): so we can use it here instead of - old kludges. Localise vars to blocks. Comment. - - * frags.c (frag_new): Update fr_var comments. - * frags.h (struct frag): Ditto. - -2000-05-22 Richard Henderson - - * config/tc-ia64.c (FUNC_PC_RELATIVE): New. - (pseudo_func): Add pcrel. - (operand_match): Handle IA64_OPND_TGT64. - (build_insn): Likewise. - (md_begin): Initialize pseudo_func[FUNC_PC_RELATIVE]. - (ia64_gen_real_reloc_type): Handle FUNC_PC_RELATIVE. - (fix_insn): Handle all three 64-bit relocation types. - -2000-05-22 Hans-Peter Nilsson - - * obj.h (struct format_ops): New members begin, app_file, - s_set_other, s_set_desc, s_get_type, s_set_type, - separate_stab_sections, init_stab_section. - - * config/obj-multi.h: Update GPL notice to v2. - (obj_begin): New. - (obj_app_file): New. - (S_SET_SIZE): Test s_set_size for NULL before calling. - (S_SET_ALIGN): Similar for s_set_align. - (S_SET_OTHER): New. - (S_SET_DESC): New. - (S_GET_TYPE): New. - (S_SET_TYPE): New. - (SEPARATE_STAB_SECTIONS): New. - (INIT_STAB_SECTION): New. - (EMIT_SECTION_SYMBOLS): New. - (AOUT_STABS) [OBJ_MAYBE_AOUT]: Define. - - * config/obj-elf.h: Update GPL notice to v2. - Mention that this file is included from obj-multi.h. - (obj_begin): Wrap definition in ifndef. - (elf_file_symbol): Constify declaration. - (obj_app_file): Ditto. - (SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB): - Wrap in ifndef SEPARATE_STAB_SECTIONS. - - * config/obj-elf.c (elf_s_set_other): New. - (elf_file_symbol): Constify argument. - (elf_separate_stab_sections): New. - (elf_init_stab_section): New. - (elf_format_ops): Add new members. Remove comma at end. - - * config/obj-ecoff.c (ecoff_separate_stab_sections): New. - (ecoff_format_ops): Add new fields. Remove comma at end. - Mention inconsistency for emit_section_symbols. - - * config/obj-coff.h (c_dot_file_symbol): Constify declaration. - - * config/obj-coff.c (c_dot_file_symbol): Constify argument. - (coff_separate_stab_sections): New. - (coff_format_ops): Add new members. - - * config/obj-aout.c (obj_aout_sec_sym_ok_for_reloc): New. - (obj_aout_s_set_other): New. - (obj_aout_s_set_desc): New. - (obj_aout_s_get_type): New. - (obj_aout_s_set_type): New. - (obj_aout_separate_stab_sections): New. - (aout_format_ops): New members added. Use obj_aout_process_stab, - not 0. Use obj_aout_sec_sym_ok_for_reloc, not 0. - (obj_aout_frob_symbol): Add ATTRIBUTE_UNUSED to args as - appropriate. - (obj_aout_line, obj_aout_weak, obj_aout_type): Ditto. - -2000-05-22 Alan Modra - - * config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment - for OBJ_MAYBE_ELF too. Use S_IS_EXTERNAL instead of S_IS_EXTERN. - (md_estimate_size_before_relax): Ensure jumps to weak and - externally visible symbols are relocatable. - -2000-05-20 Hans-Peter Nilsson - - * stabs.c (aout_process_stab): Make global. - (s_desc): Add ATTRIBUTE_UNUSED to args as appropriate. - * read.h (aout_process_stab): Declare. - - * configure.in (EMULATIONS) [i386aout, i386coff, i386elf]: - Generalize to *aout, *coff *elf. - * configure: Regenerated. - - * doc/internals.texi (Object format backend): Say - SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined. - - * Makefile.am (TARG_ENV_HFILES): Delete te-multi.h. - * Makefile.in: Regenerated. - -2000-05-19 Catherine Moore - - * cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined. - -2000-05-18 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Mask out immediate bits of - instruction to reflect change in re_assemble_*. - -2000-05-18 Jeffrey A Law (law@cygnus.com) - - * configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then - build PA64 ELF tools. - * configure: Rebuilt. - -2000-05-17 Alan Modra - - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-05-15 Nick Clifton - - * config/tc-arm.c (struct asm_psr): Add boolean field - distinguishing between CSPR and SPSR. Rename 'number' field - to 'field'. - (psrs): Rearrange contents to match new asm_psr structure. - (arm_psr_parse): Move next to psr_required_here. Make it - return an asm_psr structure. - (psr_required_here): Use asm_psr structure returned by - arm_psr_parse. - (do_msr): Reorganise to allow psr_required_here to be called - only once. - (md_undefined_name): Mark 'name' parameter as unused, since - the COFF target does not use it. - -2000-05-14 David O'Brien - - * config/te-386bsd.h: Clean up comments to adhere to the GNU coding - standards. - * config/te-aux.h: Likewise. - * config/te-dpx2.h: Likewise. - * config/te-go32.h: Likewise. - * config/te-hp300.h: Likewise. - * config/te-hppa.h: Likewise. - * config/te-i386aix.h: Likewise. - * config/te-ic960.h: Likewise. - * config/te-interix.h: Likewise. - * config/te-nbsd532.h: Likewise. - * config/te-pc532mach.h: Likewise. - * config/te-ppcnw.h: Likewise. - * config/te-psos.h: Likewise. - * config/te-sparcaout.h: Likewise. - * config/te-sun3.h: Likewise. - * config/te-sysv32.h: Likewise. - -2000-05-14 Alan Modra - - * config/tc-h8300.c (do_a_fix_imm): Don't rely on `short' being 16 - bits. Instead explicitly mask and sign extend. Do the 8 bit mask - and sign extend without an if statement. - (build_bytes): Likewise. - -2000-05-14 Kazu Hirata - - * config/tc-h8300.c (do_a_fix_imm): Output a reloc for no - X_add_symbol L_32 case. - -2000-05-14 David O'Brien - - * config/te-freebsd.h: New file. - -2000-05-13 Alan Modra - - * asintl.h (gettext, dgettext, dcgettext, textdomain, - bindtextdomain): Replace defines with those from intl/libgettext.h - to quieten gcc warnings. - - * NEWS: Mention x86 .arch and -q. - - * config/tc-i386.c (quiet_warnings): New. - (md_assemble): Use quiet_warnings. - (md_parse_option): Set quiet_warnings from -q. - (md_show_usage): Mention -q, delete -m. - (flag_do_long_jump): Delete. - (md_parse_option): Remove -m. - (md_show_usage): Remove -m. - (md_create_long_jump): Remove useless flag_do_long_jump code. - - * as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold - the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER. - -2000-05-13 Alan Modra - Alexander Sokolov - - * doc/c-i386.texi (i386-Arch): New section. - (i386-Syntax): Mention .intel_syntax and .att_syntax. - - * config/tc-i386.c (cpu_arch_name, cpu_arch_flags): New. - (smallest_imm_type): Use smallest opcode for shift by one if cpu - architecture has been given and is not 486. - (set_cpu_arch): New. - (md_pseudo_table): Add .arch. - (md_assemble): Warn if cpu architecture has been given and an - unsupported instruction. - - * config/tc-i386.h (SMALLEST_DISP_TYPE): Delete. - Move operand_types bit defines after relevant template field. - (template): Add cpu_flags. - (Cpu*): Define. - (arch_entry): New. - -2000-05-12 Alexandre Oliva - - * config/tc-mn10300.h (md_end): Define. - (mn10300_finalize): Declare. - * config/tc-mn10300.c: Include dwarf2dbg.h. - (debug_line): Define. - (md_assemble): Generate dwarf2 line info. - (mn10300_finalize): New function. Finalize dwarf2 info. - -2000-05-11 Ulf Carlsson - - * config/tc-mips.c (md_estimate_size_before_relax): Use the - external version of the relocation for weak symbols. - -2000-05-08 David Mosberger - - * config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed - frame size in units of 16 bytes, as required per SW Conventions manual. - (output_unw_records): Output info-block header as a dword to get - byte-order right. - -2000-05-08 Alan Modra - - * as.h: #include "file", not on files from ../include. - (as_abort, as_fatal): Add ATTRIBUTE_NORETURN. - * config/tc-m68k.c (m68k_ip): Fix signed/unsigned warnings. - (md_convert_frag): Add ATTRIBUTE_UNUSED. - (tc_coff_symbol_emit_hook): Ditto. - (OPTCOUNT): Cast to int to avoid compiler warning. - (md_begin): Fix signed/unsigned warnings. - -2000-05-08 Michael Sokolov - - * config/tc-m68k.c (md_convert_frag_1): Abort if we end up in the - ABRANCH LONG case for a conditional branch on a 68000. - (md_estimate_size_before_relax): Likewise. Also handle - flag_short_refs correctly for ABRANCH, BCC68000, and DBCC. - (m68k-ip: case ABSL): Relax absolute references to 16-bit - PC-relative on all CPUs. - (md_estimate_size_before_relax): Likewise. - -2000-05-04 Alan Modra - - * as.c (parse_args): Just mention current year in printed - copyright message. - -2000-05-03 J.T. Conklin - - * config/tc-ppc.c (pre_defined_registers): Add entries for vector - unit registers. - (md_parse_option): Recognize -m7400. - -2000-05-03 Ian Lance Taylor - - * config/atof-ieee.c (gen_to_words): When adding carry back in, - don't permit lp to become less than the words array. - -2000-05-03 Rodney Brown - - config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2 - Fix little-endian case. - -2000-05-03 David O'Brien - - * as.c (parse_args): Update copyright. - -2000-05-03 Mark Elbrecht - - * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 - for the .bss section too. - -2000-05-02 Alan Modra - - * configure.in: Set em=linux for hppa-*-linux. - * configure: Regenerate. - * doc/Makefile.in: Regenerate with correct automake. - - * frags.c (frag_grow): Sanity check chunk_size. - - * config/obj-elf.h: #include "bfd.h" not - * config/obj-som.h: Likewise. - * config/obj-ieee.h: Likewise. - - * config/tc-hppa.h: Test BFD_ARCH_SIZE, not BFD64. - - * config/tc-hppa.c (log2): Only compile when OBJ_SOM. - (md_pseudo_table): Fully initialise OBJ_ELF cases. - (fix_new_hppa): Add ATTRIBUTE_UNUSED to args as appropriate. - (pa_ip): low_sign_unext now returns via function value. Use - re_assemble_* instead of dis_assemble_* and - INSERT_FIELD_AND_CONTINUE combination. Don't call sign_unext - unnecessarily. - (md_convert_frag): Add ATTRIBUTE_UNUSED to args as appropriate. - (md_section_align, md_parse_option, md_show_usage, - md_undefined_symbol, pa_align, pa_block, pa_brtab, pa_try, - pa_callinfo, pa_code, pa_comm, pa_end, pa_enter, pa_entry, - pa_exit, pa_export, pa_import, pa_label, pa_leave, pa_level, - pa_origin, pa_param, pa_proc, pa_procend, pa_space, pa_spnum, - pa_version, pa_compiler, pa_copyright, pa_data, pa_fill, pa_lsym, - pa_text): Likewise. - (md_apply_fix): Change type of new_val to offsetT. Delete w1, w2, - w, resulti. Add insn, val. Move bfd_get_32 and bfd_put_32 - outside of switch. Correct mask and shifting errors in case 10 - and case -11. In case 21, compare against signed range to suit - hppa_field_adjust changes. In case 12, use re_assemble_12. In - case 17 and case 22, use offsetT variable to properly check range. - Use re_assemble_* here too. - (evaluate_absolute): Change type of value to offsetT. Call - hppa_field_adjust to do the work for us. - (pa_parse_cmpb_64_cmpltr): Delete save_s. - (pa_parse_cmpib_64_cmpltr): Ditto. - (pa_build_unwind_subspace): Delete unused var subseg. Change type - of i to unsigned int. - (pa_type_args): Conditionally declare symbol if OBJ_SOM. - (pa_end_of_source): Return type is void. - -2000-05-01 Catherine Moore - - * macro.c (macro_expand_body): Don't prepend macro number with zeroes. - -2000-05-01 Denis Chertykov - - * config/tc-avr.c: ATTRIBUTE_UNUSED added to the necessary places. - More comments added. - (md_begin): Removed "construct symbols for each register name". - Because register names conflicts with GCC generated function - names. - (avr_operand): Now constant numbers can be used as a register - identifiers (0 as r0, 31 as r31). - (md_assemble): use skip_space () before parsing instruction - operands. - -2000-05-01 Alan Modra - - * configure.in: Set bfd_gas=yes on i386-*-pe and i386-*-nt* to - ensure all pe targets use bfd. Remove unnecessary bfd_gas=yes on - arm-*-netbsd* and arm-*-wince as this is set for all arm*. - * configure: Regenerate. - -2000-04-29 Andreas Jaeger - - * as.h: Correctly check GCC version. - -2000-04-26 David O'Brien - - * doc/as.1: Fix unbalanced brackets. - - * config/tc-i386.c (comment_chars): Don't use '/' as comment start if - TE_FreeBSD. - (line_comment_chars): Set to '/' if TE_FreeBSD. - -2000-04-25 Jeffrey A Law (law@cygnus.com) - - * configure.in: Configury support for PA64 (currently disabled). - * configure: Rebuilt. - -2000-04-25 Machida Hiroyuki - - * config/tc-mips.c (s_change_sec): Use record_alignment, not - bfd_set_section_alignment. - -2000-04-25 Alan Modra - - * config/tc-i386.c (offset_in_range): Ensure shift counts are less - than 32. - -2000-04-24 Nick Clifton - - * doc/c-arm.texi (ARM Directives): Document behaviour of .align 0. - * doc/as.texinfo (Align): Include arm and strongarm in list of - targets that have the second form of the behaviour of the .align - directive. - -2000-04-24 Mark Klein - - * config/obj-som.c: Terminate obj_pseudo_table. - -2000-04-24 Clinton Popetz - - * as.c (parse_args): Allow md_parse_option to override -a listing - option. - * config/obj-coff.c (add_lineno): Change type of offset parameter - from "int" to "bfd_vma." - * config/tc-ppc.c (md_pseudo_table): Add "llong" and "machine." - (ppc_mach, ppc_subseg_align, ppc_target_format): New. - (ppc_change_csect): Align correctly for XCOFF64. - (ppc_machine): New function, which discards "ppc_machine" line. - (ppc_tc): Cons for 8 when code is 64 bit. - (md_apply_fix3): Don't check operand->insert. Handle 64 bit - relocations. - (md_parse_option): Handle -a64 and -a32. - (ppc_xcoff64): New. - * config/tc-ppc.h (TARGET_MACH): Define. - (TARGET_FORMAT): Move to function. - (SUB_SEGMENT_ALIGN): Use ppc_subseg_align. - -2000-04-23 Denis Chertykov - - * config/tc-avr.c: New AVR_ISA_ defined. - (md_assemble): Handle opcodes with optional operands (lpm,elpm). - (avr_operand): Handle 'a', 'v' and 'z' constraint letters needed - for `fmul', `movw' and `lpm R,Z' instructions. - (avr_operands): Warn if current opcode is a two-word instruction - and previous opcode was cpse/sbic/sbis/sbrc/sbrs. - (avr_opcodes): New commands added. - (REGISTER_P): Check 'a' and 'v' constraint letters. - (mcu_types): New MCU added. - -2000-04-22 Timothy Wall - - * config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent - to "natval". - (operand_match): Conditionally insert default bit values for IMMU9. - -2000-04-14 Matthew Green - - * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support. - * configure: Rebuilt. - -2000-04-21 Jeffrey A Law (law@cygnus.com) - Jason Eckhardt - - * config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats. - - * config/tc-hppa.c (CHECK_ALIGN): New macro. - Added handling of new operand types l,y,&,fe,fE,fx. - -2000-04-21 Richard Henderson - David Mosberger - Timothy Wall - Andrew MacLeod - Jim Wilson - - * Makefile.am (CPU_TYPES): Add ia64. - (TARGET_CPU_CFILES): Add config/tc-ia64.c. - (TARGET_CPU_HFILES): Add config/tc-ia64.h. - * Makefile.in: Rebuild. - * app.c (do_scrub_chars): Handle DOUBLESLASH_COMMENTS. - * configure: Rebuild. - * configure.in: Recognize ia64 as cpu type. Set bfd_gas. - (ia64-*-elf*, ia64-*-linux-gnu*): New targets. - * expr.c (expr): Handle md_optimize_expr. - * read.c (LEX_HASH): Add comment. - * config/tc-ia64.c, config/tc-ia64.h: New files. - -2000-04-21 Richard Henderson - - * config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when - bundling a non-delayed branch type instruction. - -2000-04-20 Alexandre Oliva - - * config/tc-mn10300.c (HAVE_AM30): Define. - (md_assemble): Use it. - -2000-04-19 Alan Modra - - * config/obj-elf.c (obj_elf_change_section): Check for changed - section attributes. - - * Makefile.am: (CPU_MULTI_VALID): Remove. - (MULTI_CPU_TYPES): Define. - (MULTI_CPU_OBJ_VALID): Define. - (DEPTC): Use the above. - (DEPOBJ): Same here. - (DEP2): And here. - Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-04-19 Michael Sokolov - - * Makefile.am (YACC, LEX): Get them from configure. - -2000-04-18 H.J. Lu (hjl@gnu.org) - - * config/tc-i386.c (offset_in_range): Use addressT instead of - bfd_vma for non-bfd assemblers. - -2000-04-17 Alan Modra - - * config/tc-i386.c (offset_in_range): Sign extend val so BFD64 - doesn't give spurious errors. - -2000-04-14 Michael Sokolov - - * as.h (SEEK_SET): Define if undefined. - -2000-04-13 Alan Modra - - * config/tc-arm.c (md_apply_fix3): Don't use UL suffix on - constants, and don't assume offsetT is 32 bits. - -2000-04-12 Andrew Cagney - - * config/tc-d10v.h: Include "write.h" to get definition of fixS. - (md_pcrel_from_section): Add prototype. - (d10v_fix_adjustable): Add prototype. - (d10v_force_relocation): Replace 'struct fix' with 'fixS'. - - * config/tc-d10v.c (md_apply_fix3): Add paren around &&. - -2000-04-12 Nick Clifton - - * config/tc-d10v.c (find_opcode): Correctly calculate position of - symbol in frag chain. - -2000-04-10 Alan Modra - - * config/tc-i386.c (fits_in_signed_byte): Change arg to offsetT. - (fits_in_unsigned_byte, fits_in_unsigned_word): Ditto. - (fits_in_signed_word, smallest_imm_type): Ditto. - (md_assemble): Use an offsetT var to hold offsetT values, not a - long. - (offset_in_range): New. - (md_assemble): Use it. - (md_convert_frag): Change type of target_address, opcode_address, - and displacement_from_opcode_start to offsetT. - (md_create_short_jump): Change type of offset to offsetT. - (md_create_long_jump): Ditto. - (md_apply_fix3): Use -4, not 0xfffffffc for BFD_RELOC_386_PLT32. - (md_chars_to_number): Remove. - (output_invalid): Remove duplicate prototype. - -2000-04-09 Nick Clifton - - * Makefile.am (CPU_TYPES): Add 'avr'. - (TARGET_CPU_CFILES): Add 'tc-avr.c'. - (TARGET_CPU_HFILES): Add 'tc-avr.h'. - - * Makefile.in: Regenerate. - - * doc/as.texinfo: Add M32R documentation. - -2000-04-07 Andrew Cagney - - * 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-07 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Treat BFD_RELOC_ARM_PCREL_BLX - in the same way as BFD_RELOC_ARM_PCREL_BRANCH, and - BFD_RELOC_THUMB_PCREL_BLX lie BFD_RELOC_THUMB_PCREL_BRANCH. - (tc_gen_reloc): Accept BFD_RELOC_{ARM|THUMB}_PCREL_BLX. - (arm_force_relocation): Force relocations for - BFD_RELOC_{ARM|THUMB}_PCREL_BLX as well. - -2000-04-05 J"orn Rennecke - - * config/tc-sh.c (get_operands): There's no third operand if the - first operand is an immediate. - -2000-04-05 J"orn Rennecke - - * config/tc-sh.c (immediate): Delete. - (sh_operand_info): Add immediate member. - (parse_reg): Use A_PC for pc. - (parse_exp): Add second argument 'op'. All callers changed. - (parse_at): Expect pc to be coded as A_PC. - Use immediate field in *op. - (insert): Add fourth argument 'op'. All callers changed. - (build_relax): Add second argument 'op'. All callers changed. - (insert_loop_bounds): New function. - (build_Mytes): Remove DISP_4. - Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT. - (assemble_ppi): Use immediate field in *operand. - (sh_force_relocation): Handle BFD_RELOC_SH_LOOP_{START,END}. - (md_apply_fix): Likewise. - (tc_gen_reloc): Likewise. Check for a pcrel BFD_RELOC_SH_LABEL. - -2000-04-05 Alexandre Oliva - - * config/tc-sparc.c (sparc_ip): Avoid string pasting. - -2000-04-04 Hans-Peter Nilsson - - * internals.texi (CPU backend): Document - TC_CHECK_ADJUSTED_BROKEN_DOT_WORD. - -2000-04-04 Alan Modra - - * po/gas.pot: Regenerate. - - * as.c (show_usage): Restore translated part of bug string. - * gasp.c (show_usage): Likewise. - - * Makefile.am (MKDEP): Use gcc -MM rather than ../mkdep. - (DEP): Quote when passing vars to sub-make. Use "mv -f" rather - than move-if-change. - (DEP1): Modify for "gcc -MM". - (DEPTC): Likewise. - (DEPOBJ): Likewise. - (DEP2): Likewise. - (CLEANFILES): Add DEPTCA, DEPOBJA, DEP2a, DEPA. - Update dependencies. - * Makefile.in: Regenerate. - -2000-04-03 Alexandre Oliva - - * config/tc-mn10300.c (md_pseudo_table): Use constant names. - (md_begin): Likewise. - (HAVE_AM33): New macro. - (md_assemble): Use it. Match r_regs and xr_regs only if - HAVE_AM33. - -2000-04-03 Alan Modra - - * as.h: #include "bin-bugs.h" - * as.c (show_usage): Use REPORT_BUGS_TO. - * gasp.c: #include "bin-bugs.h" - (show_usage): Use REPORT_BUGS_TO. - - * config/tc-sparc.c (md_show_usage): Add a trailing newline. - -2000-04-03 Hans-Peter Nilsson - - * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined, - call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after - adjustments. - -2000-04-03 Alan Modra - - * config/tc-i386.c (i386_immediate): Don't assume a constant - immediate is necessarily 16 bits when in 16 bit code mode. - (md_assemble): Instead set guess_suffix here after we have checked - registers. - -2000-04-02 Richard Henderson - - * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit - quantities. Correct right shift sign extension. - (build_insn): Make `number' unsigned long. Mask top 6 bits of - 32-bit value when shifting into place. - -2000-04-01 Ian Lance Taylor - - * app.c: Add ATTRIBUTE_UNUSED as needed. - * config/tc-ppc.c: Likewise. - (ppc_size): Make unsigned long. - (ppc_insert_operand): Add casts to avoid warnings. - -2000-03-31 Nick Clifton - - * config/tc-d10v.h (md_flush_pending_output): Define. - -2000-03-29 Nick Clifton - - * config/tc-sh.h (SEG_NAME): New macro: return the name of a - segment. Works for both BFD_ASSEMBLER and others. - (SUB_SEGMENT_ALIGN): Use SEG_NAME. - -2000-03-29 Nick Clifton - - * listing.c (LISTING_LHS_WIDTH): Default depends on - LISTING_WORD_SIZE. - (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH. - -2000-03-27 Ian Lance Taylor - - * config/tc-sh.c (md_show_usage): Use backslash before newline in - string literal. - -2000-03-27 Alan Modra - - * config/tc-avr.h (TC_HANDLES_FX_DONE): Define. - - * config/tc-avr.c (mcu_types): Add missing initialiser. - (md_pcrel_from_section): Add prototype. - (avr_operand): Remove redundant test of unsigned < 0. - (avr_cons_fix_new): Ensure exp_mod_pm zero on function exit. - -2000-03-27 Denis Chertykov - - * config/tc-avr.c: New file for AVR support. - * config/tc-avr.h: Likewise. - * configure.in: Add AVR support. - * configure: Regenerate. - -2000-03-26 Timothy Wall - - * gasp.c (macro_op): Add new argument to check_macro call. - Macro structure definitions moved to macro.h - * sb.h: Add argument to prototype for input_scrub_include_sb. - * input-scrub.c (input_scrub_include_sb): Allow disabling of sb - nesting checks with an additional flag. - (struct input_save): Add flag to indicate whether current sb - should be checked for proper macro/conditional nesting. - (input_scrub_push/pop): Save/restore nest check flag. - (input_scrub_next_buffer): Ditto. Also call end of macro hook if - defined. - * macro.c (check_macro): Allow caller to retrieve parsed macro - information if a pointer is provided. This information may be - used by the new macro hooks. - * macro.h: Update prototype for check_macro. Macro struct - definitions moved here from macro.c/gasp.c. - * read.c (read_a_source_file): Add parameter to check_macro call, - and pass macro info to the macro hook, if defined. - (input_scrub_insert_line): New. Allow insertion of a line of - characters into the input stream. - (input_scrub_insert_file): New. Allow insertion of an arbitrary - file into the input stream. - (s_include): Use input_scrub_insert_file. - * internals.texi: Document new macro hooks. - * as.h: New prototypes added. - -2000-03-26 Alan Modra - - * config/tc-i386.c: Don't start any as_bad or as_warn message with - an initial capital letter. - (i386_index_check): Reindent. - -2000-03-19 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc - relative branches. - -2000-03-17 Thomas de Lellis - - * config/tc-arm.c (do_t_adr): Flag "adr Rd,label" - instruction operand bad if Rd > 7 when generating - thumb instructions. Prevents for example, - "adr r12,label" from silently failing and generating - the wrong instruction. - -2000-03-17 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Handle same-section relocations - that have a destingation >= 0x400000. - Fix compile time warning messages. - -2000-03-16 J"orn Rennecke - - * config/tc-sh.c (md_begin): When encountering insn that are - not supported by the current arch, only change the name if - its contents are the same as prev_name. - (get_specific): If the the architecture doesn't match, fail. - -2000-03-16 J"orn Rennecke - - * config/tc-sh.c (IDENT_CHAR): Define. - (parse_reg): Use it instead of isalnum. Put r[0..7]_bank operand - matching back where it came from. - -2000-03-16 J"orn Rennecke - - * config/tc-sh.c (md_show_usage): Add description of -dsp. - -2000-03-15 Jonathan Larmour - - * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before - normal operands. - -2000-03-15 Kazu Hirata - - * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate. - -2000-03-13 Hans-Peter Nilsson - - * expr.c (operand) [case 'f']: When testing if '0f' can start a - floating-point-number, make sure 'f' is in FLT_CHARS. - -2000-03-11 Hans-Peter Nilsson - - * read.c (TC_IMPLICIT_LCOMM_ALIGNMENT): New default-definition. - (s_lcomm_internal): Use it. - * doc/internals.texi (CPU backend): Document it. - * config/obj-evax.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Set to 2**3 - bytes. - -2000-03-10 Geoffrey Keating - - * config/tc-mips.c (mips_ip): Don't put stuff in .rodata - when embedded-pic. - - * config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic - implementation doesn't have special handling for switch - statements. - (macro_build): Allow for code in sections other than .text. - (macro): Likewise. - (mips_ip): Likewise. - (md_apply_fix): Do pc-relative relocation madness for MIPS ELF. - Don't perform relocs if we will be outputting them. - (tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative - relocations. Allow BFD_RELOC_16_PCREL_S2 relocs when - embedded-pic. - -2000-03-09 Catherine Moore - - * config/tc-m32r.c (m32r_fix_adjustable): Look up the - relocation type based on the entry in the fixup structure. - Put S_IS_EXTERN processing back in. - -2000-03-08 H.J. Lu (hjl@gnu.org) - - * Makefile.am (install-exec-tooldir): Depend on - install-exec-bindir for parallel make. - * Makefile.in: Regenerated. - -2000-03-06 Nick Clifton - - * config/tc-m32r.c (struct md_longopts): Add -m32r command line - switch. - (md_parse_option): Parse -m32r command line switch - disable m32rx - compatability. - (md_show_usage): Document new option. - - * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi. - * doc/Makefile.in: Regenerate. - * doc/c-m32r.texi (M32R-Opts): Document new command line switch. - -2000-03-02 Michael Meissner - - * config/tc-d30v.c (check_range): Remove code that incorrectly - sign extended values where bits < 32. - -2000-03-02 H.J. Lu (hjl@gnu.org) - - * configure.in: Support --enable-targets=all on ia32. - * configure: Regenerated. - -2000-03-01 Nick Clifton - - * gasp.c (do_align): Remove bogus check of alignment value. - -2000-02-27 Thomas de Lellis - - * config/obj-elf.c (elf_frob_symbol): Remove code which when - TC_PPC was defined forced the type of a symbol with no other type - to be BSF_OBJECT. - -2000-02-27 Hans-Peter Nilsson - - * doc/internals.texi (CPU backend): Mention that - line_separator_chars do not break up comments. Fix typos for - LEX_AT and LEX_NAME descriptions. Document operands for - TC_EQUAL_IN_INSN, md_operand and md_section_align. Correct - description of md_create_short_jump usage. Document argument for - md_undefined_symbol. - -2000-02-27 Jakub Jelinek - - * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option. - (md_parse_option): Handle it. - (md_show_usage): Document it. - -2000-02-27 Ian Lance Taylor - - * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an - opcode, for the instruction `pal19'. From Andrea Arcangeli - . - -2000-02-26 Alan Modra - - * config/tc-i386.c (i386_immediate): Move constant operand sizing - from here.. - (md_assemble): To here, before template operands are matched. - Also ensure a constant immediate is sign extended when we know the - size is at most 16 bits. This is to catch cases like "add - $0xffc0,%ax" where we don't know the size, and thus that the - immediate can be represented as Imm8S until after parsing the - register operand. - (i386_displacement): Similarly sign extend 16 bit constant - displacements. - (md_assemble): Relax 16-bit jump constant range check to suit sign - extended displacements. - -2000-02-26 Andreas Jaeger - - * doc/c-mips.texi (MIPS Opts): Fix typo in last patch. - -2000-02-25 Alan Modra - - * config/tc-i386.c (md_assemble): Don't swap intersegment jmp and - call operands when intel_syntax. - (intel_float_operand): Return 2 for "fi...". - (i386_operand_modifier): Change "DWORD PTR" test to suit above. - Return SHORT_MNEM_SUFFIX for "WORD PTR" when "fi...". Revert - earlier "SHORT" change. - (md_assemble): When determining suffix from Regs, exclude - InOutPortReg. - -2000-02-24 Nick Clifton - - * configure: Add arm-wince, mips-pe and sh-pe targets. - * configure: Regenerate. - - * config/obj-coff.h (COFF_WITH_PE): Define for mips-pe and - sh-pe targets. - (TARGET_FORMAT): Set to "pe-shl" for the sh-pe target and to - "pe-mips" for the mips-pe target. - - * config/tc-arm.c (insns): Change displacement encoded in BL - and B instructions if the target port is arm-wince. - (do_ldst): Do not bias the relocation offset if the target - port is arm-wince. - (md_pcrel_from): Add in missing relocation offset bias if the - target os arm-wince. - - * config/tc-mips.c (mips_target_format): Support COFF flavour. - (md_begin): Disable -G support for mips-pe target. - (md_apply_fix): Treat BFD_RELOC_RVA reloc as BFD_RELOC_32. - * config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Add support for - COFF flavour. - - * config/tc-sh.c (md_begin): sh-pe target is little endian. - * config/tc-sh.h (SUB_SEGMENT_ALIGN): If using a BFD - assembler, just set the alignment to 4. - - * config/te-wince-pe.h: New file for WinCE targets. Define - TE_WINCE. - -2000-02-25 Alan Modra - - * config/tc-i386.c (md_assemble): Swap segments too for intel mode - string instructions. - (i386_operand_modifier): Set i.suffix = WORD_MNEM_SUFFIX for SHORT. - (i386_intel_memory_operand): After finding a segment override, - check again for no `[' before looking for a displacement. Bomb if - more than one displacement rather than silently discarding the - second and subsequent ones. Free strings malloc'd by - build_displacement_string. - -2000-02-24 Catherine Moore - - * config/obj-som.c (obj_pseudo_table): Add "weak". - (obj_som_weak): New routine. - -2000-02-24 Alan Modra - - * config/tc-i386.c (union i386_op): New. - (struct _i386_insn): Delete disps[], imms[], regs[]. Add op[]. - Throughout file replace occurences of disps[n], imms[n], regs[n] - with equivalent op[n].disps, op[n].imms, op[n].regs. Simplify - intel mode operand swapping. Add assert in regKludge and - fake_zero_displacement code. Test i.types[n] when outputting - displacements and immediates. Combine output of Disp16 with - Disp32. - (md_assemble): Don't try to fix broken UNIXWARE_COMPAT opcodes - when in intel mode by (not) reversing fsub and fdiv operands - before the template search. This fails for single operand - shorthand forms of the instruction, and if UNIXWARE_COMPAT is - undefined. Instead fix the base_opcode after we've found the - template. Move base_opcode xor with found_reverse_match from - opcode output code to before this fix so we test for the correct - opcodes. - (md_assemble): Don't use strcmp when deciding to ignore the suffix - check in intel mode. Instead compare opcodes. - - * config/tc-i386.h (TC_RELOC): Delete. - * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC - with equivalent call to reloc. - - * as.h (flag_m68k_mri): Move declaration after target include, and - only declare when TC_M68K defined. Define as zero otherwise. - (LABELS_WITHOUT_COLONS, NO_PSEUDO_DOT): If undefined, define as 0. - * app.c (scrub_m68k_mri): Declare only when TC_M68K defined. - Define as zero otherwise. - (do_scrub_begin): Use m68k_mri parameter only when TC_M68K defined. - (struct app_save): Declare scrub_m68k_mri only when TC_M68K. - (app_push, app_pop): Save scrub_m68k_mri only when TC_M68K. - (do_scrub_chars): Use LABELS_WITHOUT_COLONS directly rather than - testing whether defined. - * cond.c (ignore_input): Use NO_PSEUDO_DOT directly. - * expr.c (operand): #ifdef unused case labels when TC_M68K undefined. - * read.c: Use LABELS_WITHOUT_COLONS and NO_PSEUDO_DOT directly - rather than testing whether defined. - (s_mri): Set flag_m68k_mri only when TC_M68K defined. - (parse_mri_cons): Declare and use only when TC_M68K. - * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define as 1. - * config/tc-m68k.h (NO_PSEUDO_DOT): Define as 1. - * config/tc-m88k.h (NO_PSEUDO_DOT): Define as 1. - - * NEWS: Mention IBM 370 support. - -2000-02-23 Richard Henderson - - * config/tc-i386.c (md_assemble): When swapping operands for - intel_syntax, assume everything that's not Imm or Disp is a - register. - -2000-02-23 Linas Vepstas - - * config/tc-i370.c, config/tc-i370.h: New files. - * Makefile.am: Add support for Linux/IBM 370. - * configure.in: Likewise. - * app.c (do_scrub_begin): Don't lex single quote when TC_I370. - * config/obj-elf.c: Include elf/i370.h - (obj_elf_section): Don't do anything special for flag_mri if TC_I370. - - * Makefile.in: Regenerate. - * configure: Regenerate. - - * doc/c-i370.texi: New file. - * doc/all.texi: Include it. - * doc/as.texinfo: And here. - * doc/Makefile.am(CPU_DOCS): Add c-i370.texi. - * doc/Makefile.in: Regenerate. - -2000-02-19 Michael Meissner - - * config/tc-d30v.c (parallel_ok): Use FLAG_NOT_WITH_ADDSUBppp to - determine if an instruction can be used in parallel with an ADDppp - or SUBppp instruction. - -2000-02-22 Andrew Haley - - * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64. - -2000-02-22 Andrew Haley - - * config/tc-mips.c (mips_gp32): New variable. - (macro_build) Use mips_gp32. - (mips_ip): Ditto. - (md_longopts): Add "-mgp32" and "-mgp64". - (md_parse_option): Add OPTION_GP32 and OPTION_GP64. - - (OPTION_M7900): Change offset - (OPTION_NO_M7900): Ditto. - -2000-02-22 Alexandre Oliva - - * config/obj-coff.c (add_lineno): Accept non-positive lineno with - warning, and bump it to 1. - -2000-02-22 Ian Lance Taylor - - From Brad Lucier : - * dwarf2dbg.c (print_stats): Add cast to force printf argument to - match format. - -2000-02-21 Catherine Moore - - * config/tc-mips.c (MF_HILO_INSN): Define. - (mips_7000_hilo_fix): Declare. - (append_insn): Conditionally insert nops after an mfhi/mflo insn. - (md_parse_option): Check for 7000_HILO_FIX options. - (OPTION_M7000_HILO_FIX): Define. - (OPTION_NO_M7000_HILO_FIX): Define. - * doc/c-mips.texi (-mfix7000): Describe. - -2000-02-21 Alan Modra - - * listing.c (print_lines): Remove unused variable `end'. - - * config/tc-i386.c (md_assemble): Use `reloc()' to select reloc - type for JumpInterSegment output. Use enum bfd_reloc_code_real for - reloc_type when BFD_ASSEMBLER. - (md_estimate_size_before_relax): Use enum bfd_reloc_code_real for - reloc_type when BFD_ASSEMBLER. Move common code out of switch - statement and quell signed vs. unsigned comparison warning. - -2000-02-18 Nick Clifton - - * config/tc-d10v.c (find_opcode): Add a symbol's value to - the computed frag offset, rather than overwriting it. - -2000-02-17 J"orn Rennecke - - * config/tc-sh.c ("elf/sh.h"): Include. - (sh_dsp, valid_arch, reg_x, reg_y, reg_efg): New static variables. - (md.begin): Initialize target_arch. - Only include opcodes in has table that match selected architecture. - (parse_reg): Recognize register names for sh-dsp. - (parse_at): Recognize post-modify addressing. - (get_operands): The leading space is now optional. - (get_specific): Remove FDREG_N support. Add support for sh-dsp - arguments. Update valid_arch. - (build_Mytes): Add support for SDT_REG_N. - (find_cooked_opcode): New function, broken out of md_assemble. - (assemble_ppi, sh_elf_final_processing): New functions. - (md_assemble): Use find_cooked_opcode and assemble_ppi. - (md_longopts, md_parse_option): New option: -dsp. - * config/tc-sh.h (elf_tc_final_processing): Define. - (sh_elf_final_processing): Declare. - -2000-02-11 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_build_unwind_subspace): Use subseg_new to create - the unwinder subspace. Save the current seg/subseg before creating - the new seg/subseg. - -2000-02-10 Nick Clifton - - * config/tc-mcore.c (INST_BYTE0): Redefine to handle big and - little endian targets. - (INST_BYTE1): Redefine to handle big and little endian - targets. - (cpu_type): New type: Select between M340 and M210. - (parse_psrmod): New function: Parse the PSRCLR and PSRSET - instructions of the M340. - (md_assemble): Add support for the MULSH and OPSR classes of - instructions. - (md_atof): Add support for little endian targets. - (md_parse_option): Add support for -EL, -EB and -mcpu command - line switches. - (md_convert_frag): Add support for little endian targets. - (md_apply_fix3): Add support for little endian targets. - (md_number_to_chars): Add support for little endian targets. - -2000-02-10 Timothy Wall - - * read.c (read_a_source_file): If TC_START_LABEL_WITHOUT_COLON is - defined, use it to verify the symbol just read should be a label. - -2000-02-10 Timothy Wall - - * app.c (do_scrub_chars): Handle "||" for parallel instructions - when DOUBLEBAR_PARALLEL is defined. Avoid stripping whitespace - around colons when KEEP_WHITE_AROUND_COLON is defined. - * doc/internals.texi (CPU backend): Document DOUBLEBAR_PARALLEL - and KEEP_WHITE_AROUND_COLON. - -2000-02-08 Timothy Wall - - * read.c (s_rept): Call do_repeat, which abstracts the repeat - logic. - (do_repeat): New. Abstract repeat logic so that a "break" can be - implemented. - (end_repeat): New. Provide support for a "break" out of the - repeat loop. - * read.h: Add prototypes for new functions. - -2000-02-08 Timothy Wall - - * doc/internals.texi: Document NUMBERS_WITH_SUFFIX macro. - * as.h: Provide a default NUMBERS_WITH_SUFFIX definition (zero). - * expr.c: Handle numbers with suffixes if NUMBERS_WITH_SUFFIX is - non-zero. - -2000-02-08 Timothy Wall - - * read.c: Added elseif to directives table. - * read.h: Added prototype for s_elseif. - * doc/as.texinfo: Added description for elseif. - * cond.c (s_elseif): New function - -2000-02-04 Timothy Wall - - * listing.c (print_lines): Remove conditionals causing bug in - listings. - -2000-02-03 Timothy Wall - - * as.h: Define OCTETS_PER_BYTE and OCTETS_PER_BYTE_POWER - default values. - * frags.c (frag_new): Calculate fr_fix in octets - (frag_now_fix) Return offset as target address offset (bytes). - (frag_now_fix_octets) New - Return offset in octets (8-bit - quantities). - * frags.h: Added prototype for frag_now_fix_octets(). - Distinguish between octets and bytes in field descriptions. - * listing.c (calc_hex): Account for octets vs bytes when - printing addresses/offsets. - (print_lines) Ditto. Also, if LISTING_WORD_SIZE is not 1, and - target is little-endian, print the octets in a word in big-endian - order so that the display looks like a proper hexadecimal number, - instead of having the octets reversed. - * read.c (do_align): When recording alignment, alignment power - should be in terms of target bytes (minimum addressible unit) - instead of octets. - (do_org) Convert ORG target address (byte) argument into an - octet offset when generating a variable fragment. - * symbols.c (resolve_symbol_value): Symbol final value - converted to a target address offset (bytes) from its octet offset. - * config/obj-coff.c (coff_frob_symbol): Symbol target address - offset (bytes) is adjusted by the frag offset (octets) converted - to bytes. - (coff_frob_section) Section alignment power is in terms of bytes; - convert it to an octet alignment power when calculating size (and - size mask) in octets. Don't modify the section size in order to - "align" it for TI COFF, since that format has a different method - for storing alignment information. - -2000-02-01 Timothy Wall - - * stabs.c (generate_asm_file): Escape backslashes in stabs file - entries, matching the way GCC generates them. If not escaped, the - filename is encoded incorrectly. - -2000-01-31 Nick Clifton - - * config/tc-arm.c (reg_table): Add support for ATPCS register - naming conventions. - -2000-01-31 Geoff Keating - - * config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Don't define if - already defined. - * config/tc-ppc.h [OBJ_XCOFF] (OBJ_COPY_SYMBOL_ATTRIBUTES): - New macro. - * config/tc-ppc.c (ppc_fix_adjustable): Don't look at the frag - of a symbol when we really care about its value. - -2000-01-19 Chandra Chavva - - * config/tc-mcore.c (md_assemble): Give warning message if - operands passes to instruction are more than the spec. - -2000-01-27 Thomas de Lellis - - * config/tc-arm.c (armadjust_symtab): If the assembler is in - Thumb mode but the label seen was not declared as '.thumb_func' - then set the ST_INFO type to STT_ARM_16BIT mode. This allows - correct disassembly of Thumb code bounded by non function labels. - -2000-01-27 Alan Modra - - * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c - Add dependencies for e-i386aout.o. Fix 2 comment lines. - - * Makefile.in: Same here. - Update copyright. - - * configure.in: Set bfd_gas for i386-aout when primary target - is bfd. Handle i386aout emulation. Don't use te_file=multi, as - we may need the primary te_file. Remove incorrect comment. - - * configure: Regenerate. - - * config/e-i386aout.c: New file. - - * as.c (USE_EMULATIONS): Move to before print_version_id. - (struct emulation): Add i386aout. - (show_usage): Split text strings. Reformat -a text. Add --em - help. - Update copyright. - - * obj.h (struct format_ops): Add s_get_other and s_get_desc. - (aout_format_ops): New. - Update copyright. - - * read.c (s_lcomm_internal): Rewrite OBJ_AOUT,OBJ_BOUT - preprocessor conditional and add aout USE_EMULATIONS tests. - (read_a_source_file): Don't pass error strings to printf as - format arg. - Update copyright. - - * gasp.c (exp_get_abs): Don't pass error strings to printf as - format arg. - (do_data): Same here. - (process_file): And here. - Update copyright. - - * symbols.c (colon): Rewrite "already defined" fatal message - code for aout with USE_EMULATIONS. - Update copyright. - - * config/obj-aout.c (OBJ_HEADER): Define. - (obj_pseudo_table): Rename to aout_pseudo_table. Init all - fields of sentinel. - (obj_aout_frob_symbol): Expand S_GET_DESC, S_GET_TYPE, - S_GET_OTHER, S_SET_TYPE macros since we don't need obj-multi - forms here. - (obj_aout_type): Expand S_SET_OTHER here too. - (obj_read_begin_hook): Remove. - (aout_pop_insert): New. - (obj_aout_s_get_other): New. - (obj_aout_s_get_desc): New. - (aout_format_ops): New. - Update copyright. - - * config/obj-aout.h (obj_pop_insert): Define so non-multi usage - gets aout_pseudo_table. - (aout_pseudo_table): Declare. - (obj_read_begin_hook): Define. - Update copyright. - - * config/obj-coff.c (obj_pseudo_table): Rename to - coff_pseudo_table. - (coff_pop_insert): Use coff_pseudo_table. - (coff_sec_sym_ok_for_reloc): Remove. - (coff_format_ops): Add 0 entries for s_get_size, s_set_size, - and comment all zero entries and remove #if 0 code. - Update copyright. - - * config/obj-coff.h (obj_pop_insert): Define. - (coff_pseudo_table): Declare. - Update copyright. - - * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for - s_get_size, s_set_size. Comment all zero entries. - Update copyright. - - * config/obj-elf.c (elf_s_get_other): New function. - (obj_read_begin_hook): Rename to elf_obj_read_begin_hook. - (obj_symbol_new_hook): Rename to elf_obj_symbol_new_hook. - (elf_format_ops): Add elf_s_get_other, 0 s_get_size entry, and - comment. - (obj_elf_parse_section_letters): Don't pass error strings to - printf as format arg. - Update copyright. - - * config/obj-elf.h (ECOFF_DEBUGGING): Define when - OBJ_MAYBE_ECOFF. - (elf_s_get_other): Declare. - (S_GET_OTHER) Define as elf_s_get_other if not already - defined. - (S_SET_OTHER): Only define when not already defined. - (elf_obj_read_begin_hook): Declare. - (obj_read_begin_hook): Define. - (elf_obj_symbol_new_hook): Declare. - (obj_symbol_new_hook): Define. - Update copyright. - - * config/obj-multi.h: Add copyright header and protect against - multiple inclusion. Add * to all function pointers. - (OBJ_HEADER): If defined, include it rather than other defines - in this file. - (obj_frob_file_after_relocs): Test for NULL. - (obj_symbol_new_hook): Here too. - (obj_sec_sym_ok_for_reloc): And here. - (S_GET_OTHER): Define. - (S_GET_DESC): Define. - (ECOFF_DEBUGGING): Remove as it's done in obj-elf.h - (OBJ_MAYBE_ELF): Update comment. - - * config/tc-i386.c (i386_immediate): Add OBJ_MAYBE_AOUT to - OBJ_AOUT preprocessor conditional and handle emulation by - testing OUTPUT_FLAVOR. - (i386_displacement): Here too. - (md_section_align): Similarly here. - (i386_target_format): Conditionally compile when more than one - of OBJ_MAYBE_{ELF,COFF,AOUT} defined. Add aout case. - (i386_immediate): Fix error message for aout BFD_ASSMBLER. - (i386_displacement): Here too. - Update copyright. - - * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*. - Define TARGET_FORMAT for aout only when not multi. - Update copyright. - - * config/te-multi.h: Delete file as it's identical to te-generic.h - -2000-01-15 Alan Modra - - * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete. - * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to - LONG_MNEM_SUFFIX. - - * config/tc-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to - DWORD_MNEM_SUFFIX. - * config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too. Fix some - comments. - -2000-01-13 Clinton Popetz - - * config/tc-mips.c (mips_do_align): New function. - * config/tc-mips.h (md_do_align): Define. - -2000-01-10 Philip Blundell - - * doc/c-arm.texi (ARM Options): Fix typo. - (ARM-Chars): Correct description of `#'. Mention that `;' is a - line separator for Linux. - * doc/as.texinfo (Comments): Mention the ARM. - -2000-01-10 Philip Blundell - - * configure.in (arm*-*-conix*): New target. - (arm*-*-linux-gnu*): Match instead of arm-*-linux* and - armv*-*-linux-gnu. - * configure: Regenerate. - -2000-01-03 Martin v. Loewis - - * config/obj-elf.c (elf_pseudo_table): Define visibility pseudos. - (obj_elf_visibility): New function. - - * doc/as.texinfo (Visibility): New node: document visibility - pseudo ops. - -For older changes see ChangeLog-9899 diff --git a/gas/ChangeLog-0203 b/gas/ChangeLog-0203 deleted file mode 100644 index e22a5d5f2..000000000 --- a/gas/ChangeLog-0203 +++ /dev/null @@ -1,7519 +0,0 @@ -2003-12-29 Paul Brook - - * gas/config/tc-arm.c (arm_cpus): Add 926ejs and 1026ejs. - * gas/doc/c-arm.texi: Document them. - -2003-23-12 Paul Brook - - * config/tc-arm.c (arm_archs): Add armv6. - * doc/c-arm.texi: Document -march=armv6. - -2003-12-20 Nick Clifton - - * config/tc-ppc.c (md_apply_fix3): Handle the case where a - .byte directive generates a pc-relative relocation. - -2003-12-19 Nick Clifton - Andreas Schwab - - * messages.c (as_perror): Save errno around library calls. - * input-file.c [BFD_ASSEMBLER]: Set the BFD error to - bfd_error_system_call before each call to as_perror. - (input_file_open): Simplify the error reporting code to just use - as_perror(). - * output-file.c (output_file_create) [BFD_ASSEMBLER]: Set the BFD - error to bfd_error_system_call before calling as_perror. - (output_file_close) [BFD_ASSEMBLER]: Likewise. - (output_file_append) [BFD_ASSEMBLER]: Likewise. - * listing.c (listing_print) [BFD_ASSEMBLER]: Likewise. - -2003-12-19 Kazuhiro Inaoka - - Add m32r-linux and PIC support. Add new ABI that uses RELA. - * configure.in: Add m32r-linux targets. - * configure: Regenerate. - * config/tc-m32r.c (md_parse_option): Add -KPIC option. - (tc_gen_reloc): Added. - (debug_sym, md_estimate_size_before_relax, md_convert_frag, - md_pcrel_from_section, m32r_fix_adjustable): Changed for PIC. - * config/tc-m32r.h (tc_gen_reloc, EXTERN_FORCE_RELOC): Undefined. - (TC_HANDLES_FX_DONE, TC_FIX_ADJUSTABLE, TC_RELOC_RTSYM_LOC_FIXUP): - Defined. - * doc/c-m32r.texi: Document -KPIC option. - * NEWS: Mention the support m32r Linux and PIC. - -2003-12-18 Nick Clifton - - * input-file.c (input_file_open): Remove call to stat(). - Add a check for getc() failing, and catch the case where the - failure is due to an attempt to read a directory. - -2003-12-18 Richard Sandiford - - * config/tc-mips.c (mips_need_elf_addend_fixup): Delete. - (md_apply_fix3): Remove bfd_install_relocation workarounds. - (tc_gen_reloc): Likewise. Factor handling of pc-relative relocations - and treat fx_addnumber as relative to the relocation address. - -2003-12-18 Richard Sandiford - - * config/tc-mips.c (s_change_section): When parsing the MIPS-specific - .section syntax, map SHT_MIPS_DWARF to SHT_PROGBITS. - -2003-12-17 Mark Mitchell - - * config/tc-arm.c (arm_archs): Change "armv6" to "armv6j". - * doc/c-arm.texi (ARM Options): Likewise. - -2003-12-17 Nick Clifton - - * config/tc-m32r.c (error_explicit_parallel_conflicts): Rename - to 'ignore_parallel_conflicts'. - (md_longopts): Change option names as well. - (md_parse_option): Separate the warn_explicit and ignore - parallel conflicts options. - (md_show_usage): Update descriptions of these options. - (first_writes_to_seconds_operands): Do not run this check if - ignoring parallel conflicts. - (assemble_two_insns): Remove code that checked - error_explicit_parallel_conflicts. - * doc/c-m32r.texi: Update descriptions of the options. - -2003-12-16 Dmitry Semyonov - - * tc-arm.c (do_adr): Do not adjust pc by -8 if TE_WINCE is - defined. - (do_adrl): Likewise. - -2003-12-15 Christian Groessler - - * config/tc-z8k.c (struct z8k_exp): Remove, not used anywhere. - (ctrl_table): Add "flags" keyword and some comments. - (flag_table): Convert to uppercase. - (get_flags_operand): Be case insensitive. - (get_interrupt_operand): Be case insensitive. Support notation - where the inperrupt arguments are separated by commas. - (get_operands): Check whether get_flags_operand consumed all - arguments. Return failure if get_ctrl_operand didn't recognize a - valid control register. - (get_specific): Add case CLASS_CTRL: Test for valid control - register for ldctlb opcode. - (build_bytes): Check for valid control registers. - -2003-12-15 Nick Clifton - - * config/obj-aout.c (obj_crawl_symbol_chain): Skip defined - symbols which resolve to symbolic values. - -2003-12-13 Alan Modra - - * config/obj-elf.c: Convert to C90, remove unneeded prototypes and - casts. Formatting. - * config/obj-elf.h: Remove PARAMS. - - * read.c (s_lcomm_internal): Make global. - * read.h (s_lcomm_internal): Declare. - * config/obj-elf.c (elf_pseudo_table): Handle lcomm. - (obj_elf_lcomm): New function. - -2003-12-13 Alan Modra - - * read.c: Remove unneeded prototypes. - (s_comm): Split out code to.. - (s_comm_internal): ..here. Tidy error returns. Rearrange so that - "name" from input line may be used in more places. Merge code - testing for valid size from elf_common. Merge code from - s_lcomm_internal. Call comm_parse_extra. - (bss_alloc): New function, split out of s_lcomm_internal and - elf_common. - (parse_align): Likewise. - (s_lcomm_internal): Rewrite. - (s_lcomm, s_lcomm_bytes): Use s_comm_internal. - * read.h (bss_alloc, parse_align, s_comm_internal): Declare. - * config/obj-elf.c (elf_common): Split out code to.. - (elf_common_parse): ..here. Remove code common to s_comm_internal, - parse_align and bss_alloc. Rearrange and Tidy. - * config/tc-alpha.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Define. - -2003-12-10 Zack Weinberg - - * tc-ppc.c (md_assemble): Rewrite comment about optional operands - to indicate that 'all or none' is also handled. Pluralize a - word in another comment. - -2003-12-10 Paul Brook - - * config/tc-arm.c (FPU_MAVERICK): Define. - (FPU_ARCH_MAVERICK): Define. - (arm_float_abi): Define. - (mfloat_abi_opt): New variable. - (md_begin): Use them. - (arm_opts): Add msoft-float and mhard-float. - (arm_cpus): Use FPU_ARCH_MAVERICK. - (arm_fpus): Add maverick. - (arm_float_abis): Add. - (arm_parse_float_abi): New function. - (arm_long_options): Add mfloat-abi. - * doc/as.texinfo: Document -mfloat-abi=. - * doc/c-arm.text: Ditto. Menution -fpu=maverick. - -2003-12-09 Paul Brook - - * config/tc-arm.c (do_umaal): Fix typo. - -2003-12-06 Kazu Hirata - - * dwarf2dbg.c: Convert to ISO-C. - * write.c: Likewise. - * write.h: Likewise. - -2003-12-06 Richard Sandiford - - * config/tc-mips.c (macro): Switch misordered call to frag_grow() - and setting of tc_fr_offset. - -2003-12-05 Ricardo Anguiano - Mark Mitchell - Richard Earnshaw - - Add V6 support. - * config/tc-arm.c (ARM_EXT_V6): New macro. - (ARM_ARCH_V6): Likewise. - (SHIFT_IMMEDIATE): Likewise. - (SHIFT_LSL_OR_ASR_IMMEDIATE): Likewise. - (SHIFT_ASR_IMMEDIATE): Likewise. - (SHIFT_LSL_IMMMEDIATE): Likewise. - (do_cps): New function. - (do_cpsi): Likewise. - (do_ldrex): Likewise. - (do_pkhbt): Likewise. - (do_pkhtb): Likewise. - (do_qadd16): Likewise. - (do_rev): Likewise. - (do_rfe): Likewise. - (do_sxtah): Likewise. - (do_sxth): Likewise. - (do_setend): Likewise. - (do_smlad): Likewise. - (do_smlald): Likewise. - (do_smmul): Likewise. - (do_ssat): Likewise. - (do_usat): Likewise. - (do_srs): Likewise. - (do_ssat16): Likewise. - (do_usat16): Likewise. - (do_strex): Likewise. - (do_umaal): Likewise. - (do_cps_mode): Likewise. - (do_cps_flags): Likewise. - (do_endian_specifier): Likewise. - (do_pkh_core): Likewise. - (do_sat): Likewise. - (do_sat16): Likewise. - (insns): Add V6 instructions. - (do_t_cps): New function. - (do_t_cpy): Likewise. - (do_t_setend): Likewise. - (THUMB_CPY): New macro. - (tinsns): Add V6 instructions. - (decode_shift): Handle V6 restricted-shift options. - (thumb_mov_compare): Support CPY. - (arm_cores): Add arm1136js and arm1136jfs. - (arm_archs): Add armv6. - (arm_fpus): Add arm1136jfs. - * doc/c-arm.texi (ARM Options): Mention arm1136js, arm1136jfs, and - armv6 options. - -2003-12-06 Christian Groessler - - * config/tc-z8k.c (parse_reg): Be case insensitive when checking - register names. - (get_ctrl_operand): Be case insensitive when checking ctrl names. - -2003-12-05 Nick Clifton - - * config/tc-sh.c (md_show_usage): Fix compilation errors - introduced by the previous delta. - -2003-12-03 Alexandre Oliva - - * config/tc-sh.c: Add support for sh4a and no-fpu variants. - * testsuite/gas/sh/basic.exp: Call tests for sh4a. - * testsuite/gas/sh/{err-sh4a-fp.s, err-sh4a.s, - err-sh4al-dsp.s, sh4a-dsp.d, sh4a-dsp.s, sh4a-fp.d, - sh4a-fp.s, sh4a.d, sh4a.s, sh4al-dsp.d, sh4al-dsp.s: - New files, tests for sh4a and related variants. - -2003-12-05 Michael Snyder - - * config/tc-sh.c (md_show_usage): Mention new -isa options. - * doc/c-sh.texi: Document new -isa options. - * doc/c-sh64.texi: Ditto. - * NEWS: Mention new support for sh4a. - -2003-12-03 H.J. Lu - - * config/tc-alpha.c (s_alpha_end): Don't crash if there is no - matching .ent. - -2003-12-04 Alan Modra - - * tc.h (md_pcrel_from): Don't declare if defined as a macro. - -2003-12-03 Kazuhiro Inaoka - - * config/tc-m32r.h : Add support for new machine m32r2. - * config/tc-m32r.c : Likewise. - Add new command line switches and directives to allow endian-ness - to be selected and some warnings to be turned into errors. - (line_separator_chars) : Use '!'. - * doc/c-m32r.texi: Document new switches and directives. - * NEWS: Mention new support. - -2003-12-03 Dave Airlie - - * configure.in: Likewise. - * configure: Regenerate. - * config/tc-vax.c (md_shortopts): Add 'Q'. - (md_parse_option): Ignore 'Q' for now. - -2003-12-02 Kazu Hirata - - * messages.c: Convert to ISO-C. - * obj.h: Likewise. - * output-file.c: Likewise. - * output-file.h: Likewise. - * sb.c: Likewise. - * sb.h: Likewise. - * stabs.c: Likewise. - * subsegs.c: Likewise. - * subsegs.h: Likewise. - * tc.h: Likewise. - -2003-12-02 Kazu Hirata - - * config/obj-elf.c: Remove ARGSUSED. - -2003-12-02 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-11-30 Kazu Hirata - - * symbols.c: Convert to ISO-C. - * symbols.h: Likewise. - -2003-11-28 Christian Groessler - - * config/tc-z8k.c: Convert to ISO-C. - * config/tc-z8k.h: Likewise. - -2003-11-27 Kazu Hirata - - * read.c: Convert to ISO-C. - * read.h: Likewise. - -2003-11-27 Nick Clifton - - * config/tc-sh.c (sh_elf_cons): If md_cons_align is defined - call it to make sure that the constants that are going to be - emitted are correctly aligned. - -2003-11-27 Alexandre Oliva - - * config/tc-frv.c (md_pcrel_from_section): Don't adjust when - referencing symbol in a different section. - -2003-11-26 Christian Groessler - - * config/tc-z8k.c (s_segm): Fix indentation. - (md_apply_fix3): Likewise. - (cc_names): Add alias names for the names generated by the - disassembler. - (get_cc_operand): Be case insensitive. - (get_operands): Improve error handling for cc operands. - (check_operand): Not used, remove. - (md_assemble): Remove unused variable prev_opcode. Skip - whitespace until end-of-line only. Restore *op_end after call to - hash_find. - -2003-11-26 Nick Clifton - - * config/tc-h8300.c (get_operand): Allow er4-er7 for ldm/stm - instructions on the H8SX. - -2003-11-25 Kazu Hirata - - * config/tc-h8300.c (h8_exp): Remove. - -2003-11-25 Asgari Jinia - - * config/tc-h8300.c (md_assemble): Check operands validity for - ldm/stm. - (get_operand): Check register pair's validity as per technical - note TN-H8*-193A/E from Renesas for H8s and for H8Sx manual. - -2003-11-24 Kazu Hirata - - * listing.c: Convert to ISO-C. - * listing.h: Likewise. - * macro.c: Likewise. - * macro.h: Likewise. - -2003-11-24 Jakub Jelinek - - * app.c (do_scrub_chars): Add PUT (ch) and ch = GET () - when transitioning from states 14 or 15 to 0 or 1. - -2003-11-23 Kazu Hirata - - * hash.c: Convert to ISO-C. - * hash.h: Likewise. - * input-file.c: Likewise. - * input-file.h: Likewise. - * input-scrub.c: Likewise. - * itbl-ops.c: Likewise. - * itbl-ops.h: Likewise. - -2003-11-23 Kazu Hirata - - * config/tc-h8300.c (Hmode): Make it global. - (Smode): Likewise. - (Nmode): Likewise. - (SXmode): Likewise. - -2003-11-22 Kazu Hirata - - * ehopt.c: Convert to ISO-C. - * emul.h: Likewise. - * expr.c: Likewise. - * expr.h: Likewise. - * flonum-copy.c: Likewise. - * flonum-mult.c: Likewise. - * flonum.h: Likewise. - * frags.c: Likewise. - * frags.h: Likewise. - -2003-11-22 Alan Modra - - * doc/c-ppc.texi (PowerPC-Pseudo): Add section. - - * app.c (do_scrub_chars): Revert 2003-04-23 and 2003-04-22. - -2003-11-21 Kazu Hirata - - * ecoff.c: Convert to ISO-C. - * ecoff.h: Likewise. - -2003-11-22 Alan Modra - - * config/tc-ppc.c (parse_cpu): New function, broken out from.. - (md_parse_option): ..here. - (ppc_setup_opcodes): New function, broken out from.. - (md_begin): ..here. - (ppc_machine): Implement .machine pseudo op. - -2003-11-20 Kazu Hirata - - * depend.c: Convert to ISO-C. - * dwarf2dbg.c: Likewise. - * dwarf2dbg.h: Likewise. - -2003-11-20 Kazu Hirata - - * app.c: Convert to ISO-C. - * as.h: Likewise. - * atof-generic.c: Likewise. - * bignum-copy.c: Likewise. - * bignum.h: Likewise. - * cgen.c: Likewise. - * cgen.h: Likewise. - * cond.c: Likewise. - -2003-11-20 DJ Delorie - - * config/tc-sh64.c (shmedia_frob_section): Only frob elf32 - sections. - -2003-11-19 Kazu Hirata - - * config/tc-h8300.c: Make some functions and global - variables static appropriately. - -2003-11-19 Kazu Hirata - - * config/obj-ieee.c: Remove duplicate prototypes. - * config/tc-h8300.c: Likewise. - -2003-11-19 Kazu Hirata - - * config/tc-h8300.c: Convert to ISO-C. - * config/tc-h8300.h: Likewise. - -2003-11-19 Kazu Hirata - - * config/tc-mcore.h: Remove prototypes already in tc.h. - * config/tc-tic4x.c: Likewise. - -2003-11-19 Kazu Hirata - - * config/tc-arc.c: Remove a local prototype of atof_ieee. - * config/tc-ip2k.c: Likewise. - * config/tc-iq2000.c: Likewise. - * config/tc-tic30.c: Remove a comment. - -2003-11-19 Bob Wilson - - * config/tc-xtensa.c (xg_emit_insn): Include "dwarf2dbg.h" and add - call to dwarf2_emit_insn. - -2003-11-18 Maciej W. Rozycki - - * config/tc-mips.c (macro): Handle new macros: "lca" and "dlca" - for loading addresses using CALL relocations. - Don't emit CALL relocations when a base register is used. - -2003-11-15 Maciej W. Rozycki - - * config/tc-mips.c: Formatting fixes. - -2003-11-14 Ben Elliston - - * config/tc-arm.c (arm_elf_change_section): Not static. - -2003-11-13 Nick Clifton - - * tc-arm.c (mapping_state): New function. Emit a mapping - symbol if necessary. - (arm_elf_change_section): New function. Intercept section - changes and generate mapping symbols. - (s_bss): Likewise. - (s_arm_elf_cons): Likewise. - (opcode_select): Choose the correct mapping state. - (md_assemble): Likewise. - * tc-arm.h (md_elf_section_change_hook): Define. - * doc/c-arm.texi (ARM Mapping Symbols): New node. - * NEWS: Mention new feature. - -2003-11-12 Daniel Jacobowitz - - * Makefile.am (install, install-info, RECURSIVE_TARGETS): Define. - * doc/Makefile.am (install-info): Define. - - * aclocal.m4: Regenerate. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2003-11-11 Dmitry Semyonov - - * configure.in: Add support for arm-wince-pe target. - * configure: Regenerate. - -2003-11-11 Jan Hubicka - - * config/tc-i386.c (tc_i386_fix_adjustable): - -2003-11-10 Alan Modra - - * config/tc-ia64.c (ia64_handle_align): Remove bogus be_nop. - -2003-11-10 Alan Modra - - * README: Update bug report address. Move bug reporting info to - binutils/README. - -2003-11-07 Christian Groessler - - * doc/c-z8k.texi: Document command-line options. Fix byte - register names. Document '.z8001' and '.z8002' directives. - Extend addressing modes documentation. - -2003-11-07 Jonathan R. Grant - - * input-file.c (input_file_open): Use "No such file" error - message. - -2003-11-06 Pete Gonzalez - - * config/tc-arm.texi (struct reg_entry): Add new field 'builtin'. - (rn_table, iwmmxt_table, cp_table, cn_table, fn_table, sn_table, - dn_table, mav_mvf_table, mac_mvd_table, mav_mvfx_table, - mav_mvax_table, mav_dspc_table): Initialise new field. - (insert_reg_alias): Initialise new field. - (md_pseudo_table): Add "unreq" entry. - (s_unreq): New function: Undo the effects of a previous .req. - * doc/c-arm.texi: Document new pseudo op. - * NEWS: Mention new feature. - -2003-11-06 Bruno Rohee - - * config/obj-vms.c: Fix "the the" typo. - * doc/c-arm.texi: Likewise. - -2003-11-06 Nick Clifton - - * config/obj-vms.c: Convert to ISO-C. - -2003-11-05 Alan Modra - - * config/tc-ppc.h (TC_FORCE_RELOCATION): Only define for ELF and XCOFF. - -2003-10-31 Christian Groessler - - * config/tc-i860.c (md_pcrel_from): Fix typo in comment. - -2003-10-29 Phil Edwards - - * configure.in (arm-*-vxworks, i386-*-vxworks, mips-*-vxworks, - ppc-*-vxworks, ppc-*-windiss): Remove separate outdated stanzas. - (*-*-vxworks, *-*-windiss): Use common stanzas, all ELF. - * configure: Regenerated. - -2003-10-27 Kazu Hirata - - * ChangeLog: Fix typos. - * ChangeLog-9295: Likewise. - * as.c: Fix comment typos. - * as.h: Likewise. - * atof-generic.c: Likewise. - * bit_fix.h: Likewise. - * frags.h: Likewise. - * hash.c: Likewise. - * input-file.c: Likewise. - * input-scrub.c: Likewise. - * itbl-ops.c: Likewise. - * itbl-parse.y: Likewise. - * listing.c: Likewise. - * macro.h: Likewise. - * read.c: Likewise. - * sb.c: Likewise. - * sb.h: Likewise. - * symbols.c: Likewise. - * symbols.h: Likewise. - -2003-10-27 Stephane Carrez - - * config/tc-m68hc11.c: Convert to ISO C90. - * config/tc-m68hc11.h: Likewise. - -2003-10-26 Kazu Hirata - - * doc/c-sh64.texi: Fix a typo. - -2003-10-26 Kazu Hirata - - * doc/c-alpha.texi: Fix typos. - * doc/c-ia64.texi: Likewise. - * doc/c-mmix.texi: Likewise. - * doc/c-sh64.texi: Likewise. - * doc/c-xtensa.texi: Likewise. - * doc/internals.texi: Likewise. - -2003-10-24 H.J. Lu - - * config/obj-elf.c (obj_elf_change_section): Allow SHF_ALLOC - for .interp, .strtab and .symtab. Use specified section - attributes. - -2003-10-22 Andreas Schwab - H.J. Lu - Jim Wilson - - * config/tc-ia64.c (update_qp_mutex): New. - (note_register_values): Properly handle one of PRs in compare - is PR0. Don't add a mutex relation for .and.orcm/.or.andcm. - Clear mutex relation for .none/.unc. Don't clear mutex relation - on predicated compare. - -2003-10-21 Wouter van Heyst - - * config/tc-arm.c (all_reg_maps): Correct text describing Maverick - register requirements. - (md_begin): Remove F_SOFT_FLOAT if enabling MAVERICK FP. - -2003-10-21 Peter Barada - Bernardo Innocenti - - * config/tc-m68k.c: Add MCF528x (MCFv4) support. - * config/m68k-parse.h: Likewise. - * NEWS: Mention the new support. - * doc/c-m68k.texi: Document new processor selection switch. - -2003-10-19 Thiemo Seufer - - * config/tc-mips.c (normalize_constant_expr): New function to fix sign - extensions broken by gas' expression evaluation of constants. - (check_absolute_expr): Use it. - (mips_ip): Likewise. - -2003-10-18 Hans-Peter Nilsson - - Generate BFD_RELOC_MMIX_PUSHJ_STUBBABLE for PUSHJ when possible. - * doc/c-mmix.texi (MMIX-Opts): Document --no-pushj-stubs and - --no-stubs. - * config/tc-mmix.c: Include limits.h. Expand on mmix_relax_table - comment. - (expand_op, mmix_next_semicolon_is_eoln): Fix head comment. - (pushj_stubs): New variable. - (OPTION_NOPUSHJSTUBS, STATE_PUSHJSTUB, PUSHJSTUB_MIN) - (PUSHJSTUB_MAX): New macros. - (md_longopts): New options "--no-pushj-stubs" and synonym - "--no-stubs". - (mmix_relax_table): Handle new entry for STATE_PUSHJSTUB. - (md_parse_option): Handle OPTION_NOPUSHJSTUBS. - (md_estimate_size_before_relax): Modify STATE_PUSHJ state for - PUSHJ stub relaxation. - (md_convert_frag): Handle STATE_PUSHJSTUB. - (md_apply_fix3): Handle BFD_RELOC_MMIX_PUSHJ_STUBBABLE. - (tc_gen_reloc): Ditto. - (mmix_md_relax_frag): Handle PUSHJ stub relaxation. - * config/tc-mmix.h (TC_SEGMENT_INFO_TYPE): Define. - (struct mmix_segment_info_type): New. - -2003-10-17 Paul Dale - Bernardo Innocenti - - * config/tc-m68k.c (make_pcrel_absolute): Enforce - PC-relative jumps with --pcrel. - (md_convert_frag_1): Likewise. - (md_create_long_jump): Likewise. - -2003-10-17 Shrinivas Atre - - * config/tc-h8300.c (PSIZE): Correct for Normal mode. - (get_operand): Accept both 16 bit 32 bit registers as pointer - registers, when operating in Normal mode. - (fix_operand_size): Make default address size 16 for Normal mode. - -2003-10-17 Ian Lance Taylor - - * config/tc-arm.c (do_iwmmxt_byte_addr): Reject control - registers. - (do_iwmmxt_word_addr): With a control register, reject conditional - execution and reject a non-word size. - -2003-10-16 Peter Bergner - - * configure.in: Set em=linux for ppc-*-linux-gnu* target. - * configure: Regenerate. - -2003-10-15 Alan Modra - - * doc/as.texinfo (Align): Correct list of byte targets. - -2003-10-15 Thiemo Seufer - - * config/tc-mips.c (macro_build_ldst_constoffset,load_register,macro): - Fix indentation. Better error message. - -2003-10-14 Bob Wilson - - * config/tc-xtensa.c (xtensa_create_property_segments): Remove bfd - argument in call to xtensa_get_property_section_name. Formatting. - -2003-10-11 Kaz Kojima - - * config/tc-sh.h (sh_coff_reloc_mangle): Delete an extra - parenthesis. - -2003-10-11 Kaz Kojima - - * config/tc-sh.c: Convert to ISO C90. Remove unnecessary - prototypes and casts. - * config/tc-sh.h: Likewise. - * config/tc-sh64.c: Likewise. - * config/tc-sh64.h: Likewise. - -2003-10-08 Dave Brolley - - * config/tc-frv.c (fr550_check_insn_acc_range): New function. - (fr550_check_acc_range): New function. - (md_assemble): Call fr550_check_acc_range. - -2003-10-08 Dave Brolley - - * config/tc-frv.c: Handle DEFAULT_CPU_FR550. - (md_parse_option): Handle OPTION_CPU==fr550. - (md_show_usage): Document fr550. - -2003-10-08 Philippe De Muyter - - * as.c (use_gnu_debug_info_extensions) : New variable. - (parse_args) : Accept new --gstabs+ option, and set - `use_gnu_debug_info_extensions'. - (show_usage) : Document --gstabs+ option. - * as.h (use_gnu_debug_info_extensions) : New extern declaration. - * stabs.c (stabs_generate_asm_file) : If - `use_gnu_debug_info_extensions' is set, add the compilation - directory to the stabs debug info. - * doc/as.texinfo : Document --gstabs+ option. - * NEWS: Mention new feature. - -2003-10-06 Matt Thomas - - Switch NetBSD/hppa to use Linux PA-RISC ELF ABI and - assembler syntax. - - * tc-hppa.c: Add "%farg[0-3]", "%fret", "%t[1-4]", "%tf[1-4]" - register names. Change all "defined (TE_LINUX)" to - "(defined (TE_LINUX) || defined (TE_NETBSD))". - - * tc-hppa.h: Make NetBSD use "elfXX-hppa-linux" bfd target. - Remove NetBSD's use of LABELS_WITHOUT_COLONS. - -2003-10-06 Robert Millan - - * configure.in: Match GNU/KNetBSD with new knetbsd*-gnu triplet. - * configure: Regenerate. - -2003-10-05 Nick Clifton - - * as.c (parse_args): Revert patch to change handling of -f - option. Its behaviour is mandated by the POSIX 2 spec. - -2003-10-04 Christian Groessler - - * tc-z8k.c (newfix): Tell fix_new_exp about pc relativeness. - (md_apply_fix3): Fix R_JR, R_DISP7, and R_CALLR cases. - (md_pcrel_from): This function now gets called. Supply return - value. - -2003-10-04 Nick Clifton - - * as.c: Convert to ISO C90. - -2003-10-04 Nick Clifton - - * as.c (std_shortopts): Remove 'f'. - (std_longopts): Add 'f'. Doing this prevents -f being - acecpted as an alias for -f. - -2003-10-04 Danny Smith - - * config/obj-coff.c (obj_coff_section [BEF_ASSEMBLER]): - Make 'r' mean readonly data. - -2003-10-01 Thiemo Seufer - - * config/tc-mips.c (macro_build_ldst_constoffset,load_register,macro): - Unbreak overflow checks. - -2003-10-01 Chris Demetriou - - * config/tc-mips.c (s_cpreturn): Correct errors in comment. - -2003-10-01 Thiemo Seufer - - * config/tc-mips.c (macro_build_ldst_constoffset): Fix sign extension - tests. - (load_register): Likewise. - (macro): Likewise. - -2003-09-30 Chris Demetriou - - * config/tc-mips.c (mips_ip): Capitalize first word of - existing condition code warning, and add condition code - warnings for .ps instructions, and for bc1any[24][tf]. - -2003-09-30 Chris Demetriou - - * NEWS: Mention support for MIPS64 Release 2. - -2003-09-30 Chris Demetriou - - * NEWS: Add an indication of the cutoff for 2.14. - -2003-09-30 Chris Demetriou - - * configure.in (mipsisa64r2, mipsisa64r2el, mipsisa64r2*): New CPUs. - * configure: Regenerate. - * config/tc-mips.c (imm2_expr): New variable. - (md_assemble, mips16_ip): Initialize imm2_expr. - (ISA_HAS_64BIT_REGS, ISA_HAS_DROR, ISA_HAS_ROR): Add ISA_MIPS64R2. - (macro_build): Handle +A, +B, +C, +E, +F, +G, and +H format operands. - (macro): Handle M_DEXT and M_DINS. - (validate_mips_insn): Handle +E, +F, +G, +H, and +I format operands. - (mips_ip): Likewise. - (OPTION_MIPS64R2): New define. - (md_longopts): New entry for -mips64r2 (OPTION_MIPS64R2). - OPTION_ASE_BASE): Increase to compensate for OPTION_MIPS64R2. - (md_parse_option): Handle OPTION_MIPS64R2. - (s_mipsset): Handle setting "mips64r2" ISA. - (mips_cpu_info_table): Add mips64r2. - (md_show_usage): Document -mips64r2 option. - * doc/as.texinfo: Docuemnt -mips64r2 option. - * doc/c-mips.texi: Likewise. - -2003-09-27 John David Anglin - - * config/tc-hppa.c (pa_ip): Check for invalid 64-bit conditions. - -2003-09-26 Matt Thomas - - * config/tc-vax.c (md_shortopts): Fix a typo. Remove 'K'. - (OPTION_PIC): Define. - (md_longopts): Add "pic" option. - (md_parse_option): Change 'K' to OPTION_PIC. - -2003-09-23 Alan Modra - - * config/obj-elf.c (obj_elf_change_section): Adjust for - _bfd_elf_get_sec_type_attr changes. Allow SHF_MERGE and SHF_STRINGS - to be set when defaults are not. Don't set attr from defaults if - old_sec. - -2003-09-18 Thiemo Seufer - - * config/tc-mips.c (macro_build_ldst_constoffset): Don't silently - truncate values which won't fit im 32 bits. - (load_register): Likewise. - (macro): Likewise. - -2003-09-17 Dmitry Diky - - * config/tc-msp430.c (MAX_OP_LEN): Set to 256. - (msp430_operands): Remove redundant l2[16] within switch-case. - -2003-09-16 Ralf Corsepius - - * configure.in: Handle arm-*-rtems* and thumb-*rtems*. - * configure: Regenerate. - -2003-09-14 Thiemo Seufer - - * config/tc-mips.c (HAVE_64BIT_ADDRESS_CONSTANTS): Remove. - (macro_build_ldst_constoffset): Sign-extend 32-bit constants. Change - the function prototype. - (load_register): Likewise. Simplify the checks for sign-extended - constants. - (macro): Likewise. Fix code generation for 64-bit address constants - outside the 32-bit compatibility space. Adjust - macro_build_ldst_constoffset calls. - (s_cprestore): Adjust macro_build_ldst_constoffset call. - -2003-09-11 Bob Wilson - - * config/tc-xtensa.c (insn_labels, free_insn_labels, saved_insn_labels, - literal_syms): New global variables. - (xtensa_define_label, add_target_symbol, xtensa_find_label, - map_over_defined_symbols, is_loop_target_label, - xtensa_mark_target_fragments, xtensa_move_frag_symbol, - xtensa_move_frag_symbols, defined_symbols, branch_targets): Delete. - (xtensa_begin_directive): Call md_flush_pending_output. Move symbols - from insn_labels to saved_insn_labels when entering a literal region. - (xtensa_end_directive): Call md_flush_pending_output. Restore - insn_labels list when leaving a literal region. - (xtensa_literal_position): Call xtensa_clear_insn_labels. - (xtensa_literal_pseudo): Add check to disallow .literal inside a - literal region. Move insn_labels to saved_insn_labels and then restore - insn_labels on exit. - (xg_add_branch_and_loop_targets): Replace add_target_symbol calls with - code to set is_loop_target or is_branch_target flag on the symbol - (xtensa_create_literal_symbol): Call xtensa_add_literal_sym. - (xtensa_add_literal_sym, xtensa_add_insn_label, - xtensa_clear_insn_labels): New functions. - (xtensa_move_labels): Remove old_frag and old_offset arguments. Add - loops_ok argument. Rewrite to use insn_labels list instead of - calling xtensa_find_label and to check the is_loop_target flag on - symbols when loops_ok is false. - (xtensa_frob_label): Remove call to xtensa_define_label. Add call - to either xtensa_add_literal_sym or xtensa_add_insn_label. Adjust - call to xtensa_move_labels. Propagate is_branch_target and - is_loop_target flags from symbols to frags. - (xtensa_flush_pending_output): Call xtensa_clear_insn_labels. - (md_assemble): Use xtensa_move_labels with loops_ok = FALSE when - aligning a loop instruction. Adjust call to xtensa_move_labels for - aligning entry instructions. Add call to xtensa_clear_insn_labels. - (xtensa_end): Remove call to xtensa_mark_target_fragments. - (xtensa_move_literals): Replace xtensa_move_frag_symbols call with - code to use new literal_syms list. - * config/tc-xtensa.h (xtensa_symfield_type): Add is_loop_target and - is_branch_target flags. - -2003-09-09 Bob Wilson - - * config/tc-xtensa.c (xtensa_mark_literal_pool_location): Remove - "move_labels" argument and corresponding call to xtensa_move_labels. - (md_assemble): Add a separate call to xtensa_move_labels and remove - argument for call to xtensa_mark_literal_pool_location. - (xtensa_literal_position, xtensa_switch_to_literal_fragment): Fix - calls to xtensa_mark_literal_pool_location. - (xtensa_create_local_symbol): Delete and inline the code into... - (xtensa_create_literal_symbol): ...here. - (xtensa_frob_label): Combine conditionals. - (expression_maybe_register, xtensa_symbol_new_hook, - fix_new_exp_in_seg): Use symbol_get_tc. - -2003-09-09 Bob Wilson - - * config/tc-xtensa.c (xtensa_literal_pseudo): Remove code for - combining identical literals. - (expression_maybe_register): Remove call to find_lit_sym_translation. - (is_duplicate_expression, cache_literal, is_duplicate_literal, - add_lit_sym_translation, find_lit_sym_translation): Delete. - -2003-09-07 Nick Clifton - - * doc/as.texinfo (Comments): Comment character for PPC is #. - -2003-09-06 Stephane Carrez - - PR savannah/4358: - * config/tc-m68hc11.c (s_m68hc11_relax): Use 2 for size to avoid - overflow complain. - -2003-09-05 Richard Sandiford - - * config/tc-frv.c (md_pcrel_from_section): Heed TC_FORCE_RELOCATION. - -2003-09-04 Nick Clifton - - * config/tc-v850.c (set_machine): Accept v850e1 machine number. - (md_pseudo_table): Add .v850e1 pseudo op. - (md_show_usage): Document -mv850e1 switch. - (md_parse_option): Accept -mv850e1 switch. - (md_begin): Allow TARGET_CPU to be v850e1. - * doc/c-v850.texi: Document -mv850e1 switch and .v850e1 pseudo op. - * NEWS: Mention support for v850e1. - -2003-09-04 Alan Modra - - * config/tc-ppc.c (md_parse_option): Add PPC_OPCODE_ANY to existing - ppc_cpu selection rather than replacing. - (ppc_set_cpu): Ignore and preserve PPC_OPCODE_ANY in ppc_cpu. - (md_begin): When PPC_OPCODE_ANY, insert all opcodes in ppc_hash. - -2003-09-03 Robert Millan - - * configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu - triplet. - * configure: Regenerate. - -2003-09-02 Daniel Jacobowitz - - * configure.in: Update AC_PREREQ to 2.57. Use AC_CONFIG_FILES - and AC_CONFIG_COMMANDS instead of the three-argument AC_OUTPUT. - Specify AC_CONFIG_AUX_DIR. - * aclocal.m4: Regenerated with aclocal-1.7. - * configure: Regenerated with autoconf 2.57. - * Makefile.in, doc/Makefile.in: Regenerated with automake-1.7. - -2003-08-29 Jakub Jelinek - - * dw2gencfi.c (cfi_pseudo_table): Add cfi_window_save. - (dot_cfi, output_cfi_insn): Handle DW_CFA_GNU_window_save. - (output_cie): Don't use DW_EH_PE_pcrel if neither DIFF_EXPR_OK - nor tc_cfi_emit_pcrel_expr are defined. - (output_fde): Use tc_cfi_emit_pcrel_expr if available and - DIFF_EXPR_OK is not defined. - * config/tc-sparc.h (TARGET_USE_CFIPOP): Define. - (tc_cfi_frame_initial_instructions, tc_regname_to_dw2regnum, - tc_cfi_emit_pcrel_expr): Define. - (sparc_cfi_frame_initial_instructions, sparc_regname_to_dw2regnum, - sparc_cfi_emit_pcrel_expr): New prototypes. - (sparc_cie_data_alignment): New decl. - (DWARF2_DEFAULT_RETURN_COLUMN, DWARF2_CIE_DATA_ALIGNMENT): Define. - * config/tc-sparc.c: Include dw2gencfi.h. - (sparc_cie_data_alignment): New variable. - (md_begin): Initialize it. - (sparc_cfi_frame_initial_instructions): New function. - (sparc_regname_to_dw2regnum): Likewise. - (sparc_cfi_emit_pcrel_expr): Likewise. - * doc/as.texinfo: Document .cfi_window_save. - - * config/tc-sparc.c (s_common): Cast last argument to long and - change format string to shut up warning. - -2003-08-25 Jason Eckhardt - - * doc/c-i860.texi: Update text about relocatable address expansions. - -2003-08-24 Jason Eckhardt - - * config/tc-i860.c (md_assemble): Use isrc2 from the original - instruction when expanding E_ADDR. - -2003-08-21 Nick Clifton - - * po/tr.po: Updated Turkish translation. - -2003-08-20 Alan Modra - - * config/tc-ppc.c (md_parse_option): Add PPC_OPCODE_ISEL and - PPC_OPCODE_RFMCI to -m440 selected ppc_cpu. - -2003-08-19 Nick Clifton - - * config/tc-arm.c (cp_address_required_here): Add code to handle - unindexed addressing mode. - -2003-08-19 Alan Modra - - * config/tc-ppc.c (md_parse_option): Handle -m440. - (md_show_usage): Add -m440. - (md_apply_fix3): Warning fix. - * doc/c-ppc.texi: Document -m440. - -2003-08-16 Benjamin Kalytta - - * read.c (s_print): Check for NULL. - -2003-08-16 Alan Modra - - * write.c (fixup_segment): When handling an expression involving - the subtraction of two symbols in the same segment, don't clear - fx_pcrel except for TC_M68K. - -2003-08-14 Alan Modra - - * config/tc-i386.h: Remove BFD_ASSEMBLER tests and all !BFD_ASSEMBLER - code. - * config/tc-i386.c: Likewise. - (RELOC_ENUM): Don't define. Replace throughout with enum. - - * dep-in.sed: Remove libintl.h. Ignore include/fopen-*.h - * Makefile.am (POTFILES.in): Unset LC_COLLATE. - Run "make dep-am". - * Makefile.in: Regenerate. - -2003-08-08 Andreas Schwab - - * config/tc-m68k.h (TARGET_USE_CFIPOP) - (DWARF2_DEFAULT_RETURN_COLUMN, DWARF2_CIE_DATA_ALIGNMENT) - (tc_regname_to_dw2regnum, tc_cfi_frame_initial_instructions): - Define. - * config/tc-m68k.c: Include "dw2gencfi.h". - (tc_m68k_regname_to_dw2regnum) - (tc_m68k_frame_initial_instructions): New functions. - -2003-08-08 Dmitry Diky - - * config/tc-msp430.c: Add xW42 and xE42 parts. Sort MPU list - according to gcc order. - -2003-08-07 Jason Eckhardt - - * config/tc-i860.c (i860_check_label): New function. - * config/tc-i860.h (i860_check_label): New prototype. - (tc_check_label): Define macro as i860_check_label. - -2003-08-06 Jason Eckhardt - - * config/tc-i860.c (s_align_wrapper): New function and prototype. - (md_pseudo_table): Change s_align_bytes to s_align_wrapper, remove - surrounding OBJ_ELF ifdef, and re-format slightly. - * doc/c-i860.texi: Document the special .align syntax available - in Intel mode. - -2003-08-06 Jason Eckhardt - - * config/tc-i860.c (i860_handle_align): New function. - * config/tc-i860.h (HANDLE_ALIGN): Define macro. - (MAX_MEM_FOR_RS_ALIGN_CODE): Define macro. - -2003-08-06 Jason Eckhardt - - * config/tc-i860.c (i860_process_insn): Check that instructions - with their dual-bit set are 8-byte aligned. - -2003-08-06 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-08-05 Jason Eckhardt - - * config/tc-i860.c (i860_process_insn): Don't handle dual-bit - setting during flop argument parsing. Instead, do it after - instruction is fully parsed. - -2003-08-05 Jason Eckhardt - - * doc/c-i860.texi: Mention that .dual, .enddual, and .atmp - directives are only available in Intel syntax mode. - -2003-08-05 Jason Eckhardt - - * config/tc-i860.c (s_dual): Accept .dual directive only in - the Intel syntax mode. - (s_enddual): Likewise for .enddual. - (s_atmp): Likewise for .atmp. - -2003-08-04 Alan Modra - - * config/tc-i386.c (i386_intel_operand): Always call i386_index_check - for memory operands. Pass the full operand_string to i386_index_check. - -2003-08-01 Jason Eckhardt - - * config/tc-i860.c: Remove SYNTAX_SVR4 macro and occurrences. - (target_intel_syntax): Declare variable. - (OPTION_INTEL_SYNTAX): Declare macro. - (md_longopts): Add option -mintel-syntax. - (md_parse_option): Set target_intel_syntax. - (md_show_usage): Add -mintel-syntax usage. - (md_begin): Set reg_prefix based on target_intel_syntax. - (i860_process_insn): Skip register prefix only if there is one. - Parse relocatable expressions in either Intel or AT&T syntax based - on target_intel_syntax instead of the SYNTAX_SVR4 macro. - * doc/c-i860.texi: Document -mintel-syntax option and give blurb - about the differences in syntax. - -2003-08-01 Dmitry Diky - - * config/tc-msp430.c (msp430_srcoperand): Extend 'push' bug workaround - to all arches. - -2003-07-30 J"orn Rennecke - - * config/tc-sh.c (md_assemble): For branches, check & update - valid_arch here. - -2003-07-30 Jason Eckhardt - - * config/tc-i860.c: Convert to ISO C90. - -2003-07-30 Rainer Orth - - * read.c (s_space): Revert 2003-07-28 change. - -2003-07-30 Alan Modra - - * config/obj-elf.c (obj_elf_change_section): Allow "x" for .note*. - -2003-07-29 Alan Modra - - * config/tc-sh.c (tc_gen_reloc): Test for R_SH_IND12W only when ELF. - -2003-07-29 Jakub Jelinek - - * config/tc-ppc.c (md_apply_fix3): Fix check for lq insns. - -2003-07-28 H.J. Lu - - * config/obj-elf.c (obj_elf_section_type): Also accept "note". - -2003-07-28 Rainer Orth - - * read.c (s_space): Don't warn about .space 0. - -2003-07-28 Rainer Orth - - * config/tc-mips.c (mips_flag_pdr): Define. - (md_begin) [OBJ_ELF]: Use it to control .pdr creation. - (s_mips_end) [OBJ_ELF]: Likewise. - (md_longopts) [OBJ_ELF]: Define OPTION_PDR, OPTION_NO_PDR. - (md_parse_option) [OBJ_ELF]: Handle them. - (md_show_usage) [OBJ_ELF]: Document -mpdr, -mno-pdr. - - * doc/c-mips.texi (MIPS Opts): Document -mpdr, -mno-pdr. - * doc/as.texinfo (Overview) [MIPS]: Likewise. - -2003-07-25 H.J. Lu - - * config/obj-elf.c (obj_elf_change_section): Update - elf_section_type and elf_section_flags only when they are - specified. - -2003-07-25 H.J. Lu - - * config/obj-elf.c (obj_elf_change_section): Always set section - type and flags. - -2003-07-25 H.J. Lu - - * config/obj-elf.c (special_sections): Removed. - (obj_elf_change_section): Call _bfd_elf_get_sec_type_attr. Set - elf_section_type and elf_section_flags. - (elf_frob_file): Set SHT_GROUP. - - * config/obj-elf.h (obj_sec_set_private_data): New. - - * config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): Removed. - * config/tc-ia64.h: Likewise. - * config/tc-m32r.h: Likewise. - * config/tc-m68hc11.h: Likewise. - * config/tc-mcore.h: Likewise. - * config/tc-mips.h: Likewise. - * config/tc-ppc.h: Likewise. - * config/tc-sh64.h: Likewise. - * config/tc-v850.h: Likewise. - * config/tc-xtensa.h: Likewise. - - * config/tc-v850.h (SHF_V850_GPREL): Removed. - (SHF_V850_EPREL): Likewise. - (SHF_V850_R0REL): Likewise. - - * subsegs.c (subseg_get): Call obj_sec_set_private_data if it - is defined. - -2003-07-24 Stephane Carrez - - * config/tc-m68hc11.h (DWARF2_ADDR_SIZE): Use 32-bit address for - debugging symbols so that we handle page memory correctly. - -2003-07-24 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-07-23 Daniel Jacobowitz - - * config/tc-arm.c (arm_archs): Add iwmmxt. - -2003-07-22 H.J. Lu - - * read.c (do_parse_cons_expression): Mark nbytes unused to - silence gcc. - -2003-07-22 Alexandre Oliva - - * config/tc-h8300.c (get_specific): No PCREL8 encoding for bsr/bc - or bsr/bs. - - * config/tc-h8300.c (md_assemble): Make sure characters after - slash and dot are lower-case. - -2003-07-17 Nick Clifton - - * po/es.po: New Spanish translation. - * po/tr.po: New Turkish translation. - * po/opcodes.pot: Regenerate. - -2003-07-16 Alan Modra - - * dwarf2dbg.c (get_frag_fix): Revert 2001-11-15 change. - (generic_dwarf2_emit_offset): Don't define function when - TC__DWARF2_EMIT_OFFSET is defined. - -2003-07-15 Richard Sandiford - - * config/tc-mips.c (hilo_interlocks): True for CPU_RM7000. - (mips_cpu_info_table): Add rm7000 and rm9000 entries. - * doc/c-mips.texi: Document -march=rm9000. - -2003-07-15 Alan Modra - - * config/tc-v850.c (md_assemble): When no reloc, create pcrel fixups - only for V850_OPERAND_DISP operands. - -2003-07-15 Alan Modra - - * frags.c (frag_more): Move segment checks to.. - (frag_alloc_check): ..here. New function. - (frag_append_1_char): Call frag_alloc_check. - -2003-07-14 Nick Clifton - - * po/tr.po: Update with latest version. - * po/POTFILES.in: Regenerate. - * po/gas.pot: Regenerate. - * configure: Regenerate. - -2003-07-14 Nick Clifton - - * config/tc-ip2k.c: Remove inclusion of - * config/tc-tic4x.c: Replace inclusion of with - "safe-ctype.h" and update use of macros. - * Makefile.am: Update dependencies. - * Makefile.in: Regenerate. - -2003-07-11 Alan Modra - - * po/gas.pot: Regenerate. - -2003-07-10 Jakub Jelinek - - * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define always. - (TARGET_USE_CFIPOP, tc_cfi_frame_initial_instructions, - tc_regname_to_dw2regnum, DWARF2_DEFAULT_RETURN_COLUMN, - DWARF2_CIE_DATA_ALIGNMENT): Define. - (ppc_cfi_frame_initial_instructions, tc_ppc_regname_to_dw2regnum): New - prototypes. - (ppc_cie_data_alignment): Declare. - * config/tc-ppc.c: Include dw2gencfi.h. - (ppc_cie_data_alignment): Define. - (md_begin): Initialize ppc_cie_data_alignment. - (ppc_cfi_frame_initial_instructions, tc_ppc_regname_to_dw2regnum): New - functions. - * config/tc-s390.h (DWARF2_LINE_MIN_INSN_LENGTH): Define always. - (TARGET_USE_CFIPOP, tc_cfi_frame_initial_instructions, - tc_regname_to_dw2regnum, DWARF2_DEFAULT_RETURN_COLUMN, - DWARF2_CIE_DATA_ALIGNMENT): Define. - (s390_cfi_frame_initial_instructions, tc_s390_regname_to_dw2regnum): - New prototypes. - (s390_cie_data_alignment): Declare. - * config/tc-s390.c: Include dw2gencfi.h. - (s390_cie_data_alignment): Define. - (md_begin): Initialize s390_cie_data_alignment. - (s390_cfi_frame_initial_instructions, tc_s390_regname_to_dw2regnum): - New functions. - -2003-07-10 Alexandre Oliva - - 2002-12-12 Alexandre Oliva - * config/tc-mn10300.h (EXTERN_FORCE_RELOC): Don't define to zero. - 2001-05-09 Alexandre Oliva - * configure.in (am33_2.0, mn10300-*-linux*): Added. - * configure: Rebuilt. - * config/tc-mn10300.h (TARGET_FORMAT) [TE_LINUX]: Define to - elf32-am33lin. - * config/tc-mn10300.c (md_begin) [TE_LINUX]: Choose AM33/2.0 - by default. - -2003-07-09 Alexandre Oliva - - 2003-02-25 Alexandre Oliva - * config/tc-mn10300.c (mn10300_check_fixup): Set GOT_PCREL type - for subtracts from GLOBAL_OFFSET_TABLE that could not be - simplified. - 2002-07-18 Alexandre Oliva - * config/tc-mn10300.c (mn10300_check_fixup): Accept subtracts that - could not be simplified. - (tc_gen_reloc): Turn an absolute fx_subsy into part of fx_offset. - 2001-11-04 Alexandre Oliva - * config/tc-mn10300.h (TC_RELOC_RTSYM_LOC_FIXUP): Don't adjust - BDF_RELOC_MN10300_GOT32. - * config/tc-mn10300.c (mn10300_fix_adjustable): If - TC_RELOC_RTSYM_LOC_FIXUP doesn't hold, it's not adjustable. - 2001-05-09 Alexandre Oliva - * config/tc-mn10300.c (mn10300_parse_name): Don't return a - symbol if we know its value. - 2001-05-09 Alexandre Oliva - * config/tc-mn10300.h (GLOBAL_OFFSET_TABLE_NAME): Remove - duplicate underscore prefix. - 2001-05-09 Alexandre Oliva - * config/tc-mn10300.c (mn10300_parse_name): Store relocation - type in X_md, not X_add_number. Zero X_add_number. - (mn10300_check_fixup): Extract relocation type from X_md. - * config/tc-mn10300.h: Update comment. - 2001-04-14 Alexandre Oliva - * config/tc-mn10300.h (O_GOTOFF, O_PLT, O_GOT): Replace with... - (O_PIC_reloc): this. - * config/tc-mn10300.c (mn10300_PIC_related_p): Use it. - (mn10300_check_fixup): Likewise. - (mn10300_parse_name): Set X_add_number to relocation type. - * config/tc-mn10300.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME, - TC_RELOC_RTSYM_LOC_FIXUP, md_parse_name, TC_CONS_FIX_NEW, - O_GOTOFF, O_PLT, O_GOT): Define. - * config/tc-mn10300.c (mn10300_PIC_related_p): New fn. - (mn10300_check_fixup): New fn. - (md_assemble): Call it. Check for PIC-related relocs. - (mn10300_cons_fix_new): Likewise. New fn. - (mn10300_end_of_match): New fn. - (mn10300_md_parse_name_cont): New fn. - -2003-07-09 Alexandre Oliva - - 2000-05-25 Alexandre Oliva - * config/tc-mn10300.c (mn10300_insert_operand): Negate negative - accumulator's shift. - 2000-05-08 Alexandre Oliva - * config/tc-mn10300.c (md_relax_table, md_convert_frag, - md_assemble, md_estimate_size_before_relax): Handle fbCC. - 2000-04-20 Alexandre Oliva - * config/tc-mn10300.c (HAVE_AM33): Redefine in terms of - HAVE_AM33_2. - 2000-04-03 Alexandre Oliva - * config/tc-mn10300.c (md_pseudo_table): Use AM33_2 constant. - (HAVE_AM33): Match AM33_2 too. - (HAVE_AM33_2): New macro. - (md_assemble): Use it. Match 2.0 registers only if HAVE_AM33_2. - 2000-04-01 Alexandre Oliva - * config/tc-mn10300.c (md_pseudo_table): Added `am33_2'. - (float_registers, double_registers): New variables. - (float_register_name, double_register_name): New functions. - (md_assemble): Recognize FP registers. Implement FMT_D3. - (mn10300_insert_operand): Support FP registers. - -2003-07-08 Chris Demetriou - - * config/tc-mips.c (mips_validate_fix): Do not warn about branch - target being a global symbol if not compiling SVR4 PIC code. - -2003-07-07 Nick Clifton - - * doc/c-m32r.texi (M32R-Directives): New node. Document the - .high, .shigh and .low directives. - -2003-07-07 Richard Sandiford - - * config/tc-h8300.c (h8300sxnmode): Add prototype. - (DSYMMODE): Remove. - (parse_exp): Replace expressionS argument with a h8_op. Parse the - operand size as well. - (skip_colonthing): Remove unused expression argument. Tighten checks - for 2-digit sizes. - (colonmod24): Remove. - (get_mova_operands): Combine calls to parse_exp and skip_colonthing. - (get_operand): Likewise. Use the standard code to read the size of - pc-relative operands. - (fix_operand_size): Include the size-guessing logic that used to be - in colonmod24 and get_operand. Don't apply dd:2 optimizations to - offsets with a symbolic component. - -2003-07-04 Nick Clifton - - * config/tc-i386.c (tc_x86_regname_to_dw2regnum): Use ARRAY_SIZE - macro to compute size of selected register name array. - -2003-07-01 Martin Schwidefsky - - * config/tc-s390.c (md_parse_option): Add cpu type z990. - (md_begin): Add minimal cpu type logic for instructions with different - binary format depending on the cpu. - (md_assemble): Remove check for minimal cpu. - (s390_insert_operand): Add support for long displacements. - (md_gather_operands): Likewise. - (tc_s390_fix_adjustable): Likewise. - (tc_s390_force_relocation): Likewise. - (md_apply_fix3): Likewise. - -2003-06-30 Chris Demetriou - - * config/tc-mips.c (s_mipsset): Implement -march= handling - differently. - -2003-06-30 Thiemo Seufer - - * config/tc-mips.c: Convert to ISO C90 prototypes. Remove unnecessary - prototypes and casts. Replace PTR with void *. Reformat. - * config/tc-mips.h: Likewise. - -2003-06-30 Alan Modra - - * config/tc-ia64.c (note_register_values): Warning fix. - * config/tc-mips.c (append_insn): Likewise. - -2003-06-29 Thiemo Seufer - - * config/tc-mips.c (mips_set_options,mips_opts): Support for - .set arch=FOO. - (file_mips_arch): Rename mips_arch. - (mips_arch_info,mips_tune_info): Remove. - (hilo_interlocks,gpr_interlocks,cop_interlocks): Use mips_opts.arch. - (mips_cpu_info_from_arch): New function. - (md_begin): Use file_mips_arch. - (macro_build,macro,mips_ip): Use mips_opts.arch. - (mips_set_architecture): Init file_mips_arch and mips_opts.arch. - (mips_after_parse_args): Remove mips_arch_info and mips_tune_info. - Use file_mips_arch. - (s_mipsset): Support for .set arch=FOO. - (mips_cpu_info_table): Fix typo. - -2003-06-26 H.J. Lu - - * config/tc-i386.c (md_assemble): Declare "exp" before "if". - -2003-06-25 Richard Sandiford - - * config/tc-h8300.c (get_specific): Allow ':8' to be used for - unsigned 8-bit operands. - -2003-06-24 Nick Clifton - - * read.c (s_comm): Change error message to assume an unsigned size - has been passed to .comm. - * config/tc-sparc.c (s_common): Likewise. - * write.c (write_contents): Replace 'unsigned long' with - 'addressT' and 'long' with offsetT in order to allow computations - with very large values to work for 64-bit addressed targets. - (relax_and_size_all_segments): Likewise. - (relax_frag): Likewise. - (relax_segment): Likewise. - -2003-06-23 Mark Mitchell - - * config/tc-ppc.c (ppc_cleanup): Use bytes to count APUinfo slots. - -2003-06-23 H.J. Lu - - * gas/config/tc-i386.c (md_assemble): Support Intel Precott New - Instructions. - - * gas/config/tc-i386.h (CpuPNI): New. - (CpuUnknownFlags): Add CpuPNI. - -2003-06-23 - - * config/tc-ia64.c (pseudo_func): Add ABI constants for linux, - freebsd, openvms, and nsk (non-stop kernel). - -2003-06-22 Jason Thorpe - - * config/tc-ns32k.c (md_begin): Initialize inst_hash_table after - all locals have been declared. - -2003-06-21 Thiemo Seufer - - * config/tc-mips.c (ADDRESS_ADD_INSN,ADDRESS_ADDI_INSN): Remove - special handling for n32 ABI. - (macro): Likewise. - -2003-06-19 Thiemo Seufer - - * config/tc-mips.c (s_cpsetup,s_cprestore,s_cpreturn): Revert - 2003-06-11 change. - -2003-06-19 Christian Groessler - - * config/tc-z8k.c (parse_reg): Invalid registers generate an error - now, not only a warning. Add some more checks to detect invalid - registers. - (get_operand): For CLASS_IR remember register size in mode struct. - (get_specific): Handle new CLASS_IRO type. Add register size - checks for CLASS_IR and CLASS_IRO. - (md_apply_fix3): Fix undefined usage of buf. - -2003-06-19 Alan Modra - - * config/tc-ppc.c (ppc_csect): Pass alignment to ppc_change_csect. - (ppc_change_csect): Add align param. Align frag at start of csect. - (ppc_section, ppc_named_section): Adjust ppc_change_csect calls. - (ppc_frob_section): Align vma. - -2003-06-18 Jakub Jelinek - - * dw2gencfi.c (EH_FRAME_ALIGNMENT): Define if not defined. - (output_cie): Don't pad. - (output_fde): Add align argument. Pad to align if not 0. - (cfi_finish): Set .eh_frame alignment to EH_FRAME_ALIGNMENT. - Pad just last FDE to EH_FRAME_ALIGNMENT. - -2003-06-18 Martin Schwidefsky - - * config/tc-s390.c (init_default_arch): Make current_mode_mask - dependent on s390_arch_size and current_cpu dependent on - current_mode_mask. - -2003-06-18 Svein E. Seldal - - * configure.in: Add c4x as an architecture variant to tic4x. - * configure: Regenerate. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2003-06-18 Alan Modra - - * config/tc-ppc.c (ppc_elf_suffix): Don't remove symbols other than - ".TOC." from PPC64_TOC relocs. - -2003-06-17 Alan Modra - - * config/tc-ppc.c (md_apply_fix3): Allow BRTAKEN, BRNTAKEN relocs. - -2003-06-16 Thiemo Seufer - - * config/tc-mips.c (ADDRESS_ADD_INSN,ADDRESS_ADDI_INSN, - ADDRESS_LOAD_INSN,ADDRESS_STORE_INSN): New macros. - (macro_build_ldst_constoffset,load_address,macro,s_cpsetup, - s_cprestore,s_cpadd): Use them. - -2003-06-16 Hans-Peter Nilsson - - * configure.in: Add specific case for cris-*-linux-gnu* with - em=linux. - * configure: Regenerate. - * config/tc-cris.c (DEFAULT_CRIS_AXIS_LINUX_GNU): New macro, TRUE - if TE_LINUX defined, else FALSE. - (bfd_boolean demand_register_prefix): Set default from - DEFAULT_CRIS_AXIS_LINUX_GNU. - (symbols_have_leading_underscore): Similar. - * config/tc-cris.h (LOCAL_LABELS_DOLLAR): Define to 1. - -2003-06-13 Richard Earnshaw - - * tc-arm.c (FPU_DEFAULT, case TE_LINUX): Default to FPU_ARCH_FPA. - (FPU_DEFAULT, case TE_NetBSD): Default to FPU_ARCH_VFP for ELF, - FPU_ARCH_FPA for AOUT. - (md_begin): Don't try to guess the floating point architecture from - the CPU if the OS ABI (Linux, NetBSD) mandates a particular form. - -2003-06-13 Robert Millan - - * configure.in: Add i386-netbsd-gnu target. - * configure: Regenerate. - -2003-06-12 Tom Tromey - - * doc/as.texinfo (Comm): Added @node. Moved before CFI - directives node. - -2003-06-12 Richard Sandiford - - * config/tc-mips.c (append_insn): In a compound relocation, take the - field width from the final (outermost) operator. - -2003-06-11 Richard Henderson - - * dw2gencfi.c (struct cfi_escape_data): New. - (cfi_add_CFA_nop): Remove. - (CFI_escape, dot_cfi_escape): New. - (dot_cfi): Remove nop. - (cfi_pseudo_table): Remove nop; add escape. - (output_cfi_insn): Likewise. - (select_cie_for_fde): Stop on escape. - * dw2gencfi.h (cfi_add_CFA_nop): Remove. - * read.c, read.h (do_parse_cons_expression): New. - * doc/as.texinfo (.cfi_escape): New. - -2003-06-11 Thiemo Seufer - - * config/tc-mips.c (s_cpsetup): Use mips_frame_reg instead of SP. - (s_cprestore): Likewise. - (s_cpreturn): Likewise. - -2003-06-11 Thiemo Seufer - - * config/tc-mips.c (tc_gen_reloc): Initialize retval amd reloc - with zeros. - -2003-06-11 Thiemo Seufer - - * config/tc-mips.c (md_pcrel_from): Return actual pcrel address. - (md_apply_fix3): Ignore non-special relocations. Remove superfluous - exceptions from size assert. Remove most of the addend fixup - specialcasing. Remove value, use valP directly. simplify fx_addnumber - handling. Remove zero addend specialcases. - (tc_gen_reloc): Use appropriate value for reloc2 addend. Remove - the addend fixup specialcase. - * config/tc-mips.h (MD_APPLY_SYM_VALUE): Define as 0. - -2003-06-11 Thiemo Seufer - - * write.c (write_relocs): Use xcalloc. Fix relocs initialization - in the RELOC_EXPANSION_POSSIBLE case. - -2003-06-11 Alan Modra - - * config/tc-i960.c (line_comment_chars): Add '#'. - * config/tc-mn10200.c (tc_gen_reloc): Don't ignore fx_subsy. - -2003-06-11 H.J. Lu - - * po/Make-in (DESTDIR): New. - (install-data-yes): Support $(DESTDIR). - (uninstall): Likewise. - -2003-06-11 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/POTFILES.in: Regenerate. - -2003-06-10 Doug Evans - - * cgen.c (gas_cgen_finish_insn): CGEN_INSN_RELAX renamed to - CGEN_INSN_RELAXED. - * config/tc-fr30.c (md_estimate_size_before_relax): Ditto. - * config/tc-m32r.c (md_estimate_size_before_relax): Ditto. - * config/tc-openrisc.c (md_estimate_size_before_relax): Ditto. - -2003-06-10 Alan Modra - Gary Hade - - * config/tc-ppc.c (md_assemble): Handle PPC_OPERAND_DQ. - (md_apply_fix3): Special case lq insn. - -2003-06-10 Richard Sandiford - - * config/tc-h8300.c (get_rtsl_operands): Accept unbracketed register - lists. Allow single-register ranges. - -2003-06-10 Richard Sandiford - - * config/tc-h8300.c (h8300sxnmode): New. - (md_pseudo_table): Add .h8300sxn entry. - -2003-06-09 H.J. Lu - - * NEWS: Updated for the new -n option for the i386 assembler. - - * config/tc-i386.c (optimize_align_code): New. - (md_shortopts): Add 'n'. - (md_parse_option): Handle 'n'. - (md_show_usage): Add '-n'. - - * config/tc-i386.h (optimize_align_code): Declared. - (md_do_align): Optimize code alignment only if optimize_align_code - is not 0. - - * doc/as.texinfo: Add the new -n option. - - * doc/c-i386.texi: Document the new -n option. - -2003-06-07 Richard Henderson - - * doc/as.texinfo: Document .cfi_rel_offset. - - * dw2gencfi.c (struct cfa_save_data, cfa_save_stack): New. - (cfi_add_CFA_offset): Detect invalid offsets. - (cfi_add_CFA_remember_state): Save cur_cfa_offset. - (cfi_add_CFA_restore_state): Restore it. - (CFI_rel_offset): New. - (cfi_pseudo_table): Add it. - (dot_cfi): Handle it. - -2003-06-07 H.J. Lu - - * app.c (do_scrub_chars): Add states 14 and 15 to handle - predicate for ia64. - -2003-06-05 Michael Snyder - - * config/tc-h8sx.c (get_specific): Distinguish h8h from h8s ops. - (build_bytes): Ditto. - -2003-06-05 Richard Sandiford - - * config/tc-h8sx.c (DMODE): Remove. - (colonmod24): Don't choose a default if the operand is a 16-bit - constant integer. - (fix_operand_size): New function. - (md_assemble): Use it to choose between @(d:2, ERn) and @(d:16,ERn). - Adjust @(d:2,ERn) operands before choosing the specific opcodes. - -2003-06-05 Michal Ludvig - - * dw2gencfi.c (cfi_add_CFA_insn, cfi_add_CFA_insn_reg) - (cfi_add_CFA_insn_reg_reg, cfi_add_CFA_insn_reg_offset): New. - (cfi_add_CFA_offset, cfi_add_CFA_def_cfa) - (cfi_add_CFA_register, cfi_add_CFA_def_cfa_register) - (cfi_add_CFA_def_cfa_offset): Use cfi_add_CFA_insn_*(). - (cfi_add_CFA_restore, cfi_add_CFA_undefined) - (cfi_add_CFA_same_value, cfi_add_CFA_remember_state) - (cfi_add_CFA_restore_state, cfi_add_CFA_nop): New. - (cfi_pseudo_table): New directives .cfi_return_column, - .cfi_restore, .cfi_undefined, .cfi_same_value, - .cfi_remember_state, .cfi_restore_state, .cfi_nop. - (dot_cfi, output_cfi_insn): Handle new directives. - * dw2gencfi.h (cfi_add_CFA_restore, cfi_add_CFA_undefined) - (cfi_add_CFA_same_value, cfi_add_CFA_remember_state) - (cfi_add_CFA_restore_state, cfi_add_CFA_nop): New prototypes. - -2003-06-04 Richard Henderson - - * dw2gencfi.c (output_cfi_insn): Fix typo for negative offsets. - - * dw2gencfi.c (cfi_finish): Set .eh_frame read-only. - -2003-06-04 Richard Henderson - - * config/tc-alpha.c (s_alpha_usepv): New. - (md_pseudo_table): Add it. - (alpha_cfi_frame_initial_instructions): New. - * config/tc-alpha.h (TARGET_USE_CFIPOP): New. - (tc_cfi_frame_initial_instructions): New. - * doc/c-alpha.texi: Document .usepv. - -2003-06-04 Jakub Jelinek - - * as.c (show_usage): Document --execstack and --noexecstack. - (parse_args): Add --execstack and --noexecstack. - (main): Create .note.GNU-stack section if --execstack or - --noexecstack was given on comand line, set its SHF_EXECINSTR bit. - * as.h (flag_execstack, flag_noexecstack): New. - -2003-06-03 Chris Demetriou - - * config/tc-mips.c: (OPTION_ARCH_BASE, OPTION_ASE_BASE) - (OPTION_COMPAT_ARCH_BASE, OPTION_FIX_BASE) - (OPTION_MISC_BASE): New defines. - (OPTION_BREAK, OPTION_CONSTRUCT_FLOATS, OPTION_EB, OPTION_EL) - (OPTION_ELF_BASE, OPTION_FIX_VR4122, OPTION_FP32, OPTION_FP64) - (OPTION_GP32, OPTION_GP64, OPTION_M3900, OPTION_M4010, OPTION_M4100) - (OPTION_M4650, OPTION_M7000_HILO_FIX, OPTION_MARCH, OPTION_MDMX) - (OPTION_MEMBEDDED_PIC, OPTION_MIPS1, OPTION_MIPS16, OPTION_MIPS2) - (OPTION_MIPS3, OPTION_MIPS32, OPTION_MIPS32R2, OPTION_MIPS3D) - (OPTION_MIPS4, OPTION_MIPS5, OPTION_MIPS64) - (OPTION_MNO_7000_HILO_FIX, OPTION_MTUNE, OPTION_NO_CONSTRUCT_FLOATS) - (OPTION_NO_FIX_VR4122, OPTION_NO_M3900, OPTION_NO_M4010) - (OPTION_NO_M4100, OPTION_NO_M4650, OPTION_NO_MDMX, OPTION_NO_MIPS16) - (OPTION_NO_MIPS3D, OPTION_NO_RELAX_BRANCH, OPTION_RELAX_BRANCH) - (OPTION_TRAP): Redefine in terms of new defines. - (md_longopts): Reorder entries. - -2003-05-14 Michael Snyder - From Bernd Schmidt - and Michael Snyder - and Alexandre Oliva - * config/tc-h8300.c: Add insns and addressing modes for h8300sx. - * config/tc-h8300.h: Ditto. - -2003-06-03 Nick Clifton - - * tc-v850.c (tc-gen_reloc): Translate BFD_RELOC_32 into - BFD_RELOC_32_PCREL if the reloc is pc-relative. Do this - before calling bfd_reloc_type_lookup. - -2003-06-02 Alan Modra - - * read.c (emit_expr): Set dot_value. - * dw2gencfi.c (output_fde): Remove pcrel reloc hack. - -2003-06-02 Alan Modra - - * macro.c (sub_actual): Don't lose string if it turns out that - &string wasn't an arg. - -2003-05-31 Richard Henderson - - * dw2gencfi.c (output_fde): Use fix_new to emit pc-relative reloc. - (cfi_finish): Set flag_traditional_format around .eh_frame data. - -2003-05-29 Richard Henderson - - * config/tc-alpha.c (alpha_cur_ent_sym): Remove. - (all_frame_data, plast_frame_data, cur_frame_data): New. - (s_alpha_ent): Record data for dwarf2 cfi. - (s_alpha_end, s_alpha_mask, s_alpha_frame, s_alpha_prologue): Likewise. - (alpha_elf_md_end): Emit dwarf2 cfi for ecoff unwind directives. - * config/tc-alpha.h (md_end): New. - (DWARF2_DEFAULT_RETURN_COLUMN): New. - (DWARF2_CIE_DATA_ALIGNMENT): New. - -2003-05-29 Nick Clifton - - * configure.in: Add i386-*-freebsd* entry. - * configure: Regenerate. - -2003-05-29 Kazuhiro Inaoka - - * config/tc-m32r.c: Amend comment to refer to Renesas - -2003-05-27 Richard Henderson - - * expr.c (make_expr_symbol): Fold FAKE_LABEL_NAME use into the - symbol_create call. - (current_location): Use symbol_temp_new_now. - * stabs.c (s_stab_generic): Use symbol_temp_new. - * symbols.c (temp_label_name): Remove. - (symbol_temp_new, symbol_temp_make): Use FAKE_LABEL_NAME. - -2003-05-27 Richard Henderson - - * dw2gencfi.c, dw2gencfi.h: Rewrite from scratch. - * as.c (main): Always call cfi_finish. - * config/tc-i386.c (x86_dwarf2_return_column): New. - (x86_cie_data_alignment): New. - (md_begin): Set them. - (tc_x86_cfi_init): Remove. - (tc_x86_regname_to_dw2regnum): Fix 32-bit register numbers; - return int, not unsigned long; don't as_bad here. - (tc_x86_frame_initial_instructions): Streamline; use - updated api. - * config/tc-i386.h (tc_cfi_init): Remove. - (DWARF2_DEFAULT_RETURN_COLUMN): New. - (DWARF2_CIE_DATA_ALIGNMENT): New. - -2003-05-27 Richard Henderson - - * symbols.c (temp_label_name): New. - (symbol_temp_new, symbol_temp_new_now, symbol_temp_make): New. - (symbol_set_value_now): New. - * symbols.h: Prototype them. - * dwarf2dbg.c: Use them. - (fake_label_name, symbol_new_now, set_symbol_value_now): Remove. - -2003-05-23 Jason Eckhardt - - * config/tc-i860.c (target_xp): Declare variable. - (OPTION_XP): Declare macro. - (md_longopts): Add option -mxp. - (md_parse_option): Set target_xp. - (md_show_usage): Add -mxp usage. - (i860_process_insn): Recognize XP registers bear, ccr, p0-p3. - (md_assemble): Don't try expansions if XP_ONLY is set. - * doc/c-i860.texi: Document -mxp option and i860XP support. - -2003-05-23 Eric Christopher - - * config/tc-mips.c (macro_build_jalr): Warning patrol. - -2003-05-22 Thiemo Seufer - - * config/tc-mips.c (append_insn): Use actual relocation size for new - fixp's. Don't relax overflow checking for partial_inplace relocations. - Use the actual relocation type in combined relocs, not just the type - of the first one. - (macro_build_jalr): Use actual relocation size for new fix. - (s_cpsetup, s_gpdword): Likewise. - -2003-05-22 Thiemo Seufer - - * config/tc-mips.c (macro): Don't use uninitialized tempreg. - -2003-05-22 Nick Clifton - - * config/tc-xstormy16.c (md_pcrel_from_section): Do not produce - section relative offsets for relocs that will not be based on the - section symbol. - (xstormy16_md_apply_fix3): Remove previous patch to this - function. - -2003-05-07 Eric Christopher - - * config/tc-mips.c (mips_abicalls): New variable. - (md_parse_option): Use. - (s_option): Ditto. - (s_abicalls): Ditto. - (mips_elf_final_processing): Set EF_MIPS_PIC and - EF_MIPS_CPIC dependent on above. - -2003-05-21 John David Anglin - - * tc-hppa.c (hppa_symbol_chars): Remove `,' and `!'. - -2003-05-21 Nick Clifton - - * config/obj-elf.c: Include dwarf2dbg.h. - (elf_pseudo_tab): Add .file and .loc. - * config/tc-arc.c (md_pseudo_table): Remove .file and .loc. - * config/tc-arm.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-mmix.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-v850.c: Likewise. - * config/tc-frv.c: Likewise, and remove redundant inclusion of - dwarf2dbg.h. - * config/tc-ip2k.c: Likewise. - * config/tc-iq2000.c: Likewise. - * config/tc-xstormy16.c: Likewise. - * config/tc-xtensa.c: Likewise. - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - * po/POTFILES.in: Regenerate. - * po/gas.pot: Regenerate. - -2003-05-21 Nick Clifton - - * dw2gencfi.c (cfi_get_label): Use symbol_make for non - BFD_ASSEMBLER targets. - (cfi_startproc): Change type of saved_seg and cfi_seg to segT. - (dot_cfi_endproc): Only call bfd_set_section_flags for targets - defining BFD_ASSEMBLER. - -2003-05-20 Michal Ludvig - - * as.c (main): Remove tc_cfi_init(). - * dw2gencfi.c (cfi_parse_arg): Allow regnames beginning - with '%'. - (cfi_pseudo_table): Add "cfi_register" entry. - (cfi_make_insn): Handle CFA_register. - (cfi_output_insn): Ditto. - (dot_cfi): Ditto. - (cfi_get_label): Add 'simple' modifier to .cfi_startproc. - (dot_cfi_endproc): Reuse already emitted CIEs. - * testsuite/gas/cfi/cfi-i386.d: New pattern. - * testsuite/gas/cfi/cfi-x86-64.d: Ditto. - -2003-05-20 Nick Clifton - - * config/tc-xstormy16.c: Include dwarf2dbg.h. - (md_pseudo_table): Add entries for .loc and .line. - -2003-05-20 Alan Modra - - * dw2gencfi.c (cfi_parse_arg): Only use tc_regname_to_dw2regnum if - defined. - (dot_cfi_endproc): Avoid C99 construct. - -2003-05-20 Michal Ludvig - - * dw2gencfi.c, dw2gencfi.h: New files. - * config/tc-i386.c (tc_x86_cfi_init): New function. - * config/tc-i386.h (TARGET_USE_CFIPOP, tc_cfi_init): New defines. - * as.c (parse_args): Set verbose flag on --verbose. - (main): Call tc_cfi_init()/cfi_finish(). - * as.h (verbose): New external variable. - * read.c (pobegin): Insert CFI pops to the list. - * symbols.c (local_symbol_make): Make symbol external. - * symbols.h (local_symbol_make): New prototype. - * Makefile.am: Add dw2gencfi.[ch] files. Run "make dep-am". - * Makefile.in: Regenerate. - * doc/as.texinfo: Added node "CFI directives" with description of - all implemented .cfi_* directives. - * doc/Makefile.in: Regenerate. - * po/POTFILES.in: Regenerate. - -2003-05-19 Svein E. Seldal - - * config/tc-tic4x.c (md_assemble): Added support for one-line parallel - insns. - * config/tc-tic4x.h: Added DOUBLEBAR_PARALLEL definition - -2003-05-18 Jason Eckhardt - - * config/tc-i860.c (i860_process_insn): Initialize fc after - each opcode mismatch. - -2003-05-16 Kelley Cook - - * configure.in: Accept i[3-7]86 variants. - * configure: Regenerate. - -2003-05-15 Thiemo Seufer - - * config/tc-mips.h: Fix comment formatting. - -2003-05-13 Hans-Peter Nilsson - - * read.c (old_buffer, old_input, old_limit): Remove variables. - (read_a_source_file): Delete label contin. - : Use an "sb" to push #APP expansion into - input as with macros, instead of in separate old_* variables. - Zero-terminate string being scrubbed. - -2003-05-12 Nick Clifton - - * config/tc-xstormy16.c (skipping_fptr): New local variable. - (md_assemble): Reset skipping_fptr. - (md_operand): If @fptr() is followed by a minus sign, set - skipping_fptr and ignore the fptr. If skipping_fptr is set and an - @fptr is detected, ignore it and reset skipping_fptr. - -2003-05-11 Jason Eckhardt - - * config/tc-i860.c (MAX_FIXUPS): Define. - (struct i860_fi fi[]): New struct. - (struct i860_it the_insn): Add above as member and move fields - exp, reloc, pcrel and fup into i860_fi. - (md_assemble): Replace all instances of exp, reloc, pcrel - and fup with fi[].exp, fi[].reloc, fi[].pcrel, fi[].fup. - Add a loop to possibly emit multiple fix-ups for each insn. - (i860_process_insn): Likewise. - (i860_get_expression): Likewise. - (md_apply_fix3): Use a bitwise check for OP_IMM_U5, not equality. - -2003-05-09 Martin Schwidefsky - - * config/tc-s390.c (s390_target_format): Always call init_default_arch. - -2003-05-07 H.J. Lu - - * config/tc-ia64.c (alias_hash): New. - (alias_name_hash): New. - (secalias_hash): New. - (secalias_name_hash): New. - (md_pseudo_table): Add "secalias". - (md_begin): Initialize alias_hash, alias_name_hash, - secalias_hash and secalias_name_hash. - (struct alias): New. - (dot_alias): Implement .alias and .secalias directives. - (do_alias): New. - (ia64_adjust_symtab): New. - (do_secalias): New. - (ia64_frob_file): New. - - * config/tc-ia64.h (ia64_adjust_symtab): New. - (tc_adjust_symtab): Defined. - (ia64_frob_file): New. - (tc_frob_file): Defined. - -2003-05-07 Dmitry Diky - - * tc-msp430.c: Add missing lines to known cpus list. - -2003-05-06 Alexandre Oliva - - * configure.in (MIPS_DEFAULT_ABI): AC_DEFINE. - * config/tc-mips.c (mips_after_parse_args): Set mips_abi to it. - * config.in, configure: Rebuilt. - -2003-05-05 H.J. Lu - - * config/tc-mips.c (tc_gen_reloc): Add addend just once if - howto->partial_inplace is false. - -2003-05-05 Daniel Jacobowitz - - * config/tc-mips.c (mips_need_elf_addend_fixup): Remove - symbol_used_in_reloc_p check. - (md_apply_fix3): Remove check for howto->pcrel_offset. - -2003-05-03 H.J. Lu - - * config/obj-elf.c (obj_elf_parse_section_letters): Make it a - fatal error for unknown section attribute. - - * config/tc-alpha.c (alpha_elf_section_letter): Return -1 for - unknown section attribute. - * config/tc-ia64.c (ia64_elf_section_letter): Likewise. - * config/tc-ppc.c (ppc_section_letter): Likewise. - - * config/tc-ia64.c (ia64_elf_section_letter): Handle 'o'. - (ia64_elf_section_type): Accept "unwind". - -2003-05-02 H.J. Lu - - * read.h (demand_copy_string): New. - - * config/tc-alpha.c (demand_copy_string): Removed. - -2003-05-02 Michael Snyder - - * write.h (FAKE_LABEL_NAME): Allow override - (for targets that like eg. a leading dot in a local label). - -2003-05-02 Nick Clifton - - * config/tc-xstormy16.c (xstormy16_md_apply_fix3): Do not bias the - addend with the symbol's value for pc-relative relocations against - a defined symbol - this will be done automatically. - -2003-05-01 H.J. Lu - - * config/obj-elf.c (obj_elf_type): Accept "notype" and - "STT_NOTYPE". - -2003-05-01 H.J. Lu - - * config/tc-ia64.h (tc_canonicalize_section_name): New. - - * config/obj-elf.c (obj_elf_section_name): Call - tc_canonicalize_section_name if it is defined. - -2003-05-01 H.J. Lu - - * config/tc-ia64.c (ia64_check_label): New. - * config/tc-ia64.h (tc_check_label): New. - - * read.c (read_a_source_file): Call tc_check_label after - creating a user-defined label if defined. - -2003-05-02 Alan Modra - - * config/tc-ppc.c (md_show_usage): Mention -a32, -a64, -l, -le, -b, - -be and split strings to below 509 bytes in length. - -2003-05-01 Christian Groessler - - * expr.h: Fix comments in operatorT typedef. - * config/tc-z8k.c: Add 2003 to copyright message. - Fold s_segm() and s_unseg() into one function s_segm(parm) which - decides by the parameter. - (md_begin): Don't set linkrelax. Only set Z8002 default if no - command line argument was given to select the intended - architecure. - (get_interrupt_operand): Warn if NOP type code is emitted. - (newfix): New parameter 'size', forward it to 'fix_new_exp'. - (apply_fix): Call newfix with additional 'size' parameter. - (build_bytes): Remove unused variable 'nib'. Detect overflow in - 4 bit immediate arguments. - (md_longopts): Add 'linkrelax' option. - (md_parse_option): Adapt to new s_segm function. Set 'linkrelax' - variable when 'linkrelax' command line option is specified. - (md_show_usage): Display 'linkrelax' option. - (md_apply_fix3): Fix cases R_IMM4L, R_JR, and R_IMM8. Add cases - R_CALLR and R_REL16. - * config/tc-z8k.h: Undef WARN_SIGNED_OVERFLOW_WORD. - -2003-04-30 H.J. Lu - - * config/tc-ia64.c (ia64_number_to_chars): New function pointer. - (ia64_float_to_chars): Likewise. - (dot_byteorder): Set target_big_endian, ia64_number_to_chars - and ia64_float_to_chars by tc_segment_info_data.endian from - the current segment if byteorder == -1. - (md_begin): Call dot_byteorder to set target_big_endian. - (md_atof): Call ia64_float_to_chars to convert floating point. - (ia64_float_to_chars_bigendian): New function. - (ia64_float_to_chars_littleendian): Likewise. - (ia64_elf_section_change_hook): Likewise. - - * config/tc-ia64.h (ia64_number_to_chars): New. - (md_number_to_chars): Changed to (*ia64_number_to_chars) - (ia64_elf_section_change_hook): New. - (md_elf_section_change_hook): Defined. - (ia64_segment_info_type): New struct. - (TC_SEGMENT_INFO_TYPE): Defined. - -2003-04-30 H.J. Lu - - * config/tc-ia64.c (md_section_align): Deleted. - - * config/tc-ia64.h (SUB_SEGMENT_ALIGN): New. - (md_section_align): New. - -2003-04-30 H.J. Lu - - * config/tc-ia64.c (stmt_float_cons): Fix alignment for real10 - and add real16. - (md_pseudo_table): Add "xreal16", "xreal16.ua", "real16" and - "real16.ua". - (md_atof): Add 6 byte padding of zero for real16. - -2003-04-29 Nick Clifton - - * config/obj-elf.c (obj_elf_symver): Skip whitespace before the - start of a version name. - -2003-04-28 Chris Demetriou - - * configure.in (mips-*-*n*bsd*): Replace with... - (mips-*-netbsd*, mips-*-openbsd*): These. - * configure: Regenerate. - -2003-04-28 H.J. Lu - - * config/tc-hppa.c (hppa_symbol_chars): New. - * config/tc-hppa.h (tc_symbol_chars): Likewise. - -2003-04-26 Thiemo Seufer - - * config/tc-mips.h (TC_FORCE_RELOCATION_SUB_SAME): Define again. - -2003-04-25 Chris Demetriou - - * NEWS: Belatedly mention support for MIPS32 Release 2. - -2003-04-24 Eric Christopher - - * config/tc-mips.c (nopic_need_relax): Revert previous - change. - -2003-04-24 Dhananjay Deshpande - - * config/tc-h8300.h (DWARF2_LINE_MIN_INSN_LENGTH): New - * config/tc-h8300.c (dwarf2dbg.h): Include - (md_pseudo_table): Handle .loc and .file - (md_assemble): Call dwarf2_emit_insn if BFD_ASSEMBLER. - * Makefile.am: Add dependency on dwarf2dbg.h for h8300 targets. - * Makefile.in: Regenerate. - -2003-04-24 Dhananjay Deshpande - - * config/tc-h8300.c (Nmode, h8300hnmode, h8300snmode): New. - (md_pseudo_table): Add h8300hn, h8300sn. - * config/tc-h8300.h (COFF_MAGIC): Handle h8300hn, h8300sn. - * doc/c-h8300.texi : Add documentation for new machine directives. - -2003-04-24 Nick Clifton - - * config/tc-ppc.c (ppc_symbol_chars): Define. - * config/tc-ppc.h (tc_symbol_chars): Define. - -2003-04-23 J"orn Rennecke - - * config/tc-sh.c: Amend comment to refer to SuperH. - * config/tc-sh.h: Likewise. - (LISTING_HEADER): Amend to refer to SuperH. - * config/tc-sh64.c: Change comment to refer to SuperH. - * config/tc-sh64.h (LISTING_HEADER): Change to refer to SuperH. - * doc/as.texinfo [SH, GENERIC]: Amend / Change to refer to SuperH. - * doc/c-sh.texi: Amend to refer to SuperH. - Add SuperH architecture documentation references. - * doc/c-sh64.texi: Change to refer to SuperH. - -2003-04-23 H.J. Lu - - * app.c (do_scrub_chars): More checks for valid labels. - -2003-04-22 H.J. Lu - - * app.c (do_scrub_chars): Check for valid label. - -2003-04-22 Kazuhiro Inaoka - - * doc/as.texinfo: Replace references to Mitsubishi M32R with - references to Renesas M32R. - * doc/c-m32r.texi: Likewise. - -2003-04-21 Richard Henderson - - * dwarf2dbg.c (get_filenum): Skip as-yet unassigned file numbers. - (out_file_list): Assign non-null filename after generating error. - -2003-04-18 Jakub Jelinek - - * ehopt.c (check_eh_frame): For aug_size == 0 - in state_seeing_aug_size state skip the state_skipping_aug - state. - -2003-04-15 Rohit Kumar Srivastava - - * doc/c-h8300.texi: Replace occurrances of 'Hitachi' with - 'Renesas'. - * doc/c-h8500.texi: Likewise. - * doc/c-sh.texi: Likewise. - * doc/c-sh64.texi: Likewise. - * doc/h8.texi: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-h8300.h: Likewise. - * config/tc-h8500.c: Likewise. - * config/tc-h8500.h: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sh.h: Likewise. - * config/tc-sh64.c: Likewise. - * config/tc-sh64.h: Likewise. - -2003-04-10 Alexandre Oliva - - * config/tc-mips.h (tc_frag_data_type, TC_FRAG_TYPE): New. - * config/tc-mips.c: Use signed add for n32 address arithmetic. - (append_insn): When filling delay slots with instructions - that have fixups that tc_gen_reloc might consider modifyable - in variant frags, start a new frag. - (load_address): Generate GOT_DISP with of without offset - depending on whether symbol is local. For -xgot, use - GOT_PAGE/GOT_OFST or GOT_HI16/GOT_LO16. - (macro) : Likewise. - : In NewABI, use CALL16 or GOT_DISP for small got, - CALL_HI16/CALL_LO16 or GOT_PAGE/GOT_OFST for big got. - : In NewABI with small got, always use - GOT_PAGE/GOT_OFST, with the latter in the load/store - instruction. With big got, use GOT_HI16/GOT_LO16 or - GOT_PAGE/GOT_OFST. - (tc_gen_reloc): Adjust variant frags with GOT_DISP in NewABI. - Add tc_frag_data.tc_fr_offset to addends. Decay CALL16, - GOT_OFST and GOT_DISP to GOT_DISP in NewABI. - (md_convert_frag): Use memmove for safe copying of overlapping - regions. - -2003-04-09 Stephane Carrez - - * doc/c-m68hc11.texi (M68HC11-Opts): Document -m68hcs12, -mshort, - -mlong, -mshort-double and -mlong-double options; use table @code. - (M68HC11-Syntax): Update to document 68HC12 operands. - (M68HC11-Modifiers): New section for operand modifiers. - (M68HC11-Directives): New section for specific assembler directives. - (M68HC11-Branch): Fix Overfull hbox error. - -2003-04-09 Alexandre Oliva - - * config/tc-mips.c (macro): Add comments explaining the rationale - for Chris' change. - -2003-04-09 Chris Demetriou - - * config/tc-mips.c (macro): Put back `+ 0x8000' in test for 64-bit - constant address that Alexandre took out by accident. Reject - 64-bit addresses that are not sign extensions of 32 bits only if - we don't support 64-bit address constants. - -2003-04-09 Alan Modra - - * config/tc-ppc.c (md_apply_fix3): Generate ADDR16 relocs. - -2003-04-08 Nick Clifton - - * as.c (perform_an_assembly_pass): If using cgen, call - gas_cgen_begin. - * cgen.c (gas_cgen_begin): New function. If - flag_signed_overflow_ok is set call cgen_set_signed_overflow_ok - otherwise call cgen_clear_signed_overflow_ok. - * cgen.h: Prototype gas_cgen_begin. - -2003-04-07 Thiemo Seufer - - * write.c (write_relocs): Remove unused variable. - -2003-04-06 Chris Demetriou - - * config/tc-mips.c (HAVE_64BIT_ADDRESS_CONSTANTS): New. - (macro): Use new macro to decide whether to emit constant address - as 32 or 64 bits if addresses are 32-bit wide but registers are - 64-bit wide. - -2003-04-05 Stephane Carrez - - * config/tc-m68hc11.c (M6811_OP_CALL_ADDR): New internal define. - (M6811_OP_PAGE_ADDR): New internal define. - (get_operand): New modifier %page and %addr to obtain page and - address part of a far-function. - (fixup8): Use BFD_RELOC_M68HC11_PAGE for a %page modifier; don't - complain on overflow for the BFD_RELOC_M68HC11_PAGE and truncation - relocs. - (fixup16): Use BFD_RELOC_M68HC11_LO16 for a %addr modifier. - (find_opcode): Add comment. - (md_estimate_size_before_relax): Force relocation of - STATE_UNDEXED_OFFSET types when the symbol is not absolute. - (tc_m68hc11_fix_adjustable): Check for BFD_RELOC_M68HC11_LO16 - instead of BFD_RELOC_LO16; temporarily make the BFD_RELOC_32 - on the symbol itself so that DWARF2 strings are merged correctly. - -2003-04-04 Svein E. Seldal - - * config/obj-coff.h (TARGET_FORMAT): Namespace cleanup, changed - default tic4x target format to 'coff2-tic4x'. - * config/tc-tic4x.c: Namespace cleanup. Replace s/c4x/tic4x/ and - s/c3x/tic3x/ - * config/tc-tic4x.h: Ditto - -2003-04-03 Nick Clifton - - * NEWS: Mention support for Xtensa architecture. - -2003-04-02 Philip Blundell - - * config/tc-arm.c (arm_force_relocation): Return 0 for OFFSET_IMM. - -2003-04-02 Chris Demetriou - - * config/tc-mips.c (macro2): Adjust implementation of - M_ULH, M_ULHU, M_ULW, and M_ULD so that they work properly - in the case where the source and destination registers - are the same. - -2003-04-01 Bob Wilson - - * Makefile.am (CPU_TYPES): Add xtensa. - (TARGET_CPU_CFILES): Add config/tc-xtensa.c. - (TARGET_CPU_HFILES): Add config/tc-xtensa.h. - (xtensa-relax.o): New target. - Run "make dep-am". - * Makefile.in: Regenerate. - * configure.in: Handle xtensa-*-*. Add xtensa-relax.o to - extra_objects for xtensa targets. - * configure: Regenerate. - * write.c (write_object_file): Add new md_post_relax_hook. - * config/tc-xtensa.c: New file. - * config/tc-xtensa.h: Likewise. - * config/xtensa-istack.h: Likewise. - * config/xtensa-relax.c: Likewise. - * config/xtensa-relax.h: Likewise. - * doc/Makefile.am (CPU_DOCS): Add c-xtensa.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Set new XTENSA variable. - * doc/as.texinfo: Set new Xtensa variable. Describe - Xtensa-specific options. Define line comment character for - Xtensa. Add Xtensa processors to list of ELF targets where - alignment is specified in bytes. Add new Xtensa-Dependent node. - Add acknowledgements for those contributing to the Xtensa port. - * doc/internals.texi: Describe new md_post_relax_hook. - * doc/c-xtensa.texi: New file. - -2003-04-01 Nick Clifton - Richard Earnshaw - - * config/tc-arm.c: Remove presence of (r) and (tm) symbols. - (ARM_ARCH_IWMMXT): Simplify. - (insns): Place iwmmx instructions in correct place in table. - (arm_add_note): New function: Add a note entry to a .note section. - (md_begin): Make the default architecture be unknown. - Suppress the creation of an arm note section. - -2003-03-26 Eric Christopher - - * config/tc-mips.c (nopic_need_relax): Check for S_IS_EXTERN. - -2003-03-25 Stan Cox - Nick Clifton - - Contribute support for Intel's iWMMXt chip - an ARM variant: - - * config/tc-arm.c: (ARM_CEXT_IWMMXT, ARM_ARCH_IWMMXT, WR_PREFIX, - WC_PREFIX, REG_TYPE_IWMMXT): New constants. - (enum wreg_type, enum iwmmxt_insn_type): New types. - (wr_register, wc_register, wcg_register): New macros. - (iwmmxt_table): New variable. - (wreg_required_here, do_iwmmxt_byte_addr, do_iwmmxt_tandc, - do_iwmmxt_tbcst, do_iwmmxt_textrc, do_iwmmxt_textrm, - do_iwmmxt_tinsr, do_iwmmxt_tmcr, do_iwmmxt_tmcrr, do_iwmmxt_tmia, - do_iwmmxt_tmovmsk, do_iwmmxt_tmrc, do_iwmmxt_tmrrc, - do_iwmmxt_torc, do_iwmmxt_waligni, do_iwmmxt_wmov, - do_iwmmxt_word_addr, do_iwmmxt_wrwr, do_iwmmxt_wrwrwcg, - do_iwmmxt_wrwrwr, do_iwmmxt_wshufh, do_iwmmxt_wzero, - cp_byte_address_offset, cp_byte_address_required_here, - check_iwmmxt_insn): New functions. - (asm_opcode_insns): Add iWMMXt instructions. - (md_begin): Set the mach value for iWMMXt targets. Create a note - section to identify iwmmxt binaries. - (md_apply_fix3): Handle BFD_RELOC_ARM_CP_OFF_IMM_S2. - * doc/c-arm.texi: Document the support for the iWMMXt. - * NEWS: Mention new support. - -2003-03-24 Daniel Néri - - * doc/as.texinfo: Rename the all occurances of C54X to TIC54X. - * doc/all.texi: Likewise. - * doc/c-tic54x.texi: Likewise. - -2003-03-21 Andreas Schwab - - * config/tc-ia64.c (generate_unwind_image): Fix type of unw_rec to - avoid aliasing issue. - -2003-03-21 Martin Schwidefsky - - * config/tc-s390.c (s390_arch_size): Initialize to zero. - (current_arch_mask): Rename to current_mode_mask. - (current_arch_requested): Remove variable. - (current_cpu): New variable. - (init_default_arch): Set defaults values for s390_arch_size, - current_mode_mask and current_cpu. - (md_parse_option): New options -mesa, -mzarch and -march={g5,g6,z900}. - (md_begin): Replace current_arch_mask by current_cpu. - (md_assemble): Adapt check and error message to current_mode_mask and - current_cpu. - -2003-03-09 James E Wilson - - * macro.c (buffer_and_nest): Store more to sb instead of '\n'. - * read.c (get_line_sb): Return end of line character or '\n' if - it is zero or non-existent. - -2003-03-12 Alexandre Oliva - - * config/tc-mips.c (mips_validate_fix): New function. - * config/tc-mips.h (TC_VALIDATE_FIX): Define. - (mips_validate_fix): Declare. - -2003-03-12 Alexandre Oliva - - * Reverted 2003-03-02's patch. - -2003-03-11 Steve Ellcey - - * dwarf2dbg.c (generic_dwarf2_emit_offset): New. - (TC_DWARF2_EMIT_OFFSET): Provide default. - (out_debug_aranges, out_debug_info): Use it. - * config/tc-ia64.c (ia64_dwarf2_emit_offset): New. - (ia64_cons_fix_new): Move FUNC_DTP_RELATIVE handling ... - (ia64_gen_real_reloc_type): ... here. - * config/tc-ia64.h (TC_DWARF2_EMIT_OFFSET): New. - -2003-03-09 Thiemo Seufer - - * config/tc-mips.c (s_mips_end): Remove !BFD_ASSEMBLER case. - (s_mips_ent): Likewise. - -2003-03-04 Dmitry Diky - - * config/tc-msp430.c (mcu_types): Add recently announced x1122 - and x1123 devices, add missed x437. - (md_show_usage): Sort device list. - -2003-03-03 J"orn Rennecke - - * config/tc-sh.c (sh_dsp): Replace with preset_target_arch. - (md_begin): Use preset_target_arch. - (md_longopts): Make isa option unconditional. - (md_parse_option): Make OPTION_DSP and OPTION_ISA sh4 / any - set preset_target_arch. - (md_apply_fix3): If BFD_ASSEMBLER, adjust SWITCH_TABLE fixups - by -S_GET_VALUE (fixP->fx_subsy). - (tc_gen_reloc): For SWITCH_TABLE fixups, the symbol is fixp->fx_subsy, - and the addend is 0. - Adjust addend of R_SH_IND12W relocations by fixp->fx_offset - 4. - * config/tc-sh.h (TC_FORCE_RELOCATION_SUB_LOCAL): Define. - -2003-03-02 Thiemo Seufer - - * config/tc-mips.c (append_insn): Add handling of - BFD_RELOC_MIPSEMB_16_PCREL_S2. Avoid emitting unneeded - BFD_RELOC_16_PCREL_S2 relocs and add earlier warnings about - misaligned address and reange overflow. - (macro_build): Add handling of BFD_RELOC_MIPSEMB_16_PCREL_S2. Add - earlier warnings about misaligned address and reange overflow. - (mips_ip): Add handling of BFD_RELOC_MIPSEMB_16_PCREL_S2. - (md_apply_fix): Likewise. Fix warning output. - (tc_gen_reloc): Add handling of BFD_RELOC_MIPSEMB_16_PCREL_S2. - Allow BFD_RELOC_16_PCREL_S2 for all ABIs. - (md_convert_frag): Add handling of BFD_RELOC_MIPSEMB_16_PCREL_S2. - -2003-02-21 Nick Clifton - - * NEWS: Mention availability of test generator program. - -2003-02-21 Miles Bader - - * config/tc-v850.c (system_registers): Add v850e debug registers. - (system_register_name): Accept up to 27 (the last v850e sys register). - -2003-02-21 Bob Wilson - - * doc/as.texinfo: Define new COFF-ELF variable to conditionalize text - relevant to both COFF and ELF. Fix obvious typos and texinfo bugs. - Capitalize section headings consistently. Format index entries more - consistently. Unconditionalize text about whether text and data - sections are alterable. Use @ifnottex for alternatives to @tex output - so that HTML works. Clean up COFF vs. ELF descriptions of .section, - .size and .type directives. Be more polite about bad bug reports. - Move FDL into a separate file. - * doc/fdl.texi: New file. - -2003-02-21 Richard Sandiford - - * config/tc-mips.c (prev_reloc_op_frag): New variable. - (macro): Check it to decide whether a new frag is needed. - (my_getSmallExpression): Set it. - -2003-02-20 jmc - - * cgen.c: Fix typo: intial -> initial. - -2003-02-19 Jie Zhang - - * app.c (do_scrub_chars): Handle '||' in two states. - -2003-02-13 Alan Modra - - * write.c (TC_FORCE_RELOCATION_SUB_SAME): Revert last change. - * config/tc-s390.h (TC_FORCE_RELOCATION_SUB_SAME): Define. - -2003-02-11 Uwe Stieber - - * configure.in: Add support for kaOS as cross build target system. - * configure: Regenerated. - -2003-02-10 Nick Clifton - - * config/tc-arm.c (md_begin): If the Maverick co-processor is - selected, set the EF_ARM_MAVERICK_FLOAT flag and - bfd_mach_arm_ep9312 machine number. - -2003-02-08 Richard Sandiford - - * config/tc-mips.c (reloc_needs_lo_p): New function. - (fixup_has_matching_lo_p): New function. - (append_insn): Use reloc_needs_lo_p to check whether a relocation - might need a matching %lo(). Reuse the head of mips_hi_fixup_list - if that fixup already has a matching %lo(). Don't call frag_wane here. - (macro): Call frag_wane here if the last unmatched hi was in the - current frag. - (pic_need_relax): New function, split out from... - (md_estimate_size_before_relax): ...here. - (mips_frob_file): Use reloc_needs_lo_p. Use pic_need_relax to test - whether BFD_RELOC_MIPS_GOT16 fixups refer to global symbols. - -2003-02-07 Richard Sandiford - - * config/tc-mips.c (my_getSmallExpression): Rework bracket handling. - -2003-02-06 Alan Modra - - * config/tc-ppc.c (ppc_elf_suffix): Undo part of last change so that - x@toc+off works. - -2003-02-05 Alan Modra - - * config/tc-ppc.c (mapping): Handle new TLS reloc specs. - (ppc_elf_suffix): Don't warn for x+off@got when ppc64 and don't - accept x@got+off etc. - (md_assemble): Handle TLS relocs. - (ppc_force_relocation): Force for all TLS relocs. - (ppc_fix_adjustable): Likewise. - (md_apply_fix3): Handle TLS relocs. - -2003-02-04 Alan Modra - - * config/obj-elf.c (obj_elf_change_section): Set SEC_LINK_ONCE and - SEC_LINK_DUPLICATES_DISCARD directly rather than using elf_linkonce_p. - -2003-02-02 Richard Sandiford - - * config/tc-mips.c (enum small_ex_type): Remove. - (imm_unmatched_hi): Remove. - (md_assemble): Remove use of imm_unmatched_hi. Remove the last - argument from calls to append_insn. - (append_insn): Remove unmatched_hi parameter; check reloc_type[0] - instead. - (macro_build): Update append_insn calls. - (mips16_macro_build, macro_build_lui): Likewise. - (mips_ip): Rework handling of small expressions. Move explicit - relocation handling into my_getSmallExpression. Assume that the - value of 'o' operands is zero if there is only one bracketed - expression left. - (percent_op): Make constant. Record the BFD relocation code - associated with each operator. - (my_getSmallParser, my_getPercentOp): Remove. - (parse_relocation): New function. - (my_getSamllExpression): Rework. Fill in relocations here - rather than in mips_ip. - -2003-01-29 Nick Clifton - - * config/tc-i386.c (line_comment_chars): Add '#'. This makes the - assembler's handling of # "" directives work. - -2003-01-28 Jakub Jelinek - - * dwarf2dbg.c: Include filenames.h. - (struct file_entry): Make filename const char *. - (dirs, dirs_in_use, dirs_allocated): New variables. - (get_filenum): Add NUM argument. Build directory table. - (dwarf2_where): Adjust caller. - (dwarf2_directive_file): Use get_filenum to allocate - slot in file and directory tables. - (dwarf2_directive_loc): Recreate full filename from - directory and filename part if needed for listing. - (out_file_list): Output directory table. - Output main source file dirname before its filename. - -2003-01-28 Dmitry Diky - - * config/tc-msp430.c: Replace occurences of 'tolower' with - 'TOLOWER'. - -2003-01-27 David Mosberger - - * config/tc-ia64.c (dot_vframesp): Correct error message. - (dot_vframepsp): Ditto. - -2003-01-27 Alexandre Oliva - - * configure.in (em): Set to irix on all Irix systems. - * configure: Rebuilt. - * config/te-irix.h: New file. - * config/tc-mips.c (mips_dwarf2_format): Use TE_IRIX to decide - whether to use Irix-specific 64-bit format. - -2003-01-27 Martin Schwidefsky - - * config/tc-s390.c (s390_elf_cons): Avoid designated initializers. - -2003-01-25 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Handle TLS % operators. - (tc_gen_reloc): Handle TLS relocs. - (sparc_cons, cons_fix_new_sparc): Handle %r_tls_dtpoff. - * config/tc-sparc.h (tc_fix_adjustable): Don't adjust TLS - relocs. - * config/obj-elf.c (obj_elf_section_word): Handle tls. - (obj_elf_type): Handle tls_object. - -2003-01-24 Martin Schwidefsky - - * config/tc-s390.c (s390_tls_suffix): New function. - (elf_suffix_type): Add suffix enums for TLS relocations. - (s390_elf_suffix): Add suffix strings for TLS relocations. - (s390_elf_cons): Map new lenght/elf suffix combinations for TLS to - bfd relocations. - (md_gather_operands): Map new instruction operand/elf suffix - combinations for TLS to bfd relocations. - (tc_s390_fix_adjustable): Add new TLS relocations. - (tc_s390_force_relocation): Likewise. - (md_apply_fix3): Likewise. - -2003-01-24 Alan Modra - - * as.h: Update copyright date. - * symbols.c: Likewise. - * config/tc-d10v.h: Likewise. - * config/tc-fr30.h: Likewise. - * config/tc-i960.h: Likewise. - * config/tc-mips.h: Likewise. - - * config/tc-hppa.h (DIFF_EXPR_OK): Define. - (MD_APPLY_SYM_VALUE): Move. - -2003-01-23 Nick Clifton - - * NEWS: Announce sh2e support. - - Add sh2e support: - 2002-04-02 Alexandre Oliva - * config/tc-sh.c (md_show_usage): Added sh2e next to sh3e. - (sh_elf_final_processing): Handle arch_sh2e. - -2003-01-23 Alan Modra - - * symbols.c (S_FORCE_RELOC): Add "strict" param. - * symbols.h (S_FORCE_RELOC): Likewise. - * config/obj-aout.h (S_FORCE_RELOC): Likewise. - * config/obj-bout.h (S_FORCE_RELOC): Likewise. - * config/obj-coff.h (S_FORCE_RELOC): Likewise. - * config/obj-ieee.h (S_FORCE_RELOC): Likewise. - * config/obj-vms.h (S_FORCE_RELOC): Likewise. - * write.c (generic_force_reloc): New function. - (TC_FORCE_RELOCATION): Use it here instead of S_FORCE_RELOC. - (TC_FORCE_RELOCATION_SUB_SAME): Test TC_FORCE_RELOCATION too. - (adjust_reloc_syms): Adjust S_FORCE_RELOC call. - * as.h (generic_force_reloc): Declare. - * doc/internals.texi (S_FORCE_RELOC): Update. - (TC_FORCE_RELOCATION_SUB_SAME): Update. - - * config/tc-alpha.c (alpha_force_relocation): Adjust to use - generic_force_reloc. - (alpha_fix_adjustable): Likewise. - * config/tc-arm.c (arm_force_relocation): Likewise. - * config/tc-cris.c (md_cris_force_relocation): Likewise. - * config/tc-frv.c (frv_force_relocation): Likewise. - * config/tc-i386.c (md_apply_fix3): Likewise. - * config/tc-ia64.c (ia64_force_relocation): Likewise. - * config/tc-ip2k.c (ip2k_force_relocation): Likewise. - * config/tc-m32r.c (m32r_force_relocation): Likewise. - * config/tc-m68hc11.c (tc_m68hc11_force_relocation): Likewise. - * config/tc-mcore.c (mcore_force_relocation): Likewise. - * config/tc-mips.c (mips_force_relocation): Likewise. - * config/tc-mmix.c (mmix_force_relocation): Likewise. - * config/tc-ppc.c (ppc_force_relocation): Likewise. - * config/tc-s390.c (tc_s390_force_relocation): Likewise. - * config/tc-sh.c (sh_force_relocation): Likewise. - (md_pcrel_from_section): Likewise. - * config/tc-sparc.c (tc_gen_reloc): Likewise. - * config/tc-v850.c (v850_force_relocation): Likewise. - * config/tc-xstormy16.c (xstormy16_force_relocation): Likewise. - * config/tc-i386.h (TC_FORCE_RELOCATION): Likewise. - * config/tc-mcore.h (TC_FORCE_RELOCATION): Likewise. - * config/tc-sparc.h (tc_fix_adjustable): Likewise. - - * config/tc-d10v.c (d10v_force_relocation): Delete. - * config/tc-d10v.h (TC_FORCE_RELOCATION): Don't define. - * config/tc-dlx.c (md_dlx_force_relocation): Delete. - * config/tc-dlx.h (TC_FORCE_RELOCATION): Don't define. - * config/tc-fr30.c (fr30_force_relocation): Delete. - * config/tc-fr30.h (TC_FORCE_RELOCATION): Don't define. - * config/tc-mn10300.c (mn10300_force_relocation): Delete. - * config/tc-mn10300.h (TC_FORCE_RELOCATION): Don't define. - (TC_FORCE_RELOCATION_SUB_SAME): Test TC_FORCE_RELOCATION too. - * config/tc-i960.h (TC_FORCE_RELOCATION_SUB_SAME): Likewise. - * config/tc-hppa.c (hppa_force_relocation): Adjust S_FORCE_RELOC call. - * config/tc-mips.c (RELAX_BRANCH_TOOFAR): Warning fix. - * config/tc-mips.h (TC_FORCE_RELOCATION_SUB_SAME): Don't define. - * config/tc-openrisc.c (openrisc_force_relocation): Delete. - * config/tc-openrisc.h (TC_FORCE_RELOCATION): Don't define. - * config/tc-sparc.c (elf32_sparc_force_relocation): Delete. - * config/tc-sparc.h (TC_FORCE_RELOCATION): Don't define for ELF. - * config/tc-i386.c (i386_force_relocation): Delete. - * config/tc-i386.h (TC_FORCE_RELOCATION): Don't define for - BFD_ASSEMBLER. - (EXTERN_FORCE_RELOC): Fix TE_PE and STRICT_PE_FORMAT nesting. - * config/tc-m68k.h (TC_FORCE_RELOCATION): Don't define. - * config/tc-pj.h (TC_FORCE_RELOCATION): Don't define. - * config/tc-sh.h (TC_FORCE_RELOCATION_SUB_ABS): Don't call - S_FORCE_RELOC. - (TC_FORCE_RELOCATION_SUB_SAME): Test TC_FORCE_RELOCATION too. - * config/tc-sh64.h (TC_FORCE_RELOCATION_SUB_SAME): Likewise. - -2003-01-23 Alan Modra - - * config/tc-sh64.c (shmedia_frob_section_type): Adjust for changed - sh64_elf_section_data. - * config/tc-sh64.h: Include elf32-sh64.h. - * config/tc-m68hc11.c: Don't include stdio.h. - (md_show_usage): Fix missing continuation. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-01-22 Nick Clifton - - * as.h: Include fopen-bin.h not fopen-same.h for mingw32 hosts. - -2003-01-21 Fabio Alemagna - - * configure.in: Handle *-*-aros*. - * configure: Regenerated from configure.in. - -2003-01-20 Martin Schwidefsky - - * config/tc-s390.c (elf_suffix_type): Add suffix enums for gotoff, - gotplt and pltoff relocations. - (s390_elf_suffix): Add suffix strings for gotoff, gotplt and pltoff. - (s390_elf_cons): Map new lenght/elf suffix combinations for gotoff, - gotplt and pltoff to bfd relocations. - (md_gather_operands): Map new instruction operand/elf suffix - combinations to bfd relocations. - (tc_s390_fix_adjustable): Add new gotoff, gotplt and pltoff relocations - to the list of unadjustable relocations. - (tc_s390_force_relocation): Always emit relocations for gotoff, gotplt - and pltoff relocations. - (md_apply_fix3): Add the new relocations. - -2003-01-20 Martin Schwidefsky - - * config/tc-s390.c (md_apply_fix3): Emit error message for relocations - with a subsy symbol. - -2003-01-17 Stephane Carrez - - * config/tc-m68hc11.c (tc_m68hc11_fix_adjustable): Prevent adjustment - of relocs for memory bank addressing. - -2003-01-17 Stephane Carrez - - * config/tc-m68hc11.c (md_show_usage): Update usage. - (md_parse_option): Recognize -m68hcs12. - (m68hc11_elf_final_processing): Set EF_M68HCS12_MACH flag to identify - HCS12. - * doc/as.texinfo (Overview): Document new option -m68hcs12. - -2003-01-16 Jakub Jelinek - - * config/tc-ia64.c (ia64_cons_fix_new): Handle @dtprel() in data. - -2003-01-16 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/POTFILES.in: Regenerate. - -2003-01-11 Alan Modra - - * read.c (get_absolute_expr): New, split out from.. - (get_absolute_expression): ..here. - * read.h (get_absolute_expr): Declare. - * config/obj-elf.c (elf_common): Use offsetT for "temp" and "size". - Trim size to arch bits_per_address, and test for negative input - via get_absolute_expr. - -2003-01-07 DJ Delorie - - * config/tc-xstormy16.c (md_cgen_lookup_reloc): Adjust value based - on operand type. - (xstormy16_md_apply_fix3): Use adjustment. - -2003-01-02 Ben Elliston - - * configure.in: Add iq2000-elf target. - * configure: Regenerate. - * config/tc-iq2000.c: New file. - * config/tc-iq2000.h: Likewise. - * po/gas.pot: Regenerate. - -2003-01-02 Chris Demetriou - - * config/tc-mips.c: Update copyright years to include 2003. - (mips_ip): Fix indentation of "+A", "+B", and "+C" handling. - Additionally, clean up their code slightly and clean up their - comments some more. - - * doc/c-mips.texi: Add MIPS32r2 to ".set mipsN" documentation. - -2003-01-01 Daniel Jacobowitz - - * doc/Makefile.am (as.1): Depend on "asconfig.texi gasver.texi - $(CPU_DOCS)". - * doc/Makefile.in: Regenerate. - -2003-01-01 John David Anglin - - * config/obj-elf.c (special_sections): Work around HP's incorrect usage - of .init and .fini sections for array initializers and finalizers. - -2002-12-31 Chris Demetriou - - * config/tc-mips.c (validate_mips_insn, mips_ip): Recognize - the "+D" operand, which will be used only by the disassembler. - -2002-12-30 Chris Demetriou - - * configure.in: Recognize mipsisa32r2, mipsisa32r2el, and - CPU variants. - * configure: Regenerate. - * config/tc-mips.c (ISA_HAS_DROR, ISA_HAS_ROR): New defines. - (macro_build): Handle "K" operand. - (macro2): Use ISA_HAS_DROR and ISA_HAS_ROR in the places where - CPU_HAS_DROR and CPU_HAS_ROR are currently used. - (mips_ip): New variable "lastpos", and implement "+A", "+B", - and "+C" operands for MIPS32 Release 2 ins/ext instructions. - Implement "K" operand for MIPS32 Release 2 rdhwr instruction. - (validate_mips_insn): Implement "+" as a way to extend the - allowed operands, and implement "K", "+A", "+B", and "+C" - operands. - (OPTION_MIPS32R2): New define. - (md_longopts): Add entry for OPTION_MIPS32R2. - (OPTION_ELF_BASE): Adjust to accommodate OPTIONS_MIPS32R2. - (md_parse_option): Handle OPTION_MIPS32R2. - (s_mipsset): Reimplement handling of ".set mipsN" options - and add support for ".set mips32r2". - (mips_cpu_info_table): Add entry for "mips32r2" (MIPS32 Release 2). - (md_show_usage): Document "-mips32r2" option. - * doc/as.texinfo: Document "-mips32r2" option. - * doc/c-mips.texi: Likewise. - -2002-12-30 Dmitry Diky - - * configure.in: Add msp430 target. - * configure: Regenerate. - * Makefile.am: Add msp430 target. - * Makefile.in: Regenerate. - * config/tc-msp430.c: New file: msp430 assembler. - * config/tc-msp430.h: New file: target macros for msp430. - * doc/Makefile.am: Add msp430 target. - * doc/Makefile.in: Regenerate. - * doc/as.texinfo: Include msp430 documenation. - * doc/all.texi: Enable msp430 documentation. - * doc/c-msp430.texi: New file: document msp430 specific features - of the assembler. - -2002-12-25 Alexandre Oliva - - * dwarf2dbg.c (DWARF2_ADDR_SIZE): New macro. - (dwarf2_finish): Use it. - * doc/internals.texi (DWARF2_ADDR_SIZE): Document it. - * config/tc-mips.h (DWARF2_ADDR_SIZE): Override. - -2002-12-20 DJ Delorie - - * config/tc-xstormy16.c (md_cgen_lookup_reloc): Support - BFD_RELOC_XSTORMY16_12. - -2002-12-19 Alan Modra - - * doc/as.texinfo (Invoking): Typo fix. - * config/tc-tic54x.c (encode_operand): Comment typo fix. - -2002-12-18 Kazu Hirata - - * doc/c-alpha.texi: Fix typos. - * doc/c-arm.texi: Likewise. - * doc/c-d10v.texi: Likewise. - * doc/c-i370.texi: Likewise. - * doc/c-i960.texi: Likewise. - * doc/c-ia64.texi: Likewise. - * doc/c-mmix.texi: Likewise. - * doc/c-ns32k.texi: Likewise. - * doc/c-pdp11.texi: Likewise. - * doc/c-pj.texi: Likewise. - * doc/c-sh64.texi: Likewise. - * doc/c-sparc.texi: Likewise. - * doc/c-tic54x.texi: Likewise. - * doc/c-v850.texi: Likewise. - * doc/c-vax.texi: Likewise. - * doc/internals.texi: Likewise. - -2002-12-18 Chris Demetriou - - * config/tc-mips.c (macro): In M_DROL, M_DROR, M_ROL, and M_ROR, - use hardware rotate ops as appropriate. In M_DROL_I, M_DROR_I, - M_ROL_I, and M_ROR_I, simplify code, clean up warnings, and - arrange not to issue warnings about use of AT when AT is not - actually used. - -2002-12-17 Nick Clifton - - * as.c (std_longopts): Duplicate --keep-locals entry in order to - prevent it being confused with -k. - -2002-12-16 Andrew MacLeod - - * config/tc-xstormy16.c (md_cgen_lookup_reloc): If a relocation - has already been set up, use it. - -2002-12-16 Kazu Hirata - - * ChangeLog-9295: Fix a typo. - * README: Likewise. - * config/tc-d10v.c: Fix a comment typo. - * config/tc-dlx.c: Likewise. - * config/tc-h8300.h: Likewise. - * config/tc-h8500.h: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-s390.c: Likewise. - * config/tc-sh.h: Likewise. - * config/tc-tic80.h: Likewise. - * config/tc-w65.h: Likewise. - * config/tc-z8k.c: Likewise. - * config/tc-z8k.h: Likewise. - * testsuite/gas/h8300/cmpsi2.s: Likewise. - -2002-12-16 Alan Modra - - * config/tc-d30v.c (check_range): Warning fixes, formatting. - Simplify sign extension. Remove redundant unsigned < 0 test. - * config/tc-i960.c (md_ri_to_chars): Prototype. - * config/tc-mcore.c (md_pseudo_table): Fix typo. - (dump_literals): Init brarsym, and test later instead of isforce. - - * config/tc-ns32k.c (encode_operand): Constify operandsP and suffixP. - (parse): Constify line and lineptr. - (md_begin): Calculate endop here. - -2002-12-13 Alan Modra - - * config/obj-vms.c: Formatting. Include fnctl.h. - (Create_VMS_Object_File): Fix creat call for sane unix systems. - (Object_Record_Offset): Make it a size_t. - (Flush_VMS_Object_Record_Buffer): Fix signed/unsigned warning. - (VMS_TBT_Routine_End ): Make var unsigned long. - (VMS_Fix_Indirect_Reference ): Make arg addressT. - (synthesize_data_segment ): Remove ATTRIBUTE_UNUSED. - (vms_fixup_data_section ): Add here instead. - * config/e-criself.c: Fix typo in last change. - -2002-12-13 Alan Modra - - * write.c (write_object_file): Fix signed/unsigned warning. - * config/e-crisaout.c (crisaout_bfd_name): Prototype. - * config/e-criself.c (criself_bfd_name): Prototype. - * config/obj-aout.c (s_sect): Remove unused function. - * config/obj-bout.c (obj_bout_line ): Add ATTRIBUTE_UNUSED. - * config/obj-coff.c (coff_last_bf): Don't declare for OBJ_XCOFF. - (fixup_mdeps ): Add ATTRIBUTE_UNUSED. - * config/obj-ecoff.c (ecoff_frob_file ): Likewise. - * config/obj-vms.c (setup_basic_type ): Likewise. - (VMS_RSYM_Parse ): Likewise. - (vms_fixup_text_section ): Likewise. - (synthesize_data_segment ): Likewise. - (vms_fixup_xtors_section ): Likewise. - (structure_count): Don't use implicit int type. - * config/tc-a29k.c (insert_sreg): Prototype. - (define_some_regs): Prototype, make static. - (parse_operand): Likewise. - (md_parse_option ): Add ATTRIBUTE_UNUSED. - (md_show_usage ): Likewise. - (md_section_align ): Likewise. - (md_convert_frag ): Likewise. - (md_estimate_size_before_relax ): Likewise. - (md_apply_fix3): Don't cast valP pointer type. Fix bogus >>='s. - * config/tc-arm.c (arm_validate_fix): Only for OBJ_COFF or OBJ_ELF. - * config/tc-d30v.c (md_parse_option ): Add ATTRIBUTE_UNUSED. - (md_undefined_symbol ): Likewise. - (md_convert_frag ): Likewise. - (write_long ): Likewise. - (tc_gen_reloc ): Likewise. - (md_estimate_size_before_relax ): Likewise. - (md_apply_fix3 ): Likewise. - (s_d30v_align ): Likewise. - (build_insn): Correct format string. - (md_apply_fix3): Likewise. - * config/tc-fr30.c (md_parse_option ): Add ATTRIBUTE_UNUSED. - (md_undefined_symbol ): Likewise. - (md_convert_frag ): Likewise. - (md_cgen_lookup_reloc ): Likewise. - (md_begin): Delete unused vars. - (md_assemble): Likewise. - (md_estimate_size_before_relax): Likewise. - (fr30_relax_frag): #if 0 out, seems unused. - (md_atof): Remove declaration of atof_ieee. - (restore_colon): Prototype. - * config/tc-frv.c (frv_insert_vliw_insn): Prototype. - (frv_find_in_vliw): Likewise. - (frv_debug_tomcat): Likewise. - (frv_adjust_vliw_count): Likewise. - (frv_tomcat_shuffle): Likewise. - (frv_tomcat_analyze_vliw_chains): Likewise. Correct args to - frv_find_in_vliw call. - (md_atof): Remove declaration of atof_ieee. - * config/tc-h8500.c (cons): Delete declaration. - (md_begin ): Constify. - (displacement_size, immediate_size, absolute_size): Remove. - (build_relaxable_instruction ): Add ATTRIBUTE_UNUSED. - (tc_crawl_symbol_chain ): Likewise. - (md_undefined_symbol ): Likewise. - (tc_headers_hook ): Likewise. - (md_parse_option ): Likewise. - (md_show_usage ): Likewise. - (md_convert_frag ): Likewise. - (tc_coff_symbol_emit_hook ): Likewise. - (md_atof): Remove declaration of atof_ieee. - (tc_aout_fix_to_chars): Remove unused function. - (parse_reg): Prototype. - (parse_exp): Prototype. - (skip_colonthing): Prototype. Use &&, not & in logical expressions. - (parse_reglist): Prototype. - (get_operand): Prototype. - (get_operands): Prototype. - (get_specific): Prototype. Make "this_index" signed. - (check): Prototype, make static. - (insert): Prototype - (build_relaxable_instruction): Prototype, make static. - (build_bytes): Prototype. - (wordify_scb): Prototype. - * config/tc-h8500.h (start_label): Declare. - (tc_coff_sizemachdep): Declare. - * config/tc-i370.c (i370_ebcdic ): Add ATTRIBUTE_UNUSED. - (i370_rmode ): Likewise. - (i370_csect ): Likewise. - (i370_dc ): Likewise. - (i370_ds ): Likewise. - (i370_elf_lcomm ): Likewise. - (i370_ltorg ): Likewise. - (i370_using ): Likewise. - (i370_drop ): Likewise. - (i370_byte ): Likewise. - (i370_tc ): Likewise. - (md_estimate_size_before_relax ): Likewise. - (md_convert_frag ): Likewise. - (md_undefined_symbol ): Likewise. - (md_pcrel_from_section ): Likewise. - (tc_gen_reloc ): Likewise. - (i370_section_letter): #if 0 unused functions. - (i370_section_word, i370_section_type, i370_section_flags): Likewise. - (symbol_locate): Prototype. - * config/tc-i860.c (md_atof): Remove declaration of atof_ieee. - (md_number_to_disp, md_number_to_field): Remove. - (md_apply_fix3): Correct format string and cast "fup". - * config/tc-i960.c (md_convert_frag): Add ATTRIBUTE_UNUSED to args. - (s_endian ): Likewise. - (md_undefined_symbol ): Likewise. - (tc_crawl_symbol_chain ): Likewise. - (tc_set_bal_of_call): Likewise. - (tc_coff_symbol_emit_hook ): Likewise. - (i960_handle_align ): Likewise. - (i960_validate_fix ): Likewise - (tc_gen_reloc
): Likewise. - (tc_coff_symbol_emit_hook): Only define for OBJ_COFF. - (struct memS, struct regop): Forward declare. - (brcnt_emit, brlab_next, cobr_fmt, ctrl_fmt, emit, get_args, - get_cdisp, get_ispec, get_regnum, i_scan, mem_fmt, mema_to_memb, - parse_expr, parse_ldconst, parse_memop, parse_po, parse_regop, - reg_fmt, relax_cobr, s_leafproc, s_sysproc, shift_ok, syntax, - targ_has_sfr, targ_has_iclass, tc_bfd_fix2rtype): Prototype. - (md_chars_to_number, md_number_to_imm): Make static, prototype. - (md_number_to_field): Likewise. - (md_number_to_disp): Remove unused function. - (md_atof): Remove declaration of atof_ieee. - (md_apply_fix3): Correct md_number_to_imm call. - * config/tc-ip2k.c (md_assemble): Warning fix. - * config/tc-m32r.c (md_parse_option ): Add ATTRIBUTE_UNUSED. - (fill_insn ): Likewise. - (debug_sym ): Likewise. - (md_undefined_symbol ): Likewise. - (m32r_scomm ): Likewise. - (md_convert_frag ): Likewise. - (md_cgen_lookup_reloc ): Likewise. - (m32r_record_hi16 ): Likewise. - (md_estimate_size_before_relax): #if 0 old_fr_fix. - (allow_m32rx): Prototype. - (first_writes_to_seconds_operands): Prototype. - (writes_to_pc): Prototype. - (can_make_parallel): Prototype. - (make_parallel): Prototype. - (target_make_parallel): Prototype. - (assemble_two_insns): Prototype. - (m32r_record_hi16): Prototype. - (md_atof): Remove declaration of atof_ieee. - * config/tc-m32r.h (m32r_fix_adjustable): Declare. - (m32r_force_relocation): Prototype. - (m32r_elf_section_change_hook): Prototype. - * config/tc-m68k.c (tc_gen_reloc
): Add ATTRIBUTE_UNUSED. - (md_show_usage): Fix signed/unsigned warning. - * config/tc-m88k.c (get_reg): Make reg_prefix param unsigned. - (calcop): Ditto for reg_prefix var. - (hexval): Add cast to fix signed/unsigned warning. - (md_number_to_disp): Delete unused function. - (md_number_to_field): Likewise. - (float_cons, cons, s_globl, s_space, s_set, s_lcomm): Remove decl. - (match_name): Prototype. - (get_bf2): Prototype. - (get_bf_offset_expression): Prototype. - * config/tc-mcore.c (mcore_s_literals ): Add ATTRIBUTE_UNUSED. - (md_undefined_symbol ): Likewise. - (md_create_short_jump ): Likewise. - (md_create_long_jump ): Likewise. - (md_convert_frag ): Likewise. - (md_apply_fix3 ): Likewise. - (md_section_align ): Likewise. - (md_pcrel_from_section ): Likewise. - (tc_gen_reloc
): Likewise. - (reg_m, reg_n, immediate): Delete unused vars. - (dump_literals): Fix signed/unsigned warning. - (enter_literal): Likewise. - (parse_imm): Likewise. Also fix format string. - (parse_mem): Remove unused var. - (md_assemble ): Abort on unexpected inst. - (md_atof): Remove declaration of atof_ieee. - (md_parse_option): Remove unused vars. - (md_apply_fix3): Fix format strings, cast args. - (tc_gen_reloc): Delete unused var. - * config/tc-mcore.h (tc_coff_sizemachdep): Declare. - * config/tc-mn10200.c (md_parse_option ): Add ATTRIBUTE_UNUSED. - (md_undefined_symbol ): Likewise. - (md_convert_frag ): Likewise. - (tc_gen_reloc ): Likewise. - (check_operand ): Likewise. - (md_convert_frag): Fix format strings. - (tc_gen_reloc): Delete fx_addsy - fx_subsy code. - * config/tc-openrisc.c (ignore_pseudo): Prototype. - (md_atof): Remove declaration of atof_ieee. - * config/tc-or32.c (parse_operand): Prototype non-BFD too. - (md_apply_fix3): Fix bogus >>='s. - (md_undefined_symbol): Delete unused var. - * config/tc-pj.c (little, big, parse_exp_save_ilp): Prototype. - (c_to_r, ipush_code, fake_opcode, alias): Likewise. - (fake_opcode): Adjust for pj_opc_int_t change. - (md_begin): Likewise. - (md_assemble): Likewise. - (ipush_code): Correct parse_exp_save_ilp call. Test pending_reloc - instead of non-existent third arg of parse_exp_save_ilp. - (md_parse_option): Correct "little" and "big" calls. - * config/tc-sparc.c (s_register): Only declare #ifdef OBJ_ELF. - (md_apply_fix3 ): Add ATTRIBUTE_UNUSED. - (tc_gen_reloc
): Likewise. - * config/tc-tic30.c: #include stdarg.h or varargs.h. - (debug): Rewrite using VA_* macros. - (md_estimate_size_before_relax): Add ATTRIBUTE_UNUSED to args. - (md_convert_frag): Likewise. - (md_parse_option): Likewise. - (md_show_usage): Likewise. - (md_undefined_symbol): Likewise. - (tc_gen_reloc): Likewise. - (md_operand): Likewise. - (tc_aout_pre_write_hook): Delete. - (struct tic30_insn): Make "operands" unsigned. - (struct tic30_par_insn): Likewise. - (md_assemble): Likewise for "count", "i" and "numops". - (tic30_parallel_insn): Likewise for vars here. - (tic30_operand): Likewise. Remove useless unsigned >= 0 comparison. - * config/tc-tic30.h (tc_aout_pre_write_hook): Define as empty. - * config/tc-tic80.c (obj_coff_section): Delete declaration. - (md_estimate_size_before_relax): Add ATTRIBUTE_UNUSED on args. - (md_undefined_symbol): Likewise. - (md_parse_option): Likewise. - (md_convert_frag): Likewise. - (tc_coff_symbol_emit_hook): Likewise. - (md_atof): Remove declaration of atof_ieee. - (const_overflow): Warning fixes, tidy. - (get_operands): Delete unused vars. - (internal_error_a): Adjust format string to expect a long for arg. - (find_opcode): Warning fixes, simplify. - (build_insn): Cast internal_error_a arg. - (md_begin): Likewise. - (md_apply_fix3): Likewise. - (md_assemble): Delete unused var. - * config/tc-tic80.h (tc_coff_fix2rtype): Prototype. - * config/tc-z8k.c (cons, obj_coff_section): Delete declarations. - (whatreg, parse_reg, parse_exp): Make static, prototype. - (checkfor, regword, regaddr, get_ctrl_operand): Prototype. - (get_flags_operand, get_interrupt_operand, get_cc_operand): Likewise. - (get_operand, get_operands, get_specific, newfix): Likewise. - (apply_fix, build_bytes): Likewise. - (md_atof): Remove declaration of atof_ieee. - (tc_aout_fix_to_chars): Delete. - (md_begin): Constify "opcode". Don't try to init opcode->idx. - Fix s_unseg call. - (md_parse_option): Fix s_segm and s_unseg calls. - -2002-12-12 Alexandre Oliva - - * tc-mips.c (RELAX_BRANCH_ENCODE): Remove reloc_s2 argument. - Adjust callers. - (RELAX_BRANCH_RELOC_S2): Delete. - (append_insn): Use only BFD_RELOC_16_PCREL_S2 for branches. - Do not handle BFD_RELOC_16_PCREL. - (macro_build, mips_ip): Likewise. - (md_pcrel_from): Return 4 for undefined symbols regardless of - mips_pic. - (md_apply_fix3): Use only BFD_RELOC_16_PCREL_S2 for branches. - Don't dereference howto if no such relocation is available. - Do not apply hack for in-place zero addend in NEWABI. - (md_convert_frag): Use only BFD_RELOC_16_PCREL_S2 for branches. - -2002-12-12 Alexandre Oliva , - Alan Modra - - * config/tc-mn10300.h (TC_VALIDATE_FIX_SUB): Define. - (TC_LINKRELAX_FIXUP): Add comments. - -2002-12-12 Alexandre Oliva - - * config/tc-mn10300.c (set_arch_mach): Change argument type to - avoid warnings. - (r_register_name, xr_register_name): Add prototype declarations. - -2002-12-08 H.J. Lu - - * config/tc-ia64.c (md_apply_fix3): Remove the PCREL hack - copied from tc-i386.c. - -2002-12-08 Stephane Carrez - - Fix Bug savannah/1825: - * config/tc-m68hc11.c (STATE_INDEXED_PCREL): New relax code. - (md_relax_table): Define specific relax for PC-rel offsets. - (build_indexed_byte): Use a STATE_INDEXED_PCREL relax code. - (m68hc11_relax_frag): Handle the new relax code. - (md_convert_frag): Likewise. - (md_estimate_size_before_relax): Likewise. - -2002-12-08 Alan Modra - - * subsegs.c (section_symbol): Use the symbol, not the section, name. - -2002-12-05 Richard Henderson - - * config/ia64.c (enum reloc_func): Add FUNC_LT_RELATIVE_X. - (ia64_gen_real_reloc_type): Handle it. - (pseudo_func): Add @ltoffx. - (md_begin): Build .. - (ia64_force_relocation): True for LTOFF22X and LDXMOV. - -2002-12-05 Alan Modra - - * config/tc-arm.c (arm_force_relocation): Move out of #if OBJ_ELF. - Move OBJ_COFF TC_FORCE_RELOCATION code here so that COFF handles - ARM_IMMEDIATE and ARM_ADRL_IMMEDIATE relocs as for ELF. - * config/tc-arm.h (TC_FORCE_RELOCATION): Define for both ELF and - COFF to call arm_force_relocation. - -2002-12-04 David Mosberger - - * config/tc-ia64.c (pseudo_func): Add "@pause" constant for "hint" - instruction. - (emit_one_bundle): Handle "hint" instruction. - (operand_match): Match IA64_OPND_AR_CSD. - -2002-12-04 Alan Modra - - * dwarf2dbg.c (scale_addr_delta): Correct parameter. Move prototype - inside #if. - -2002-12-03 Nick Clifton - - * config/tc-ppc.c (ppc_cleanup): Do not set SEC_MERGE flag on - .PPC.EMB.apuinfo sections. - -2002-12-03 Richard Henderson - - * config/tc-ia64.c (operand_match): Add IA64_OPND_LDXMOV case. - -2002-12-03 Alan Modra - - * config/tc-w65.c (s_longa): Prototype. Make static, specify int arg. - (cons, s_align_bytes): Delete declaration. - (relax): Delete. - (md_begin): Constify "struct opinfo *" var. Don't try to make "name" - strings common. - (dot): Delete unused function. - (w65_expression): Remove unused arg. - (parse_exp): Prototype. Remove unused arg. Adjust w65_expression - call. - (get_operands): Prototype. Constify "struct opinfo *" arg. Fix - parse_exp call. - (get_specific): Prototype. Constify "struct opinfo *" arg and return - value. - (check): Remove unused function. - (build_Mytes): Prototype. Constify "struct opinfo *" arg. Abort - on unhandled switch case. - (md_assemble): Remove unused op_start, op_end, nlen, p vars. Constify - "opcode". - (tc_crawl_symbol_chain): Delete unused function. - (tc_headers_hook): Likewise. - (tc_Nout_fix_to_chars): Likewise. - (md_undefined_symbol): Add ATTRIBUTE_UNUSED. - (md_parse_option): Likewise. - (md_convert_frag): Likewise. - (tc_coff_symbol_emit_hook): Likewise. - (md_show_usage): Likewise. - * config/tc-w65.h (tc_coff_sizemachdep): Declare. - (TC_PARSE_CONS_EXPRESSION): w65_expression takes one arg. - (w65_expression): Declare. - - * po/POTFILES.in: Regenerate. - - * config/tc-arm.c (arm_force_relocation): Return 0 for ARM_IMMEDIATE - and ARM_ADRL_IMMEDIATE. - -2002-12-02 Nick Clifton - - * gasp.c: Delete. It has been deprecated. - * NEWS: Mention that gasp has been removed. - * Makefile.am: Remove references to gasp. - * makefile.vms: Likewise. - * mpw-make.sed: Likewise. - * Makeile.in: Regenerate. - * doc/gasp.texi: Delete. - * doc/Makefile.am: Remove references to gasp.texi. - * doc/Makefile.in: Regenerate. - * macro.c: Delete references to gasp. - Remove use of comment_char function parameter as it is no longer - needed. - * macro.h: Update prototypes to remove comment_char parameter. - Fix formatting. - * read.c (read_a_source_file, s_irp): Remove comment_char - parameter from invocation of functions in macro.c - -2002-12-02 Hans-Peter Nilsson - - * read.c (emit_expr) [!WORKING_DOT_WORD]: Initialize x->use_jump. - -2002-12-01 Stephane Carrez - - * config/tc-m68hc11.c (md_begin): Fix qsort warning. - (tc_gen_reloc): Mark section param as not used. - -2002-12-01 Stephane Carrez - - Fix Bug savannah/1825: - * config/tc-m68hc11.h (md_relax_frag): Define to support relaxations - that are not pc-relative. - (m68hc11_relax_frag): Declare. - - * config/tc-m68hc11.c (build_indexed_byte): Use a frag_var to handle - the offsetable indexed addressing modes (n,r). - (build_insn): Cleanup some locals. - (m68hc11_relax_frag): New function imported from tc-cris.c to handle - relaxation of difference between two symbols of same section. - (md_convert_frag): For INDEXED_OFFSET relaxs, use the displacement - only when this is a PC-relative operand and the offset is not absolute. - (md_estimate_size_before_relax): Convert the INDEXED_OFFSET,UNDEF frag - to INDEXED_OFFSET,STATE_BITS5 when the symbol is absolute; this will - be handled by m68hc11_relax_frag. - -2002-12-01 Stephane Carrez - - * config/tc-m68hc11.c (elf_flags): Set default ABI to gcc default - (32-bit int, 64-bit double). - (md_longopts): New options -mshort, -mlong, -mshort-double and - -mlong-double to control the ABI. - (md_show_usage): Update. - (md_parse_option): Handle new options. - * doc/as.texinfo (Overview): Document new options for HC11/HC12. - -2002-12-01 Nathan Sidwell - - * symbols.c (report_op_error): New function, broken out of ... - (resolve_symbol_value): ... here. Use for both monadic and dyadic - operators. - -2002-11-30 Kaz Kojima - - * config/tc-sh.c (md_apply_fix3): Take account of fx_offset - for BFD_RELOC_32_PLT_PCREL. - -2002-11-30 Alan Modra - - * dwarf2dbg.c, write.c, config/obj-aout.c, config/obj-coff.c, - config/obj-ecoff.c, config/obj-elf.c, config/obj-som.c, - config/tc-arm.c, config/tc-arm.h, config/tc-avr.c, config/tc-cris.c, - config/tc-d10v.c, config/tc-d10v.h, config/tc-d30v.c, config/tc-d30v.h, - config/tc-dlx.c, config/tc-dlx.h, config/tc-fr30.c, config/tc-fr30.h, - config/tc-frv.c, config/tc-frv.h, config/tc-hppa.c, config/tc-i370.c, - config/tc-i386.c, config/tc-i386.h, config/tc-m32r.c, - config/tc-m68hc11.c, config/tc-mcore.c, config/tc-mcore.h, - config/tc-mips.c, config/tc-mips.h, config/tc-mn10200.c, - config/tc-mn10300.c, config/tc-mn10300.h, config/tc-openrisc.c, - config/tc-openrisc.h, config/tc-ppc.c, config/tc-s390.c, - config/tc-sh.c, config/tc-sh.h, config/tc-sh64.c, config/tc-tic54x.c, - config/tc-v850.c, config/tc-v850.h, config/tc-xstormy16.c, - config/tc-xstormy16.h: Replace boolean with bfd_boolean, true with - TRUE, false with FALSE. Simplify comparisons of bfd_boolean vars with - TRUE/FALSE. Formatting. - -2002-11-29 Nick Clifton - - * config/tc-arm.c (do_t_bkpt): If no operand is specified, - assume a value of zero. - (do_bkpt): Likewise. - -2002-11-29 Kaz Kojima - - * config/tc-sh.c (md_apply_fix3): Call S_SET_THREAD_LOCAL - for TLS relocations. - -2002-11-29 Jakub Jelinek - - * config/tc-ia64.c (md_apply_fix3): Add default case. - -2002-11-28 Jakub Jelinek - - * symbols.c (S_SET_THREAD_LOCAL): New function. - * symbols.h (S_SET_THREAD_LOCAL): New prototype. - * config/tc-i386.c (md_apply_fix3): Call S_SET_THREAD_LOCAL - for TLS relocations. - * config/tc-ia64.c (md_apply_fix3): Likewise. - * config/tc-alpha.c (md_apply_fix3): Likewise. - -2002-11-28 Jakub Jelinek - - * write.c (subsegs_finish): For SEC_MERGE sections pad last fragment - to entsize. - -2002-11-26 DJ Delorie - - * config/tc-cris.c (cris_relax_frag): Fix typo in comment. - (md_assemble): Don't pass on branches to constants as relaxable. - Tweak comment. - -2002-11-25 Svein E. Seldal - - * config/tc-tic4x.c (c4x_operands_match): Bugfix in direct mode - -2002-11-21 Randolph Chung - - * config/tc-hppa.h (tc_frob_symbol): Frob undefined unused symbols - only if they have default visibility. - -2002-11-21 Richard Henderson - - * config/tc-alpha.c (alpha_fix_adjustable): Remove redundant - S_IS_DEFINED test. - -2002-11-21 Alan Modra - - * config/tc-mcore.c (mcore_pool_count): New function. - (mcore_cons, mcore_float_cons, mcore_stringer, mcore_fill): Use it. - -2002-11-20 Klee Dienes - - * config/tc-mcore.c (md_begin): Use a const iterator. Don't - coalesce the name fields to use the same pointer. - - * config/tc-sh.c (md_begin): Use a const iterator. Don't coalesce - the name fields to use the same pointer. - (get_specific): Check for opcodes with the same name using strcmp - as well as comparing the pointer. - -2002-11-20 Alan Modra - - * write.c (adjust_reloc_syms): Don't reduce SEC_MERGE fixups with - fx_subsy non-NULL. - -2002-11-19 Richard Henderson - - * config/obj-elf.c (obj_elf_visibility): Overwrite only the - visibility portion of st_other. - -2002-11-19 Klee Dienes - - * config/tc-h8300.c (struct h8_instruction): New type, used to - wrap h8_opcodes with length, noperands, idx, and size fields - (computed at run-time). - (h8_instructions): New variable. - (md_begin): Allocate the storage for h8_instructions. Fill - h8_instructions with pointers to the appropriate opcode and the - correct value for the additional fields. - (clever_message): Update to use h8_instructions instead of - h8_opcodes. - (build_bytes): Ditto. - (get_specific): Ditto. - (md_assemble): Ditto. - -2002-11-19 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_fix_adjustable): Re-add patch to prevent - adjustments to symbols in merge sections. - -2002-11-19 Luke Deller - - * config/tc-alpha.c (s_alpha_prologue): as_bad when sym is NULL. - -2002-11-18 Kevin Buettner - - * dwarf2dbg.h (dwarf2_format): New enum. - * dwarf2dbg.c (DWARF2_FORMAT): Provide default definition. - (out_debug_line, out_debug_info): Add code for handling 64-bit - DWARF 2 formats. - * config/tc-mips.h (mips_dwarf2_format): Declare. - * config/tc-mips.c (mips_dwarf2_format): New function. - * doc/internals.texi (DWARF2_FORMAT): Document. - -2002-11-18 Alexandre Oliva - - * config/tc-mips.c (s_change_section): Make sure input buffer - is not accessed past the end. Don't hand - obj_elf_change_section a pointer into the input buffer. - -2002-11-18 Alexandre Oliva , Chris Demetriou - - * config/tc-mips.c (tc_gen_reloc): Fix typo in handling of - GOT_LO16 on NEWABI. - -2002-11-18 Svein E. Seldal - - * config/tc-tic4x.c: Fixed proper commandline - parameters. Added support for new opcode-list format. General - error message fixups. - (c4x_inst_add): Reject insn not for our CPU - (md_begin): Added matrix for setting the proper opcode-level & - device-flags according to cpu type and revision. Rewrite the - opcode hasher. - (c4x_operand_parse): Fix opcode bug - (c4x_operands_match): New function argument. Added dry-run - mechanism, that is optional error generation. Added constraint 'i' - and 'j'. - (c4x_insn_check): Added new function for post-verification of the - generated insn. - (md_assemble): Check all opcodes before croaking because of an - argument mismatch. Need this to be able to fully support - ortogonally arguments. - (md_parse_options): Revised commandprompt swicthes and added new - ones. - (md_show_usage): Complete rewrite of printout. - -2002-11-16 Svein E. Seldal - - * config/tc-tic4x.c: Remove c4x_pseudo_ignore function. - (c4x_operands_match): Added check for 8-bits LDF insn. Give - warning when using constant direct bigger than 2^16. Add the new - arguments. - -2002-11-11 Christopher Faylor - - * configure.in: Use .gdbinit under Cygwin. - * configure: Regenerate. - -2002-11-11 Christopher Faylor - - * config/tc-i386.h (EXTERN_FORCE_RELOC): Define only if - STRICT_PE_FORMAT. - -2002-11-11 Svein E. Seldal - - * config/tc-tic4x.c: Declare as many functions as possible as - static. Maintenance on the general indenting. Removed unnecessary - pseudo-ops and added new ones. Removed obsoleted c4x_pseudo_ignore - function. Add support for new DSP, TMS320VC33. Fix bug for - converting flonum constants. - (c4x_do_align): Add proper align handling. Setup align to insert - NOP's. - (c4x_gen_to_words): Support for extended TI type floats. - (md_atof): Proper dumping of multiple-word littlenums. - (c4x_atof): Added support for extended TI type floats. - (c4x_stringer): Added new function to handle compact strings. - (c4x_emit_char): Added new function argument to handle custom - length inserts, like single-byte strings. - * config/tc-tic4x.h: Add proper align handling with NOP's. - * Makefile.am: Added tic4x dependecy - * Makefile.in: Regenerate - -2002-11-11 Hans-Peter Nilsson - - * macro.c (get_any_string): Correct logic for not going beyond end - of in->ptr[]. - -2002-11-10 Hans-Peter Nilsson - - * config/tc-mmix.c (get_putget_operands): Mark both possible - operands as invalid at beginning. - - * config/tc-mmix.c (md_convert_frag) : - Initialize target of fixup to zero. - -2002-11-07 Alexandre Oliva - - * config/tc-mips.c (macro_build_lui): _gp_disp is not special on - NEWABI, but we should still emit HI16_S for non-PIC n32. - -2002-11-06 Richard Henderson - - * config/tc-alpha.c (alpha_validate_fix): Move code ... - (alpha_fix_adjustable): ... here. - * config/tc-alpha.h (TC_VALIDATE_FIX): Remove. - -2002-11-07 Eric Kohl - - * config/te-pe.h (LEX_AT): Accept at-sign (@) as first character - of a label. - -2002-11-05 H.J. Lu - - * config/tc-mips.c (support_64bit_objects): Check *l before it - is freed. - -2002-11-04 Danny Smith - - * config/obj-coff.c (obj-coff-section): Set SEC_DATA and - SEC_LOAD flags for sections marked as 's'. - -2002-11-01 Alan Modra - - * write.c (TC_FORCE_RELOCATION_SUB_ABS): Default to zero. - (TC_FORCE_RELOCATION_SUB_LOCAL): Likewise when DIFF_EXPR_OK. - * doc/internals.texi (TC_FORCE_RELOCATION_SUB_ABS): Document changed - default. - - * dep-in.sed: Fix typo. - -2002-10-30 Daniel Jacobowitz - - * configure.in: Update ARM CPU patterns. - * configure: Regenerated. - -2002-10-29 Daniel Jacobowitz - - * itbl-lex.l: Use #include <> for generated headers. - * itbl-ops.c: Likewise. - -2002-10-28 Daniel Jacobowitz - - * doc/gasp.texi: Fix typo in deprecation note. - -2002-10-23 Nick Clifton - - * config/tc-arm.c (tc_gen_reloc): Allow an absolute reference to - _GLOBAL_TABLE_OFFSET_ to be converted into a GOT reloc. - -2002-10-23 Hans-Peter Nilsson - - * config/tc-mmix.h (mmix_frob_file_before_adjust): Don't declare. - (tc_frob_file_before_adjust): Don't define. - * config/tc-mmix.c (mmix_frob_local_reloc): Remove unused - function. - (mmix_frob_file_before_adjust): Remove ineffective function. - -2002-10-23 Hans-Peter Nilsson - - * config/tc-cris.c (SIMPLE_EXPR): New macro. - (cris_relax_frag): New function. - (md_estimate_size_before_relax) : Pass on unresolved - expressions that will become absolute expressions to relaxation. - (md_convert_frag) : Expect only absolute expressions. Use the symbol - value, not distance to symbol. - : - Ditto. Correct placement of fixup. - (md_assemble): Use SIMPLE_EXPR when dissecting expressions. - (gen_bdap): Ditto. - * config/tc-cris.h (cris_relax_frag): Declare. - (md_relax_frag): Define. - -2002-10-22 Alan Modra - - * config/obj-elf.c (special_sections): Use correct types for init - array sections. - (obj_elf_change_section): Don't mess with init array section type. - -2002-10-21 Richard Sandiford - - * config/tc-mips.c (mips_need_elf_addend_fixup): Return true - for relocs against symbols in a merged section. - -2002-10-18 Alexandre Oliva - - * config/tc-mips.c (md_begin): Add $fcc registers to the symbol - table as register names. - -2002-10-18 Ulrich Weigand - - * config/tc-s390.c (md_parse_option): Set s390_arch_size to 32 - for option -m31. - -2002-10-18 Svein E. Seldal - - * expr.c (operand): Add support for n.nn flonums. - -2002-10-17 Johannes Stezenbach - - * itbl-parse.y (entry): Provide empty action. - -2002-10-16 Alan Modra - - * configure.in (BFDVER_H): Set and subst. - * dep-in.sed: Replace bfdver.h with $(BFDVER_H). - * Makefile.am: Run "make dep-am". - (BFDVER_H): Define. - * configure: Regenerate. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2002-10-15 Alan Modra - - * config/tc-i386.h (EXTERN_FORCE_RELOC): Define. - (MD_APPLY_SYM_VALUE): Define for PE too. - -2002-10-14 Alan Modra - - * Makefile.am: Run "make dep-am". - (CPU_OBJ_VALID): sh64 coff is invalid. - * as.c: #include "bfdver.h". - * Makefile.in: Regenerate. - * config.in: Regenerate. - -2002-10-14 Momchil Velikov - - * config/tc-v850.c (CHECK_): Remove token pasting operator. - -2002-10-14 Richard Sandiford - - * configure.in (mips64vr-elf, mips64vrel-elf): New config. - * configure: Regenerate. - -2002-10-13 Eric Christopher - Alexandre Oliva - - * config/tc-mips.c (s_gpdword): New function. - (mips_pseudo_table): Add .gpdword. - (mips_need_elf_addend_fixup): never for NEWABI. - (md_apply_fix3): Don't mark BFD_RELOC64 after GPREL16 or - GPREL32 as done. - (s_cpadd): Generate .cpadd on NEWABI. - -2002-10-12 Elias Athanasopoulos - - * config/tc-ppc.c (ppc_cleanup): Make 'i' unsigned int. - -2002-10-12 Alexandre Oliva - - * config/tc-mips.h (mips_relax_frag): Take segment as argument. - (md_relax_frag): Adjust macro. - * config/tc-mips.c (mips_relax_branch): New variable. - (RELAX_BRANCH_ENCODE, RELAX_BRANCH_P, RELAX_BRANCH_LIKELY, - RELAX_BRANCH_LINK, RELAX_BRANCH_TOOBAR): New. - (RELAX_MIPS16_P): Adjust. - (append_insn): Emit branch to non-constant in a frag_var if - branch-relaxation is desirable and possible. - (OPTION_RELAX_BRANCH, OPTION_NO_RELAX_BRANCH): New options. - (OPTION_ELF_BASE): Adjust. - (md_parse_option): Handle new options. - (md_apply_fix3): Update comment on EMBEDDED_PIC conditional - branch relaxation. - (relaxed_branch_length): New function. - (md_estimate_size_before_relax): Handle branch frags. - (mips_relax_frag): Likewise. - (md_convert_frag): Handle branch frags. Warn if branch is - relaxed. - -2002-10-11 Kaz Kojima - - * config/tc-sh.c (sh_force_relocation): Make sure TLS relocs get - emitted. - (md_apply_fix3): Add TLS relocs. - (sh_parse_name): Support @TLSGD, @TLSLDM, @GOTTPOFF, @TPOFF and - @DTPOFF. - -2002-10-11 Michel Six - Alan Modra - - * config/tc-i386.c (output_jump): Set fx_signed for loop/jcxz. - (md_estimate_size_before_relax): Likewise for 8 bit branches. - -Thu Oct 10 14:31:30 2002 J"orn Rennecke - - * config/tc-sh.c (assemble_ppi): Initialize reg_x / reg_y / reg_n - inside loop. - -2002-10-09 Richard Shann - Stephen Clarke - - * config/tc-sh64.c (sh64_target_format): Add support for sh64 - Linux environment. - -2002-10-03 Kaz Kojima - - * contig/tc-sh.c (sh_local_pcrel): New. - (sh_force_relocation): Use sh_local_pcrel. - (md_pcrel_from_section): Check the relocation type whether it - should be resolved locally. Use S_FORCE_RELOC. - -2002-10-01 Alan Modra - - * config/tc-mips.h (TC_FORCE_RELOCATION_SUB_SAME): Define. - (TC_FORCE_RELOCATION): Tidy arg. - -2002-09-30 Gavin Romig-Koch - Ken Raeburn - Aldy Hernandez - DJ Delorie - Michael Meissner - Eric Christopher - Richard Sandiford - - * doc/c-mips.texi: Add entries for -march=vr4120,vr4130,vr4181, - vr5400 and vr5500. Add entry for -mfix-vr4122-bugs. - * config/tc-mips.c (CPU_HAS_DROR, CPU_HAS_ROR): New macros. - (hilo_interlocks): True for CPU_VR5500. - (gpr_interlocks, cop_interlocks): True for CPU_VR5400 and CPU_VR5500. - (mips_fix_vr4122_bugs): New. - (append_insn): Work around 4122 errors if mips_fix_vr4122_bugs. - (mips_emit_delays): Likewise. - (macro2) [M_DROLI]: Use dror or dror32 if CPU_HAS_DROR. - [M_ROLI]: Likewise ror if CPU_HAS_ROR. - (validate_mips_insn, mips_ip): Handle '[', ']', 'e' and '%'. - (OPTION_FIX_VR4122, OPTION_NO_FIX_VR4122): New options. - (md_longopts): Add -mfix-vr4122-bugs and -no-mfix-vr4122-bugs. - (OPTION_ELF_BASE): Bump. - (md_parse_option): Handle the new options. - (mips_cpu_info_table): Add entries for vr4120, vr4130, vr4181, - vr5400 and vr5500. - -2002-09-29 H.J. Lu - - * config/tc-mips.c (md_apply_fix3): Subtract the symbol value - twice if howto->pcrel_offset is true. - -2002-09-28 Matt Thomas - Jason Thorpe - - * config/tc-vax.c (md_estimate_size_before_relax): Only try to - convert undefined references to GOT32/PLT32 if PIC code is - requested. Fix comment. - -2002-09-27 Kaz Kojima - - * config/tc-sh.c (sh_force_relocation): Return 0 for - some PC relative relocations when not relaxing. - -2002-09-26 Jakub Jelinek - - * config/tc-i386.c (tc_i386_fix_adjustable): Add x86-64 TLS relocs. - Define them if not BFD_ASSEMBLER. - (lex_got): Handle @tlsgd, @dtpoff and @tpoff in 64-bit mode, add - @tlsld. - (md_apply_fix3): No addend for BFD_RELOC_X86_64_TLSGD, - BFD_RELOC_X86_64_TLSLD and BFD_RELOC_X86_64_GOTTPOFF. - (tc_gen_reloc): Handle x86-64 TLS relocs. - -2002-09-27 Alan Modra - - * config/tc-avr.c (md_apply_fix3): Reinstate code handling pcrel - fixups to current or absolute section. - -2002-09-26 Jim Wilson - - * config/tc-v850.c (v850_offset): Use frag_var instead of frag_now_fix - and frag_more. - -2002-09-26 Thiemo Seufer - - * config/tc-mips.c (CPU_HAS_MIPS16): Add mips-lsi-elf as MIPS16 - capable configuration. - (macro_build): Check for MIPS16 capability, not for actual MIPS16 code - generation. - (mips_ip): Likewise. - -2002-09-26 Thiemo Seufer - - * config/tc-mips.c (append_insn): Fix jump overflow check. - -2002-09-24 Alan Modra - - * config/tc-i386.c (process_operands): Warn about "lea" segment - overrides. - -2002-09-22 Mark Elbrecht - - * write.c: Delete set_segment_vma and prototype. Update all callers. - -2002-09-21 Alan Modra - - * config/tc-i386.c (md_apply_fix3): Replace S_IS_EXTERNAL, - S_IS_WEAK etc. with S_FORCE_RELOC call. Correct comment. - Rename "fseg" to "sym_seg". - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2002-09-20 Nick Clifton - - * symbols.c (colon): Do not allow symbols to be created in the - absolute section if WORKING_DOT_WORD is not defined and - new_broken_words would require a new frag to be created. - -2002-09-20 Alan Modra - - * expr.c (expr): Simplify foo-foo here. - (clean_up_expression): Remove O_subtract code. - - * write.h (struct fix): Add fx_dot_value. - (dot_value): Declare. - * write.c (dot_value): New var. - (fix_new_internal): Save dot_value as fx_dot_value. - (fixup_segment): Adjust fx_offset using fx_dot_value. - * expr.c (expr): Update dot_value. - -2002-09-19 Jakub Jelinek - - * config/tc-i386.c (tc_i386_fix_adjustable): Handle - BFD_RELOC_386_TLS_IE and BFD_RELOC_386_TLS_GOTIE. - (BFD_RELOC_386_TLS_IE, BFD_RELOC_386_TLS_GOTIE): Define to 0 - if not defined. - (lex_got): Handle @GOTNTPOFF and @INDNTPOFF. - (md_apply_fix3, tc_gen_reloc): Handle BFD_RELOC_386_TLS_IE and - BFD_RELOC_386_TLS_GOTIE. - -2002-09-19 Richard Henderson - - * config/tc-alpha.c (md_pcrel_from): Only adjust special for - branch type relocs. - (alpha_force_relocation): Don't special-case branch type relocs. - -2002-09-19 Nick Clifton - - * config/tc-m68k.c (select_control_regs): Handle situation where - architecture has not yet been selected. - -2002-09-18 Chris Demetriou - - * config/tc-mips.c (IS_SEXT_32BIT_NUM): Move closer to top of file. - (IS_SEXT_16BIT_NUM): New macro. - (macro_build_ldst_constoffset): New function, to build a set of - instructions to do a load or store from a constant offset relative - to a given register. - (macro, s_cprestore): Use macro_build_ldst_constoffset to implement - .cprestore pseudo-op. - -2002-09-18 Chris Demetriou - - * config/tc-mips.c (md_apply_fix3): Just return for BFD_RELOC_8. - -2002-09-18 Thiemo Seufer - - * config/tc-mips.c (s_change_section): Fix parsing. Code cleanup. - -2002-09-17 Stan Cox - - * tc-mips.c (load_address): Use BFD_RELOC_MIPS_GOT_DISP for newabi. - (macro): Likewise for la. Likewise for ld. - (mips_after_parse_args): Make -xgot optional, not the default. - (md_apply_fix3): Allow composite relocation to set up gp. - (tc_gen_reloc): Allow relaxing for newabi. - Relax R_MIPS_CALL16 to R_MIPS_GOT_PAGE/R_MIPS_GOT_OFST if local. - Relax R_MIPS_GOT16/R_MIPS_LO16 to R_MIPS_GOT_DISP if local. - -2002-09-17 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Note that an implemented - BFD_RELOC_ARM_IMMEDIATE has been done. - (tc_gen_reloc): Do not issue reloc number of unimplemented - BFD_RELOC_ARM_IMMEDIATE and BFD_RELOC_ARM_OFFSET_IMM relocs - - their name is already in the error message - plus remove them - from the default case. - - * config/tc-arm.c (do_ldmstm): Warn about unpredictable - behavior of instructions. - -2002-09-17 Svein E. Seldal - - * config/tc-tic4x.c: Add function declarations and ATTRIBUTE_UNUSED. - Convert functions to K&R format. - -2002-09-17 Thiemo Seufer - - * config/tc-mips.c (pdr_seg): Define only for ELF. - (s_change_section): Remove unused variable. Don't use for nonELF. - -2002-09-17 Thiemo Seufer - - * config/obj-elf.c (obj_elf_change_section): Move prototype to - obj-elf.h - * config/obj-elf.h (obj_elf_change_section): Likewise. - -2002-09-16 Elias Athanasopoulos - - * dwarf2dbg.c (out_debug_abbrev): Add support for the DW_AT_name field. - (out_debug_info): Likewise. - -2002-09-16 Bruno Haible - - * config/tc-i386.h (ELF_TARGET_FORMAT): New macro. - (TARGET_FORMAT): Use ELF_TARGET_FORMAT instead of "elf32-i386". - * config/tc-i386.c (i386_target_format): Likewise. - * config/tc-alpha.h (ELF_TARGET_FORMAT): New macro. - (TARGET_FORMAT): Use ELF_TARGET_FORMAT instead of "elf64-alpha". - -2002-09-13 Nick Clifton - - * config/tc-ppc.c (md_assemble): Do not count FAKE operands - when deciding if any operands have been skipped. - -2002-09-11 Nick Clifton - - * NEWS: New TI port supports both C4x and C3x series of DSPs. - - * po/tr.po: Updated Turkish translation. - -2002-09-11 Jakub Jelinek - - * config/tc-i386.c (md_apply_fix3): Allow addend for - BFD_RELOC_386_TLS_LDO_32, BFD_RELOC_386_TLS_LE and - BFD_RELOC_386_TLS_LE_32. - -2002-09-05 Jeff Law - - * config/tc-hppa.c (md_apply_fix3): Don't set fx_done for - marker relocations such as ENTRY/EXIT. - * config/tc-hppa.h (MD_APPLY_SYM_VALUE): Definition applies - to both OBJ_ELF and OBJ_SOM. - -2002-09-05 Alan Modra - - * doc/internals.texi (md_apply_fix3): Expand. - (TC_VALIDATE_FIX, TC_FORCE_RELOCATION, TC_FORCE_RELOCATION_ABS, - TC_FORCE_RELOCATION_LOCAL, TC_FORCE_RELOCATION_SUB_SAME, - TC_FORCE_RELOCATION_SUB_ABS, TC_FORCE_RELOCATION_SUB_LOCAL, - TC_VALIDATE_FIX_SUB, MD_APPLY_SYM_VALUE, S_FORCE_RELOC, - EXTERN_FORCE_RELOC): Document. - (TC_HANDLES_FX_DONE, obj_fix_adjustable): Remove. - * as.h: Don't include struc-symbol.h for arc. - (IS_ELF): Define. - * cgen.c (gas_cgen_md_apply_fix3): Remove *valP fudges and code to - subtract absolute symbol. - * obj.h (struct format_ops): Add frob_file_before_fix. - * subsegs.c (section_symbol): Set BSF_SECTION_SYM flag. - * symbols.c (S_FORCE_RELOC): New function. - * symbols.h (S_FORCE_RELOC): Declare. - * write.c (TC_FORCE_RELOCATION): Change default. - (TC_FORCE_RELOCATION_ABS): Define. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (TC_FORCE_RELOCATION_SECTION): Don't define. - (TC_FORCE_RELOCATION_SUB_SAME): Define this instead. - (TC_FORCE_RELOCATION_SUB_ABS): Define. - (TC_FORCE_RELOCATION_SUB_LOCAL): Define. - (TC_VALIDATE_FIX_SUB): Define. - (TC_FIX_ADJUSTABLE): Don't define. - (MD_APPLY_SYM_VALUE): Define this instead. - (abs_section_sym): New variable. - (adjust_reloc_syms): Use S_FORCE_RELOC. Remove obj_fix_adjustable - call. Don't symbol_mark_used_in_reloc here. Simplify link_once tests. - Don't put the absolute section sym on fixups here. - (fix_segment): New function. - (write_relocs): Don't call fixup_segment from here. - (write_object_file): Instead call tc_frob_file_before_fix, - obj_frob_file_before_fix, and fix_segment prior to symbol table code. - Don't output the absolute section symbol. - (fixup_segment): Rewrite. - * write.h (abs_section_sym): Declare. - * config/obj-aout.c (obj_aout_frob_file_before_fix): Rename from - obj_aout_frob_file. - (aout_format_ops): Adjust to suit. - * config/obj-aout.h (obj_frob_file): Don't define. - (obj_frob_file_before_fix): Define. - (obj_aout_frob_file_before_fix): Rename from obj_aout_frob_file. - (S_FORCE_RELOC): Define. - * config/obj-bout.h (S_FORCE_RELOC): Define. - * config/obj-coff.c (coff_format_ops): Init new field. - * config/obj-coff.h: Formatting fixes. - (obj_sec_sym_ok_for_reloc): Define. - (S_FORCE_RELOC): Define. - * config/obj-ecoff.c (ecoff_frob_file_before_fix): Split out .. - (ecoff_frob_file): .. from here. - (ecoff_format_ops): Add new function. - * config/obj-ecoff.h (ecoff_frob_file_before_fix): Declare. - (obj_frob_file_before_fix): Define. - * config/obj-elf.c (elf_format_ops): Init new field. - * config/obj-elf.h (obj_sec_sym_ok_for_reloc): Expand comment. - * config/obj-ieee.h: Formatting fixes. - (S_FORCE_RELOC): Define. - * config/obj-multi.h (obj_frob_file_before_fix): Define. - * config/obj-vms.h (S_FORCE_RELOC): Define. - * config/tc-alpha.c (md_apply_fix3): Correct GPDISP comment. - (alpha_force_relocation): Use S_FORCE_RELOC, and don't return 0 - for BFD_RELOC_32 and BFD_RELOC_64. - (alpha_fix_adjustable): Remove extern and weak tests. - (alpha_before_fix): Rename from alpha_adjust_symtab. - (alpha_adjust_relocs): Rename from alpha_adjust_symtab_relocs. - * config/tc-alpha.h (struct fix, struct alpha_reloc_tag): Declare. - (TC_VALIDATE_FIX): Tweak param name. - (TC_FORCE_RELOCATION, tc_fix_adjustable): Likewise. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (MD_APPLY_SYM_VALUE): Define. - (tc_adjust_symtab): Don't define. - (alpha_adjust_symtab): Don't declare. - (tc_frob_file_before_fix): Define. - (alpha_before_fix): Declare. - (TC_INIT_FIX_DATA): Tweak param names. - * config/tc-arc.c: Include "struc-symbol.h". - (md_pcrel_from): Remove undefined sym fudge. - (md_apply_fix3): Remove *valP fudges and code to subtract abs sym. - Don't set fx_addnumber. - (tc_gen_reloc): Remove spurious fx_addnumber comment. - * config/tc-arc.h (MD_APPLY_SYM_VALUE): Define. - (EXTERN_FORCE_RELOC): Define. - * config/tc-arm.c (md_apply_fix3 ): Remove. - (tc_gen_reloc): Fudge ARM_GOTPC addend. - (arm_validate_fix): Return void. - (arm_fix_adjustable ): Remove extern and weak tests. - Add plt and got reloc tests. - (arm_force_relocation): Call S_FORCE_RELOC. - * config/tc-arm.h (struct fix): Forward declare. - (TC_VALIDATE_FIX): No longer set add_symbolP. - (arm_validate_fix): Adjust declaration. - (TC_FORCE_RELOCATION ): Call i386_force_relocation. - (i386_force_relocation): Declare. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (TC_FORCE_RELOCATION ): Call S_FORCE_RELOC. - * config/tc-i860.c (md_apply_fix3): Don't cast valP pointer type. - * config/tc-i860.h (MD_APPLY_SYM_VALUE): Define. - (EXTERN_FORCE_RELOC): Define. - * config/tc-i960.c (reloc_callj): Remove declaration. Return false. - (md_apply_fix3): Don't cast valP pointer type. Move code here from - old fixup_segment. No need to test fx_pcrel before setting fx_done. - (i960_validate_fix): Remove add_symbolPP arg and add_symbolP macro. - Use fx_addsy instead of add_symbolP, as_bad_where instead of as_bad. - Remove #if 0 code. Invert return boolean. - * config/tc-i960.h (TC_COUNT_RELOC): Tweak param name. - (TC_COFF_FIX2RTYPE, TC_ADJUST_RELOC_COUNT, TC_VALIDATE_FIX): Likewise. - (tc_headers_hook, tc_coff_fix2rtype): Remove declaration. - (tc_coff_sizemachdep): Prototype. - (i960_handle_align): Likewise. - (i960_validate_fix): Adjust declaration. - (reloc_callj): Likewise. - (EXTERN_FORCE_RELOC): Define. - (TC_FORCE_RELOCATION_SUB_SAME): Define. - (TC_FORCE_RELOCATION_ABS): Define. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (TC_FIX_ADJUSTABLE): Don't define. - (MD_APPLY_SYM_VALUE): Define. - * config/tc-ia64.c (ia64_force_relocation): Call S_FORCE_RELOC. - * config/tc-ia64.h (MD_APPLY_SYM_VALUE): Define. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - * config/tc-ip2k.c (ip2k_force_relocation): Call S_FORCE_RELOC. - * config/tc-ip2k.h (MD_APPLY_FIX3): Don't define. - (MD_APPLY_SYM_VALUE): Define. - (EXTERN_FORCE_RELOC): Define. - (TC_FORCE_RELOCATION): Tweak param name. - * config/tc-m32r.c (m32r_force_relocation): Call S_FORCE_RELOC. - (m32r_fix_adjustable): Don't test extern, weak. - * config/tc-m32r.h (MD_PCREL_FROM_SECTION): Tweak param name. - (MD_APPLY_SYM_VALUE): Define. - (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define. - (tc_frob_file): Don't define. - (tc_frob_file_before_fix): Define. - (EXTERN_FORCE_RELOC): Define. - * config/tc-m68hc11.c (tc_gen_reloc): Set addend to zero. Adjust - BFD_RELOC_VTABLE_ENTRY address. - (tc_m68hc11_force_relocation): Call S_FORCE_RELOC. - (tc_m68hc11_fix_adjustable): Don't test relaxable_symbol. - (md_apply_fix3): Remove *valP fudges and code to subtract abs sym. - Remove duplicated fx_done code. - * config/tc-m68hc11.h (MD_APPLY_SYM_VALUE): Define. - (EXTERN_FORCE_RELOC): Define. - * config/tc-m68k.c (tc_m68k_fix_adjustable): Don't test - relaxable_symbol. - * config/tc-m68k.h (TC_COFF_FIX2RTYPE): Tweak param name. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FIX_ADJUSTABLE): Don't define. - (EXTERN_FORCE_RELOC): Define. - (MD_APPLY_SYM_VALUE): Define. - (TC_FORCE_RELOCATION): Call S_FORCE_RELOC. - * config/tc-mcore.c (md_apply_fix3): Don't cast valP pointer type. - Remove fx_addsy tests. - (mcore_force_relocation): Call S_FORCE_RELOC. - (mcore_fix_adjustable): Don't test fx_addsy. - * config/tc-mcore.h (MD_PCREL_FROM_SECTION): Tweak param name. - (EXTERN_FORCE_RELOC): Define. - (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define. - (MD_APPLY_SYM_VALUE): Define. - * config/tc-mips.c (enum mips_pic_level): Move to tc-mips.h. - (mips_pic): No longer static. - (mips_force_relocation): Call S_FORCE_RELOC. - (mips_fix_adjustable): Remove extern, weak tests. - * config/tc-mips.h (enum mips_pic_level): Declare. - (mips_pic): Declare. - (tc_frob_file): Don't define. - (tc_frob_file_before_fix): Define this instead. - (EXTERN_FORCE_RELOC): Define. - * config/tc-mmix.c (md_apply_fix3): Replace real_reg_section tests - with reg_section tests. Set fx_done instead of calling - symbol_clear_used_in_reloc on bad relocs. - (tc_gen_reloc): Zero fx_addsy on bad relocs. - (mmix_force_relocation): Remove weak sym test. Call S_FORCE_RELOC. - (mmix_adjust_symtab): Simplify list handling. Abort on any - nonsense. - * config/tc-mmix.h (tc_fix_adjustable): Remove weak tests. Check - BFD_RELOC_MMIX_LOCAL. - (tc_frob_symbol): Keep user defined syms in reg_section. Don't punt. - (EXTERN_FORCE_RELOC): Define. - (MD_PCREL_FROM_SECTION): Tweak param name. - (tc_frob_file): Don't define. - (tc_frob_file_before_fix): Define this instead. - * config/tc-mn10300.c (mn10300_force_relocation): Call S_FORCE_RELOC. - Remove SEC_CODE checks. - (mn10300_fix_adjustable): Remove extern and weak tests. - * config/tc-mn10300.h (EXTERN_FORCE_RELOC): Define. - (TC_FORCE_RELOCATION): Tweak param name. - (obj_fix_adjustable): Don't define. - (TC_FORCE_RELOCATION_SUB_SAME): Define to handle SEC_CODE. - * config/tc-ns32k.h (TC_FIX_DATA_PRINT): Tweak param name. - * config/tc-openrisc.c (openrisc_force_relocation): Call S_FORCE_RELOC. - (openrisc_fix_adjustable): Don't test fx_addsy. - * config/tc-openrisc.h (MD_APPLY_SYM_VALUE): Define. - (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define this instead. - (MD_PCREL_FROM_SECTION): Remove duplicate. Tweak param name. - * config/tc-or32.c (md_apply_fix3): Don't cast valP pointer type. - (tc_gen_reloc): Don't fiddle with BFD_RELOC_VTABLE_INHERIT relocs. - Adjust the address for BFD_RELOC_VTABLE_ENTRY, not the addend. - * config/tc-or32.h (EXTERN_FORCE_RELOC): Define. - (MD_APPLY_SYM_VALUE): Define. - * config/tc-pj.c (md_apply_fix3): Don't cast valP pointer type. - Don't subtract symbol value. - * config/tc-pj.h (md_pcrel_from): Tweak param name. - (EXTERN_FORCE_RELOC): Define. - (TC_FORCE_RELOCATION): Call S_FORCE_RELOC. - (MD_APPLY_SYM_VALUE): Define. - (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define this instead. - * config/tc-ppc.c (ppc_frob_symbol ): Ignore absolute - section sym. - (ppc_force_relocation ): Call S_FORCE_RELOC. - (ppc_force_relocation ): New. - (ppc_fix_adjustable ): Remove extern and weak tests. - (md_apply_fix3): Don't subtract symbol values for ELF. Update - comments. Don't subtract fx_subsy as that is already done. - * config/tc-ppc.h (tc_fix_adjustable): Tweak param name. - (MD_PCREL_FROM_SECTION): Likewise. - (TC_FORCE_RELOCATION): Define for both ELF and XCOFF as calling - ppc_force_relocation. - (TC_FORCE_RELOCATION_SECTION): Delete. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (MD_APPLY_SYM_VALUE): Define. - * config/tc-s390.c: #include "dwarf2dbg.h". - (s390_insn): Remove excess parens. - (tc_s390_fix_adjustable): Remove extern, weak, SEC_MERGE tests. - (tc_s390_force_relocation): Call S_FORCE_RELOC. - (md_apply_fix3): Add ATTRIBUTE_UNUSED on "seg". Abort when fx_subsy - non-NULL. Don't subtract off fx_addsy value. - * config/tc-s390.h (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION, MD_PCREL_FROM_SECTION): Tweak param name. - (TC_FIX_ADJUSTABLE): Don't define. - (MD_APPLY_SYM_VALUE): Define. - * config/tc-sh.c (SWITCH_TABLE_CONS): Move to tc-sh.h. - (SWITCH_TABLE): Likewise. - (sh_force_relocation): Call S_FORCE_RELOC. - (sh_fix_adjustable): Remove "return 1" cases handled by the default. - Replace TC_RELOC_RTSYM_LOC_FIXUP with reloc type tests. - (md_apply_fix3 ): Simplify, - fx_addnumber is zero on entry. Save val in fx_addnumber. - (tc_gen_reloc): Don't subtract fx_subsy. - * config/tc-sh.h (struct fix): Move. - (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define this instead. - (TC_FIX_ADJUSTABLE): Don't define. - (MD_APPLY_SYM_VALUE): Define. - (SWITCH_TABLE_CONS): Define. - (SWITCH_TABLE): Define. - (TC_FORCE_RELOCATION_SUB_SAME): Define. - (TC_VALIDATE_FIX_SUB): Define. - (MD_PCREL_FROM_SECTION): Tweak param name. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (TC_FORCE_RELOCATION_SUB_ABS): Define. - * config/tc-sh64.h (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (TC_FORCE_RELOCATION_SUB_SAME): Define. - (TC_VALIDATE_FIX_SUB): Define. - (MD_PCREL_FROM_SECTION): Tweak param name. - * config/tc-sparc.c (md_apply_fix3): Don't subtract off symbol value. - (tc_gen_reloc): Use S_FORCE_RELOC. - (elf32_sparc_force_relocation): Call S_FORCE_RELOC. - * config/tc-sparc.h (TC_FORCE_RELOCATION ): Remove. - (TC_FORCE_RELOCATION_ABS): Define this instead. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FORCE_RELOCATION_LOCAL): Define this instead. - (tc_fix_adjustable): Remove extern and weak tests. Use S_FORCE_RELOC. - (MD_APPLY_SYM_VALUE): Define. - (TC_FIX_DATA_PRINT): Tweak param name. - * config/tc-tic30.c (USE_STDOUT): Don't define. - (md_parse_option): Remove stupid debug code. - (tc_gen_reloc): Don't use fx_addnumber. - * config/tc-v850.c (v850_fix_adjustable): Remove extern and weak tests. - (v850_force_relocation): Remove weak test. Call S_FORCE_RELOC. - * config/tc-v850.h (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define this instead. - (TC_FIX_ADJUSTABLE): Don't define. - (MD_APPLY_SYM_VALUE): Define this instead. - (TC_FORCE_RELOCATION, MD_PCREL_FROM_SECTION): Tweak param name. - * config/tc-vax.h (TC_RELOC_RTSYM_LOC_FIXUP): Don't define. - (TC_FIX_ADJUSTABLE): Don't define. - (MD_APPLY_SYM_VALUE): Define this instead. - (tc_fix_adjustable): Remove extern and weak tests. - * config/tc-w65.h (struct fix): Forward declare. - * config/tc-xstormy16.c (xstormy16_force_relocation): Call - S_FORCE_RELOC. - (xstormy16_fix_adjustable): Remove extern and weak tests. Don't - call xstormy16_force_relocation; Instead test for FPTR16 reloc. - (xstormy16_md_apply_fix3): Remove *valP fudges and code to subtract - absolute symbol. - * config/tc-xstormy16.h (MD_APPLY_FIX3): Don't define. - (MD_APPLY_SYM_VALUE): Define. - (obj_fix_adjustable): Don't define. - (tc_fix_adjustable): Define this instead. - (MD_PCREL_FROM_SECTION): Remove duplicate. Tweak param name. - -2002-09-04 Alan Modra - - * config/tc-ppc.c (ppc_frob_symbol): Formatting, warning fix. - (ppc_fix_adjustable ): Cleanup. - - * config/tc-ppc.c (PPC_HIGHER, PPC_HIGHEST): Fix warning. - (md_parse_option): No -a64 without BFD64. - (ppc_set_cpu): Select appropriate cpu when ppc_obj64. - (ppc_arch): Use bfd_mach_rs6k for bfd_arch_rs6000. - -2002-09-04 Nick Clifton - - * config/tc-ppc.c (md_begin): Do not insert non-BookE32 - instructions into the hash table if the target cpu is the BookE32. - -2002-08-31 Hans-Peter Nilsson - - * read.c (do_align): Use ATTRIBUTE_UNUSED_LABEL for label, not - ATTRIBUTE_UNUSED. - -2000-08-28 Catherine Moore - - * tc-v850.c (v850_relax): Declare. - (v850_longcode): New routine. - (v850_handle_align): New routine. - (md_pseudo_table): Add longcall and longjump. - (md_parse_option): Check for relax option. - (tc_gen_reloc): Handle BFD_RELOC_V850_LONGCALL, - BFD_RELOC_V850_LONGJUMP, and BFD_RELOC_V850_ALIGN. - (md_apply_fix3): Likewise. - (v850_force_relocation): Likewise. - (v850_comm): Change the current section. - (md_assemble): Ensure that the correct value is put in the - fixup. - (v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss, - v850_zbss, v850_rosdata, v850_rozdata): Fix section book keeping. - Remove redundant v850ea support. - * tc-v850.h (HANDLE_ALIGN): Define. - (v850_handle_align): Declare. - * doc/c-v850.c: Document -mrelax, .longcall and .longjump. - -2002-08-28 Svein E. Seldal - - * configure.in: Add tic4x-coff* and c4x-coff*-coff-coff targets. - * configure: Regenerate. - * NEWS: Mention new port. - -2002-08-28 Michael Hayes - - * config/obj-coff.c: Add sdef definition. - * config/obj-coff.h: Add tic4x include file and set - target format. - * config/tc-tic4x.c: New file. - * config/tc-tic4x.h: New file. - -2002-08-28 Alan Modra - - * write.c (BFD_FAST_SECTION_FILL): Remove unused macro. - (TC_ADJUST_RELOC_COUNT): Tweak param name. - (TC_FORCE_RELOCATION, TC_FORCE_RELOCATION_SECTION): Likewise. - (TC_FIX_ADJUSTABLE, MD_PCREL_FROM_SECTION): Likewise. - (RELOC_ENUM): Define. - (fix_new_internal): Use RELOC_ENUM. - (fix_new, fix_new_exp): Likewise. - (adjust_reloc_syms): Comment. Remove unnecessary tests on sym != NULL. - Replace gotos with continue. - (write_relocs): Formatting. Avoid symbol loops in - RELOC_EXPANSION_POSSIBLE case too. Report bfd_reloc_outofrange - errors, and error number in other cases. - (fixup_segment): Remove param names from prototype. Rename - "this_segment_type" to "this_segment". Update linkrelax comment. - Remove "size, "place" and "where" local vars. Formatting. Update - "no symbol" comment. Remove #if 0 and #if 1. - - * app.c (do_scrub_chars): Don't test IGNORE_NONSTANDARD_ESCAPES. Tidy. - -2002-08-27 Alan Modra - - * dwarf2dbg.c: Always include dwarf2dbg.h. - (dwarf2_directive_file): Adjust dummy version args. - * ecoff.c (ecoff_directive_weakext): Add ATTRIBUTE_UNUSED. - * expr.c (clean_up_expression ): Allow subtraction - when symbol values differ. - * read.c (do_align): Add ATTRIBUTE_UNUSED to label. - (pseudo_set ): Remove unnecessary segment test. - * config/obj-bout.c (obj_pseudo_table): Warning fix. - -2002-08-26 Alan Modra - - * config/tc-w65.c (md_section_align): Fix typo. - (md_parse_option): Return 0, not 1. - -2002-08-22 Nick Clifton - - * doc/as.texinfo (Section): Note that if '@' is a comment - character then another symbol is used to prefix the section's - type. - -2002-08-22 Christian Groessler - - * config/tc-z8k.c (get_operands): Adjust ptr variable also in - "case 0" case. - -2002-08-12 Graeme Peterson - - * configure.in: Add support for sh-**-nto* target. - * configure: Regenerate. - -2002-08-21 Nitin Gupta - - * config/tc-h8300.h (TC_LINKRELAX_FIXUP): Define. - -2002-08-21 Elena Zannoni - - * config/tc-ppc.c (ppc_cleanup): Do something only if format - is ELF. - (ppc_apuinfo_section_add): Define only if format is ELF. - (md_assemble): Emit APUinfo section only if format is ELF. - Fix formatting. - -2002-08-21 Alan Modra - - * config/tc-arc.c (md_pseudo_table ): Cast. - * config/tc-frv.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-ip2k.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-mmix.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-v850.c: Likewise. - -2002-08-20 Richard Sandiford - - * config/tc-mips.c (macro2): Implement rotates by zero using shifts - by zero. - -2002-08-19 Elena Zannoni - - From matthew green - - * config/tc-ppc.c (PPC_OPCODE_CLASSIC): Enable this everywhere - PPC_OPCODE_PPC is, except for BookE architectures. - (md_parse_option): Add support for -mspe. - (md_show_usage): Add -mspe. - (md_parse_option): Add support for -me500 and - -me500x2 to generate code for Motorola e500 core complex. - (md_show_usage): Add -me500 and -me500x2. - - (PPC_APUINFO_ISEL, PPC_APUINFO_PMR, PPC_APUINFO_RFMCI, - PPC_APUINFO_CACHELCK, PPC_APUINFO_SPE, PPC_APUINFO_EFS, - PPC_APUINFO_BRLOCK): New macros. - - (ppc_cleanup): New function. - (ppc_apuinfo_section_add): New function. - (APUID): New macro. - (md_assemble): Collect info and write the APUinfo section. - - * config/tc-ppc.h (md_cleanup): Define. - (ppc_cleanup): Export. - (ELF_TC_SPECIAL_SECTIONS): Add .PPC.EMB.apuinfo section. - -2002-08-17 Stan Cox - - * config/obj-elf.c (obj_elf_change_section): Make non-static. - config/tc-mips.c (s_change_section): New function to support - IRIX .section pseudo-op. - -2002-08-16 Nick Clifton - - * config/tc-v850.c (md_assemble): Fix assembling of "callt 0x3f". - -2002-08-15 Alexandre Oliva - - * config/tc-mips.c (macro_build_jalr): Make sure we generate - the fix-up against on the right frag. - (s_cpsetup): Likewise. Parse third argument as expression, to - handle global symbols and forward/backward labels correctly. - -2002-08-14 Nick Clifton - - * read.c (stringer): Catch attempts to create strings in the abs - section. - - * config/tc-alpha.c: Fix compiling for COFF targets. - Some minor formatting tidyups. - -2002-08-13 Stephane Carrez - - * config/tc-m68hc11.h (MD_PCREL_FROM_SECTION): Remove. - (TC_HANDLES_FX_DONE): Define to let md_apply_fix3 set fx_done flag - according to the reloc. - (tc_fix_adjustable, tc_m68hc11_fix_adjustable): Define. - (TC_FORCE_RELOCATION): Define. - (tc_m68hc11_force_relocation): Declare. - - * config/tc-m68hc11.c (md_pseudo_table): Add relax command. - (s_m68hc11_relax): New function for relax group. - (build_insn, build_jump_insn): Emit a M68HC11_RL_JUMP reloc at - beginning of jump instruction. - (md_pcrel_from): Rename from md_pcrel_from_section and fix - address computation. - (tc-gen_reloc): Update. - (md_estimate_size_before_relax): Create the BFD_RELOC_16_PCREL as - PC-relative fixup. - (tc_m68hc11_force_relocation): New function, handle new relocs. - (tc_m68hc11_fix_adjustable): New to make sure there are enough - reloc for the linker relax pass. - (md_apply_fix3): Handle M68HC11_RL_JUMP, M68HC11_RL_GROUP - and VTABLE relocs. - -2002-08-13 Stephane Carrez - - * config/tc-m68hc11.c (m68hc11_elf_final_processing): New function. - (md_pseudo_table): Add .mode, .far and .interrupt pseudo op. - (s_m68hc11_mode): New function for .mode pseudo op. - (s_m68hc11_mark_symbol): New function for .far and .interrupt - pseudo op. - * config/tc-m68hc11.h (elf_tc_final_processing): Define. - (m68hc11_elf_final_processing): Declare. - -2002-08-13 Stephane Carrez - - * config/tc-m68hc11.c (md_begin): Take into account additional - page operand for call instruction. - (print_opcode_format): Likewise. - (check_range): Likewise for page range checking. - (get_operand): Don't skip a possible comma in operands. - (fixup8): Generate BFD_RELOC_M68HC11_PAGE reloc. - (fixup16): Likwise with BFD_RELOC_M68HC11_LO16. - (fixup24): New to handle call reloc. - (build_insn): Handle missing page operand for call instruction. - (find): Likewise. - (md_apply_fix3): Take into account new relocs. - (get_operand): Fix the mode for indexed indirect addressing. - (build_indexed_byte): Fix post index byte for indexed indirect mode. - -2002-08-12 Richard Sandiford - - * config/tc-mips.c (mips_ip): Don't work out the value of - constant %hi()s here. - -2002-08-10 Alan Modra - - * config/tc-i386.c (tc_i386_fix_adjustable): Test OUTPUT_FLAVOR - for ELF, and don't bother checking ELF relocs when non-ELF. - (i386_immediate): Allow absolute_section expressions for aout. - (i386_displacement): Likewise. Also test bfd_is_com_section. - (md_estimate_size_before_relax): Test OUTPUT_FLAVOR for ELF. - (md_apply_fix3): Hack for bfd_install_relocation when fx_pcrel, - not when fx_addsy. Remove dead code. - -2002-08-09 Graeme Peterson - - * configure.in: Add support for ppc-*-nto* target. - * configure: Regenerate. - -2002-08-09 Alan Modra - - * config/tc-i386.h: Reorganize. - -2002-08-09 Maciej W. Rozycki - - * config/tc-mips.c (macro): Handle a register plus a 16-bit - immediate offset in "dla" and "la" expansions. - -2002-08-09 Alan Modra - - * configure.in: bfd_gas=yes for all i386 targets. Formatting. - Remove "bfd_gas=yes" from target table when covered later. - Consolidate some entries. - * configure: Regenerate - -2002-08-09 Jakub Jelinek - - * config/tc-i386.c (output_insn): Save frag_now and frag_now_fix () - at start of insn, pass it to output_disp and output_imm. - (output_disp): Added arguments. If _GLOBAL_OFFSET_TABLE_ is seen - in displacement for R_386_32 reloc, use R_386_GOTPC and compute - properly addend. - (output_imm): Added arguments. Compute properly addend for - R_386_GOTPC. - (md_apply_fix3): Remove R_386_GOTPC handling. - -2002-08-06 George France - - * config/tc-alpha.c (cpu_types): Enabled ev67, ev68, -m21264a - and m21264b processor names and cpu types. - * doc/c-alpha.texi: Documented new types. - -2002-08-06 Alan Modra - - * config/tc-ppc.c (md_apply_fix3): Adjust 16 bit XCOFF reloc offset. - -2002-08-01 Richard Sandiford - - * config/tc-mips.c (tc_gen_reloc): Extend GP-relative addend - handling to BFD_RELOC_MIPS16_GPREL. - -2002-08-01 Nick Clifton - - * config/tc-arm.c (add_to_lit_pool): Ensure that offset to literal - pool is computed using signed arithmetic so that proper sign - extension is performed if X_add_number is a 64-bit integer. - -2002-08-01 H.J. Lu - Daniel Jacobowitz - - * dwarf2dbg.c (dwarf2_finish): Don't emit unreferenced - .debug_line section unless it has line information. - -2002-07-31 Ian Dall - - * config/tc-ns32k.h (md_pcrel_adjust): Supply prototype. - * config/tc-ns32k.c (convert_iif, md_parse_option, md_show_usage): - Allow default displacement size to be an option "--disp-size-default". - (md_number_to_disp): Make error messages include value. Use %d to - print integers, not %s. - (fix_new_ns32k): Conditionally set fx_no_overflow so we don't - get duplicate messages sometimes. - (convert_iif): Grow frag to max possible instruction size. Avoid - creating unnecessary fixes. - (md_number_to_field) Add prototype. - (encode_operand, parse, convert_iif, md_fix_pcrel_adjust): Add - prototypes and make static. - (struct addr_mode): Make mode and scaled_mode explicitly signed. - (evaluate_expr): Use resultP argument instead of exprP global. - (get_addr_mode): Quiten compiler warnings. - (encode_operand): eliminate unused variables. Quiten compiler - warnings. Eliminate nul character in format strings. - (parse): argc is unsigned. - (reloc): Type cast index to quieten compiler. - (md_pcrel_adjust, md_apply_fix3): Remove unused variable. - (md_convert_frag): Note unused parameters. Remove unused - variables. - (md_create_long_jump, md_create_short_jump, - md_undefined_symbol_name, md_section_align, tc_gen_reloc): Note - unused parameters. - -2002-07-31 Nick Clifton - - * NEWS: Retroactively add entry for Lars Brinkhoff's contribution - of the PDP-11 and 2.11BSD a.out support. - -2002-07-31 Momchil Velikov - - * config/tc-v850.c (md_assemble): Fix range check for immediate - operand. - -2002-07-30 Chris Demetriou - - * config/tc-mips.c (mips_cpu_info_table): Clean up entries related - to Broadcom SB-1 core support. - -2002-07-31 Thiemo Seufer - - * config/tc-mips.c (mips_target_format): Fix formatting. - Add recognition of n32 ABI formats. - -2002-07-30 Maciej W. Rozycki - - * tc-mips.c (load_address): Don't clobber $at when loading a - 64-bit address in non-PIC code if noat is in effect. - (macro): Likewise. - -2002-07-30 Maciej W. Rozycki - - * config/tc-mips.c (macro): Use codes 6 and 7 in trap instructions - used in division/multiply macro expansions similarly to how they - are used in the variants with break instructions. - (macro2): Likewise. - -2002-07-30 Graeme Peterson - - * configure.in: Add support for arm-*-nto target. - * configure: Regenerate. - -2002-07-30 Nick Clifton - - * config/tc-arm.c (struct literal_pool): Add fields to allow - multiple literal pools to be maintained. - (find_literal_pool): New function. - (find_or_make_literal_pool): New function. - (add_to_literal_pool): Use find_or_make_literal_pool. - (arm_s_text, arm_s_data, arm_s_section): Remove - no longer - needed. - (s_ltorg): Use find_literal_pool. - (arm_cleanup): Dump all literal pools. - * doc/c-arm.texi: Document new behaviour of only dumping literal - pools upon request. - -2002-07-26 Alan Modra - - * config/tc-ppc.c (ppc_set_cpu): Use PPC_OPCODE_64 as the default - rather than PPC_OPCODE_32 for powerpc64*. - -2002-07-25 Nick Clifton - - * po/es.po: Updated Spanish translation. - * po/fr.po: Updated French translation. - -2002-07-25 Richard Sandiford - - * doc/c-mips.texi: Remove -mcpu. Document -mabi. - * configure.in (MIPS_CPU_STRING_DEFAULT): New configuration macro. - (USE_E_MIPS_ABI_O32, MIPS_DEFAULT_64BIT): New configuration macros. - * configure, config.in: Regenerate. - * config/tc-mips.c (file_mips_abi): Rename to mips_abi. - (mips_set_options): Remove "abi" field. - (mips_opts): Update accordingly. Replace all uses of mips_opts.abi - with mips_abi. - (mips_cpu): Remove. - (mips_arch_string, mips_arch_info): New vars. - (mips_tune_string, mips_tune_info): New vars. - (ABI_NEEDS_32BIT_REGS, ABI_NEEDS_64BIT_REGS): New macros. - (HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): Don't check the ABI. - (mips_isa_to_str, mips_cpu_to_str): Remove. - (mips_ip): If the selected architecture is a generic ISA rather - than a processor, only mention the ISA level in error messages. - (OPTION_MCPU): Remove. - (OPTION_FP64): New. - (md_longopts): Add -mfp64, remove -mcpu. - (mips_set_option_string): New fn. - (md_parse_option): Make -mipsN update file_mips_isa rather than - mips_opts.isa. Use mips_set_option_string to set -march or -mtune. - Don't let -mgp32 and -mfp32 change the ABI. - (show): Move to end of file. Constify string argument. - (md_show_usage): Move to the end of the file. Read available - architectures from mips_cpu_info_table. - (mips_set_architecture): New fn. - (mips_after_parse_args): Rework. Remove -mcpu handling. -mipsN - is an alias for -march=mipsN. Don't change the ABI based on other - flags. Infer the register size from the ABI as well as the - architecture. Complain about more conflicting arguments. - Unify logic with GCC. - (s_mipsset): Don't change the ABI. - (mips_elf_final_processing): Check USE_E_MIPS_ABI_O32. - (mips_cpu_info_table): Remove Generic-MIPS* entries, keeping just - "mipsN"-type entries. Remove entries that vary only in the - manufacturer's prefix, or that have "000" replaced by "k". - Remove TARGET_CPU entries. Make r2000 entry use CPU_R3000. - (mips_strict_matching_cpu_name_p, mips_matching_cpu_name_p): New fns. - (mips_parse_cpu): New fn. - (mips_cpu_info_from_name, mips_cpu_info_from_cpu): Remove. - (mips_cpu_info_from_isa): Minor formatting tweak. - -2002-07-24 Nick Clifton - - * po/sv.po: Updated Swedish translation. - * po/es.po: Updated Spanish translation. - -2002-07-23 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - * config.in: Regenerate. - * po/POTFILES.in: Regenerate. - -2002-07-23 Nick Clifton - - * po/fr.po: Updated French translation. - -2002-07-23 Nick Clifton - - * CONTRIBUTORS: Ken Raeburn is no longer the maintainer for - GAS. - -2002-07-19 Thiemo Seufer - - * config/tc-mips.c (mips_need_elf_addend_fixup): Use S_IS_EXTERNAL - instead of S_IS_EXTERN. - (md_estimate_size_before_relax): Likewise. - (mips_fix_adjustable): Likewise. - -2002-07-19 Thiemo Seufer - - * config/tc-mips.c (mips_pic_level): Remove IRIX4_PIC. - -2002-07-19 Miroslav Tichy - Nick Clifton - - * cond.c (s_ifdef): Treat a referenced but not yet defined - symbol as if it were undefined, in exactly the same way as - .equiv. - - * doc/as.texinfo: Document that .ifdef, .ifndef and .equiv - consider referenced bug not yet defined symbols to be - undefined. - -2002-07-18 Denis Chertykov - Frank Ch. Eigler - Alan Lehotsky - John Healy - Jeff Johnston - - * configure.in: Add ip2k configuraton. - * configure: Regenerate. - * Makefile.am: Add ip2k configuraton. - * Makefile.in: Regenerate. - * configure: Regenerate. - * Makefile.in: Regenerate. - * config/tc-ip2k.c: New file. - * config/tc-ip2k.h: New files. - * NEWS: Mention new support. - * doc/Makefile.am (CPU_DOCS): Add c-ip2k.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Set IP2K - * doc/as.texinfo: Add IP2K description. - * doc/c-ip2k.texi: New file. - -2002-07-19 Nick Clifton - - * NEWS: Reformat to match style of other NEWS files. - -2002-07-17 Jan Hubicka - - * tc-i386.c (i386_align_code): Implement x86_64 neutral code fillers. - -2002-07-16 Moritz Jodeit - - * config/tc-z8k.c (build_bytes): Correct order of memset args. - -2002-07-16 Nick Clifton - - * NEWS: Add 'Changes in 2.13'. - -2002-07-15 Matt Fredette - - * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define if TE_NetBSD. - -2002-07-12 Alan Modra - - * config/tc-i386.c (process_suffix): Merge CODE_64BIT JumpByte - case with non CODE_64BIT case. Don't warn on "qword ptr" if - not CODE_64BIT. - -2002-07-11 Alan Modra - - * config/tc-ppc.c (ppc_elf_frob_symbol): Delete. - (ppc_frob_file_before_adjust): New function. - * config/tc-ppc.h (tc_frob_symbol): Don't define. - (ppc_elf_frob_symbol): Don't declare. - (tc_frob_file_before_adjust): Define. - (ppc_frob_file_before_adjust): Declare. - - * config/tc-ppc.c (md_pseudo_table): Warning fix. - (ppc_cpu): Make it unsigned long to agree with struct powerpc_opcode - flags. - (ppc_size): Delete. - (ppc_xcoff64): Rename to ppc_obj64. - (md_parse_option ): Encode old ppc_size value in ppc_cpu. - (ppc_set_cpu): Set PPC_OPCODE_32 too. - (ppc_arch): Use ppc_obj64 instead of ppc_size to select bfd_mach_ppc64 - or bfd_mach_ppc. - (ppc_target_format): Use ppc_obj64 to select format. - (md_begin): Adjust for PPC_OPCODE_32/64 in ppc_cpu. - (ppc_insert_operand): Use ppc_obj64 instead of ppc_size. - (ppc_elf_suffix): Likewise. Don't depend on BFD_DEFAULT_TARGET_SIZE. - (tc_frob_symbol): Likewise. - (md_assemble): Use ppc_obj64 instead of ppc_size. Don't depend on - BFD_DEFAULT_TARGET_SIZE. - (ppc_tc): Likewise. - (ppc_is_toc_sym): Likewise. - (md_apply_fix3): Likewise. - * config/tc-ppc.h (TC_FORCE_RELOCATION): Don't depend on - BFD_DEFAULT_TARGET_SIZE. - (ELF_TC_SPECIAL_SECTIONS): Likewise. - (tc_frob_symbol): Likewise. - -2002-07-09 Thiemo Seufer - - * config/tc-mips.c (macro_build): Handle MIPS16 insns. - (mips_ip): Likewise. - -2002-07-09 Alan Modra - - * config/tc-i386.c (md_pseudo_table ): Warning fix. - (BFD_RELOC_8, BFD_RELOC_8_PCREL): Define for non-BFD. - (md_apply_fix3): Formatting. Remove redundant test. - (tc_gen_reloc): Remove redundant code. - (tc_i386_force_relocation): Delete. Movy body of function to.. - * config/tc-i386.h (TC_FORCE_RELOCATION): .. here. - -2002-07-09 Federico G. Schwindt - - * configure.in: Add hppa-*-openbsd* target, change - alpha*-*-openbsd* format to elf, and use elf for sparc-*-openbsd* - with sparc64 cpu. - * configure: Regenerate. - -2002-07-08 Maciej W. Rozycki - - * config/tc-mips.c (macro): Shift the 32-bit address range - accessible with a lone "lui" down by 32768. - -2002-07-08 Maciej W. Rozycki - - * config/tc-mips.c (load_address): Use non-trapping "daddu" - instead of "dadd" in address calculations. - (macro): Likewise. - -2002-07-08 Alan Modra - - * config/tc-i386.c (process_suffix): Remove intel mode movsx and - movzx fudges. - (md_assemble): Instead, zap the suffix here. - -2002-07-03 Nick Clifton - - * NEWS: Remove next release number until the release is actually - upon us. - -2002-07-03 Alan Modra - - * Makefile.am (check-DEJAGNU): Revert 2002-06-25 change. - Run "make dep-am". - * Makefile.in: Regenerate. - -2002-07-02 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_fix_adjustable): Prevent any adjustment - to symbols in merge sections, even non pc-relative ones. - -2002-06-29 Stephane Carrez - - * config/tc-m68hc11.h (m68hc11_listing_header): Fix warning. - -2002-06-29 Stephane Carrez - - * config/tc-m68hc11.h (ELF_TC_SPECIAL_SECTIONS): New sections - .softregs and .eeprom. - -2002-06-28 David O'Brien - - * NEWS: Note the next release is 2.13. - -2002-06-26 Nick Clifton - - * po/tr.po: New translation imported. - -2002-06-26 Elias Athanasopoulos - - * ecoff.c: (get_tag): Replace strcpy with xstrdup. - (ecoff_directive_def): Likewise. - (ecoff_directive_tag): Likewise. - * listing.c (file_info): Likewise. - * hash.c (what): Likewise. - -2002-06-25 H.J. Lu - - * Makefile.am (check-DEJAGNU): Set LC_ALL=C and export it. - * Makefile.in: Regenerated. - -2002-06-19 Dhananjay R. Deshpande - - * config/tc-sh.c (get_specific): Revert 2002-05-01 change. - (assemble_ppi): Generate warning if the same register is used - twice as destination in the same padd / pmuls instruction. - -2002-06-18 Dave Brolley - - From Catherine Moore, Michael Meissner, Richard Sandiford, Dave Brolley - * po/POTFILES.in: Add tc-frv.c, tc-frv.h. - * configure.in: Support frv-*-*. - * Makefile.am (CPU_TYPES): Add frv. - (TARGET_CPU_CFILES): Add tc-frv.c. - (TARGET_CPU_HFILES): Add tc-frv.h. - (DEPTC_frv_coff): New variable. - (DEPTC_frv_elf): New variable. - (DEPOBJ_frv_coff): New variable. - (DEPOBJ_frv_elf): New variable. - (DEP_frv_coff): New variable. - (DEP_frv_elf): New variable. - * tc-frv.c: New file. - * tc-frv.h: New file. - -2002-06-17 Catherine Moore - - * config/obj-elf.h (TARGET_SYMBOL_FIELDS): Conditionally define. - -2002-06-17 J"orn Rennecke - - * config/tc-sh.c (assemble_ppi): Initialize reg_n. - -2002-06-17 Tom Rix - - * config/tc-i370.h (tc_comment_chars): Define for i370-elf. - -2002-06-14 H.J. Lu - Daniel Jacobowitz - - * dwarf2dbg.h (dwarf2_directive_file): Return char *. - * dwarf2dbg.c (dwarf2_directive_file): Return filename. - * config/tc-mips.c (s_mips_file): Call s_app_file_string - and new_logical_line for the first .file directive. - * read.c (s_app_file_string): New function. - (s_app_file): Call it. - * read.h (s_app_file_string): Add declaration. - -2002-06-14 Daniel Jacobowitz - - * configure.in: Remove MIPS_STABS_ELF. - * configure: Regenerated. - * config.in: Regenerated. - * config/obj-elf.h (ECOFF_DEBUGGING): Define to mips_flag_mdebug - for MIPS targets. - * config/tc-mips.c (mips_pseudo_table): Remove #ifdef around - ".extern". - (pdr_seg): Declare unconditionally. - (md_begin): Always generate .pdr unless ECOFF_DEBUGGING or not ELF. - (s_mips_end): Likewise. Generate stabs function markers. - (s_mips_ent): Generate stabs function markers. - (s_mips_frame): Always generate .pdr unless ECOFF_DEBUGGING or not - ELF. - (s_mips_mask): Likewise. - (mips_flag_mdebug): New. - (md_longopts): Add "mdebug" and "no-mdebug". - (md_parse_options): Add OPTION_MDEBUG and OPTION_NO_MDEBUG. - (mips_after_parse_args): Set mips_flag_mdebug. - * doc/as.texinfo: Add "-mdebug" and "-no-mdebug" for MIPS. - -2002-06-13 Maciej W. Rozycki - - * config/tc-mips.c (md_apply_fix3): Don't subtract the symbol's - value twice for RELA relocations. - -2002-06-12 Ben Elliston - - * symbols.c (resolve_symbol_value): Initialise final_val. - - * subsegs.c (subsegs_print_statistics): Cast frchp to void *. - -2002-06-11 Tom Rix - - * config/tc-ppc.c (ppc_subseg_align): Delete. - (ppc_change_csect): Default csect align is 2. - * config/tc-ppc.h (SUB_SEGMENT_ALIGN): Delete - -2002-06-09 Marek Michalkiewicz - - * config/tc-avr.c (mcu_types): Update. - -2002-06-08 Matt Thomas - - * configure.in (vax-*-netbsdelf*, vax-*-netbsdaout*) - (vax-*-netbsd*): New targets. - * configure: Regenerate. - * config/aout_gnu.h (enum machine_type): Add M_VAX4K_NETBSD. - * config/tc-vax.c: Add support for ELF and PIC. - (flag_want_pic): New flag. - (float_cons): Fix prototype. - (md_apply_fix3): Adjust for BFD_ASSEMBLER. - (md_assemble): Introduce a new is_absolute local, and use it - rather than repeating the test. Make fatal errors actually - fatal by using as_fatal as appropriate. Adjust for BFD_ASSEMBLER. - Add support for ELF. Add support for PIC. - (md_convert_frag): Adjust for BFD_ASSEMBLER. - (tc_aout_fix_to_chars): Only include if OBJ_AOUT and not - BFD_ASSEMBLER. - (vax_reg_parse): Make the % register prefix mandatory for ELF, - optional for a.out, and not allowed for VMS. Adjust all callers. - (md_create_short_jump): Add ATTRIBUTE_UNUSED to unused arguments. - (md_create_long_jump): Likewise. - (md_undefined_symbol): Likewise. - (md_section_align): Likewise. - (md_shortopts): Allow -k and -K for ELF. - (md_parse_option): Set flag_want_pic if -k or -K. - (tc_headers_hook): New function if OBJ_AOUT and not BFD_ASSEMBLER. - (tc_gen_reloc): New function if BFD_ASSEMBLER. - * config/tc-vax.h (tc_headers_hook): Remove. - (TARGET_FORMAT): Set according to object format and target - environment. - (BFD_ARCH, TARGET_ARCH): Define. - (NO_RELOC): Adjust for BFD_ASSEMBLER. - (TC_RELOC_RTSYM_LOC_FIXUP, TC_FIX_ADJUSTABLE) - (tc_fix_adjustable): Define if BFD_ASSEMBLER. - * config/vax-inst.h (VAX_JSB, VAX_CALLS, VAX_CALLG): Define. - -2002-06-08 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * as.c: Replace CONST with const. - * write.c: Likewise. - * config/obj-coff.c: Likewise. - * config/tc-a29k.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-dlx.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-h8500.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-mcore.c: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-pdp11.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-s390.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-v850.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - -2002-06-08 Daniel Jacobowitz - - Based on patch from Matt Green: - * config/obj-elf.h (ECOFF_DEBUGGING): Make configurable. - * config/tc-mips.c (s_mips_file): Renamed from s_file. - (s_mips_loc): New function. - (mips_nonecoff_pseudo_table): Call them. - (append_insn): Call dwarf2_emit_insn. - -2002-06-08 Thiemo Seufer - - * config/tc-mips.c (mips_opts): Fix comment, all ASE fields are set - to -1. - (file_ase_mips16): New veriable. - (mips_eabi64): Remove. - (CPU_HAS_MIPS16): New define. - (CPU_HAS_MDMX): Fix data type. - (md_begin): Code cleanup. Use file_ase_mips16. - (mips_elf_final_processing): Handle mips16 header flag. - Handle EABI flag without intermediate variable. - -2002-06-08 Thiemo Seufer - - * doc/as.texinfo: Update MIPS documentation. - -2002-06-08 Thiemo Seufer - - * config/tc-mips.c: Add define for $zero register. - (md_begin): Add $zero as alias name for $0. - (insn_uses_reg): Use ZERO define. - (mips_ip): Add $zero as alias name for $0. - (mips16_ip): Likewise. - (s_cplocal): Demand empty rest of input line. - (tc_get_register): Likewise. Add support for $kt0, kt1 register - names. Use ZERO define. Fix input_line_pointer progress. - -2002-06-07 Alan Modra - - * symbols.c: Replace CONST by const throughout. - (symbol_find_exact): Split out from.. - (symbol_find_base): ..here. - * symbols.h: Replace CONST by const throughout. - (symbol_find_exact): Declare. - * config/obj-elf.c: #include "struc-symbol.h". - (elf_frob_file): If group name matches an exported symbol, use that - symbol for the signature and ".group" as the section name. - -2002-06-06 J"orn Rennecke - - * config/tc-sh.c (parse_at): @(symbol,pc) is A_DISP_PC again, - but warn about it. - -2002-06-06 Daniel Jacobowitz - - * tc-mips.c (mips_after_parse_args): Always set mips_opts.ase_mips3d - and mips_opts.ase_mdmx if they are uninitialized. - -2002-06-06 John David Anglin - - * gas/config/tc-hppa.c (pa_ip): Replace "L$0\001" with FAKE_LABEL_NAME. - (hppa_force_relocation): Check if a stub just before the start symbol - of the last call_info is reachable before forcing relocation. Fix - typo. - -2002-06-04 Maciej W. Rozycki - - * config/tc-mips.c (mips_after_parse_args): New function. - (md_begin): Move processing of defaults to mips_after_parse_args. - config/tc-mips.h (md_after_parse_args): Define. - -2002-06-04 Jason Thorpe - - * configure.in (sh5*): Set cpu_type to sh64 and endian to big. - (sh5le*, sh64le*): Set cpu_type to sh64 and endian to little. - (sh5*-*-netbsd*, sh64*-*-netbsd*): New targets. - * configure: Regenerate. - * config/tc-sh64.c (sh64_target_format): Add support for NetBSD - environment. - -2002-06-04 Jason Thorpe - - * config/tc-sh64.h (MD_PCREL_FROM_SECTION): Undef before redefining. - -2002-06-04 Alan Modra - - * config/obj-elf.c (obj_elf_change_section): Set and check elf - linkonce flag. Print all warnings. - (obj_elf_section): Parse ",comdat" for groups. - (elf_frob_file): Set SEC_LINK_ONCE on COMDAT groups. Check - consistency of comdat flag. - -2002-06-02 Richard Henderson - - * config/tc-alpha.c (alpha_adjust_symtab_relocs): Fix thinko - with LITERALs without sequence numbers. - -2002-06-01 Richard Henderson - - * config/tc-alpha.c: Move LITUSE constants to "elf/alpha.h". - Rename them LITUSE_ALPHA_*. - -2002-05-31 Shrinivas Atre - - * config/tc-h8300.c (get_operand): Allow stm.l and ldm.l insns to - accept parentheses enclosed register lists. - -2002-05-31 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/POTFILES.in: Regenerate. - -2002-05-31 Graeme Peterson - - * configure.in: Add i386-*-nto-qnx*. - * configure: Regenerate. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (mips_ip): Use unsigned long values for - warning output. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (s_cpsetup): Fix initialization of - mips_cpreturn_register and mips_cpreturn_offset. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (s_cpsetup): Fix comment. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (md_begin): Add $ra as alias name for $31. - (mips_ip): Likewise. - (mips16_ip): Likewise. - (tc_get_register): Likewise. - -2002-05-30 Chris G. Demetriou - Ed Satterthwaite - - * config/tc-mips.c (mips_set_options): New "ase_mdmx" member. - (mips_opts): Initialize "ase_mdmx" member. - (file_ase_mdmx): New variable. - (CPU_HAS_MDMX): New macro. - (md_begin): Initialize mips_opts.ase_mdmx and file_ase_mdmx - based on command line options and configuration defaults. - (macro_build): Note in comment that use of MDMX in macros is - not currently allowed. - (validate_mips_insn): Add support for the "O", "Q", "X", "Y", and - "Z" MDMX operand types. - (mips_ip): Accept MDMX instructions if mips_opts.ase_mdmx is set, - and add support for the "O", "Q", "X", "Y", and "Z" MDMX operand - types. - (OPTION_MDMX, OPTION_NO_MDMX, md_longopts, md_parse_option): - Add support for "-mdmx" and "-no-mdmx" options. - (OPTION_ELF_BASE): Move to accommodate new options. - (s_mipsset): Support ".set mdmx" and ".set nomdmx". - (mips_elf_final_processing): Set MDMX ASE ELF header flag if - file_ase_mdmx was set. - * doc/as.texinfo: Document -mdmx and -no-mdmx options. - * doc/c-mips.texi: Likewise, and document ".set mdmx" and ".set - nomdmx" directives. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (OPTION_NO_M7000_HILO_FIX): Rename to - OPTION_MNO_7000_HILO_FIX. Add alternate "mno-fix7000" - command line switch conforming to gcc conventions. - * doc/c-mips.texi: Document -mno-fix7000 instead of no-mfix-7000. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (macro_build_jalr): New Function. - (md_begin): NewABI uses big GOTs. - (macro_build): Recognize BFD_RELOC_MIPS_GOT_DISP, - BFD_RELOC_MIPS_GOT_PAGE, BFD_RELOC_MIPS_GOT_OFST as valid. - (load_address): Add some NewABI PIC support. - (macro): Likewise. - (md_apply_fix): Special handling for BFD_RELOC_MIPS_JALR. - (tc_gen_reloc): Don't encode NewABI vtables in REL relocations. - -2002-05-31 Thiemo Seufer - - * config/tc-mips.c (load_address): Use mips_gp_register instead - of hardcoded value. Remove dbl parameter, use HAVE_32BIT_ADDRESSES - instead. - (macro): Use mips_gp_register instead of hardcoded value. - -2002-05-30 Richard Henderson - - * expr.h (operatorT): Add O_md17..O_md32. - * config/tc-alpha.c (O_lituse_tlsgd, O_lituse_tlsldm, O_tlsgd, - O_tlsldm, O_gotdtprel, O_dtprelhi, O_dtprello, O_dtprel, O_gottprel, - O_tprelhi, O_tprello, O_tprel): New. - (USER_RELOC_P, alpha_reloc_op_tag, debug_exp): Include them. - (DUMMY_RELOC_LITUSE_TLSGD, DUMMY_RELOC_LITUSE_TLSLDM): New. - (LITUSE_TLSGD, LITUSE_TLSLDM): New. - (struct alpha_reloc_tag): Add master, saw_tlsgd, saw_tlsld, - saw_lu_tlsgd, saw_lu_tlsldm. Make multi_section_p a bit field. - (md_apply_fix3): Handle TLS relocations. - (alpha_force_relocation, alpha_fix_adjustable): Likewise. - (alpha_adjust_symtab_relocs): Sort LITERAL relocs after the - associated TLS reloc. Check lituse_tls relocs match up. - (emit_insn): Handle TLS relocations. - (ldX_op): Remove. - - * doc/c-alpha.texi: Add docs for tls relocations. - -2002-05-30 Thiemo Seufer - - * config/tc-mips.c (mips_gprel_offset): New variable. - (s_gpvalue): Use it. - -2002-05-30 Diego Novillo - - * gas/config/tc-d10v.c (check_resource_conflict): Only check - write-write conflicts. - (md_assemble): Reformat introductory comment. - (parallel_ok): Prevent packing only if the first - instruction cannot be packed. - -2002-05-30 Jason Eckhardt - Tom Rix - - * config/tc-d10v.c (build_insn): Check for immediates. - -2002-05-28 Thiemo Seufer - - * config/tc-mips.c: Replace GP in comments by $gp. - (mips_big_got): Initialize. - (mips_trap): Initialize. - (load_address): Use mips_gp_register instead of hardcoded value. - Remove dbl parameter, use HAVE_32BIT_ADDRESSES instead. - (macro): Use mips_gp_register instead of hardcoded value. - (macro2): Change load_address calls. - (md_pcrel_from): Comment formatting. - (s_cpload): Use mips_gp_register instead of hardcoded value. - (s_cprestore): Likewise. Comment formatting. - (s_gpword): Fix data type. - (s_cpadd): Use mips_gp_register instead of hardcoded value. - (nopic_need_relax): Replace GP in comments by $gp. - (mips_elf_final_processing): Better comment. - -2002-05-28 Kuang Hwa Lin - - * configure.in: Add DLX configuraton - * Makefile.am: Add DLX configuraton - * configure: Regenerate. - * Makefile.in: Regenerate. - * config/tc-dlx.c: New file. - * config/tc-dlx.h: New files. - * NEWS: Mention new support. - -2002-05-27 Nick Clifton - - * config/obj-coff.c (write_object_file): Add missing semicolon. - -2002-05-26 Thiemo Seufer - - * config/tc-mips.c (mips_emit_delays): Replace magic constant for RA - by the define. Remove superfluous check of mips_opts.mips16. - (append_insn): Likewise. Canonicalize variable increments. - (macro_build): Canonicalize variable increments. - (macro_build_lui): Likewise. - (load_register): Likewise. - (load_address): Move pointer initialization. - (macro): Move pointer to a more local scope. Canonicalize variable - increments. Better comments. Replace magic constant for RA by the - define. - (macro2): Replace magic constant for RA by the define. Canonicalize - variable increments. - (mips_ip): Canonicalize variable increments. - (mips16_ip): Replace magic constant for RA by the define. - (my_getSmallParser): Canonicalize variable increments/decrements. - (my_getPercentOp): Likewise. - (my_getSmallExpression): Likewise. - (s_align): Likewise. - (s_mipsset): Likewise. - (s_cpsetup): Likewise. - (s_insn): Remove superfluous check of mips_opts.mips16. - (s_mips_stab): Likewise. - (mips_handle_align): Canonicalize variable increments. - (s_mips_ent): Likewise. - (s_mips_end): Add comment. - -2002-05-26 Jason Thorpe - - * configure.in: Use ns32k-*-netbsd* instead of ns32k-pc532-netbsd*. - * configure: Regenerate. - -2002-05-25 Alan Modra - - * Makefile.am (OBJS): Depend on ansidecl.h and fopen-same.h. - * Makefile.in: Regenerate. - * dep-in.sed: Reorder to match OBJS in Makefile.am. - * configure.in (ALL_OBJ_DEPS): Add symcat.h when need_bfd. - * configure: Regenerate. - * as.h: Use #include "" instead of <> for local header files. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - * gasp.c: Likewise. - * listing.c: Likewise. - * config/tc-ia64.h: Likewise. - * config/tc-v850.h: Likewise. - -2002-05-24 TAMURA Kent - - * configure.in: Add a target for i386-netbsdpe. - * configure: Regenerate. - -2002-05-23 Jakub Jelinek - - * config/obj-elf.c (elf_common): Renamed from obj_elf_common. - (obj_elf_common): Call elf_common. - (obj_elf_tls_common): New function. - (elf_pseudo_tab): Support .tls_common. - (special_sections): Add .tdata and .tbss. - (obj_elf_change_section): Set SEC_THREAD_LOCAL for SHF_TLS - sections. - (obj_elf_parse_section_letters): Support T in section flags (SHF_TLS). - (obj_elf_parse_section_letters): Include T in error message. - * config/tc-ppc.c (ppc_section_letter): Likewise. - * config/tc-alpha.c (alpha_elf_section_letter): Likewise. - (tc_gen_reloc): Handle SEC_THREAD_LOCAL the same way as - SEC_MERGE. - * config/tc-sparc.c (md_apply_fix3): Likewise. - * config/tc-i386.c (tc_i386_fix_adjustable): Add TLS relocs. - Define them if not BFD_ASSEMBLER. - (lex_got): Support @TLSGD, @TLSLDM, @GOTTPOFF, @TPOFF, @DTPOFF - and @NTPOFF. - (md_apply_fix3): Add TLS relocs. - * config/tc-ia64.c (enum reloc_func): Add FUNC_DTP_MODULE, - FUNC_DTP_RELATIVE, FUNC_TP_RELATIVE, FUNC_LT_DTP_MODULE, - FUNC_LT_DTP_RELATIVE, FUNC_LT_TP_RELATIVE. - (pseudo_func): Support @dtpmod(), @dtprel() and @tprel(). - (ia64_elf_section_letter): Include T in error message. - (md_begin): Support TLS operators. - (md_operand): Likewise. - (ia64_gen_real_reloc_type): Support TLS relocs. - * write.c (adjust_reloc_syms): Don't change symbols in - SEC_THREAD_LOCAL sections to STT_SECTION + addend. - -2002-05-23 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): For the Thumb BLX reloc - round the relocation up rather than down. - -2002-05-23 Nick Clifton - - * config/obj-coff.c (obj_coff_section): Silently ignore an 'a' - flag. - * doc/as.texinfo: Document that the COFF version of .section - ignores the 'a' flag. - -2002-05-23 Alan Modra - - * config/tc-alpha.c (assemble_tokens): Protect use of - ALPHA_RELOC_TABLE with #ifdef RELOC_OP_P. - - * write.c (size_seg): Check adjustment to last frag. - (SUB_SEGMENT_ALIGN): If HANDLE_ALIGN defined, pad out last frag to - section alignment. - * config/obj-coff.c (SUB_SEGMENT_ALIGN): Likewise. - * config/obj-ieee.c (SUB_SEGMENT_ALIGN): Likewise. - (write_object_file): Invoke md_do_align if available, and use - frag_align_code on text sections. - * config/obj-vms.h (SUB_SEGMENT_ALIGN): Now two args. - * config/tc-m88k.h (SUB_SEGMENT_ALIGN): Likewise. - * config/tc-ppc.h (SUB_SEGMENT_ALIGN): Likewise. - * config/tc-sh.h (SUB_SEGMENT_ALIGN): Likewise. - * config/tc-i386.h (SUB_SEGMENT_ALIGN): Likewise. Define for - BFD_ASSEMBLER too. - -2002-05-22 H.J. Lu - - * dwarf2dbg.c (dwarf2_directive_loc): Call listing_source_file - for source file. - -2002-05-22 Nick Clifton - - * config/tc-arm.c (arm_s_section): Enable for COFF builds as well - as ELF builds. - -2002-05-22 H.J. Lu - - * dwarf2dbg.c (dwarf2_emit_insn): Emit only one line symbol - for one .loc for compiler. - -2002-05-22 Thiemo Seufer - - * config/tc-mips.c (macro): Relax warning, it's toot strict for - embedded-PIC. - -2002-05-22 Thiemo Seufer - - * config/tc-mips.c (macro2): Add 64 bit drol, dror macros. - Optimize the rotate by zero case. - -2002-05-21 Nick Clifton - - * configure.in: Remove accidental enabling of bfd_gas=yes for - sh-coff targets. - * configure: Regenerate. - -2002-05-18 Kazu Hirata - - * app.c: Fix formatting. - * as.c: Likewise. - * ehopt.c: Likewise. - * expr.c: Likewise. - * input-file.c: Likewise. - * listing.c: Likewise. - * macro.h: Likewise. - * stabs.c: Likewise. - * symbols.c: Likewise. - -2002-05-17 Alan Modra - - * config/obj-generic.c: Delete file. - * config/obj-generic.h: Likewise. - -2002-05-16 Marek Michalkiewicz - - * config/tc-avr.c (mcu_types): Update for new devices. - -2002-05-15 Thiemo Seufer - - * config/tc-mips.c (macro): Warn about wrong la/dla use. - -2002-05-15 Thiemo Seufer - - * config/tc_mips.c (s_cpsetup): Fix completely bogus code which had - worked sometimes by accident. Fix copy&paste comment. - -2002-05-15 Thiemo Seufer - - * config/tc-mips.c (md_begin): Fix .reginfo and .MIPS.option section - alignment for NewABI. Let n32 use .reginfo. Remove useless casts. - (mips_elf_final_processing): Let n32 use .reginfo. - -2002-05-15 Thiemo Seufer - - * config/tc-mips.c (append_insn): Fix too small range of variable. - -2002-05-14 Nick Clifton - - * config/tc-arm.c (arm_cleanup): Remove redundant call to - listing_prev_line(). - -2002-05-13 Nick Clifton - - * config/tc-arm.c (md_assemble): Remove redundant call to - listing_prev(). - - * dwarf2dbg.c (dwarf2_emit_insn): Do not reset - loc_directive_seen. - - * stabs.c (s_stab_generic): Fix grammatical error in warning - message. - -2002-05-13 Alan Modra - - * write.c (subsegs_finish): Don't specially align last subseg. - -2002-05-11 Nick Clifton - - * stabs.c (s_stab_generic): Warn about a description field that is - too big. - - * config/obj-coff.c: Fix compile time warnings when compiling - without BFD_ASSEMBLER defined. - Fix formatting. - - * config/tc-sh.c (md_pcrel_from): Define for use with sh-hms - target. - (md_pcrel_from_section): Use md_pcrel_from(). - -2002-05-11 Bruno Haible - - * dwarf2dbg.c (dwarf2_emit_insn): Use the 'current' struct filled - by dwarf2_directive_loc, instead of calling dwarf2_where. - -2002-05-11 Kazu Hirata - - * config/obj-coff.h: Fix formatting. - * config/tc-mcore.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-openrisc.c: Likewise. - * config/tc-or32.c: Likewise. - * config/tc-pdp11.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-ppc.h: Likewise. - * config/tc-sh64.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-tic54x.c: Likewise. - * config/tc-xstormy16.c: Likewise. - * config/tc-xstormy16.h: Likewise. - -2002-05-09 Kazu Hirata - - * config/obj-coff.c: Fix formatting. - * config/obj-elf.c: Likewise. - * config/tc-alpha.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-d10v.c: Likewise. - * config/tc-d30v.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-hppa.c: Likewise. - -2002-05-09 Alan Modra - - * config/tc-i386.c (md_estimate_size_before_relax) Don't lose - reloc when no_cond_jump_promotion. - -2002-05-08 Jim Wilson - - * config/tc-i960.c (md_estimate_size_before_relax): Return size of - current variable part of frag. - -2002-05-08 Kazu Hirata - - * config/tc-mmix.c: Fix formatting. - * config/tc-mmix.h: Likewise. - -2002-05-08 Alan Modra - - * configure: Regenerate. - -2002-05-07 Kazu Hirata - - * config/tc-m68k.c: Fix formatting. - -2002-05-07 Federico G. Schwindt - - * Makefile.am: Honour DESTDIR. - * Makefile.in: Regenerate. - -2002-05-06 Kazu Hirata - - * config/tc-ia64.c: Fix formatting. - * config/tc-ia64.h: Likewise. - -2002-05-04 Kazu Hirata - - * config/tc-mips.c: Fix formatting. - * config/tc-s390.c: Likewise. - * config/tc-s390.h: Likewise. - -2002-05-03 Alexandre Oliva - - * config/tc-s390.c (md_gather_operands): Emit dwarf2 line-number - information for instructions. - -2002-05-02 Kazu Hirata - - * as.h: Fix formatting. - * cgen.c: Likewise. - * cgen.h: Likewise. - * dwarf2dbg.c: Likewise. - * frags.h: Likewise. - * gasp.c: Likewise. - * macro.c: Likewise. - * read.c: Likewise. - * stabs.c: Likewise. - * symbols.c: Likewise. - -2002-05-02 Alan Modra - - * app.c (mri_pseudo): Only declare for TC_M68K. - - * config/tc-ppc.c (mapping): Map sectoff to BFD_RELOC_16_BASEREL. - (ppc_elf_validate_fix): Replace BFD_RELOC_32_BASEREL with - BFD_RELOC_16_BASEREL. - (md_assemble): Likewise. - (md_apply_fix3): Likewise. - -2002-05-02 Nick Clifton - - * config/tc-arm.c (thumb_add_sub): Do not convert a subtract of - zero into an add of zero - it is not the same. - -2002-05-01 Arati Dikey - - * tc-sh.c (get_specific): Generate warning if the same - destination register is used in parallel instructions. - -2002-05-01 Andrew Macleod - - * config/tc-i386.c (extra_symbol_chars): Add '[' to the list. - -2002-05-01 Alan Modra - - * write.c (cvt_frag_to_fill): Set fr_offset to zero on .org - backwards to prevent cascading errors. - -2002-04-30 Mark Mitchell - - * configure.in: Add support for powerpc-*-windiss. - * configure: Regenerated. - -2002-04-28 Alan Modra - - * config/tc-s390.c (md_parse_option): Formatting. - - * config/tc-i386.c: Formatting fixes, add missing space in error - message. - -2002-04-24 Christian Groessler - - * config/tc-z8k.c (build_bytes): Add support for new cases: - CLASS_IGNORE and ARG_NIM4. - (md_assemble): Prevent destruction of input_line_pointer if - get_operands returns failure. - -2002-04-24 Chris G. Demetriou - - * config/tc-mips.c (macro_build): Do _not_ allow MIPS-3D - instructions to be generated by macros. - -2002-04-24 Andreas Schwab - - * config/tc-i386.c (output_jump, output_disp) - (md_estimate_size_before_relax): Don't set fx_pcrel_adjust any - more. - (md_apply_fix3): Remember addend value for rela relocations. - (tc_gen_reloc): Correctly compute pc-relative relocation addend. - -2002-04-22 Chris Demetriou - - * config/tc-mips.c (macro_build): Add close-parenthesis missing - from previous change. - -2002-04-22 Eric Christopher - - * config/tc-mips.c (macro_build): Add warning if macro instructions - are expanded into a branch delay slot. - -2002-04-17 Geoffrey Keating - - * dwarf2dbg.c (dwarf2_gen_line_info): Do emit duplicate line - numbers, gdb relies on them to detect the start of the prologue. - -2002-04-17 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_fix_adjustable): Prevent adjustments to - symbols in merge sections. - -2002-04-16 Alan Modra - - * as.c (main): Don't reference _bfd_chunksize. - -2002-04-15 Tom Rix - - * config/tc-d10v.c (d10v_fix_adjustable): Prevent adjustments to - symbols in merge sections. - -2002-04-11 Richard Sandiford - - * doc/invoke.texi (TC_LARGEST_EXPONENT_IS_NORMAL): Document. - * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): Add an - argument for the precision. - (gen_to_words): Update accordingly. - -2002-04-10 Alan Modra - - * as.c (parse_args ): Use VERSION is - BFD_VERSION_STRING unavailable. - * config/tc-i386.c (INLINE): Define (for non-BFD assembler). - -2002-04-09 J"orn Rennecke - - * config/tc-sh.h (TC_FIX_ADJUSTABLE): Disable adjusting if - symbol_used_in_reloc_p is true. - - * config/tc-sh.c (md_apply_fix3): Don't zero relocations on big - endian hosts. - -2002-04-04 Alan Modra - - * dep-in.sed: Cope with absolute paths. - * Makefile.am (dep.sed): Subst TOPDIR. - Run "make dep-am". - * Makefile.in: Regenerate. - -2002-04-04 Thiemo Seufer - - * config/tc-mips.c (mips16_macro_build): Cast type mismatch. - (mips_ip): Remove unused variable. - (md_apply_fix3): Cast signed/unsignes mismatches. Replace - unsigned char with bfd_byte. - (s_file): Remove unused variable. - (s_mips_ent): Likewise. - -2002-04-03 Tom Rix - - * config/tc-d10v.c (d10v_insert_operand): Fix warning in as_bad_where. - (build_insn): Same. - (find_opcode): Fix warning in as_warn. - * config/tc-d10v.h: Update Copyright. - -2002-04-03 Alan Matsuoka - Tom Rix - - From Jeff Knaggs - * config/tc-d10v.c (check_resource_conflict): New function to - check for resource conflicts. - - From Jason Eckhardt - * config/tc-d10v.c (build_insn): Check for unresolved imm4 or - imm3 fields. - * config/tc-d10v.c (find_opcode): Emit a warning if one of the - reserved control registers is used. - * config/tc-d10v.c (build_insn): Check for unresolved imm4 or - imm3 fields. - - From 2001-03-28 Diego Novillo - * tc-d10v.c (parallel_ok): Prevent packing only if the first - instruction cannot be packed. - - From 2001-03-30 Diego Novillo - * gas/config/tc-d10v.c (check_resource_conflict): Only check - write-write conflicts. - (md_assemble): Reformat introductory comment. - * opcodes/d10v-opc.c (d10v_opcodes): `btsti' does not modify its - arguments. - -2002-04-03 Alan Modra - - * symbols.c (resolve_symbol_value ): Derive final_seg from add_symbol. - : More final_seg twiddles. - -2002-04-01 Jessica Han - - * config/tc-ia64.c (ia64_cons_fix_new): Handle 8 byte iplt reloc - in 32-bit mode. - -2002-03-27 Andreas Schwab - - * config/tc-i386.c (output_jump): Set fx_pcrel_adjust to size of - field for pc-relative fixups. - (output_disp): Likewise. - (md_estimate_size_before_relax): Likewise. - (tc_gen_reloc): Subtract fx_pcrel_adjust instead of fx_size for - pc-relative fixups in 64bit mode. - -2002-03-22 Alan Modra - - * config/te-aix5.h: Typo fix. - -2002-03-21 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2002-03-20 Albert Chin-A-Young - - * config/tc-arm.c (vfp_dp_reg_required_here): Fix typo - (vfp_sp_reg_pos -> vfp_dp_reg_pos). - -2002-03-18 Alexandre Oliva - - * config/tc-mips.c (md_estimate_size_before_relax): Do not modify - the EXTENDED bit here; report the estimate according to the - current size. - -2002-03-18 Tom Rix - - * configure.in: Add AIX 5 support. - * config/tc-ppc.c (ppc_target_format): Add AIX 5 64 bit target. - * config/te-aix5.h: New file. AIX 5 support. - * configure: Regenerate. - -2002-03-18 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-16 Andreas Jaeger - - * doc/c-mips.texi (Machine Dependencies): Add new node. - -2002-03-15 Chris G. Demetriou - - * config/tc-mips.c (mips_set_options): New "ase_mips3d" member. - (mips_opts): Initialize "ase_mips3d" member. - (file_ase_mips3d): New variable. - (CPU_HAS_MIPS3D): New macro. - (md_begin): Initialize mips_opts.ase_mips3d and file_ase_mips3d - based on command line options and configuration defaults. - (macro_build, mips_ip): Accept MIPS-3D instructions if - mips_opts.ase_mips3d is set. - (OPTION_MIPS3D, OPTION_NO_MIPS3D, md_longopts, md_parse_option): - Add support for "-mips3d" and "-no-mips3d" options. - (OPTION_ELF_BASE): Move to accommodate new options. - (s_mipsset): Support ".set mips3d" and ".set nomips3d". - (mips_elf_final_processing): Add a comment indicating that a - MIPS-3D ASE ELF header flag should be set, when one exists. - * doc/as.texinfo: Document -mips3d and -no-mips3d options. - * doc/c-mips.texi: Likewise, and document ".set mips3d" and ".set - nomips3d" directives. - -2002-03-14 Hans-Peter Nilsson - - * config/tc-mmix.c (md_estimate_size_before_relax): Don't consider - a weak symbol in same section to be within reach. - -2002-03-13 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-12 Andreas Schwab - - * config/tc-ia64.c (fixup_unw_records): Clear region when seeing a - body record so that an error is given for misplaced .save - pseudo-ops. - -2002-03-09 Alan Modra - - * config/tc-i386.h (REX_OPCODE): Define. - (REX_MODE64, REX_EXTX, REX_EXTY, REX_EXTZ): Define. - (rex_byte): typedef to int. - * config/tc-i386.c: Group prototypes and vars together. - Formatting fixes. Remove occurrences of "register" keyword. - (true): Delete. - (false): Delete. - (mode_from_disp_size): Add INLINE keyword to prototype. - (fits_in_signed_byte): Likewise. - (fits_in_unsigned_byte): Likewise. - (fits_in_unsigned_word): Likewise. - (fits_in_signed_word): Likewise. - (fits_in_unsigned_long): Likewise. - (fits_in_signed_long): Likewise. - (type_names): Constify. - (intel_float_operand): Constify param. - (add_prefix): Use REX_OPCODE. - (md_assemble): Likewise. Modify for changed rex_byte. - (parse_insn): Split out of md_assemble. - (parse_operands): Likewise. - (swap_operands): Likewise. - (optimize_imm): Likewise. - (optimize_disp): Likewise. - (match_template): Likewise. - (check_string): Likewise. - (process_suffix): Likewise. - (check_byte_reg): Likewise. - (check_long_reg): Likewise. - (check_qword_reg): Likewise. - (check_word_reg): Likewise. - (finalize_imm): Likewise. - (process_operands): Likewise. - (build_modrm_byte): Likewise. - (output_insn): Likewise. - (output_branch): Likewise. - (output_jump): Likewise. - (output_interseg_jump): Likewise. - (output_disp): Likewise. - (output_imm): Likewise. - -2002-03-07 Daniel Jacobowitz - - * doc/as.texinfo: Wrap @menu in @ifnottex, not @ifinfo. - -2002-03-06 Alan Modra - - * config/tc-i386.c (tc_gen_reloc): Don't attempt to handle 8 byte - relocs except when BFD64. - - * write.c (number_to_chars_bigendian): Don't abort when N is - larger than sizeof (VAL). - (number_to_chars_littleendian): Likewise. - -2002-03-05 John David Anglin - - * config/tc-hppa.c (md_apply_fix3): Add cast. - (hppa_fix_adjustable): Adjust list of selectors using e_lrsel and - e_rrsel. - -2002-03-05 Paul Koning - - * tc-pdp11.c: Use VAX float format support for PDP-11 target. - (parse_ac5): New function for parsing float regs in float operand. - (parse_expression): Remove attempt to make literals be octal. - (parse_op_no_deferred): Support float literals. - (parse_op): Reject attempts to refer to float regs. - (parse_fop): New function, like parse_op but for float operand. - (md_assemble): Add cases to parse float operands. Also fix - IMM3, IMM6, IMM8 cases to pick up the operand from the right spot. - -2002-03-04 H.J. Lu - - * config/obj-elf.c (special_section): Add .init_array, - .fini_array and .preinit_array. - - * config/tc-ia64.h (ELF_TC_SPECIAL_SECTIONS): Remove - .init_array and .fini_array. - -2002-03-01 Jakub Jelinek - - * config/obj-elf.c (elf_copy_symbol_attributes): Don't copy - visibility. - (obj_frob_symbol): Copy visibility. - -2002-02-28 Jakub Jelinek - - * config/tc-alpha.c (s_alpha_text): Use obj_elf_text for OBJ_ELF, not - s_text. - (s_alpha_data): Use obj_elf_data for OBJ_ELF, not s_data. - -2002-02-27 Nick Clifton - - * po/es.po: Updated. - -2002-02-26 Chris Demetriou - - * config/tc-mips.c (mips_need_elf_addend_fixup): For embedded-PIC - only, undo the changes made on 2001-06-08, with the - effect being that common or extern symbols are - adjusted for embedded-PIC, but weak symbols are not. - (md_estimate_size_before_relax: Likewise, with the effect - that extern symbols are treated the same as weak symbols - only if not embedded-PIC. - (mips_fix_adjustable) Likewise, with the effect that - weak or extern symbols are not adjusted for embedded-PIC. - (md_apply_fix3): Tweak so that the case where value is zero - is handled more correctly for embedded-PIC code. - -2002-02-26 Nick Clifton - - * doc/as.texinfo (Overview): Add missing @ifset IA64 - - * configure.in (LINGUAS): Add es.po. - * configure: Regenerate. - * po/es.po: New file. - -2002-02-25 Thiemo Seufer - - * config/tc-mips.c (set_at): Fix handling of 64bit register loads. - (macro): Likewise. Fix la/dla address expansions for EMBEDDED_PIC - and NO_PIC cases. Code cleanup. - (macro2): Fix handling of 64bit register loads. - -2002-02-25 David Mosberger - - * doc/as.texinfo: Add entry for IA64. - * doc/c-ia64.texi: New file. - -2002-02-25 Alan Modra - - * config/tc-hppa.c: Update copyright date. - - * doc/c-ppc.texi (PowerPC-Opts): Add -mpower4, -maltivec and -m7400 - Remove references to chip manufacturers. - * config/tc-ppc.c (md_parse_option): Handle -mpower4 option. - Correct comments. - (md_show_usage): Remove references to chip manufacturers. Mention - -mpower4. - (md_begin): Test power4 opcode flag bits. - -2002-02-22 David Mosberger - - * config/tc-ia64.c (dot_restore): Issue error message of epilogue - count exceeds prologue count. - (md_show_usage): Describe -mconstant-gp and -mauto-pic. - (unwind.label_prologue_count): New member. - - Based on a patch by Hans Boehm : - - (get_saved_prologue_count): New function. - (save_prologue_count): New function. - (free_saved_prologue_count): New function. - (dot_label_state): Record state label by calling save_prologue_count(). - (dot_copy_state): Restore prologue count by calling - get_saved_prologue_count(). - (generate_unwind_image): Free up list of saved prologue - counts by calling free_saved_prologue_counts(). - -2002-02-22 Nick Clifton - - * config/tc-tic54x.c: Add missing prototypes and remove ANSI style - function declarations. - -2002-02-21 Nick Clifton - - * NEWS: Note that GASP is now deprecated. - * Makefile.am: Do not build gasp-new by default. - * Makefile.in: Regenerate. - * doc/Makefile.am: Do not install gasp.info. - * doc/Makefile.in: Regenerate. - * gas/gasp.texi: Note that gasp is now deprecated. - -2002-02-20 Nick Clifton - - * NEWS: Mark 2.12 branch. - -2002-02-19 Tom Tromey - - * config/tc-xstormy16.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2002-02-19 Thiemo Seufer - - * config/tc-mips.c (md_parse_option): Complain about invalid -mabi - option input. - -2002-02-19 Martin Schwidefsky - - * config/tc-s390.c (md_parse_option): Add switches -m31 and -m64. - Make bit size independent of architecture switch. - (md_begin): Add warning for -m64 with -Aesa. - (s390_md_end): Use renamed architecture defines. - -2002-02-18 Daniel Jacobowitz - - * config/obj-coff.h: Check !target_big_endian, not shl, for coff-sh. - -2002-02-16 Nick Clifton - - * doc/as.texinfo (Machine Dependencies): Fix typo: MMIX used - instead of CRIS. - -2002-02-15 Chris Demetriou - - * config/tc-mips.c (md_estimate_size_before_relax): Really - make sure we treat weak like extern only for ELF. (Fixes - patch from 2001-07-25.) - -2002-02-15 Ben Elliston - - * doc/as.texinfo: Add duplicate directory entry so that "info gas" - works as expected. - -2002-02-15 Hans-Peter Nilsson - - * NEWS: Mention support for MMIX. - -2002-02-13 Chris Demetriou - - * config/tc-mips.c (mips_need_elf_addend_fixup): Restructure into - a sequence of indpendent 'if' statements for easier debugging - and future modification. - -2002-02-13 Matt Fredette - - * config/tc-m68k.c (md_show_usage): No longer display a - hard-coded "68020" for the default CPU, instead display the - canonical name of the true, configured default CPU. - (m68k_elf_final_processing): Mark objects for sub-68020 - CPUs with the new EF_M68000 flag. - -2002-02-13 Andreas Schwab - - * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust - pc-relative relocations to merge sections in 64-bit mode. - -2002-02-13 Ben Elliston - - * NEWS: Document floating point number handling in gasp. - * gasp.c: Include and "xregex.h". - (is_flonum): New function. - (chew_flownum): Likewise. - (change_base): Consume flonums from the input, where possible. - * doc/gasp.texi (Constants): Document floating point numbers. - -2002-02-12 John David Anglin - - * config/tc-hppa.c (hppa_fix_adjustable): Don't adjust final types - that implicitly use LR and RR selectors. - -2002-02-12 Alexandre Oliva - - * config/tc-mn10300.c (other_registers): Added `epsw'. Mark `pc' - and `epsw' as available on AM33 and above only. - (other_register_name): Add logic to handle machine type encoded in - reg_number. - -2002-02-11 Tom Rix - - * config/tc-ppc.c (md_apply_fix3): Check for insert fop invalid for - xcoff64. - -2002-06-11 Alexandre Oliva - - * config/tc-sparc.c (U0x80000000, U0xffffffff): New constants. - Use all over. - -2002-02-11 Jan Hubicka - - * i386.c (md_assemble): Support 32bit address prefix. - (i386_displacement): Likewise. - (i386_index_check): Accept 32bit addressing in 64bit mode. - -2002-02-11 Alexandre Oliva - - * config/tc-sh.c (dot): Removed unused function. - -2002-02-11 Alan Modra - - * Makefile.am: "make dep-am". - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - * doc/Makefile.in: Regenerate. - -2002-02-10 Richard Henderson - - * doc/c-alpha.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add it. - * doc/all.texi, doc/as.texinfo: Add hooks for Alpha. - -2002-02-09 Richard Henderson - - * config/tc-alpha.c (O_samegp): New. - (USER_RELOC_P): Include it. - (alpha_reloc_op_tag, debug_exp, find_macro_match): Add it. - (md_apply_fix3): Handle BFD_RELOC_ALPHA_BRSGP. - (alpha_force_relocation, alpha_fix_adjustable): Likewise. - (alpha_validate_fix): New. - * config/tc-alpha.h (TC_VALIDATE_FIX): New. - -2002-02-09 Hans-Peter Nilsson - - * doc/c-cris.texi: New. - * doc/all.texi: @set CRIS. - * doc/as.texinfo: Ditto. Add CRIS gas manpage option overview. - Include c-cris.texi. - * doc/Makefile.am (CPU_DOCS): Add c-cris.texi - * doc/Makefile.in: Regenerate. - -2002-02-08 Chris Demetriou - - * config/tc-mips.c (IS_SEXT_32BIT_NUM): New macro to - determine if a number is a sign-extended 32-bit number. - (load_register): Use IS_SEXT_32BIT_NUM. - (macro): Check if load/store macro handling is using a - constant 32-bit address on 64-bit address systems, and if - so optimize the generation of that address. - -2002-02-08 Richard Henderson - - * config/tc-alpha.c (alpha_force_relocation): Don't assert that - we've eliminated all foreign relocation types yet. - (alpha_fix_adjustable): Likewise. - -2002-02-08 Alexandre Oliva - - Contribute sh64-elf. - 2002-02-08 Alexandre Oliva - Stephen Clarke - * doc/c-sh64.texi: Fix citation of SH64 architecture manual. - 2002-01-31 Alexandre Oliva - * config/tc-sh.c (md_relax_table): Added default sizes for - non-PC-relative UNDEF_MOVI, and relaxation sequences for - MOVI_16, MOVI_32 and MOVI_48. - * config/tc-sh64.c (shmedia_md_apply_fix3): Fix warning. - (shmedia_md_convert_frag): Handle non-PC-relative UNDEF_MOVI - and MOVI_16. - (shmedia_md_estimate_size_before_relax): Remove redundant - blocks. Set fragP->fr_var even if relaxation type unchanged. - Retain UNDEF_MOVI until expression decays to number. - 2002-01-24 Alexandre Oliva - * config/tc-sh64.c (shmedia_init_reloc): Handle new SHmedia PIC - relocation types. Take fixP->fx_addnumber into account too. - (shmedia_md_apply_fix): Likewise. - (shmedia_md_convert_frag): Likewise. - (shmedia_build_Mytes): Likewise. - (sh64_consume_datalabel): Complain about nested datalabel. - Support PIC relocs. Call sh_parse_name. - * config/tc-sh64.h (TC_RELOC_RTSYM_LOC_FIXUP): Extend definition - in tc-sh.h to SHmedia reloc types. - * config/tc-sh.c (SH64PCRELPLT, MOVI_PLT, MOVI_GOTOFF, - MOVI_GOTPC): New relaxation constants. - (md_relax_table): Introduce relaxation directives for PIC-related - constants. - (sh_PIC_related_p): Handle datalabel. - (sh_check_fixup): Choose SH5 PIC relocations. - (sh_cons_fix_new): Added BDF_RELOC_64. - (md_apply_fix3, sh_parse_name): Handle GOTPLT. - 2002-01-18 Alexandre Oliva - * config/tc-sh64.c (sh64_max_mem_for_rs_align_code): If the - current ISA is SHmedia, get 7 bytes. - 2001-11-28 Nick Clifton - * config/tc-sh.c (md_apply_fix3): Treat shmedia_md_apply_fix3 as a - void function. - * config/tc-sh64.c (shmedia_apply_fix): Rename to - shmedia_apply_fix3 and make void. - 2001-05-17 Alexandre Oliva - * config/tc-sh64.c (s_sh64_abi): Remove unused arguments passed to - as_bad. - 2001-04-12 Alexandre Oliva - * config/tc-sh64.h (md_parse_name): Take &c as argument. - 2001-03-14 DJ Delorie - * doc/Makefile.am (CPU_DOCS): Added c-sh64.texi - * doc/Makefile.in(CPU_DOCS): Ditto. - * doc/c-sh64.texi: New file. - * doc/as.texinfo: Add SH64 support. - 2001-03-13 DJ Delorie - * config/tc-sh64.c (shmedia_get_operands): Rename A_RESV_Fx to - A_REUSE_PREV so that its purpose is more obvious. - (shmedia_build_Mytes): Ditto. - 2001-03-07 DJ Delorie - * config/tc-sh64.c (sh64_vtable_entry): New, strip datalabels - before processing. - (sh64_vtable_inherit): Ditto. - (strip_datalabels): New, strip "datalabel" from given line. - * config/tc-sh.c (md_pseudo_table): Add sh64-specific vtable - pseudos. - 2001-03-06 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_md_assemble): Move dwarf2_emit_insn - call ... - (shmedia_build_Mytes): ... to here. - 2001-03-06 DJ Delorie - * config/tc-sh.c: Remove sh64-specific uaquad now that there - is a generic one. - 2001-01-21 Hans-Peter Nilsson - * config/tc-sh64.h (DWARF2_LINE_MIN_INSN_LENGTH): Override. - * config/tc-sh64.c (shmedia_md_assemble): Offset recorded insn - address by one in call to dwarf2_emit_insn. - 2001-01-13 Hans-Peter Nilsson - Implement ".abi" pseudo and correct .cranges descriptors. Correct - alignment handling broken by imported changes. - * config/tc-sh64.h (HANDLE_ALIGN): Override definition in tc-sh.h. - (sh64_handle_align): Declare. - (MAX_MEM_FOR_RS_ALIGN_CODE): Override definition in tc-sh.h. - (sh64_max_mem_for_rs_align_code): Declare. - (enum sh64_isa_values): Moved here from tc-sh64.c. - (md_do_align): Define. - (sh64_do_align): Declare. - (struct sh64_tc_frag_data): New. - (TC_FRAG_TYPE): Change to struct sh64_tc_frag_data. Users - changed. - (TC_FRAG_INIT): Change to set new datatype. - (struct sh64_segment_info_type): Rename member - last_flushed_location to last_contents_mark. All users changed. - (md_elf_section_change_hook, TC_CONS_FIX_NEW): Do not define. - (shmedia_elf_new_section, sh64_tc_cons_fix_new): Do not prototype. - * config/tc-sh.c (md_pseudo_table): Add ".abi". - (sh_elf_cons) [HAVE_SH64]: Call sh64_update_contents_mark instead - of unsetting seen_insn. - (md_assemble) [HAVE_SH64] : Also - call sh64_update_contents_mark. - (sh_handle_align): Remove HAVE_SH64-conditioned code. - * config/tc-sh64.c (sh64_isa_mode): Correct type from boolean to - enum sh64_isa_values. - (sh64_set_contents_type): Drop segT parameter. All callers changed. - (emitting_crange): Boolean guard moved to file scope from function - scope in sh64_set_contents_type. - (s_sh64_abi): New. - (sh64_update_contents_mark): New; most split out from - sh64_flush_pending_output. - (shmedia_md_end): Call sh64_update_contents_mark. Set - sh64_isa_mode to sh64_isa_sh5_guard unless sh64_isa_unspecified. - (sh64_do_align): New function. - (sh64_max_mem_for_rs_align_code): New function. - (sh64_handle_align): Rename from shmedia_do_align. Make - non-static. Add head comment. Emit zero bytes for n bytes modulo - four. Change return-type to void. - (shmedia_elf_new_section): Remove. - (shmedia_md_assemble): Call sh64_update_contents_mark. - (s_sh64_mode): Ditto. Do not call md_flush_pending_output. Make - new frag. Call sh64_update_contents_mark after making the new - frag. - (sh64_flush_pending_output): Just call sh64_update_contents_mark - and sh_flush_pending_output. - (sh64_flag_output): Also call md_flush_pending_output, but add - condition on not emitting_crange. - (sh64_tc_cons_fix_new): Remove. - 2001-01-12 Nick Clifton - * config/tc-sh64.c (shmedia_do_align): Fix to work with new - alignment handling scheme imported from sourceware. - 2001-01-12 Hans-Peter Nilsson - * config/tc-sh64.h (TARGET_FORMAT): Define. - (sh64_target_format): Prototype. - * config/tc-sh64.c (sh64_target_mach): New function. - 2001-01-07 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_md_end): When equating a symbol, use - zero_address_frag instead of copying the frag of the symbol. - (shmedia_frob_file_before_adjust): Ditto. - (shmedia_md_apply_fix) : Cast mask - to valueT to remove signedness. - (shmedia_md_convert_frag): Add parameter final. Rename parameter - headers to output_bfd. Do not evaluate symbols if final is false; - do emit fixups. - (shmedia_md_estimate_size_before_relax) : If symbol cannot be modified to be PC-relative - to the current frag, call shmedia_md_convert_frag to emit fixups - and make frag_wane neutralize the frag. Update comments. - * config/tc-sh.c (md_convert_frag): Change caller of - shmedia_md_convert_frag. - 2001-01-06 Hans-Peter Nilsson - * config/tc-sh64.h: Tweak comments and correct formatting. - * config/tc-sh64.c: Ditto. - (shmedia_md_convert_frag) : Fix thinko calculating offset - for the no-relocation case. - (shmedia_check_limits): Fix range check being off-by-one for PTA. - * config/tc-sh.c: Ditto. Add proper comments to #ifdef/#ifndef - wrappers. - (SH64PCREL16_F): Increment for proper max-PTA handling. Update - comment. - (SH64PCREL16_M, MOVI_16_M): Correct range thinko. - (SH64PCREL48_M, MOVI_48_M): Similar; don't count in length of - expansion. - (SH64PCREL32_M, MOVI_32_M): Ditto; handle overflowing expression. - Correct comment. - 2001-01-05 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_md_apply_fix) : Set lowest bit in field to be relocated to 1. - (shmedia_md_convert_frag) : Set lowest bit of field to relocate to 1 and rest to empty, - if reloc is emitted. - 2000-12-31 Hans-Peter Nilsson - New options plus bugfixes. - * config/tc-sh.c (md_longopts): New options "-no-expand" and - "-expand-pt32". - (md_parse_option): Handle new options. - (md_show_usage): Add blurb for new options. - * config/tc-sh64.c (SHMEDIA_BFD_RELOC_PT): New macro. - (sh64_expand, sh64_pt32): New variables. - (shmedia_init_reloc): Handle BFD_RELOC_SH_PT_16. - (shmedia_md_apply_fix): Hold original fixP->fx_r_type in - orig_fx_r_type. Change SHMEDIA_BFD_RELOC_PT into - BFD_RELOC_SH_PT_16. Handle BFD_RELOC_SH_PT_16 as pc-relative. - : Handle - SHMEDIA_BFD_RELOC_PT and BFD_RELOC_SH_PT_16. - (shmedia_md_convert_frag) : Modify to PTB if operand - points to SHcompact code. - : Check that ISA of what operand points at and - PTA/PTB matches, or emit error. - (shmedia_check_limits): Handle BFD_RELOC_SH_PT_16 and - SHMEDIA_BFD_RELOC_PT. - (shmedia_immediate_op): If pcrel, emit fixup also for constant - operand. - (shmedia_build_Mytes) : Also check sh64_expand in - condition for MOVI expansion. - : Handle expansion to 32 bits only, if - sh64_pt32. Emit only a BFD_RELOC_SH_PT_16 fixup if not - sh64_expand. - : Likewise, but emit a SHMEDIA_BFD_RELOC_PT - fixup. - (sh64_target_format): Error-check setting of sh64_pt32 and - sh64_expand. Fix typo in check for sh64_shcompact_const_crange. - (shmedia_md_pcrel_from_section): Handle BFD_RELOC_SH_PT_16 and - SHMEDIA_BFD_RELOC_PT as coming from SHmedia code. - 2000-12-31 Hans-Peter Nilsson - * config/tc-sh64.c: Improve comments. - (shmedia_md_convert_frag): Remove inactive is_pt_variant code. Do - not say the linker will check correctness of PTA/PTB expansion. - (shmedia_md_end): Make non-static. - * config/tc-sh64.h (md_end): Define to shmedia_md_end. Add - prototype. - * config/tc-sh.c (sh_finalize): Remove. - * config/tc-sh.h (md_end): Do not define. - Remove prototype for sh_finalize. - 2000-12-30 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_frob_section_type): Use a struct - sh64_section_data container when storing section type in tdata - field in elf_section_data. - * config/tc-sh.c (sh_elf_final_processing): Change from EF_SH64 to - EF_SH5. - * Makefile.am: Update dependencies. - * Makefile.in: Regenerate. - 2000-12-22 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_md_assemble): Don't protect - dwarf2_emit_insn call with test on debug_type. - 2000-12-19 Hans-Peter Nilsson - * config/tc-sh64.c (sh64_set_contents_type): Make contents-type - CRT_SH5_ISA32 sticky for 64-bit. - 2000-12-18 Hans-Peter Nilsson - Generate .crange sections when switching ISA mode or emitting - constants in same section as code. - * config/tc-sh64.c: Reformat structure definitions. - (sh64_end_of_assembly, sh64_mix, sh64_shcompact_const_crange): New - variables. - (sh64_set_contents_type): Rename from sh64_init_section. Rewrite - to emit a .cranges descriptor when contents type changes. Only - emit error if changing contents type and -no-mix is in effect. - (sh64_emit_crange, sh64_flush_last_crange, sh64_flag_output, - sh64_flush_pending_output, sh64_tc_cons_fix_new): New functions. - (shmedia_md_end): Set sh64_end_of_assembly. Pass - sh64_flush_last_crange over sections. - When checking main symbol of datalabel symbol, check for - STO_SH5_ISA32, not ISA type of section in definition. - (shmedia_frob_file_before_adjust): Check main symbol for - STO_SH5_ISA32; don't check ISA type of section in definition. - (shmedia_frob_section_type): Adjust for .cranges; set section flag - to SHF_SH5_ISA32_MIXED or SHF_SH5_ISA32 according to whether - .cranges entries have been output. - (shmedia_elf_new_section): Just call md_flush_pending_output. - (shmedia_md_assemble): Do not emit a BFD_RELOC_SH_SHMEDIA_CODE - fix. Do not set tc_segment_info_data.in_code for section. Call - sh64_set_contents_type for SHmedia code. - (s_sh64_mode): Do not call sh64_init_section or set seen_insn to - false. Call md_flush_pending_output. - (sh64_target_format): Check that -no-mix and - -shcompact-const-crange are used in sane combination with other - options. - (shmedia_md_pcrel_from_section): Check type of fix for how to - adjust pc-relative. - (sh64_consume_datalabel): Check symbol for having STO_SH5_ISA32, - not ISA type of section in definition. - * config/tc-sh64.h (struct sh64_segment_info_type): Rewrite to - hold contents-type state. - (md_flush_pending_output): Redefine to sh64_flush_pending_output. - (sh64_flush_pending_output): Declare. - (TC_CONS_FIX_NEW): Define to sh64_tc_cons_fix_new. - (sh64_tc_cons_fix_new): Declare. - * config/tc-sh.c (sh_elf_cons) [HAVE_SH64]: Unset seen_insn and - call sh64_flag_output. - (md_assemble) [HAVE_SH64]: Do not emit BFD_RELOC_SH_CODE. Just - call sh64_set_contents_type to mark SHcompact code and set - seen_insn. - (md_longopts): New options "-no-mix" and - "-shcompact-const-crange". - (md_parse_option): Handle new options. - (md_show_usage): Add blurb for new options. - (md_number_to_chars) [HAVE_SH64]: Call sh64_flag_output. - 2000-12-15 Hans-Peter Nilsson - * config/tc-sh64.c: Delete investigated and obsolete fixme:s. - (sh64_last_insn_frag): New. - (shmedia_md_convert_frag): Use tc_frag_data field of incoming frag - to get frag for insn opcode for generating fixups; do not assume it - is the same frag. - (shmedia_build_Mytes): Set sh64_last_insn_frag after growing frag - for new insn. - * config/tc-sh64.h (ELF_TC_SPECIAL_SECTIONS): Define for .cranges - section. - (TC_FRAG_TYPE): Define as fragS *. - (TC_FRAG_INIT): Define to set tc_frag_data to sh64_last_insn_frag. - (sh64_last_insn_frag): Declare. - (sh64_consume_datalabel): Fix typo; check for seginfo != NULL, - not == NULL before dereferencing. - 2000-12-12 Hans-Peter Nilsson - Get rid of BFD section flag and EF_SH64_ABI64. - * config/tc-sh64.c (shmedia_frob_section_type): Use - elf_section_data (sec)->tdata, not a specific BFD section flag, to - communicate the section as containing SHmedia code. Describe why. - * config/tc-sh.c (sh_elf_final_processing): Tweak comment. Set - EF_SH64 regardless of ABI. - * config/tc-sh64.c (shmedia_md_apply_fix): Decapitalize "invalid" - in error message. Handle resolved expressions for - BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2, - BFD_RELOC_SH_IMMS10BY4 and BFD_RELOC_64. - (shmedia_check_limits): Handle BFD_RELOC_64. - (sh64_adjust_symtab): Do not decrement the GAS symbol value for - a STO_SH5_ISA32 symbol, only the BFD value. - 2000-12-11 Ben Elliston - * config/tc-sh64.c: Call dwarf2_emit_insn, not the defunct - dwarf2_generate_asm_lineno. - 2000-12-11 Hans-Peter Nilsson - Handle PC-relative MOVI expansions with assembler relaxation. - Generate PC-relative relocs from 16-bit PC-relative expressions. - * config/tc-sh64.c (SHMEDIA_MD_PCREL_FROM_FIX): Break out from... - (shmedia_md_pcrel_from_section): ...here. - (shmedia_md_apply_fix): Handle fixups for 16-bit operands that has - turned completely resolved. Adjust relocation type for 16-bit - immediate operands that has turned PC-relative. Adjust back for - MD_PCREL_FROM_SECTION being applied twice. - (shmedia_md_convert_frag): Always emit reloc for expression with - global or weak symbol. Handle relaxation result for PC-relative - expressions. - (shmedia_md_estimate_size_before_relax): An expression with a weak - or global symbol can not be relaxed. Break out tests for - relaxable symbol into variable sym_relaxable. - : Break out any PC-relative expression and change - relaxation type. - (shmedia_build_Mytes): CSE &operands->operands[j] into variable - opjp. - : Fix typo for initial minor relaxation type of - MOVI expansion. If X_op_symbol of the immediate expression is - set, make an expression symbol for the argument to frag_var. - * config/tc-sh.c (MOVI_IMM_32_PCREL, MOVI_IMM_64_PCREL): New - relaxations. - (END): Adjust for new relaxations. - (md_relax_table): Add entries for new relaxations. - 2000-12-07 Ben Elliston - * config/tc-sh64.c (shmedia_parse_reg): Initialize variable len. - 2000-12-07 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_md_convert_frag): Correct all MOVI and - SHORI operand offsets in PT/PTA/PTB expansions. - 2000-12-05 Hans-Peter Nilsson - Implement DataLabel semantics. - * config/tc-sh.c (sh_frob_file) [HAVE_SH64]: Call - shmedia_frob_file_before_adjust. - * config/tc-sh64.c [! OBJ_ELF]: Emit #error. - (DATALABEL_SUFFIX): Define. - (shmedia_md_end) : Walk - symbol list to update "datalabel" symbols to their main symbol - counterparts. - (shmedia_frob_file_before_adjust): New. - (sh64_adjust_symtab): For remaining datalabel symbols, set to - undefined and set STT_DATALABEL. - (sh64_frob_label): Initialize TC symbol field. - (sh64_consume_datalabel): Actually implement semantics. New - parameter operandf, call it instead of expression. - (sh64_exclude_symbol): New. - * config/tc-sh64.h (md_parse_name): Pass on the function operand - to sh64_consume_datalabel. - (tc_symbol_new_hook): Define to tc_frob_symbol. - (TC_SYMFIELD_TYPE): Define to symbolS *. - (tc_frob_symbol): Define to call sh64_exclude_symbol. - 2000-12-01 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_init_reloc): Tweak comment for default - case. - (shmedia_md_assemble): Call dwarf2_generate_asm_lineno if - generating dwarf2 debug information. - 2000-11-30 Hans-Peter Nilsson - * config/tc-sh64.c (sh64_target_format): Use elf64-sh64l and - elf64-sh64 for the 64-bit ABI. - * config/tc-sh.c (md_show_usage): Tweak usage output for -abi=* - option. - 2000-11-29 Hans-Peter Nilsson - * config/tc-sh.c: Remove conditionalizing on HAVE_SH64 for - case-insensitivity. - 2000-11-27 Hans-Peter Nilsson - * config/tc-sh64.c: Tweak comments, formatting and error messages. - (enum sh64_abi_values): New type. - (enum sh64_isa_values): New type. - (sh64_isa_mode): Replace shmedia_mode. All referers changed. - (seen_shcompact_mode, seen_shmedia_mode): Delete. - (sh64_abi): Replace shmedia_64. - (shmedia_md_convert_frag) : Correct register number handling. - (s_sh64_mode): Check validity for this target. - (sh64_target_format): Initialize defaults for ISA and ABI. - Fallback to old object format if no SH64 ISA or ABI has been - specified. - * config/tc-sh.c (md_parse_option): Check combinations for errors. - (sh_elf_final_processing): Change to have EF_SH64_ABI64 for 64-bit - ABI and EF_SH64 for 32-bit ABI, if SH64 options are specified. - * config/tc-sh64.h: Fix typo in comment. - 2000-11-25 Hans-Peter Nilsson - * config/tc-sh64.c (shmedia_md_estimate_size_before_relax) - : Size will be longest, not - shortest. - (shmedia_md_convert_frag): Disable PTB-warning machinery. Correct - all MOVI and SHORI operand offsets in PT/PTA/PTB expansions. - * config/tc-sh.c (parse_reg) [HAVE_SH64]: Add local variables l0 - and l1 to hold lowercase of two first characters. Change all - remaining TO_LOWER to tolower. - * config/tc-sh64.c (TO_LOWER): Delete. - (shmedia_find_cooked_opcode): Use tolower, not TO_LOWER. - (md_parse_name): Define. - (sh64_consume_datalabel): Declare. - (DOLLAR_DOT): Define. - * config/tc-sh64.c (shmedia_parse_exp): New. - (sh64_consume_datalabel): New; just ignoring datalabel semantics. - (shmedia_parse_reg): Remove const from src - parameter. - (shmedia_get_operands): Ditto for args parameter and ptr variable. - (shmedia_md_assemble): Ditto for op_end variable. - (shmedia_get_operand): Ditto for ptr parameter and src variable. - Use shmedia_parse_exp, not parse_exp. - * config/tc-sh64.c (shmedia_parse_reg): Add shmedia_arg_type - parameter. All callers changed. - (shmedia_get_operand): Add shmedia_arg_type parameter. All - callers changed. - (shmedia_parse_reg): Put first two character in local variables. - Use tolower, not TO_LOWER. If no register is found and argtype - indicates a control register, scan shmedia_creg_table - case-insensitive. - 2000-11-24 Hans-Peter Nilsson - * Makefile.am (CPU_TYPES): Add sh64. - (TARGET_CPU_CFILES): Add config/tc-sh64.c. - (TARGET_CPU_HFILES): Add config/tc-sh64.h. - Regenerate dependencies. - * Makefile.in: Regenerate. - * configure.in: Add support for sh64-*-elf*. - * configure: Regenerate. - * config/tc-sh64.h: New. - * config/tc-sh64.c: New. - * config/tc-sh.c (md_pseudo_table) [HAVE_SH64]: New pseudos - .mode, .isa and .uaquad. - [HAVE_SH64] (SH64PCREL16_32, SH64PCREL16_64, SH64PCREL16PT_32, - SH64PCREL16PT_64, MOVI_IMM_32, MOVI_IMM_64): Define. - [HAVE_SH64] (END): Define as 10. - [HAVE_SH64] (UNDEF_SH64PCREL, SH64PCREL16, SH64PCREL32, - SH64PCREL48, SH64PCREL64, UNDEF_MOVI, MOVI_16, MOVI_32, MOVI_48, - MOVI_64): Define. - [HAVE_SH64] (SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, - SH64PCREL32_F, SH64PCREL32_M, SH64PCREL32_LENGTH, SH64PCREL48_F, - SH64PCREL48_M, SH64PCREL48_LENGTH, SH64PCREL64_LENGTH, - MOVI_16_LENGTH, MOVI_32_LENGTH, MOVI_48_LENGTH, MOVI_64_LENGTH): - Define. - (md_relax_table) [HAVE_SH64]: Provide relaxations for SHmedia. - (md_begin) [HAVE_SH64]: Call shmedia_md_begin. - (parse_reg) [HAVE_SH64]: Parse register names case-insensitive. - (md_assemble) [HAVE_SH64]: Call shmedia_md_assemble if assembling - SHmedia instructions. Handle state-change after switching to - SHcompact. - (md_longopts) [HAVE_SH64]: New options --isa=* and --abi=*. - (md_parse_option) [HAVE_SH64]: Parse new options. - (md_show_usage) [HAVE_SH64]: Show usage of new options. - (md_convert_frag) [HAVE_SH64] : Call - shmedia_md_convert_frag instead of abort. - (sh_force_relocation) [HAVE_SH64]: Also force relocation for - BFD_RELOC_SH_SHMEDIA_CODE. - (sh_elf_final_processing) [HAVE_SH64]: Set flags identifying - SHcompact or SHmedia code. - (md_apply_fix) [HAVE_SH64] : Return result from calling - shmedia_md_apply_fix instead of abort. - (md_estimate_size_before_relax) [HAVE_SH64] : Return - result from calling shmedia_md_estimate_size_before_relax instead - of calling abort. - (sh_do_align) [HAVE_SH64]: If shmedia_mode, let shmedia_do_align - do the work. - (tc_gen_reloc) [HAVE_SH64]: For unrecognized relocs, call - shmedia_init_reloc and do nothing more if it returns non-zero. - (sh_finalize) [HAVE_SH64]: Call shmedia_md_end. - * po/POTFILES.in: Regenerate. - * po/gas.pot: Regenerate. - -2002-02-06 Alexandre Oliva - - * config/tc-sh.c (parse_at): Install the correct version of - 2002-02-04's patch. - - * config/tc-sh.c (md_apply_fix3) : Don't - assume fixP->fx_subsy is non-NULL. - -2002-02-04 Alexandre Oliva - - * config/tc-sh.c (parse_at): Set arg type of @(expr,pc) to - A_DISP_PC_ABS, and adjust it by -4. - (get_specific): Accept A_DISP_PC_ABS where A_DISP_PC is - expected. - (build_Mytes): Mark PCRELIMM fix-ups as pc-relative only if - the operand type is not A_DISP_PC_ABS. - -2002-02-04 Hans-Peter Nilsson - - * config/tc-mmix.c (tc_gen_reloc): Don't try and take the value of - common and weak symbols. Handle common and weak symbols as - undefined symbols with regards to GREG handling and merging. - (mmix_frob_file): Ditto. - -2002-02-02 Jason Thorpe - - * configure.in (hppa-*-netbsd*): New target. - * configure: Regenerate. - * config/tc-hppa.h: Also define WARN_COMMENTS if TE_NetBSD. - -2002-02-02 Alan Modra - - * config/tc-v850.c: Add missing prototypes amd use old-style - function definitions. - (AREA_ZDA, AREA_SDA, AREA_TDA): Delete. - (sdata_section tdata_section, zdata_section, sbss_section, - tbss_section, zbss_section, rosdata_section, rozdata_section, - scommon_section, tcommon_section, zcommon_section, - call_table_data_section, call_table_text_section): Delete. - (v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss, - v850_zbss, v850_bss, v850_rosdata, v850_rozdata, - v850_call_table_data, v850_call_table_text): Delete. - (struct v850_seg_entry): New. - (v850_seg_table): New. - (SDATA_SECTION TDATA_SECTION, ZDATA_SECTION, SBSS_SECTION, - TBSS_SECTION, ZBSS_SECTION, BSS_SECTION, ROSDATA_SECTION, - ROZDATA_SECTION, SCOMMON_SECTION, TCOMMON_SECTION, ZCOMMON_SECTION, - CALL_TABLE_DATA_SECTION, CALL_TABLE_TEXT_SECTION): Define. - (do_v850_seg): New. - (v850_seg): New. - (v850_comm): Use do_v850_seg and v850_seg_table. Simplify - recording of alignment. - (md_pseudo_table): Use v850_seg. - (md_begin): Don't init .call_table_data and .call_table_text here. - Set v850_seg_table bss entry. - -2002-02-01 Hans-Peter Nilsson - - Support on-demand global register allocation by passing on - base-plus-offset relocs to the linker. - * config/tc-mmix.c: Tweak and fix typos in comments. - (allocate_undefined_gregs_in_linker): New variable. - (OPTION_LINKER_ALLOCATED_GREGS): New option macro. - (md_longopts): Add --linker-allocated-gregs. - (md_parse_option) : Imply --linker-allocated-gregs. - : New. - (md_show_usage): Update text for -x. Add text for - --linker-allocated-gregs. - (tc_gen_reloc): Derive default value for addend from val and - baddsy. Use addsec and bfd_is_abs_section in more places. Don't - emit error for BFD_RELOC_MMIX_BASE_PLUS_OFFSET without suitable - GREG if allocate_undefined_gregs_in_linker. - * doc/as.texinfo (Overview) : Add - --linker-allocated-gregs. - * doc/c-mmix.texi (MMIX-Opts): Add blurb about - --linker-allocated-gregs. Mention that it's implied by -x. - (MMIX-Pseudos) : Mention when and how a GREG can be omitted. - (MMIX-mmixal): Clarify dated comparison and location of MMIXware. - - * config/tc-mmix.h (md_parse_name): Use ISUPPER, not isupper. - -2002-02-01 Alan Modra - - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - -2002-01-31 Ivan Guzvinec - - * config/tc-or32.c: New file. - * config/tc-or32.h: New file. - * configure.in: Add support for or32 targets. - * configure: Regenerate. - * config/obj-coff.c: Add support for or32 targets. - * config/obj-coff.h: Add support for or32 targets. - * Makefile.am: Add support for or32 targets. - * Makefile.in: Regenerate. - * NEWS: Mention support for OpenRISC. - * doc/Makefile.in: Regenerate. - * po/POTFILES.in: Regenerate. - * po/gas.pot: Regenerate. - -2002-01-30 Richard Sandiford - - * config/tc-sh.c (parse_reg): Fix end-of-word check for is, ix, iy - and mod. - -2002-01-29 Chris Demetriou - - * config/tc-mips.c (tc_gen_reloc): Arrange for - BFD_RELOC_PCREL_HI16_S relocations to be output relative to - their LO16 parts, even for ELF. - -2002-01-29 Daniel Jacobowitz - - * config/tc-i386.c: Protect definitions of true and false - from redefinition. - -2002-01-28 Jakub Jelinek - - * config/obj-elf.c (elf_frob_file_before_adjust): Remove symbols - made because of .weak, if they are neither defined nor used in any - way. - -2002-01-27 Daniel Jacobowitz - - * configure: Regenerated. - -2002-01-26 Hans-Peter Nilsson - - * doc/Makefile.am (install): Depend on install-info. - * doc/Makefile.in: Regenerate. - -2002-01-26 Nick Clifton - - * po/fr.po: Updated version - -2002-01-24 Kazu Hirata - - * config/tc-h8300.c (check_operand): Don't print a warning - when a valid 24-bit address is given to a 16-bit address - operand. - -2002-01-24 Alexandre Oliva - - * config/tc-sh.c (sh_elf_suffix): Removed. - (sh_PIC_related_p, sh_check_fixup, sh_cons_fix_new, - sh_end_of_match, sh_parse_name): New functions. - (sh_elf_cons): Simplify. - (parse_exp): Reject misplaced PIC operands. - (md_undefined_symbol): Simplify. - (sh_fix_adjustable): Let @GOTOFF be adjusted. - (md_apply_fix3): Write @PLT and @GOTOFF addends in place. - (tc_gen_reloc): Move fixp subsy absolute value into addnumber. - Complain if subsy remains at the end. - * config/tc-sh.h (sh_parse_name, sh_cons_fix_new): Declare. - (md_parse_name, TC_CONS_FIX_NEW, O_PIC_reloc): Define. - -2002-01-22 Alexandre Oliva - - * config/tc-mn10300.c (xr_registers): Move `pc'... - (other_registers): ... here. - -2002-01-22 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * gas/po/POTFILES.in: Regenerate. - -2002-01-21 DJ Delorie - - * config/obj-coff.c (obj_coff_init_stab_section): Make the - stabstr_name allocation permanent, as it will be referenced from - the section hash. - -2002-01-21 Jason Thorpe - - * configure.in (ia64-*-netbsd*): New target. - * configure: Regenerate. - -2002-01-21 Hans-Peter Nilsson - - * doc/as.texinfo (Overview) : Add missing {} - to @dots call. - : Ditto. - * doc/c-arm.texi (ARM Options): Ditto. - -2002-01-18 Richard Earnshaw - - * tc-arm.c (do_xsc_mia, do_xsc_mar, do_xsc_mra): Renamed from - do_mia, do_mar and do_mra respectively. - (do_mav_*): Renamed from do_c_*. - (mav_reg_required_here, mav_parse_offset): Renamed from - cirrus_reg_required_here and cirrus_parse_offset respectively. - (MAV_MODE?): Renamed from CIRRUS_MODE?. - -2002-01-18 Richard Earnshaw - Keith Walker - - * tc-arm.c (ARM_EXT_V5J, ARM_ARCH_V5TEJ): Define. - (insns): Add pattern for bxj instruction. - (do_bxj): New function. - (arm_cpus): Add arm926ej. - (arm_archs): Add armv5tej. - -2002-01-18 Richard Earnshaw - - * doc/c-arm.texi: Add new fpe options to list of supported flags. - -2002-01-19 Keith Walker - - * tc-arm.c (arm_fpus): Add fpe2 and fpe3. - -2002-01-18 Richard Earnshaw - - * NEWS: Mention new ARM command-line options and VFP support. - - * config/tc-arm.c (ARM_CEXT_XSCALE): Replaces ARM_EXT_XSCALE. All - uses changed. - (ARM_CEXT_MAVERICK): Similarly. - (ARM_ANY): Now means any core instruction. - (CPU_DEFAULT): Default to ARM_ANY. - (uses_apcs_26, atcps, support_interwork, uses_apcs_float) - (pic_code): Declare for all object types. Make type int. - (legacy_cpu, legacy_fpu, mcpu_cpu_opt, mcpu_fpu_opt, march_cpu_opt) - (march_fpu_opt, mfpu_opt): Declare. - (md_longopts): Tidy up conditional definitions. - (arm_opts, arm_cpus, arm_archs, arm_fpus, arm_extensions) - (arm_long_opts): New tables. - (arm_parse_cpu, arm_parse_arch, arm_parse_fpu): New functions. - (arm_parse_extension): New function. - (md_parse_option): Rewrite using new table-driven system. - (md_show_usage): Use new table-driven system. - (md_begin): Calculate cpu_variant from command line option data. - * doc/as.texinfo (ARM ISA options): Docuement new ARM-specific - command-line options. - * doc/c-arm.texi: Likewise. - -2002-01-18 Andreas Jaeger - - * as.c (parse_args): Update year. - -2002-01-17 Timothy Wall - - * config/tc-tic54x.c (encode_address): Add a more informative - warning about incorrect syntax. - -2002-01-17 Nick Clifton - - * po/gas.pot: Regenerate. - -2002-01-17 Nick Clifton - - * macro.c (get_any_string): Add no-c-format comment to prevent - confusion when translating string. - * gasp.c (get_any_string): Add no-c-format comment to prevent - confusion when translating string. - -2002-01-16 Thiemo Seufer - Johannes Stezenbach - * config/tc-mips.c (percent_op): Ensure longer percent_op's are - matched before the shorter ones. - (my_getSmallParser): Fix handling of nested parentheses in - percent_op's. Code cleanup. - (my_getPercentOp): New function, code from my_getSmallParser. - (my_getSmallExpression): Fix handling of closing parentheses. - Code cleanup. Better comments. - -2002-01-16 Nick Clifton - - po/tr.po: New file: Turkish translation. - configure.in (LINGUAS): Add "tr". - configure: Regenerate. - -2002-01-15 Richard Earnshaw - - Support for VFP instructions - * tc-arm.c (CP_WB_OK, CP_NO_WB): New defines. - (cp_address_required_here): New argument wb_ok. When false, do not - accept write-back forms of addressing. Change all callers. - (FPU_VFP_EXT_NONE, FPU_VFP_EXT_V1xD, FPU_VFP_VFP_V1) - (FPU_VFP_EXT_V2): Define. - (FPU_ARCH_VFP, FPU_ARCH_VFP_V1xD, FPU_ARCH_VFP_V1, FPU_ARCH_VFP_V2): - Define in terms of above. - (vfp_dp_reg_pos, vfp_sp_reg_pos, vfp_ldstm_type): New enums. - (vfp_reg): New struct. - (vfp_regs): New array of registers. - (insns): Add VFP instructions. - (sn_table): New array of VFP single-precision register names. - (dn_table): New array of VFP double-precision register names. - (all_reg_maps): Add the new register tables. - (arm_reg_type): Add new values for above. Increase RET_TYPE_MAX. - (vfp_sp_reg_required_here, vfp_dp_reg_required_here, do_vfp_sp_monadic) - (do_vfp_dp_monadic, do_vfp_sp_dyadic, do_vfp_dp_dyadic) - (do_vfp_reg_from_sp, do_vfp_sp_reg2, do_vfp_sp_from_reg) - (do_vfp_reg_from_dp, do_vfp_reg2_from_dp, do_vfp_dp_from_reg) - (do_vfp_dp_from_reg2, vfp_psr_parse, vfp_psr_required_here) - (do_vfp_reg_from_ctrl, do_vfp_ctrl_from_reg, do_vfp_sp_ldst) - (do_vfp_dp_ldst, vfp_sp_reg_list, vfp_dp_reg_list, vfp_sp_ldstm) - (vfp_dp_ldstm, do_vfp_sp_ldstmia, do_vfp_sp_ldstmdb, do_vfp_ldstmia) - (do_vfp_dp_ldstmdb, do_vfp_xp_ldstmia, do_vfp_xp_ldstmdb) - (do_vfp_sp_compare_z, do_vfp_dp_compare_z, do_vfp_dp_sp_cvt) - (do_vfp_sp_dp_cvt): New functions. - (md_begin): Set soft-float flag for appropriate VFP work. - (md_atof): Handle VFP-format doubles. - (md_parse_option): Handle VFP command-line options. - (md_show_usage): Display VFP command-line options. - -2002-01-15 Richard Earnshaw - - * tc-arm.c (md_parse_option): Tidy up setting of cpu_variant for - various command line options. - -2002-01-15 Nick Clifton - - * config/tc-xstormy16.c: (xstormy16_fix_adjustable): Do not fix - vtinherit relocs. - (xstormy16_md_apply_fix3): Do not return a value. - -2002-01-14 Richard Earnshaw - - * tc-arm.c (md_longopts): On targets that aren't bi-endian, support - the -EL/-EB option that matches the target's endianness. - (md_parse_option): Likewise. - -2002-01-14 Richard Earnshaw - - * tc-arm.c (md_longopts): Fix misplaced #endif -- the -oabi option - is not dependent on ARM_BI_ENDIAN. - -2002-01-14 Richard Earnshaw - - * tc-arm.c (all error messages): Normalize capitalization of messages. - - * tc-arm.h (md_operand): Delete define. - * tc-arm.c (in_my_get_expression): New static variable. - (my_get_expression): Set and clear it. - (md_operand): New function. If called from my_get_expression - put the error in inst.error. - (output_inst): Now takes argument of instruction being assembled. - Print it out with any error message. - (do_ldst, do_ldstv4, thumb_load_store): Fault attempt to use a store - with '=' syntax. - (end_of_line): Don't update inst.error if it is already set. - -2002-01-11 Richard Earnshaw - - * tc-arm.c (do_ldst): Fix handling an immediate expression pseudo - op that can be translated into a mvn instruction. - -2002-01-11 Steve Ellcey - - * gas/config/tc-ia64.h (MD_FLAGS_DEFAULT): New Macro for - setting default md.flags. - (SHT_INIT_ARRAY): New elf special section used by HP-UX. - (SHT_FINI_ARRAY): New elf special section used by HP-UX. - * gas/config/tc-ia64.c (setup_unwind_header): Add support - for 32 bit unwind info blocks. - (generate_unwind_image): Add support for different types - of unwind images (32 bits and/or big-endian). - (ia64_init): Use MD_FLAGS_DEFAULT to set md.flags. - (ia64_target_format): Add support for hpux target formats. - (ia64_gen_real_reloc_type): Add support for FUNC_IPLT_RELOC. - (ia64_elf_section_type): Add support for SHT_INIT_ARRAY and - SHT_FINI_ARRAY elf section types. - -2002-01-10 Richard Earnshaw - - * tc-arm.c (struct reg_entry): Move before prototypes. - (int_register, cp_register, fp_register): Delete. - (reg_table): Delete. Replaced with ... - (rn_table, cp_table, cn_table, fn_table, mav_mvf_table) - (mav_mvd_table, mav_mvfx_table, mav_mvdx_table, mav_mvax_table) - (mav_dspsc_table): ... one table per register set. - (arm_reg_hsh): Delete. - (struct reg_map): New structure. - (all_reg_maps): New array. - (enum arm_reg_type): New enums. - (build_reg_hsh): New function. - (insert_reg_alias): Use hash table passed by caller. Adjust all - callers. - (create_register_alias): New function, split out from ... - (md_assemble): ... here. - (md_begin): Build new register hash tables. - (arm_reg_parse): New argument for the hash table to search. Adjust all - callers. - (arm_reg_parse_any): New function. - (co_proc_number): Look up the processor number in the processor hash - table. - (cirrus_regtype): Delete. - (cirrus_register, cirrus_mvf_register, cirrus_mvd_register) - (cirrus_mvfx_register, cirrus_mvdx_register, cirrus_mvax_register) - (ARM_EXT_MAVERICKsc_register): Delete. - (do_c_binops_1, do_c_binops_2, do_c_binops_3): Delete. - (do_c_binops_1[a-o], do_c_binops_2[a-c], do_c_binops_3[a-d]): New - functions. - (do_c_triple_4, do_c_triple_5): Delete. - (do_c_triple_4[ab], do_c_triple_5[a-h]): New functions. - (do_c_quad_6): Delete. - (do_c_quad_6[ab]): New functions. - (do_c_binops, do_c_triple, do_c_quad, do_c_shift, do_c_ldst): Rework - arguments to use new register parsing methods. - (cirrus_reg_required_here): Likewise. - (insns): Reclassify cirrus maverick worker functions. - (cirrus_valid_reg): Delete. - -2002-01-07 Jason Thorpe - - * configure.in (sh*le): Set cpu_type=sh and endian=little. - (sh*-*-netbsdelf*): New target. - * configure: Regenerate. - * tc-sh.h: Update copyright years. - (TARGET_FORMAT): Add version for TE_NetBSD. - -2002-01-07 Nick Clifton - - * read.c (emit_expr): Do not allow 'size' or 'nbytes' to go - negative. - -2002-01-06 Alan Modra - - * config/tc-m68k.h (md_prepare_relax_scan): Rewrite. - * config/tc-m68k.c (md_relax_table): Add md_prepare_relax_scan comment. - -2002-01-05 Daniel Jacobowitz - - * tc-mips.c (mips_cprestore_valid): New flag. - (mips_frame_reg_valid): New flag. - (macro) [M_JAL_2]: Check both flags. - [M_JAL_A]: Likewise. - (s_cprestore): Set mips_cprestore_valid. - (tc_get_register): If setting mips_frame_reg, set - mips_frame_reg_valid and clear mips_cprestore_valid. - (s_mips_ent): Clear both flags. - (s_mips_end): Clear both flags. - -2002-01-05 Alan Modra - - * write.c (write_object_file): Make use of bfd_section_list_remove. - * config/obj-ecoff.c (ecoff_frob_file): Likewise. - * config/tc-mmix.c (mmix_frob_file): Likewise. - -2002-01-04 Jason Thorpe - - * configure.in (i386-*-netbsdelf*): Collapse target into... - (i386-*-netbsd*): ...this. Add support for x86-64. - * configure: Regenerated. - -2002-01-03 matthew green - - * config/tc-ppc.c (md_parse_option): BookE is not Motorola specific. - -2002-01-02 Nick Clifton - - * config/tc-m68k.c (md_estimate_size_before_relax): Test for a - NULL frag link. - -For older changes see ChangeLog-0001 - -Local Variables: -mode: change-log -left-margin: 8 -fill-column: 74 -version-control: never -End: diff --git a/gas/ChangeLog-9295 b/gas/ChangeLog-9295 deleted file mode 100644 index 713573301..000000000 --- a/gas/ChangeLog-9295 +++ /dev/null @@ -1,13117 +0,0 @@ -Sat Dec 30 23:42:51 1995 Jeffrey A Law (law@cygnus.com) - - * ecoff.c (ecoff_stab): Simplify. Correctly handle sym + offset - addresses for static variables. - -Thu Dec 21 12:54:32 1995 Michael Meissner - - * config/tc-ppc.c (mapping): Make @got give a real GOT relocation, - and xgot give the old toc16 relocation. - (md_apply_fix3): Support all GOT relocations. - -Wed Dec 20 14:57:17 1995 Ian Lance Taylor - - * config/tc-mips.c (load_address): Correctly handle a constant in - SVR4_PIC case. From Richard Kenner . - -Fri Dec 15 14:25:07 1995 J.T. Conklin - - * config/tc-sh.c (parse_reg): Recognize SH3 registers. - (get_specific): Handle A_SSR, A_SPC and A_REG_B. - (build_Mbytes): Handle REG_B. - -Fri Dec 15 16:07:25 1995 Ian Lance Taylor - - * ecoff.c (ecoff_build_aux): Use new bfd_big_endian macro. - -Fri Dec 15 12:11:48 1995 Raymond Jou - - * mpw-make.sed: If linking, edit ALL_CFLAGS to CFLAGS. - -Thu Dec 14 15:09:52 1995 Ian Lance Taylor - - * config/obj-coff.c (write_object_file): Set the s_align field to - the number of bytes, rather than to the power of 2. - -Tue Dec 12 12:19:37 1995 Ian Lance Taylor - - * Makefile.in (DISTCLEAN_HERE): New variable. - (distclean): Use it. - (maintainer-clean): Depend upon clean-here rather than clean, - distclean, and clean-info. Run make maintainer-clean in doc. - Remove files listed in DISTCLEAN_HERE. - * doc/Makefile.in (maintainer-clean realclean): Split out from - distclean. Depend upon clean-info and distclean. - -Mon Dec 11 16:23:51 1995 Stan Shebs - - * mac-as.r: Fix copyright and version strings. - (cfrg): Use PROG_NAME instead of literal name. - -Mon Dec 11 14:14:08 1995 Ian Lance Taylor - - * read.c (read_a_source_file): If tc_unrecognized_line is defined, - call it. - * config/tc-a29k.h (tc_unrecognized_line): Define. - * config/tc-a29k.c (a29k_unrecognized_line): New function. - (md_operand): Handle a29k style local dollar labels. - -Wed Dec 6 17:52:52 1995 Ian Lance Taylor - - * config/obj-multi.h: If OBJ_MAYBE_ELF, define OBJ_SYMFIELD_TYPE. - -Tue Dec 5 13:26:34 1995 Ken Raeburn - - * read.c (s_fill): If md_flush_pending_output is defined, call - it. - -Mon Dec 4 15:10:53 1995 Ken Raeburn - - * config/obj-coff.c (size_section, fill_section, fixup_mdeps): - Treat rs_align_code like rs_align. - -Sun Dec 3 16:46:54 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * config/tc-arm.c (cp_address_required_here): Set pre_inc when - converting an absolute address into a PC-relative one. - -Fri Dec 1 11:57:56 1995 Stan Shebs - - * mpw-config.in: Don't always use te-generic.h for emulation. - (powerpc-apple-macos): Use emulation te-macos.h. - * mpw-make.sed (install, install-only): Edit in Mac-specific - install procedure. - -Fri Dec 1 10:59:25 1995 Ian Lance Taylor - - * configure.in: Improve message about unsupported ELF targets. - * configure: Rebuild. - - * config/tc-m88k.c (m88k_do_align): Correct check for whether fill - pattern is zero. From Manfred Hollstein. - -Thu Nov 30 13:25:49 1995 Kim Knuttila - - * config/tc-ppc.c (ppc_pe_section): To get the alignment right for - the various idata sections, we check the name on the .section pseudo. - -Thu Nov 30 11:23:42 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 - - * config/obj-coff.c (fixup_segment): If TC_M88K is defined, do not - add section's paddr to add_number; compatibility to native as and - ld forbids. - -Wed Nov 29 23:14:27 1995 Ken Raeburn - - * configure.in: Treat m68k-sysv4 like m68k-elf, not m68k-sysv3. - - * hash.c (struct hash_entry): Moved here... - * hash.h (struct hash_entry): ...from here. - - * config/obj-elf.c (elf_frob_symbol): Don't free and clear sy_obj - if it's already known to be null. - -Wed Nov 29 13:00:20 1995 Michael Meissner - - * config/tc-ppc.c (md_apply_fix3): Don't adjust the value for 32 - bit relocs converted to PC relative relocs. This turned out to - add the offset from the beginning of .text twice. - -Tue Nov 28 10:42:36 1995 Ken Raeburn - - * stabs.c (s_stab_generic): In 's' case, free string from - obstack. - - * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Remove unused field - sy_name_offset. - * config/obj-multi.h (ELF_TARGET_SYMBOL_FIELDS) [OBJ_MAYBE_ELF]: - Ditto. - - * subsegs.h (segment_info_type): Make bitfields unsigned. - - * expr.h (struct expressionS): Make X_op and X_unsigned bitfields, - and move them together. On most systems this will reduce the - structure size by one word. - (operatorT): Define O_max. - * expr.c (expr_begin): Verify that X_op is wide enough to hold - O_max. - - * read.c (pop_insert): Print error returned by hash table - insertion code. - - * as.c (dump_statistics): Split out from main; dump some hash - table stats and target-specific stats. - (start_time): No longer automatic to main. - (main): Set file-level start_time and call dump_statistics at - exit. Exit by calling xexit. - (show_usage): Make --statistics description less specific. - * subsegs.c (subsegs_print_statistics): New function. - * write.c (write_print_statistics): New function. - (n_fixups): New static variable. - (fix_new_internal): Increment it. - * read.c (read_print_statistics): New function. - * read.h (read_print_statistics): Declare. - * symbols.c (symbol_print_statistics): New function. - * symbols.h (symbol_print_statistics): Declare. - * hash.c (hash_print_statistics): New function. - * hash.h (hash_print_statistics): Declare. - * config/tc-i386.c (i386_print_statistics): New function. - * config/tc-i386.h (i386_print_statistics): Declare. - (tc_print_statistics): New macro. - * messages.c (as_fatal, as_assert, as_abort): Use xexit, not - exit. - - * hash.c (DELETED): Rewrite to use a valid but unique address. - (START_POWER): Reduce to 10. - (enum stat_enum): New enumerator, replacing STAT_* index macros. - Add new values for counting strcmp calls. - (GROW_FACTOR): New macro. - (hash_grow): Use GROW_FACTOR. Rewrite for quick returns instead - of nesting blocks. - (FULL_VALUE): New macro. Use 1/4 of table size instead of 1/2. - (hash_new): Use FULL_VALUE. - (struct hash_control): Definition moved here. - (hash_code): Don't mask to low bits. - (hash_ask): Mask returned hash code here. Check hash value before - calling strcmp; count strcmp calls. - * hash.h (struct hash_control): Declare, don't define, here. - (HASH_STATLENGTH): Deleted. - (struct hash_entry): Add field for hash code. - (hash_say, hash_apply): Don't declare. - - * hash.c (destroy): Return void. - (applicatee): Ditto. - (main): Fix declarations. - (hash_apply): Return void. Argument `function' returns void. Put - inside "#ifdef TEST". - (hash_say): Define only if TEST is defined. - * hash.h (hash_apply, hash_say): Declarations deleted. - -Mon Nov 27 13:18:25 1995 Ian Lance Taylor - - * configure: Rebuild with autoconf 2.7. - -Tue Nov 21 18:39:01 1995 Ian Lance Taylor - - * aclocal.m4 (AC_PROG_CC): Remove local definition. - * configure: Rebuild with autoconf 2.6. - -Mon Nov 20 17:26:00 1995 Ian Lance Taylor - - * config/tc-ppc.c (ppc_debug_name_section_size): Remove. - (ppc_stabx): Don't increment ppc_debug_name_section_size. - (ppc_bc): Likewise. - (ppc_frob_file): Remove. - * config/tc-ppc.h (tc_frob_file): Don't define. - (ppc_frob_file): Don't declare. - -Mon Nov 20 13:37:05 1995 Ken Raeburn - - * Makefile.in (TARG_CPU_DEP_alpha): Mention alpha-opcode.h. - * config/alpha-opcode.h: Include one-operand variants of jmp and - jsr. - - * config/te-delt88.h: Renamed from te-delta88.h, to avoid conflict - with te-delta.h in 8.3 file systems. - * configure.in: Adjusted. - -Thu Nov 16 12:49:38 1995 Ian Lance Taylor - - * config/tc-mips.c (s_err): Remove; just use the one in read.c. - - * config/m68k-parse.y (yylex): In MRI mode, '@' can start an octal - number. - * expr.c (operand): Handle MRI suffixes after unadorned 0. - -Thu Nov 16 00:21:44 1995 Ken Raeburn - - Version 2.6 released. - * Makefile.in (VERSION): Updated to 2.6. - - * config/obj-coff.c (write_object_file): Change use of md_do_align - to pass a pointer rather than a fill value, to match other uses. - -Wed Nov 15 03:52:00 1995 Ken Raeburn - - * config/tc-ns32k.h (TC_FIX_TYPE): Add missing semicolon. - - * as.c (main): Move md_end call to just after call to - perform_an_assembly_pass. Delete cpu-specific code here. - * config/tc-i960.h (md_end): New macro, calls brtab_emit. - * config/tc-arm.c (md_end): Unused function deleted. - * config/tc-ns32k.c (md_end): Ditto. - - * config/tc-i386.c (i386_align_code): New function, moved here - from HANDLE_ALIGN macro. - * config/tc-i386.h (HANDLE_ALIGN): Call it. - - Mon Jul 31 14:53:19 1995 Alan Modra - - * config/tc-i386.h (md_do_align): cast fill and 0x90 to char - before comparing - - Mon May 1 10:91:49 1995 Alan Modra - - * config/tc-i386.h (md_do_align): Make ".align n,0x90" generate - multi-byte nops to avoid changing gcc. The necessary gcc change - might break old assemblers. - - Sat Apr 22 20:53:05 1995 Alan Modra - - * config/tc-i386.h (md_do_align, HANDLE_ALIGN): Add macros to - generate optimal multi-byte nop instructions for ".align n" - ".align n,0x90", and aligns requiring more than 15 bytes of - padding still generate multiple 0x90's as before. - -Mon Nov 13 17:40:21 1995 Ian Lance Taylor - - * config/tc-m68k.c (s_mri_until): Call pop_mri_control. - -Mon Nov 13 20:39:06 1995 Stan Shebs - - * configure.in (ppc-*-macos*, ppc-*-mpw*): New configurations. - * configure: Update. - * mpw-make.sed: Reorder commands to make sed happier. - * config/te-macos.h: New file. - * config/tc-ppc.h (TARGET_FORMAT): Set correctly for PowerMac. - -Sun Nov 12 21:14:56 1995 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Fix off-by-2 bug in length check for - conditional branches. - (md_apply_fix): Likewise. - -Thu Nov 9 16:14:01 1995 Ian Lance Taylor - - * config/tc-a29k.c (md_apply_fix): Warn if an attempt is made to - generate a reloc which the linker will not handle correctly. Fix - overflow checking--R_IREL is 18 bits, not 17. - -Wed Nov 8 19:59:36 1995 Ian Lance Taylor - - * config/obj-coff.c (fixup_segment): Don't subtract md_pcrel_from - from a PC relative reloc if TC_A29K. - - * config/tc-a29k.c (line_separator_chars): Restore '@'. Existing - code depends upon it. - - * config/tc-a29k.c (md_operand): Handle $float, $double, and - $extend. Based on code from Eric Freudenthal - . - * config/tc-a29k.h (LEX_DOLLAR): Define. - * read.c (LEX_DOLLAR): Define if not defined. - (lex_type): Use LEX_DOLLAR. - -Wed Nov 8 16:38:14 1995 Eric Freudenthal - - * configure.in (a29k-nyu-sym1): New target, just like other a29k - targets. - -Wed Nov 8 11:38:48 1995 Ian Lance Taylor - - * config/obj-coff.c (c_dot_file_symbol): Cast xmalloc return. - -Tue Nov 7 09:14:35 1995 Kim Knuttila - - * config/tc-ppc.c (md_apply_fix3): Added BFD_RELOC_RVA. Currently - used only by "dlltool.c". - -Mon Nov 6 18:51:26 1995 Ian Lance Taylor - - * config/tc-alpha.c: Undefine inline if not __GNUC__. - (md_pseudo_table): Don't define "extern". - -Sat Nov 4 00:51:21 1995 Ian Lance Taylor - - * config/tc-ppc.c (ppc_biei): Force symbol into text_section. - - * config/tc-ppc.c (md_show_usage): Put backslash at end of line. - -Fri Nov 3 13:02:59 1995 Ian Lance Taylor - - * macro.c (macro_expand_body): Don't warn about == with a - nonexistent parameter, in case it is in a comment field. - - * as.c (main): On TC_A29K, call macro_init with macro_alternate - set to 1. - * macro.c (get_any_string): Don't keep quotes if macro_strip_at is - set, even if macro_alternate is set. - (get_apost_token): If macro_strip_at, only skip kind if it is '@'. - (sub_actual): If macro_strip_at, and kind is '@', don't look up - the token unless it ended in '@'. - * config/tc-a29k.c (line_separator_chars): Remove '@'. - * doc/c-a29k.texi: Document macro usage on A29K. - -Thu Nov 2 23:07:57 1995 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Handle new 'W' place, meaning a - signed word. - (install_operand): Likewise. - - * config/obj-elf.c (ecoff_debug_pseudo_table): Add "extern". - -Wed Nov 1 15:17:02 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 - - * configure.in (m88k-motorola-sysv*): New target. - * configure: Rebuild. - * config/te-delta88.h: New file. - * config/obj-coff.c (write_object_file): Use md_do_align if it is - defined. - * config/tc-m88k.h (SUB_SEGMENT_ALIGN): Define. - (md_do_align): Define. - * config/tc-m88k.c: Include "subsegs.h". - (m88k_do_align): New function. - - * config/te-delta.h (STRIP_UNDERSCORE): Don't define. - (COFF_NOLOAD_PROBLEM): Define. - (LOCAL_LABELS_DOLLAR, LOCAL_LABELS_FB): Define. - -Wed Nov 1 16:07:43 1995 Ken Raeburn - - * config/tc-i386.c (md_assemble): For a jump instruction with - non-constant target, require 7 available bytes in the current - frag, not 6. - -Tue Oct 31 15:37:16 1995 Fred Fish - - * config/obj-elf.h: Include bfd/elf-bfd.h rather than - bfd/libelf.h. - -Tue Oct 31 16:34:28 1995 David Mosberger-Tang - - * configure.in (alpha-*-linux*): Use ecoff. - * configure: Rebuild. - * ecoff.c (ecoff_directive_extern): New function. - (ecoff_directive_weakext): New function. - (ecoff_build_symbols): Handle weak symbols. - (ecoff_setup_ext): Likewise. - (ecoff_frob_symbol): Warn about weak common symbols. - * ecoff.h (ecoff_directive_extern): Declare. - (ecoff_directive_weakext): Declare. - * symbols.c (S_IS_WEAK): New function. - * symbols.h (S_IS_WEAK): Declare. - * config/obj-ecoff.c (obj_pseudo_table): Add "extern" and - "weakext". - * config/tc-mips.c (mips_pseudo_table): Remove "extern". - (s_extern): Remove. - -Tue Oct 31 13:29:08 1995 Ian Lance Taylor - - * config/tc-ppc.c (ppc_lglobl): Do the right thing. - - * config/tc-ppc.c (ppc_bb): Call SF_SET_PROCESS. - (ppc_eb): Likewise. Set the storage class to C_BLOCK, not C_FCN. - (ppc_frob_symbol): Don't change C_BLOCK symbols to C_HIDEXT. - * config/obj-coff.c (coff_frob_symbol): Don't call - SA_SET_SYM_ENDNDX with the current symbol; call it with the next - one. If OBJ_XCOFF, try to figure out whether the symbol is going - to be dropped. - - * config/tc-ppc.c (md_pseudo_table): Add "bc" and "ec". - (ppc_stab_symbol): New static variable. - (ppc_change_csect): Check that ppc_toc_csect is not NULL. - (ppc_stabx): Set ppc_stab_symbol around call to symbol_make. Set - sy_tc.real_name to the stab string. - (ppc_bc, ppc_ec): New static functions. - (ppc_canonicalize_symbol_name): If ppc_stab_symbol is set, don't - do anything. - (ppc_symbol_new_hook): If ppc_stab_symbol is set, don't look for a - suffix. - (ppc_frob_symbol): Set BSF_NOT_AT_END for symbols with csect aux - entries. - - * input-scrub.c (input_scrub_push): Reset sb_index. - -Mon Oct 30 17:52:46 1995 Ian Lance Taylor - - * listing.c (listing_newline): Don't create a frag in the absolute - section. - -Sat Oct 28 01:02:05 1995 Ian Lance Taylor - - * config/tc-ppc.c (md_pseudo_table): Add "data" and "text". - (ppc_csect): Move most of the code to ppc_change_csect, and call - it. - (ppc_change_csect): New static function, taken from ppc_csect. - (ppc_section): New static function. - (ppc_saw_abs): New static varable. - (ppc_frob_symbol): Create aux entry for absolute symbols. Warn if - a symbol has no csect. - (ppc_adjust_symtab): New function. - * config/tc-ppc.h (tc_adjust_symtab): Define if OBJ_XCOFF. - (ppc_adjust_symtab): Declare if OBJ_XCOFF. - - * write.c (write_object_file): If tc_adjust_symtab is defined, - call it just before the call to obj_adjust_symtab. - - * symbols.c (symbol_find_or_make): Change name to be const. - * symbols.h (symbol_find_or_make): Update declaration. - -Thu Oct 26 19:18:27 1995 Ken Raeburn - - * doc/as.texinfo (Align): Mention SH. - * doc/c-m68k.texi (M68K-Directives, .even): Describe behavior, not - .align value. - * doc/c-z8k.texi (Z8000 Directives, global): Fix minor typo. - (Z8000 Directives, even): Don't give numeric align value, instead - explain behavior. - -Thu Oct 26 11:45:03 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * config/tc-arm.c (do_ldst): Assemble ldr/str r0, [r1] as a - pre-increment instruction. - -Wed Oct 25 11:59:24 1995 Per Bothner - - * Makefile.in (diststuff): Also make info. - (maintainer-clean realclean): Also make clean-info. - -Tue Oct 24 15:21:33 1995 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_pseudo_table): Add new ".nsubspa" opcode. - (pa_subspace): For ".nsubspa", always create a new subspace - with the given attributes, even if one already exists with the - same name. - -Tue Oct 24 14:50:38 1995 Michael Meissner - - * config/tc-ppc.h (TC_FORCE_RELOCATION_SECTION): Rename from - TC_FORCE_RELOCATION, taking an additional section argument. If - the section of the target symbol is not the same as the current - section, always force the relocation to be used. - (MD_PCREL_FROM_SECTION): New macro to call md_pcrel_from_section. - - * config/tc-ppc.c (md_pcrel_from_section): Rename from the - md_pcrel_from function, taking an additional section argument. - Invoke TC_FORCE_RELOCATION_SECTION instead of TC_FORCE_RELOCATION. - - * write.c (TC_FORCE_RELOCATION_SECTION): Define in terms of the - older TC_FORCE_RELOCATION if not defined. - (MD_PCREL_FROM_SECTION): If not defined, invoke md_pcrel_from. - (fixup_segment): Use MD_PCREL_FROM_SECTION instead of - md_pcrel_from, and TC_FORCE_RELOCATION_SECTION instead of - TC_FORCE_RELOCATION. - -Mon Oct 23 16:20:04 1995 Ken Raeburn - - * input-scrub.c (as_where): Set name to null pointer if we don't - have a file name. - * messages.c (identify): Only print filename if non-null. - (as_show_where): Ditto, for line number too. - (as_warn_internal, as_bad_internal): Ditto. - - * input-file.c (input_file_open): If the input file can't be - opened, consider it an error. - -Mon Oct 23 11:15:44 1995 James G. Smith - - * config/tc-mips.c: Added mips_4100 control, and support for - accepting the 4100 as a MIPS architecture variant (md_begin, - macro_build, mips_ip, md_parse_option). Adding suitable - command-line OPTIONs, and updating the help text (md_show_usage). - -Wed Oct 18 13:20:32 1995 Ken Raeburn - - * subsegs.c (subseg_begin): Only set absolute_frchain.fix_* when - BFD_ASSEMBLER is defined. - - * Use one active frag and one obstack per frag chain: - * frags.c (frags): Variable deleted. - (frag_alloc): New function. - (frag_grow, frag_more, frag_variant, frag_now_fix, - frag_append_1_char): Refer to frchain_now->frch_obstack instead of - frags variable. - (frag_new): Ditto. Verify that frch_last and frag_now match on - entry and exit, and that old frag_now has non-zero type. Replace - "know" uses with "assert". Use frag_alloc instead of mucking with - obstack alignment. - * frags.h (frags): Declaration deleted. - * subsegs.h (struct frchain): Add new field frch_frag_now. - * subsegs.c (frchains, dummy_frag, absolute_frchain): New static - variables. - (subsegs_begin): Initialize frchains obstack. Under gcc, don't - give it any stricter alignment than frchainS structures need. Do - not initialize frags obstack. Set frag_now to point to - dummy_obstack. Initialize absolute_frchain. - (subseg_set_rest): Save and restore frag_now in frch_frag_now - field of frchainS. Don't create new frags on section switch, and - use frag_alloc when creating a new frag chain. For absolute - section, set frchain_now to absolute_frchain. Verify that - frch_last and frag_now match on entry and exit. Initialize - per-chain obstack, and under gcc, set required alignment to that - needed by fragS structure. - - * write.c (chain_frchains_together_1): Verify fr_type is nonzero. - - * stabs.c (get_stab_string_offset): Only copy input string if a - fresh copy is needed, not if the section already exists. - (s_stab_generic): Cache stab section name to bypass lookups, since - usually it will match. Could be made faster still by changing the - memory allocation rules. - (s_xstab): Cache section name to bypass repeated string - allocation. - - * frags.c (frag_new): Deleted register declarations. - - * listing.c (frag_now): Don't declare. - - * as.c (chunksize): New variable. - (debug_memory): New variable. - (main): If debug_memory is set, reduce chunksize and - _bfd_chunksize. - * as.h (chunksize): Declare it. - * read.c (read_begin): Use it. - - * config/tc-alpha.c (md_shortopts): Include 'g'. - (md_parse_option): Ignore it. - - * Makefile.in (distclean): Remove Makefile and config.status from - testsuite directory. - (clean-here): Don't delete testsuite. Instead, delete only the - files within it that would be generated by running tests. - - * config/tc-hppa.c (hppa_elf_mark_end_of_function): Call - frag_now_fix instead of accessing obstack info directly. - * config/tc-arm.c (s_ltorg): Ditto. - (md_assemble): Ditto. - - * config/tc-i386.c (md_assemble): Call frag_grow instead of - obstack_room. - -Wed Oct 18 12:22:59 1995 Ken Raeburn - - * stabs.c (aout_process_stab): Insert debug symbol into symbol - chain after parsing value expression, if any, to avoid separating - continued .stabs lines. - -Mon Oct 16 10:56:41 1995 Ian Lance Taylor - - * config/tc-mips.c (mips_elf_pseudo_table): Remove. - (mips_pop_insert): Don't call pop_insert on mips_elf_pseudo_table. - -Mon Oct 16 07:07:37 1995 Michael Meissner - - * config/tc-ppc.c (md_begin): Use new flags PPC_OPCODE_COMMON for - -mcom support and PPC_OPCODE_ANY for -many. - (md_parse_option): Ditto. - (ppc_arch): Ditto. - (md_begin): For duplicate instructions, print all duplicates - before aborting. - -Sun Oct 15 22:06:14 1995 Michael Meissner - - * config/tc-ppc.c (md_parse_option): Support for -mcom to turn on - common mode operation. - (md_show_usage): Add -mcom to usage message. - -Fri Oct 13 13:32:45 1995 steve chamberlain - - * expr.c (op_rank): Add O_symbol_rva. - * expr.h (operatorT): Add O_symbol_rva. - * read.c (cons_worker): Set O_symbol_rva when necessary. - * write.c (fix_new_exp): Understand O_symbol_rva. - -Tue Oct 10 11:34:14 1995 Ian Lance Taylor - - * config/tc-mips.c: Correct s_cons arguments. From Michael - Joosten . - -Mon Oct 9 19:59:53 1995 Ian Lance Taylor - - * config/tc-ppc.c (ppc_macro): Make count unsigned. - (ppc_biei): Set segment to now_seg and value to coff_n_line_nos. - (ppc_frob_symbol): Handle C_BINCL and C_EINCL symbols by setting - the fix_line field. - * config/obj-coff.c (coff_n_line_nos): Rename from n_line_nos, and - make non-static. Change all users. - * config/obj-coff.h (coff_n_line_nos): Declare. - -Fri Oct 6 16:24:27 1995 Ken Raeburn - - Mon Sep 25 22:49:32 1995 Andreas Schwab - - * configure.in (AC_ARG_WITH(bfd-assembler)): Fix help message. - - * config/obj-elf.c (obj_elf_common): Convert specified byte - alignment to power of two. Set size of local bss symbol. - - * config/tc-m68k.c (tc_gen_reloc): Fix typo in variable name. - -Fri Oct 6 15:22:25 1995 Ian Lance Taylor - - * sb.c, macro.c: Decide whether to include or - just as as.h does. - -Fri Oct 6 09:55:33 1995 Doug Evans - - * Makefile.in (site.exp): Fix setting of $srcdir. - - * config/tc-arm.c (md_atof): Fix little-endian output. - * config/tc-arm.h (ARM_BI_ENDIAN): Move definition so defined for - all coff targets. - -Thu Oct 5 20:17:30 1995 Ken Raeburn - - * doc/as.texinfo: Split out the NS32k family documentation, - despite its being commented out for now. - * doc/c-ns32k.texi: New file. - - * sb.c, macro.c: Include string.h. - - * Makefile.in (comparison): Only check *.o; we don't care if - timestamps inserted by the native linker differ. - - * config/tc-alpha.c (alpha_align): Only fill with a no-op pattern - if alignment stricter than 4 bytes is requested; in that case, - align to a 4-byte boundary first. - - Thu Sep 28 19:35:27 1995 Pat Rankin - - * config/obj-vms.c (VMS_RSYM_Parse): eliminate "might be used - uninitialized" warning for `Max_Source_Offset'. - -Wed Oct 4 16:17:02 1995 Kim Knuttila - - * config/tc-ppc.c (parse_toc_entry): New function to parse [toc] - qualifiers and detect errors if present. - (md_assemble): Add call to parse_toc_entry. Also added some support - for the [tocv] qualifier. - (ppc_pe_tocd): New function to support data in the toc section. - -Wed Oct 4 14:03:39 1995 Ian Lance Taylor - - * config/tc-ppc.c (ppc_frob_symbol): Don't create an aux entry for - an absolute symbol. - -Tue Oct 3 12:18:19 1995 Ian Lance Taylor - - * config/tc-m68k.c (isword): Accept all values from -65536 to - +65535, so ~VAL will not be rejected. - - * cond.c (s_endif): Call demand_empty_rest_of_line. In MRI mode, - skip characters after the pseudo-op. - (s_else): Likewise. - * read.c (get_line_sb): Don't look past buffer_limit. - (s_include): In MRI mode, skip characters after the file name. - -Mon Oct 2 16:15:27 1995 Ian Lance Taylor - - * config/m68k-parse.y (m68k_reg_parse): In MRI mode, permit - periods in register names. - -Sat Sep 30 23:03:31 1995 Jeff Law (law@hurl.cygnus.com) - - * config/tc-hppa.c (hppa_fix_adjustable): DP relative relocs - are not adjustable in SOM to avoid confusing the optimizing - linker. - -Fri Sep 29 15:18:08 1995 Ian Lance Taylor - - Add some support for i960 MRI compatibility mode. - * config/tc-i960.c (md_pseudo_table): Add endian. - (get_args): Don't discard a space between alphanumeric characters. - (get_cdisp): Change text_section to now_seg. - (s_endian): New static function. - * config/tc-i960.h (MRI_MODE_NEEDS_PSEUDO_DOT): Define. - * expr.h (operatorT): Add O_logical_not, O_logical_and, and - O_logical_or. - * expr.c (operand): Treat '!' as logical not operator. If - TC_I960, in MRI mode permit `sizeof secname' and `startof - secname'. - (op_rank): Bump values by 2 to make room for && and ||. Add - entries for !, &&, and ||. - (expr_begin): Only do MRI changes if TC_M68K. - (operator): Recognize || and &&. - (expr): Handle new operatorT values. - * symbols.c (resolve_symbol_value): Handle new operatorT values. - (print_expr_1): Likewise. - * read.c (potable): Add debug, err, irep, irepc, print, purgem, - and rep. - (read_a_source_file): Handle MRI_MODE_NEEDS_PSEUDO_DOT. - (mri_comment_field): Only handle weird comments if TC_M68K. - (s_err): New function. - (s_org): Only punt in MRI mode if TC_M68K. - (s_mri_sect): Write TC_I960 version. - (s_print, s_purgem): New functions. - * read.h (s_err, s_print, s_purgem): Declare. - * cond.c (s_ifeqs): Implement. - (ignore_input): Handle MRI_MODE_NEEDS_PSEUDO_DOT. - * macro.c (macro_strip_at): New static variable. - (macro_init): Add strip_at parameter. - (do_formals): If macro_strip_at, change NARG to $NARG. - (define_macro): Skip a comma after the macro name. - (get_apost_token): Skip character if macro_strip_at, even if - macro_mri. - (macro_expand_body): If macro_strip_at, don't recognize parameters - in strings unless they are preceded by an '@'. If macro_strip_at, - pass '@' as strip character to sub_actual. If macro_strip_at, - strip '@' characters. - (macro_expand): If macro_strip_at, change NARG to $NARG. - (delete_macro): New function. - (expand_irp): Skip leading and trailing '"' characters if irpc. - * macro.h (macro_init): Mention new strip_at parameter. - (delete_macro): Declare. - * as.c (main): If TC_I960, pass flag_mri to macro_init as - strip_at; otherwise, pass 0. - * gasp.c (process_pseudo_op): Pass 0 to macro_init as strip_at. - (main): Likewise. - * doc/as.texinfo: Document i960 MRI mode. - - * as.c (show_usage): Mention --defsym. - -Thu Sep 28 19:25:04 1995 Stan Shebs - - * mpw-config.in: Translate "powerpc" into "ppc", remove gen of - VERSION, move gen of "conf" here from makefile. - * mpw-make.sed: New file, sed commands to translate Unix makefile - into MPW syntax. - * mpw-make.in: Remove. - * mac-as.r: New file, Mac resource file. - * as.h (inline): Don't decide about defining if __MWERKS__, - remove redundant conditional and definition. - - * stabs.c (s_stab_generic): Fix syntax for OBJ_PROCESS_STAB. - -Thu Sep 28 15:43:15 1995 Kim Knuttila - - * config/tc-ppc.c (md_apply_fix3): Removed some TE_PE specific - manipulations, since I can't prove they're needed. - (md_begin): Removed init_regtable, insert_reg, and the call points. - (register_name): New function. Parses a register name, if appropriate. - (md_assemble): Added call to register_name to handle symbolic names. - (ppc_pe_section): Removed all duplicate IMAGE defines, and include - coff/pe.h instead. - -Thu Sep 28 12:09:19 1995 Ian Lance Taylor - - * config/tc-ppc.h (tc_fix_adjustable): Define. - (ppc_pe_fix_adjustable): Declare. - * config/tc-ppc.c (ppc_pe_fix_adjustable): New function. - -Thu Sep 28 01:11:58 1995 Doug Evans - - * config/tc-arm.h (TARGET_FORMAT): Define for arm-coff. - -Wed Sep 27 12:53:58 1995 Ian Lance Taylor - - * symbols.c (S_IS_LOCAL): All symbols in reg_section are local. - - * config/tc-ppc.h (OBJ_XCOFF): Define if OBJ_COFF and not TE_PE. - Change OBJ_COFF checks to check OBJ_XCOFF instead. - (TARGET_FORMAT): Fully parenthesize. - (LEX_QM): Define if TE_PE. - * config/tc-ppc.c: Replace OBJ_COFF by OBJ_XCOFF throughout. - Remove checks of TE_PE within #ifdef OBJ_XCOFF sections. - (init_regtable): Make i unsigned. - (ppc_set_current_section): Rename from setCurrentSection. Change - all callers. - (ppc_arch): Return after as_fatal to avoid gcc warning. - (md_assemble): Only declare reloc if OBJ_ELF. Add default to - switch on fixups[i].reloc to avoid gcc warning. - (IMAGE_SGN_LNK_OTHER): Fix nested comment. - (ppc_pe_function): Don't call ppc_canonicalize_symbol_name. - (ppc_frob_symbol): Remove TE_PE section checks. - (md_estimate_size_before_relax): Return after abort to avoid gcc - warning. - (md_apply_fix3): Add BFD_RELOC_16_GOT_PCREL to switch. - * read.c (LEX_QM): Define as 0 if not defined. - (lex_type): Use LEX_QM for '?'. - - * configure.in: No need to check whether ${cpu_type} is powerpc; - it never will be. - * configure: Rebuild. - -Wed Sep 27 11:33:38 1995 Michael Meissner - - * config/tc-ppc.c (md_apply_fix3): Remove Sep 26 changes to this - function, keeping other Sep. 26 changes. - -Wed Sep 27 10:29:13 1995 Kim Knuttila - - * configure (emulations): Added support for ppcle-*-[pe|winnt] - (target_frag): Removed an extraneous PPC definition. - * configure.in (emulations): Same - * config/tc-ppc.h: - * config/tc-ppc.c (md_pseudo_table): Base support for new or altered - pseudo ops - There will be more. - (pre_defined_registers): Predefined reg table to name registers, etc - (md_begin): Setup reg table initialization - (md_assemble): Initial [toc]x(rtoc) support - (ppc_frob_label): Removed some xcoff specific processing from TE_PE - (ppc_frob_symbol): Removed some xcoff specific processing from TE_PE - Added support for more predefined sections - (ppc_frob_section): Removed some xcoff specific processing from TE_PE - (ppc_fix_adjustable): Removed from TE_PE mainline - (md_apply_fix3): For TE_PE toc entries, we don't need to mess - with fx_addnumber. Removed for the time being. - (lots): Put back missing assignments to ppc_current_csect. - -Tue Sep 26 14:57:59 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Support all of the V.4 - relocations. - (ppc_elf_cons): Remove restriction that @ suffixes must be done - with .long. Add error if relocation does not fit in the number of - bytes provided. - (md_assemble): For absolute branches, map PC relative relocations - back into an equivalent absolute relocation. - (md_pcrel_from): If TC_FORCE_RELOCATION is true, relocation offset - is 0, not segment start. - (md_apply_fix3): Don't bother writing addend into the instruction, - since it is ignored, given that we use RELA relocations for ELF. - - * config/tc-ppc.h (TC_FORCE_RELOCATION): Define to force all - branch prediction relocations to always be emitted. - -Mon Sep 25 16:08:43 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Lower case reloc before - testing. - (md_assemble): Be more robust in terms of relocations. - (md_apply_fix3): Allow 14 bit relocs to be emitted for external - symbols in addition to 26 bit relocs. Properly insert 26/14 bit - reloc value fields into the instruction stream. - -Mon Sep 25 00:23:16 1995 Ian Lance Taylor - - * config/tc-arm.c (md_atof): Output little endian constants in - little endian mode. - - * config/obj-coff.c (obj_coff_section): Pass &type, not type, - s_mri_sect. - - * configure.in: Fix typo: fmt-elf to fmt=elf. - -Fri Sep 22 16:34:46 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Rewrite to use a table of - strings and relocations they represent. Add @br{,n}taken for - branch taken/not taken support. - (md_apply_fix3): Add BFD_RELOC_PPC_B16_BR{,N}TAKEN support. - -Thu Sep 21 21:10:17 1995 Michael Meissner - - * config/tc-ppc.c (md_parse_option): -mrelocatable-lib now only - sets EF_PPC_RELOCATABLE_LIB and not also EF_PPC_RELOCATABLE. - -Thu Sep 21 16:30:56 1995 Ian Lance Taylor - - * subsegs.c (subseg_set): Permit SEG_ABSOLUTE in know expression. - * expr.c (expr): Account for new operatorT values in know - expression. - - * write.c (fixup_segment): Clear fixp->fx_subsy if the relocation - is fully resolved. - -Thu Sep 21 14:11:49 1995 Michael Meissner - - * config/tc-ppc.c (ppc_flags): New variable to hold the flag bits - to set in the ELF header. - (md_parse_option): Add support for -mrelocatable-lib. Make both - -mrelocatable and -mrelocatable-lib set ppc_flags. - (md_begin): Set ELF flags with ppc_flags. - -Wed Sep 20 13:01:52 1995 Ian Lance Taylor - - * Makefile.in (maintainer-clean): New target, synonym for - realclean. Add GNU standard maintainer-clean echos. - * doc/Makefile.in (maintainer-clean): New target, synonym for - realclean. - -Tue Sep 19 11:31:31 1995 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Reject immediate operands for '%'. - - * config/tc-m68k.c (m68k_ip): Reject immediate operands for '|'. - Replace 'P' with '0', '1', and '2'. - - * config/tc-m68k.c (parse_mri_control_operand): Change leftstop - and rightstop to not be const. - (parse_mri_control_expression): Likewise. - (build_mri_control_operand): Likewise. Use m68k_ip_op to examine - the operand, not m68k_reg_parse. - (s_mri_if): In MRI mode, stop at the first '*'. - (s_mri_while): Likewise. - (s_mri_else): In MRI mode, ignore trailing characters. - (s_mri_endi, s_mri_break, s_mri_next, s_mri_for): Likewise. - (s_mri_endf, s_mri_repeat, s_mri_until, s_mri_endw): Likewise. - * config/m68k-parse.y: Revert yesterday's change. - * config/m68k-parse.h: Revert yesterday's change. - -Mon Sep 18 15:22:28 1995 Ian Lance Taylor - - * config/tc-m68k.c (parse_mri_control_operand): Change leftstart - and rightstart to not be const. - (parse_mri_control_expression): Likewise. - (build_mri_control_operand): Likewise. If the left side of the - comparison is a register, and the right side is not, swap the two - sides. - * config/m68k-parse.y (m68k_reg_parse): Make globally visible. - * config/m68k-parse.h (m68k_reg_parse): Declare. - - * read.c (mri_comment_field): New function. - (mri_comment_end): New function. - (s_align_bytes): Use mri_comment_field. - (s_align_ptwo, s_comm, s_mri_common, s_fail, s_globl): Likewise. - (s_float_space, s_struct): Likewise. - (s_space): Use mri_comment_field rather than doing it by hand. - (cons_worker, equals): Likewise. - (s_end): Ignore comments starting with '*' or '!'. - * read.h (mri_comment_field): Declare. - (mri_comment_end): Declare. - * cond.c (s_if): Use mri_comment_field. - * config/tc-m68k.c (s_chip, s_reg): Likewise. - - * write.c (fixup_segment): Handle ABS-sym in -sym case rather than - sym-sym case. - * config/obj-coff.c (fixup_segment): Likewise. Permit negative - symbols if TC_M68K. - * config/tc-m68k.c (tc_coff_fix2rtype): If fx_tcbit is set, return - R_RELLONG_NEG. - (tc_gen_reloc): If fx_tcbit is set, abort. - (md_apply_fix_2): For a negative reloc, move fx_subsy to fx_addsy, - and set fx_tcbit. - - * config/tc-m68k.c (s_reg): Ignore comment field in MRI mode. - -Mon Sep 18 14:44:04 1995 Arne H. Juul - - * configure.in (mips-dec-netbsd*): New target. - * configure: Rebuild. - -Sun Sep 17 22:17:43 1995 Ian Lance Taylor - - * configure.in: Set endian to little for mips-*-ultrix*. - * configure: Rebuild. - -Fri Sep 15 13:16:55 1995 Ian Lance Taylor - - * expr.c (current_location): New static function. Handle magic - symbol `.'; in absolute section, return a constant. - (operand): Call current_location for '.' and '$', instead of doing - it inline. In MRI mode, call current_location for '*'. - -Fri Sep 15 21:39:29 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-m68k.c: Change some "CONST" references to "const". - -Fri Sep 15 17:27:41 1995 Ken Raeburn - - Tue Sep 12 17:08:23 1995 Pat Rankin - - * config/obj-vms.c (VMS_stab_parse): simplify first loop; - use S_GET_NAME/modify/S_SET_NAME sequence instead of abusing - S_GET_NAME when updating symbol name. - (local_symbols_DST): first prefix/postfix typo from July 21st. - [plus comment reformatting --kr] - -Wed Sep 13 12:33:03 1995 Ian Lance Taylor - - * Makefile.in (EXPECT): New variable. - (CHECKFLAGS): Remove. - (site.exp): New target. - (check): Rewrite to invoke runtest directly, rather than recurring - down into testsuite. - (clean-here): Remove testsuite directory. - (clean, distclean): Don't recur into testsuite. - * configure.in: Don't call AC_CONFIG_SUBDIRS(testsuite). - * configure: Rebuild. - - * write.c (relax_and_size_seg): Change to the segment we are - relaxing, in case md_convert_frag, called by cvt_frag_to_fill, - wants to call fix_new. - * config/tc-m68k.c (m68k_ip): Permit PC relative code if the - segment of the symbol is the current segment, not just in - text_section. - (md_convert_frag_1): Don't call subseg_change. - (md_estimate_size_before_relax): Likewise. - -Tue Sep 12 10:36:40 1995 Doug Evans - - * config/tc-arm.c (md_atof): Fix debugging printf, and leave it - out by default. - -Mon Sep 11 11:39:11 1995 Ian Lance Taylor - - * doc/configure.in: Remove unused file. - - * app.c (do_scrub_chars): Grab all available spaces at start of - line before preserving a single space. Remove state == 0 test - which will never succeed. - * macro.c (macro_expand_body): Delete local variables from the - formal hash table. - (macro_expand): In MRI mode, stop when whitespace is seen in the - argument list. - - * sb.c: Include "libiberty.h". - * macro.c: Likewise. Also include if it exists. - -Fri Sep 8 00:27:46 1995 Ian Lance Taylor - - * app.c (do_scrub_chars): In MRI mode, keep a space before a - possible comment character. - * config/tc-m68k.c (m68k_ip): In MRI mode, ignore anything after - an instruction which takes no operands. - - * Makefile.in (install): Don't install gasp in $(tooldir). - - * config/tc-mips.c (macro): Handle a non zero base register for - M_U{L,S}{D,W,H}_A. - - * gasp.c (show_usage): Put program_name argument in first fprintf, - not second. - -Thu Sep 7 12:33:58 1995 Ian Lance Taylor - - * expr.c (operand): Handle 08 and 09 in MRI mode. - * macro.c (ISSEP): Remove duplicated `"' character. - (get_any_string): Copy some characters for which ISSEP is true: - ';', '>', '(', ')'. Otherwise we can get in an infinite loop. - * read.c (s_space): In MRI mode, the expressions stop at the first - unquoted space. - (cons_worker): In MRI mode, restore the terminating character at - the end of the function. - - * read.c (cons_worker): Don't use #elif; old compilers don't - support it. - -Wed Sep 6 21:13:06 1995 Ian Lance Taylor - - * app.c (do_scrub_chars): In MRI mode, silently end quoted strings - at newline characters. In MRI mode, always keep spaces in the - operands field. In MRI mode, treat a line comment character as a - regular comment character following a space. - * cond.c (ignore_input): Use strncasecmp rather than strncmp when - looking for special pseudo-ops. - * read.c (cons_worker): In MRI mode, the expressions stop at the - first unquoted space. - (equals): Likewise. - -Wed Sep 6 15:03:53 1995 Jim Wilson - - * config/tc-sh.c (get_operands): Read third arg if it exists. - Otherwise, clear it. - (get_specific, case F_FR0): Add. - -Wed Sep 6 15:03:53 1995 Jim Wilson - - * config/tc-sh.c (get_specific): Delete arg_to_test. - (md_assemble): Increase operand array from 2 to 3. - -Tue Sep 5 16:47:36 1995 Stan Shebs - - * config/tc-mips.c: Remove CYGNUS LOCAL comments. - (md_begin): Use 0/1 instead of TRUE/FALSE. - (md_show_usage): Break up long format string for the benefit - of lame compilers. - * config/tc-m68k.c (md_show_usage): Ditto. - * gasp.c (show_usage): Ditto. - * macro.c (check_macro): Cast result of hash_find. - -Tue Sep 5 14:46:38 1995 Ken Raeburn - - * configure.in: When testing for a free() declaration in system - header files, cast the address to a function pointer, not to an - integer. - - * write.c (fix_new_internal): Call TC_INIT_FIX_DATA if TC_FIX_TYPE - is defined. Don't initialize fx_bsr. Verify that fx_size field - is wide enough to hold stored value. - * write.h (struct fix): Change tc_fix_data to type TC_FIX_TYPE if - that is defined, otherwise omit it. Delete fx_bsr. Change - fx_size to unsigned char. - * config/tc-i960.h (TC_FIX_TYPE, fx_bsr, TC_INIT_FIX_DATA): New - macros. - * config/tc-ns32k.h (TC_FIX_TYPE, fx_bsr, TC_INIT_FIX_DATA): New - macros. - * config/tc-hppa.h (TC_FIX_TYPE): Define as PTR. - - * config/tc-i860.c (md_apply_fix): Delete code for checking - fx_im_disp, and for handling non-zero values, since it never gets - set after being initialized to zero. - - * write.h (struct fix): Make fx_im_disp always 2 bits, since the - only tc-* files actually using it need that much. - - NS32K changes from Ian Dall: - * configure.in: Treat ns32k-pc532-ux* like ns32k-pc532-mach*, and - ns32k-pc532-lites* like ns32k-pc532-netbsd*. - * config/tc-ns32k.h (LOCAL_LABELS_FB): Define to 1. - -Fri Sep 1 17:02:15 1995 steve chamberlain - - * write.c (fixup_segment): Get TC_FORCE_RELOCATION up the - right way! - -Fri Sep 1 08:20:19 1995 James G. Smith - - * config/tc-mips.c (md_parse_option, md_begin, md_show_usage): - Add support for "-mcpu=vr4300" as processor identifier. - -Thu Aug 31 16:41:06 1995 steve chamberlain - - * write.c (fixup_segment): Remove change of 29th. - * config/tc-{i386,arm}.h (TC_FORCE_RELOCATION): Keep RVA relocs. - -Tue Aug 29 19:42:58 1995 Andreas Schwab - - * config/tc-m68k.c (m68k_ip) [case POST/PRE/BASE]: Fix typo when - looking at outer displacement. Don't set the postindex bit if the - index suppress bit is set (for memory indirect addressing mode). - -Thu Aug 31 06:49:37 1995 Doug Evans - - * config/tc-arm.c (tc_gen_reloc): Delete duplicated code. - -Wed Aug 30 23:51:57 1995 Ian Lance Taylor - - * app.c (do_scrub_chars): Free saved_input when the from buffer - exactly fills the to buffer. - -Wed Aug 30 13:46:39 1995 Doug Evans - - * config/tc-sparc.c (parse_keyword_arg, parse_const_expr_arg): New fns. - (sparc_ip): Call them for asi, membar, and prefetch parsing. - -Tue Aug 29 15:45:37 1995 Doug Evans - - * config/tc-sparc.c (membar_masks): Deleted. - (sparc_ip): Clean up ASI and membar support. - -Tue Aug 29 13:20:27 1995 steve chamberlain - - * read.c (potable): Rva is new entry. - (cons_worker): New, split from cons. Handles rva. - (cons, s_rva): Call cons_worker. - * read.h (s_rva): New declaration. - * write.c (fixup_segment): Don't throw away rva relocs. - * config/tc-arm.c (md_apply_fix, tc_gen_reloc): Handle RVA. - * config/tc-i386.c (tc_coff_fix2type): Handle RVA. - * config/tc-i386.h (TC_COUNT_RELOC): Remember RVAs. - (TC_RVA_RELOC): New definition. - -Sun Aug 27 17:41:05 1995 Doug Evans - - * config/tc-arm.c (do_swi): Allow optional leading '#'. - -Sat Aug 26 17:24:20 1995 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-m68k.c (comment_chars): If TE_DELTA is defined, - include '#'. - * config/tc-m68k.h (NO_PSEUDO_DOT): Define if TE_DELTA is - defined. - - * config/te-delta.h: Include obj-format.h. - * config/te-sco386.h: Likewise. - * config/te-sysv32.h: Likewise. - - * app.c (scrub_file): Remove. - (scrub_from_file, scrub_to_file): Remove. - (scrub_string, scrub_last_string): Remove. - (scrub_from_string, scrub_to_string): Remove. - (saved_input, saved_input_len): New static variables. - (struct app_saved): Remove scrub_string, scrub_last_string, and - scrub_file fields. Add saved_input and saved_input_len fields. - (app_push): Adjust saved fields for changes in struct app_save. - Initialize state and saved_input. - (app_pop): Adjust saved fields for changes in struct app_save. - (do_scrub_chars): Rename from do_scrub_next_char and rewrite to - process a buffer at a time rather than a character at a time. - (main, as_warn): Remove obsolete testing code. - * as.h (do_scrub_next_char): Don't declare. - (do_scrub_chars): Declare. - (scrub_from_file, scrub_from_string): Don't declare. - (scrub_to_file, scrub_to_string): Don't declare. - * input-file.c (input_file_get): New static function. - (input_file_give_next_buffer): Call do_scrub_chars rather than - do_scrub_next_char. - * read.c (scrub_string, scrub_string_end): New static variables. - (scrub_from_string): New static function. - (read_a_source_file): Call do_scrub_chars rather than - do_scrub_next_char. - -Thu Aug 24 18:50:19 1995 Ian Lance Taylor (ian@cygnus.com) - - * gasp.c (as_abort): New function. - * sb.c (sb_build): Revert yesterday's patch. - - * Makefile.in (gasp.new): Depend upon ../libiberty/libiberty.a. - Just link against libiberty, not against $(LIBS). - -Wed Aug 23 15:18:20 1995 Ian Lance Taylor (ian@cygnus.com) - - * sb.c (sb_build): Undefine abort before calling it, since gasp - does not provide as_abort. - -Wed Aug 23 10:40:41 1995 Michael Meissner - - * config/tc-ppc.c (set_target_endian): New static to say whether - we've initialized target_big_endian or not. - (md_parse_option): Set set_target_endian if we set the variable - target_big_endian. - (md_begin): Only set target_big_endian if !set_target_endian. - -Tue Aug 22 03:00:33 1995 Ken Raeburn - - Sat Aug 19 18:08:16 1995 Pat Rankin - - * config/obj-vms.h (DST_S_C_SRC_SETREC_W, DST_S_C_SRC_DEFLINES_B): - New macros. - * config/obj-vms.c (VMS_TBT_Line_PC_Correlation, - VMS_TBT_Source_Lines): Make traceback info be robust enough to - handle huge source files. - (VMS_TBT_Source_File): Reorganize the native- vs cross-assembly - support so that actual object file output is clearer. - (VMS_TBT_Source_File: Fab, Nam, Date_Xab, File_Header_Xab): - Replace static variables with automatic ones. - - Sat Aug 12 20:18:15 1995 Pat Rankin - - * config/obj-vms.c (Module_Name): new file scope variable. - (VMS_TBT_Module_Begin): use it instead of local variable. - (Write_VMS_MHD_Records): ditto; assign its value here. - (Write_VMS_EOM_Record): second argument has type valueT. - (VMS_Initialized_Data_Size): simplify search loop; return - type is offsetT; second argument is unsigned. - - Sat Jun 17 19:05:25 1995 Pat Rankin (rankin@eql.caltech.edu) - - * messages.c (as_perror): Use xstrerror instead of strerror. - -Mon Aug 21 13:57:20 1995 Ian Lance Taylor - - * as.c (parse_args): Accept --defsym SYM=VALUE. - * doc/as.texinfo, doc/as.1: Document --defsym. - - * read.c (read_a_source_file): In MRI mode, don't end the - statement inside a quotation. - (s_space): Don't warn about a zero repeat count in MRI mode. - * config/tc-m68k.c (crack_operand): In MRI mode, don't count - parentheses inside quotes. - (md_assemble): In MRI mode, anything after the operands field is a - comment. - (parse_mri_control_operand): Adjust start and stop to remove - spaces. - (s_mri_for): Likewise. - - * cond.c (s_ifdef): Restore the character after the symbol name, - in case it is a newline. - (s_if): If ignoring the current tree, don't try to parse the - expression. - - * app.c (do_scrub_next_char): If LEX_IS_STRINGQUOTE or - LEX_IS_ONECHAR_QUOTE is seen in state 10, preserve one space. - - * doc/as.texinfo: Document irp, irpc, macro, and rept. MRI mode - now supports macros, ifc, ifnc, irp, irpc, rept, and endr, without - using gasp. - - Add support for macros. - * as.c: Include sb.h and macro.h. - (max_macro_next): New global variable. - (main): Call macro_init. - (macro_expr): New static function. - * as.h (max_macro_nest): Declare. - * read.c (line_label): Rename from mri_line_label. Change all - uses. - (potable): Add exitm, irp, irpc, macro, mexit, rept. - (read_a_source_file): Always clear line_label at the start of a - line, not just when flag_mri or LABELS_WITHOUT_COLONS. Fix - MRI/LABELS_WITHOUT_COLONS handling. In MRI mode, permit label: - equ val. Set line_label when calling colon. In MRI mode, a - leading '.' does not imply a pseudo-op. Check for macro expansion - before calling md_assemble. - (s_irp): New function. - (get_line_sb): New static function. - (s_macro): New function. - (s_mexit): New function. - (s_rept): New function. - * read.h (line_label): Rename from mri_line_label. - (s_irp, s_rept): Declare. - (s_macro, s_mexit): Declare. - * input-scrub.c: Include sb.h. - (sb_index, from_sb): New static variables. - (macro_nest): New static variable. - (struct input_save): Add sb_index and from_sb fields. Change - next_saved_file field to be struct input_save *. - (next_saved_file): Changed to be struct input_save *. - (input_scrub_push): Change to return type struct input_save *. - Save sb_index and from_sb. - (input_scrub_pop): Change parameter type to struct input_save *. - Restore sb_index and from_sb. - (input_scrub_include_sb): New function. - (input_scrub_next_buffer): Handle reading from from_sb. - (bump_line_counters): Only increment lines if not using from_sb. - * config/tc-m68k.c (opt_table): Add nest. - (opt_nest): New static function. - * gasp.c: Include sb.h and macro.h. Move all sb related functions - and definitions to sb.h and sb.c. Move all macro related - functions and definitions to macro.h and macro.c. - * sb.h, sb.c: New files, extracted from gasp.c. - * macro.h, macro.c: Likewise. - * Makefile.in (OBJS): Add sb.o and macro.o - (GASPOBJS): Define. - (gasp.new): Depend upon $(GASPOBJS). Use $(GASPOBJS) to link. - (TARG_CPU_DEP_m68k): Depend upon subsegs.h. - (gasp.o): Depend upon sb.h and macro.h. - (sb.o): New target. - (macro.o): New target. - (as.o): Depend upon sb.h and macro.h. - (input-scrub.o): Depend upon sb.h. - (read.o): Depend upon sb.h and macro.h. - - * cond.c (get_mri_string): New static function. - (s_ifc): New function. - * read.c (potable): Add ifc and ifnc. - * read.h (s_ifc): Declare. - - * app.c (do_scrub_begin): In MRI mode, set lex of ' to - LEX_IS_STRINGQUOTE. - -Mon Aug 21 13:41:33 1995 Michael Meissner - - * config/tc-ppc.c (md_assemble): Allow @HA, @L, and @H suffixes on - constant expressions. - -Sun Aug 20 15:54:37 1995 Jim Wilson - - * config/tc-arm.c (md_reloc_size): Add const to declaration. - -Fri Aug 18 10:58:09 1995 Ian Lance Taylor - - * read.c (s_include): In MRI mode, don't expect quotes around the - file name. - * listing.c (listing_title): Don't require the title to be quoted. - - * gasp.c (include_print_where_line): Always subtract 1 from - linecount before printing it. - (process_file): In MRI mode, lines beginning with '*' or '!' are - comments. - (do_reg): In MRI mode, don't require parentheses. - (do_include): In MRI mode, don't requires quotes. If the file can - not be found in the include path, try opening it in the current - directory. Print the file name correctly in the error message. - (chartype_init): In MRI mode, set FIRSTBIT for '.'. - (main): Set comment_char to ';' when entering MRI mode. - - * config/tc-m68k.c: Include subsegs.h. - (m68k_ip): Pass 64 rather than -1 to add_Fix in 'B' 'B' case. - (md_pcrel_from): If fx_pcrel_adjust is 64, use -1 instead. - - * config/tc-sparc.h (tc_fix_adjustable): For OBJ_AOUT case, adjust - BFD_RELOC_16 and BFD_RELOC_32 relocs. - -Wed Aug 16 14:48:44 1995 Ken Raeburn - - * as.h (alloca): Use void* declaration on HP/UX. - -Wed Aug 16 12:49:17 1995 Ian Lance Taylor - - * config/tc-sparc.c (tc_gen_reloc): If PIC, only change PCREL_S2 - to WPLT30 for an undefined or external symbol. Don't consider - PC10 or PC22 to be a PC relative reloc when choosing between - fx_addnumber and fx_offset. - - * config/tc-z8k.c (md_number_to_chars): Don't do it here, call - number_to_chars_bigendian. - * config/tc-z8k.h (TARGET_BYTES_BIG_ENDIAN): Define. - - * expr.c (operand): Add support for .startof. and .sizeof. by - using magic symbol names which the linker will recognize - specially. - * doc/as.texinfo: Take out note that .startof. and .sizeof. are - not supported. - -Tue Aug 15 15:08:49 1995 Ian Lance Taylor - - * config/tc-m68k.c (md_pseudo_table): Add MRI structured control - directives: if, if.b, if.w, if.l, else, else.s, else.l, endi, - break, break.s, break.l, next, next.s, next.l, for, for.b, for.w, - for.l, endf, repeat, until, until.b, until.w, until.l, while, - while.b, while.w, while.l, endw. - (enum mri_control_type): Define. - (struct mri_control_info): Define. - (mri_control_stack): New static variable. - (mri_control_index): New static variable. - (mri_control_label): New static function. - (push_mri_control, pop_mri_control): New static functions. - (parse_mri_condition): New static function. - (parse_mri_control_operand): New static function. - (swap_mri_condition, reverse_mri_condition): New static functions. - (build_mri_control_operand): New static function. - (parse_mri_control_expression): New static function. - (s_mri_if, s_mri_else, s_mri_endi): New static functions. - (s_mri_break, s_mri_next): New static functions. - (s_mri_for, s_mri_endf): New static functions. - (s_mri_repeat, s_mri_until): New static functions. - (s_mri_while, s_mri_endw): New static functions. - * gasp.c (mrikinfo): Remove IF. - * expr.c (get_symbol_end): Accept \001 as part of a name. - - * symbols.c (colon): Change parameter to const char *. - * symbols.h (colon): Update declaration. - -Mon Aug 14 20:51:56 1995 Ken Raeburn - - * write.c (write_contents): Always do it the BFD_FAST_SECTION_FILL - way. Reformat and reindent that code to GNU standards. - (BFD_FAST_SECTION_FILL): Don't define. - -Mon Aug 14 14:08:07 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Don't try to apply BEGIN_BRTAB - or END_BRTAB fixups. - -Mon Aug 14 15:45:07 1995 Ian Lance Taylor - - * gasp.c (do_align, get_any_string): Mark as static. - (do_assigna, do_assignc, new_file): Likewise. - - * config/tc-m68k.c (s_reg): Rename local op to rop to avoid - confusion with macro op. - - * gasp.c (strip_comments): Comment out; it's not used. - (do_end): Add parameter. In MRI mode, print it out. - (do_irp): New static function. - (sub_actual): Change parameter m to formal_hash, changing type - from macro_entryh * to hash_table *. - (macro_expand_body): New static function, broken out of - macro_expand. - (macro_expand): Call macro_expand_body. - (K_*): Fully parenthesize. - (K_IRP, K_IRPC): Define. - (mrikinfo): Add IRP and IRPC. - (process_pseudo_op): In MRI mode, print out END pseudo-op. Pass - line to do_end. Handle K_IRP and K_IRPC. - - * config/tc-m68k.c (s_opt): Reset *input_line_pointer even if we - don't do anything with the option. - -Sun Aug 13 17:03:58 1995 Ian Lance Taylor - - * frags.c (frag_align): Handle absolute_section. - * write.c (record_alignment): Likewise. - - * config/tc-mips.c (macro_build): Skip insns with an inappropriate - ISA level. - -Sun Aug 13 00:35:02 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_pseudo_table): Add entries for - "begin_brtab" and "end_brtab" pseudo-ops. - (pa_brtab): New function. - (tc_gen_reloc, SOM version): Handle R_BEGIN_BRTAB and R_END_BRTAB. - (hppa_force_relocation): Force relocations for BRTAB fixups - when OBJ_SOM is defined. - -Fri Aug 11 20:34:05 1995 Ken Raeburn - - * Makefile.in (TE_OBJS): Add empty definition. - -Fri Aug 11 19:16:08 1995 Ian Lance Taylor - - * gasp.c (change_base): Don't treat ' specially in MRI mode. - (process_file): Don't warn about missing END in MRI mode. - (do_if): New static function. - (get_mri_string, do_ifc): New static functions. - (buffer_and_nest): Treat MRI mode like alternate syntax mode. - (do_aendr): Change error message in MRI mode. - (do_arepeat): Use REPT/ENDR in MRI mode. - (do_formals): In MRI mode, add special NARG formal. - (macro_expand): Various changes for MRI mode: permit a qualifier - on the macro name; set special NARG formal; permit unnamed - positional arguments; use && to concatenate named parameters; - permit \d to specify an unnamed parameter; permit named parameters - to not start with \; use == to see if a parameter exists. - (getstring): In MRI mode, allow <> to quote a string. - (K_IFEQ, K_IFNE, K_IFLT, K_IFLE, K_IFGE, K_IFGT): Define. - (K_IFC, K_IFNC): Define. - (struct keyword): Name structure used in kinfo array. - (mrikinfo): New static array. - (process_pseudo_op): Don't require leading '.' in MRI mode. - Handle new MRI pseudo-op definitions. - (add_keyword): New static function, broken out of process_init. - (process_init): Use add_keyword. In MRI mode, add mrikinfo table. - (long_options): Add "mri". - (show_usage): Mention -M/--mri. - (main): Call process_init after processing arguments. Handle -M. - * doc/gasp.texi: Document -M/--mri. - - * gasp.c: Include ansidecl.h. Make all local functions static. - Add prototypes for all static functions. - (mri): New global variable. - (sb_add_char): Change parameter c from char to int. - (sb_add_string): Make parameter s into a const pointer. - (sb_add_buffer): Likewise. - (checkconst): Change parameter op from char to int. - (exp_get_abs): Make parameter emsg into a const pointer. - (do_res): Change parameter type from char to int. - (buffer_and_nest): Make parameters from and to into const - pointers. - (do_sdata): Change parameter type from char to int. - (new_file): Make parameter name into a const pointer. - (do_define): Make parameter string into a const pointer. - - * config/tc-h8300.c (md_number_to_chars): Don't do it here, call - number_to_chars_bigendian. - * config/tc-h8300.h (TARGET_BYTES_BIG_ENDIAN): Define. - -Fri Aug 11 13:23:56 1995 Michael Meissner - - * write.h (struct fix): Add new field fx_no_overflow. - - * write.c (fixup_segment): If fx_no_overflow is non-zero, don't - complain if the addend is too large. - - * config/tc-ppc.c (md_assemble): Set fx_no_overflow if the half - word relocations BFD_RELOC_{LO16,HI16,HI16_S}. - -Thu Aug 10 20:56:38 1995 Ken Raeburn - - * read.c (s_mri_sect) [BFD_ASSEMBLER]: Fix typos in choosing and - setting section flags. - -Thu Aug 10 00:38:11 1995 Ian Lance Taylor - - * doc/as.texinfo: Add documentation for MRI compatibility mode. - * doc/as.1: Likewise. - - * config/tc-m68k.c (m68k_ip): When recognizing '#', use isbyte and - iword rather than expr8 and expr16. When recognizing 'M', use - issbyte rather than expr8. When recognizing 'Q' and 't', just - check for O_constant rather than using expr8. - * config/m68k-parse.h (expr8, expr16): Don't define. - * Makefile.in (m68k-parse.o): Depend upon m68k-parse.h, not - m68k-parse.y. - - * read.c (potable): Add spc, ttl, xcom, xref. - (s_mri_sect): New function. - * read.h (s_mri_sect): Declare. - * config/obj-coff.c (obj_coff_section) (both versions): In MRI - mode, call s_mri_sect. - (obj_pseudo_table): Add sect.s and section.s. Move sect outside - of ifndef BFD_ASSEMBLER. - * config/obj-elf.c (elf_pseudo_table): Add section.s, sect, - sect.s. - (obj_elf_section): In MRI mode, call s_mri_sect. - * config/tc-m68k.c (md_pseudo_table): Add restore, save. - (struct save_opts): Define. - (save_stack): New static variable. - (s_save, s_restore): New static functions. - - * read.c (s_set): Remove unused local ptr. - (hex_float): Check target_big_endian. - (equals): Remove unused local p. - - * config/tc-a29k.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-h8500.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-hppa.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-i860.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-m68k.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-m88k.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-tahoe.h (TARGET_BYTES_BIG_ENDIAN): Define. - * config/tc-sh.c (little): Set target_big_endian. - (md_begin): Likewise. - (md_parse_option): Likewise. - (build_relax): Check target_big_endian rather than shl. - (build_Mytes, md_atof): Likewise. - (md_convert_frag, md_apply_fix): Likewise. - (md_number_to_chars): Likewise. - -Wed Aug 9 10:51:48 1995 Ian Lance Taylor - - * config/tc-m68k.c (m68k_abspcadd): New static variable. - (m68k_quick): New static variable. - (m68k_rel32): New static variable. - (md_pseudo_table): Add opt and reg. - (m68k_ip): Permit absolute symbols in 'l'/'L' recognition. Check - m68k_quick in 'M' and 'Q' recognition. Check m68k_abspcadd in - DISP handling. Check m68k_rel32 in BASE/POST/PRE handling. - (md_begin): In MRI mode, initialize m68k_abspcadd and m68k_rel32. - In MRI mode, change unsized branch aliases to be variable sized. - (struct opt_action): Define. - (opt_table): Define. - (s_opt): New static function. - (skip_to_comma): New static function. - (opt_chip): New static function. - (opt_list): New static function. - (opt_list_symbols): New static function. - (s_reg): New static function. - * as.h (flag_keep_locals): Change from unsigned char to int. - (flag_no_warnings): Likewise. - - * read.c (mri_line_label): Make non-static. - (potable): Add nopage, page, plen. - (s_org): Error if in MRI mode. - * read.h (mri_line_label): Declare. - * listing.c (listing_nopage): New function. - * listing.h (listing_nopage): Declare. - - * symbols.c (symbol_begin): Set sy_frag of abs_symbol to - &zero_address_frag. - - * write.c (adjust_reloc_syms): Check that symbol is not NULL - before checking sy_mri_common. - (fixup_segment): Likewise. - * config/obj-coff.c (fixup_segment): Likewise. - - * read.c (abs_section_offset): New global variable. - (potable): Add offset, struct. - (do_org): New static function; handle changing the origin in the - absolute section. - (s_org): Use do_org. - (s_set): Likewise. - (equals): Likewise. - (s_space): In absolute_section, just increase abs_section_offset. - (s_struct): New function. - (emit_expr): Handle absolute_section specially. - * read.h (abs_section_offset): Declare. - (s_struct): Declare. - * frags.c (frag_more): Warn if in absolute_section. - (frag_now_fix): In absolute_section, return abs_section_offset. - * subsegs.c (subseg_change): If switching to absolute_section, - just set now_seg and now_subseg. - (subseg_set_rest): Special handling when switching to or from - absolute_section. - - * config/tc-m68k.c (m68k_float_copnum): New static variable. - (md_pseudo_table): Add fopt and mask2. - (m68k_ip): Use m68k_float_copnum, not COPNUM, when setting - coprocessor register to use. In case 'I' when checking operands, - correct coprocessor register numbers. In case 'I' when setting - operands, don't add 1. - (s_fopt): New static function. - * config/m68k-parse.h (COPNUM): Don't define. - - * read.c (potable): Add ifeq, ifge, ifgt, ifle, iflt, ifne. - Change if to pass O_ne to s_if. - (read_a_source_file): Don't define an label without a colon if - ignore_input returns true. - * cond.c (s_if): Treat argument as an operatorT describing how to - compare the argument against zero. - (ignore_input): Don't require an initial dot in MRI mode, or if - NO_PSEUDO_DOT is defined. - - * read.c (potable): Add dcb, dcb.b, dcb.d, dcb.l, dcb.s, dcb.w, - dcb.x, ds.d, ds.p, ds.s, ds.x, elsec, endc, fail, format, llen, - noformat. - (read_a_source_file): If pseudo-op handler is s_end, quit - immediately. - (s_end): New function. - (s_fail): New function. - (s_float_space): New function. - (hex_float): New static function. - (float_cons): Use hex_float. - * read.h (s_fail): Declare. - (s_float_space): Declare. - * cond.c (s_end): Remove. - * listing.c (listing_psize): Treat argument as indicating whether - a height is expected. - - * read.c (mri_pending_align): New static variable. - (read_a_source_file): Handle mri_pending_align. - (cons): Set mri_pending_align if appropriate. - - * configure.in: Move random special target handling before - possible break. - * configure: Rebuild. - -Tue Aug 8 23:41:25 1995 Alan Modra - - * configure.in: Consistently use ${target_cpu_type} rather than - ${cpu_type} after the loop. - * configure: Rebuild. - * Makefile.in (targ-cpu.o): Use @target_cpu_type@ rather than - @cpu_type@. - -Tue Aug 8 17:27:17 1995 Ken Raeburn - - * expr.h (operatorT): Remove comma after last enumerator value. - - * config/obj-vms.c: Some whitespace cleanup from Pat Rankin. - - * as.h (alloca): If __STDC__, declare void* instead of char*. - - Wed Aug 2 18:54:37 1995 Pat Rankin - - * config/obj-vms.c (Flush_VMS_Object_Record_Buffer, - Close_VMS_Object_File): Reorganize the `#if !VMS' cross-assmebler - support code. - (Close_VMS_Object_File): Call Set_VMS_Object_File_Record to flush - output buffer--just in case--before closing the file. - -Tue Aug 8 13:07:05 1995 Ian Lance Taylor - - * config/tc-m68k.c (archs): Add 68ec000, 68hc000, 68hc001, - 68ec020, 68ec030, 68ec040, and 68330. - (md_pseudo_table): Add chip and comline. - (m68k_init_after_args): Use strcasecmp when comparing default_cpu - against architectures. - (mri_chip, s_chip): New static functions. - - * struc-symbol.h (struct symbol): Add sy_mri_common bit. - * read.h (mri_comon_symbol): Declare. - (s_mri_common): Declare. - * read.c (mri_line_label): New static variable. - (mri_common_symbol): New global variable. - (potable): Add "common" and "common.s". - (read_a_source_file): In MRI mode, set mri_line_label for a label - at the start of a line. - (s_mri_common): New function. - (s_space): Handle mri_common_symbol. - * symbols.c (colon): Change return value from void to symbolS *, - and return new symbol. If mri_common_symbol is set, attach the - new symbol to it. - (resolve_symbol_value): Handle an sy_mri_common symbol. - * symbols.h (colon): Change return value in declaration. - * subsegs.c (subseg_set_rest): Clear mri_common_symbol. - (subseg_set (both versions)): Likewise. - * frags.c (frag_more): Warn if mri_common_symbol is not NULL. - * write.c (adjust_reloc_syms): Skip sy_mri_common symbols. - (write_object_file): Discard sy_mri_common symbols. - (fixup_segment): Change relocations against sy_mri_common symbols - to be against the common symbol itself. - * config/obj-coff.c (yank_symbols): Discard sy_mri_common symbols. - (fixup_segment): Change relocations against sy_mri_common symbols - to be against the common symbol itself. - * config/obj-aout.c (obj_crawl_symbol_chain): Discard - sy_mri_common symbols. - - * doc/c-m68k.texi: Add documentation for CPU specific options, and - for Motorola syntax. - - * config/m68k-parse.y (motorola_operand): For (%pc), set mode to - DISP, not BASE. - -Tue Aug 8 02:31:38 1995 Ken Raeburn - - * write.c (relax_align): Add extra padding for linkrelax only if - LINKER_RELAXING_SHRINKS_ONLY is defined. - * config/tc-i960.h (LINKER_RELAXING_SHRINKS_ONLY): Define it. - * doc/internals.texi (Relaxation): Write up some stuff on linker - relaxing and LINKER_RELAXING_SHRINKS_ONLY. - -Mon Aug 7 17:18:10 1995 Ian Lance Taylor - - * config/m68k-parse.y: New file: bison grammar for m68k operands, - including support for Motorola syntax. - * config/m68k-parse.h: New file; definitions shared between - m68k-parse.y and tc-m68k.c. - * config/tc-m68k.c: Include m68k-parse.h. - (enum operand_type): Move to m68k-parse.h, where it is named - m68k_operand_type. Rename all uses. Rearrange somewhat. Add - FPREG. Rename AOFF to DISP. Rename AINDX to BASE. Rename APODX - to POST. Rename APRDX to PRE. Remove AMIND. Rename MSCR to - CONTROL. Remove DINDR. - (struct m68k_exp): Move to m68k-parse.h. Remove e_beg, e_end and - e_seg fields. Rename e_exp to exp. Rename e_siz to size, and - change type to enum m68k_size. Change all uses. - (enum _register): Move to m68k-parse.h, where it is named - m68k_register. Rename all uses. Add ZDATA0-7 and ZADDR0-7. - (struct m68k_op): Move to m68k-parse.h. Change all fields. - (seg): Don't define. - (add_exp): Remove. - (FAIL, OK): Remove. - (m68k_reg_parse): Move to m68k-parse.y, and rewrite. - (SKIP_WHITE, SKIP_W): Remove. - (try_moto_index, try_index): Remove. - (m68k_ip_op): Move to m68k-parse.y, and rewrite to use grammar. - (main): Remove obsolete test function. - (m68k_ip): Extensive changes to use new grammar. - (get_regs): Remove. - (crack_operand): m68k_ip_op now returns 0 on success. - (init_table): Add ssp, zd0-7 and za0-7. - (md_assemble): Make er const. Correct loop over operands when - looking for error message. - (md_begin): Set alt_notend_table for '(' and '@'. - (get_num): Expression is already parsed. Don't set seg. - * configure.in: If cpu_type is m68k, put m68k-parse.o in - extra-objects. - * configure: Rebuild. - * Makefile.in (DISTSTUFF): Add m68k-parse.c. - (BISON): Use ../bison/bison if it exists. - (BISONFLAGS): Define as empty. - (TARG_CPU_DEP_m68k): Depend upon $(srcdir)/config/m68k-parse.h. - (m68k-parse.c, m68k-parse.o): New targets. - -Mon Aug 7 02:54:20 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-sh.c (parse_reg): Handle new FP registers. - (get_specific): Handle new operand types. - -Fri Aug 4 12:29:21 1995 Ian Lance Taylor - - * expr.c (op_encoding): Make non-const. Don't set '"' to - O_bit_not. - (expr_begin): Set op_encoding['"'] in MRI mode. - -Wed Aug 2 18:39:43 1995 Ian Lance Taylor - - * config/tc-m68k.c: Remove BREAK_UP_BIG_DECL stuff. - (struct m68k_incant): Change m_operands field to be const. - (struct m68k_it): Change args field to be const. - (m68k_ip): Change local variable s to be const. - (opcode_ptr): Remove. - (md_begin): Use m68k_numopcodes, not numopcodes. Use - m68k_opcodes, not removed opcode_ptr. Use m68k_numaliases, not - numaliases. - -Tue Aug 1 17:35:26 1995 Ian Lance Taylor - - * config/tc-m68k.c (init_table): Add "control", "status", "iaddr", - "sfcr", and "dfcr" as synonyms for existing entries. - (md_begin): In MRI mode, force flag_reg_prefix_optional to 1. - (md_parse_option): Removed unused locals i and arch. Change type - of arch (another one) to unsigned long. - (tc_coff_sizemachdep): Add return after abort to avoid warning. - - Initial support for MRI style labels and expressions. - * as.h (flag_mri): Declare/define. - * as.c (show_usage): Mention -M and its synonym --mri. - (parse_args): Add 'M' to std_shortopts. Add "mri" to - std_longopts. Set flag_mri if -M is seen. - (main): Call parse_args before input_scrub_begin. Call - expr_begin. - * app.c (do_scrub_begin): Don't set lex for '"' or '\'' in MRI - mode. Do set lex for ';', '*', and '!' in MRI mode. - (do_scrub_next_char): Remove MRI ifdef in LEX_IS_WHITESPACE case. - In MRI mode, keep spaces between labels and colons. Remove MRI - ifndef around LEX_IS_ONECHAR_QUOTE case. In MRI mode, don't use - '!' or '*' as comment characters even if they are in - comment_chars. - * read.h (lex_type): No longer const. - * read.c: Include libiberty.h. - (lex_type): No longer const. - (read_begin): In MRI mode, set lex_type of '?' to 3. - (potable): Add dc, dc.b, dc.d, dc.l, dc.s, dc.w, dc.x, ds, ds.b, - ds.l, ds.w, and xdef. - (read_a_source_file): Change LABELS_WITHOUT_COLON ifdef to check - for MRI mode at runtime rather than compile time. Handle the EQU - pseudo-op in MRI mode. Remove bogus MRI ifdef around done_pseudo. - Change NO_PSEUDO_DOT ifdef to also take effect for MRI mode at - runtime. - (cons): In MRI mode, always call parse_mri_cons rather than - TC_PARSE_CONS_EXPRESSION. - (parse_mri_cons): Always compile, not just when MRI is defined. - Call TC_PARSE_CONS_EXPRESSION, not expression, when the input is - not a string constant. Handle A and E modifiers. - (float_cons): Accept :xxxx, where the x's are hex digits. - * expr.h (operatorT): Add O_eq, O_ne, O_lt, O_le, O_ge, O_gt. - (expr_begin): Declare. - * expr.c (integer_constant): In MRI mode, if the base was not - specified, look for a suffix on the number to set the base. - (mri_char_constant): New static function. - (operand): Remove MRI ifdef. In MRI mode, do various things: Pass - 0 as the base when calling integer_constant if there was no - prefix. Check for a hex constant suffix if when a leading '0' is - seen. Don't accept 0x or 0b as a prefix. Check for E'chars' and - A'chars'. Handle MRI character constants. Treat '"' as the - unary bitwise not operator. Treat $ as the program counter, or as - the prefix for a hex constant. Treat % as the prefix for a binary - constant and @ as the prefix for an octal constant. Treat : as - the prefix for a hex constant. - (op_encoding): Set '"' to O_bit_not, '<' to O_lt, and '>' to O_gt. - (op_rank): No longer const. Change rank values. - (expr_begin): New function. - (operator): New static function. - (expr): Use operator. Don't bother to mention the operator in - warnings. Remove bogus #if 0 code. Handle new operatorT values. - * atof-generic.c (atof_generic): In MRI mode, accept underscores - around the exponent in floating point numbers. - * symbols.h (symbols_case_sensitive): Declare. - * symbols.c (symbols_case_sensitive): New global variable. - (symbol_create): Check symbols_case_sensitive. - (symbol_find_base): Likewise. - (resolve_symbol_value): Handle new operatorT values. - (print_expr_1): Likewise. - (S_IS_LOCAL): In MRI mode, names beginning with two '?' characters - are local. - -Tue Aug 1 11:35:18 1995 steve chamberlain - - * config/tc-sh.c (md_convert_frag): Make some error messages - more explict. - -Mon Jul 31 21:40:47 1995 Ken Raeburn - - Sat Jul 29 18:55:23 1995 Pat Rankin - - * config/obj-vms.c (COPY_SHORT, COPY_LONG, PUT_SHORT, PUT_LONG): - Make expansion be safe for use in expressions. - (PUT_COUNTED_STRING): Bracket expansion with `do {...} while (0)' - rather than just `{...}'. - -Mon Jul 31 18:19:26 1995 steve chamberlain - - * gasp.c (main): Parse -I option. - (do_include): Look through include list. - * gasp.c (change_base): Don't modify numbers in strings. - -Mon Jul 31 12:16:21 1995 Ian Lance Taylor - - * config/tc-ppc.h (SUB_SEGMENT_ALIGN): Define. From Niclas - Andersson . - -Thu Jul 27 20:47:12 1995 Ken Raeburn - - * config/obj-coff.c (fixup_segment): Don't do further pcrel - processing after converting difference of two symbols in the - same segment. From Jim Wilson. - - * configure.in (i386-*-linuxoldld): Add as synonym for - i386-*-linux*aout*. From Fred Fish. - * configure: Regenerated. - -Thu Jul 27 16:14:56 1995 Pat Rankin - - * config/obj-vms.c (enum ps_type {ps_TEXT,ps_DATA,ps_COMMON, - ps_CONST}): New constants. - (VMS_Psect_Spec): Use them instead of literal strings. - (vms_write_object_file, global_symbol_directory): Adjust callers. - -Wed Jul 26 18:31:35 1995 Pat Rankin - - * config/obj-vms.c (const_flag): Change from char to unsigned char. - * config/obj-vms.h (const_flag): Ditto. - (struct nlist): Replace union n_un and n_un.{n_name,n_next,n_strx} - fields with just n_name; delete field n_value; change n_other from - char to unsigned char and n_desc from short to int; insert explicit - padding for alignment. - -Mon Jul 24 20:06:17 1995 Ken Raeburn - - * subsegs.h (struct seg_info_trash): Make bitfield types valid. - - * config/obj-coff.c (fixup_segment): Local add_number should not - be declared register since its address is taken for - MD_APPLY_FIX3. - - Fri Jul 21 15:28:18 1995 Pat Rankin - - Split huge vms_write_object_file routine into managable pieces. - - * config/obj-vms.c (vms_fixup_text_section, synthesize_data_segment, - vms_fixup_data_section, global_symbol_directory, local_symbols_DST, - vms_build_DST): New routines. - (vms_write_object_file): Call them. - (struct vms_obj_state): New file scope variable used by the above. - -Mon Jul 24 14:10:24 1995 Ian Lance Taylor - - * config/tc-sh.c (md_pseudo_table): Add "uses". - (s_uses): New static function. - (sh_coff_frob_file): New function. - (md_convert_frag): Call subseg_change before calling fix_new. - (sh_handle_align): New function. - (SWITCH_TABLE): Define. - (sh_force_relocation): New function. - (md_apply_fix): Handle R_SH_USES, R_SH_COUNT and R_SH_ALIGN. - (sh_coff_reloc_mangle): Likewise. Also handle switch table - entries. - * config/tc-sh.h (HANDLE_ALIGN): Define. - (sh_handle_align): Declare. - (TC_FORCE_RELOCATION): Define. - (sh_force_relocation): Declare. - (TC_COUNT_RELOC): Simplify; rely on TC_FORCE_RELOCATION instead. - (tc_frob_file): Define. - (sh_coff_frob_file): Declare. - * config/obj-coff.c (write_object_file): Call tc_frob_file if it - is defined. - (fixup_mdeps): Call HANDLE_ALIGN if it is defined. - (TC_FORCE_RELOCATION): Define if not defined. - (fixup_segment): Use TC_FORCE_RELOCATION to decide whether to - clear the symbol fields of fixP. - -Fri Jul 21 22:38:00 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Add support for R_PPC_SDAREL - relocation. - (md_apply_fix3): Ditto. - -Thu Jul 20 13:00:56 1995 Ken Raeburn - - * config/tc-m68k.c (md_convert_frag): Rename argument seg to sec, - since seg is a macro name in this file. - - * configure.in (arm-*-riscix*): Don't set emulation. - -Wed Jul 19 16:08:29 1995 Doug Evans - - * config/obj-coff.h (TE_PE): Delete. - * config/tc-arm.h (BYTE_ORDER): Delete. - (TARGET_FORMAT): Provide value for OBJ_COFF and TE_PE. - (ARM_BI_ENDIAN): Define if OBJ_COFF and TE_PE. - * config/tc-arm.c (byte_order): Delete. - (md_number_to_chars): Reference target_big_endian, not byte_order. - (md_chars_to_number): Likewise. - (md_longopts): Add -EB/-EL if ARM_BI_ENDIAN. - (md_parse_options): Recognize -EB/-EL. - (md_show_usage): List -EB/-EL. - -Wed Jul 19 11:49:25 1995 Ian Lance Taylor - - * gasp.c (process_assigns): Use toupper before comparing against - upper case letter. - (whatcond): Likewise. - - * config/tc-sh.c (sh_relax): Rename from relax, and make global. - Renamed all uses. - (insert): Pass a size of 2, not 4. - (build_relax): Remove unused len variable. - (md_show_usage): Mention -little option. - (md_convert_frag): Add segT argument. Rewrite to generate relocs - rather than to generate complete instructions here. - (md_apply_fix): Adjust and clarify R_SH_PCRELIMM8BY4 case for - changes in insert and md_pcrel_from. Add cases for R_SH_PCDISP - and R_SH_PCDISP8BY2. - (md_pcrel_from): Don't subtract 1, add 2. - (tc_coff_fix2rtype): Remove. - (sh_coff_reloc_mangle): New function. - * config/tc-sh.h (TC_COFF_FIX2RTYPE): Just return fx_r_type. - (sh_relax): Declare. - (TC_COUNT_RELOC): If relaxing, count PC relative relocs. - (TC_RELOC_MANGLE): Define. - (sh_coff_reloc_mangle): Declare. - (tc_coff_sizemachdep): Declare. - * tc.h (md_convert_frag): Add segT parameter to non BFD_ASSEMBLER - declaration. - * write.c (cvt_frag_to_fill): Add sec argument to non - BFD_ASSEMBLER version. Pass it to md_convert_frag. - (write_object_file): Pass SEG_TEXT to cvs_frag_to_fill. - * config/obj-coff.c (do_relocs_for): Pass segment info to - TC_RELOC_MANGLE. - (fixup_mdeps): Pass segment type to md_convert_frag. - * config/tc-a29k.c (md_convert_frag): Add segT argument. - * config/tc-h8300.c (md_convert_frag): Likewise. - * config/tc-h8500.c (md_convert_frag): Likewise. - * config/tc-i386.c (md_convert_frag): Likewise. - * config/tc-i860.c (md_convert_frag): Likewise. - * config/tc-i960.c (md_convert_frag): Likewise. - * config/tc-m68k.c (md_convert_frag): Likewise. - * config/tc-m88k.h (md_convert_frag): Likewise. - * config/tc-ns32k.c (md_convert_frag): Likewise. - * config/tc-tahoe.c (md_convert_frag): Likewise. - * config/tc-vax.c (md_convert_frag): Likewise. - * config/tc-w65.c (md_convert_frag): Likewise. - * config/tc-z8k.c (md_convert_frag): Likewise. - * config/tc-h8300.h (TC_RELOC_MANGLE): Add segment argument. - * config/tc-h8500.h (TC_RELOC_MANGLE): Likewise. - * config/tc-w65.h (TC_RELOC_MANGLE): Likewise. - * config/tc-z8k.h (TC_RELOC_MANGLE): Likewise. - -Mon Jul 17 15:02:54 1995 Pat Rankin - - * config/obj-vms.c (Current_Routine, Text_Psect): Delete as file - scope variables. - (Define_Routine, Define_Local_Symbols): Take Current_Routine and - Text_Psect as arguments. - (VMS_DBG_Define_Routine): Delete. - (VMS_TBT_Block_End): Change `Size' argument from int to valueT. - (vms_write_object_file: text and data fixup loops): Difference - of two symbols has type offsetT rather than int; convert with - md_number_to_chars before passing to VMS_Store_Immediate_Data. - (vms_write_object_file: debug symbol loop): Call Define_Routine - instead of VMS_DBG_Define_Routine. - -Sat Jul 15 00:01:35 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Add @fixup so that the - compiler can mark which relocs not to complain about with - -mrelocatable. - (ppc_elf_validate_fix): Add .fixup to sections not to complain - about, and also don't complain for BFD_RELOC_CTOR relocations in - writable non-code segments. - (md_apply_fix): Treat BFD_RELOC_CTOR just like BFD_RELOC_32. - -Fri Jul 14 19:54:28 1995 Ian Lance Taylor - - Add support for SPARC SunOS PIC: - * config/tc-sparc.h (sparc_pic_code): Always declare, not just - when OBJ_ELF. - (TC_RELOC_RTSYM_LOC_FIXUP): Define when OBJ_AOUT. - (tc_fix_adjustable): New definition for OBJ_AOUT. - * config/tc-sparc.c (sparc_pic_code): Always define, not just when - OBJ_ELF. - (md_apply_fix): Adjust reloc addend for OBJ_AOUT and PIC. In - BFD_RELOC_32_PCREL_S2 case, don't increment val for an external - symbol when PIC. - (tc_gen_reloc): Generate different PIC relocs when OBJ_AOUT, as - well as when OBJ_ELF. - (md_shortopts): If OBJ_AOUT, include `k'. - (md_parse_option): If OBJ_AOUT, handle 'k'. - (md_show_usage): Mention -k if OBJ_AOUT, and -KPIC if OBJ_ELF. - (md_pcrel_from): Don't add in size for an external symbol when - PIC. - -Thu Jul 13 21:16:43 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.h (UNDEFINED_DIFFERENCE_OK): Define for SOM. - * write.c (adjust_reloc_syms): Set sy_used_in_reloc for both - symbols in a fixup where a defined symbol is subtracted from an - undefined symbol (when UNDEFINED_DIFFERENCE_OK is defined). - (fixup_segment): Do nothing for the difference of two symbols if - UNDEFINED_DIFFERENCE_OK is defined. - -Wed Jul 12 23:33:40 1995 Ian Lance Taylor - - * config/obj-coff.c (fixup_segment): Support MD_APPLY_FIX3. - -Wed Jul 12 01:12:12 1995 Ken Raeburn - - * write.c (fix_new): Use int, not short int, for argument type. - (fix_new_exp): Ditto. - - * configure.in (arm-*-riscix*): Don't set emulations. - - * config/tc-mips.c (NO_ECOFF_DEBUGGING): Define if ECOFF_DEBUGGING - wasn't previously defined. - (s_extern): Don't set ecoff_extern_size if NO_ECOFF_DEBUGGING. - (nopic_need_relax): Don't check it if NO_ECOFF_DEBUGGING. - (macro_build) [!USE_STDARG]: Don't use variadic prototype. - (mips_local_label) [NO_ECOFF_DEBUGGING]: Don't preserve potential - ECOFF debugging symbols. - - * emul.h (struct emulation): Use unsigned, not unsigned char, for - bitfields. - * obj.h (struct format_ops): Likewise. - - * config/tc-arm.c (symbol_make_empty) [BFD_ASSEMBLER]: Set - udata.p, not udata. - -Tue Jul 11 14:30:19 1995 Ian Lance Taylor - - * doc/c-mips.texi: Document -m4010 and -mno-4010. - -Tue Jul 11 14:28:55 1995 Jeff Spiegel - - * config/tc-mips.c (mips_4010): New static variable. - (interlocks): New static variable. - (md_begin): Check for a cpu of "r4010". Set mips_4010 correctly. - If mips_4650 or mips_4010, set interlocks. - (append_insn): Check interlocks, not mips_4650. - (mips_emit_delays): Likewise. - (mips_ip): Only permit INSN_4010 instructions if mips_4010. - (md_longopts): Add "m4010" and "no-m4010". - (md_parse_option): Accept -mcpu=r4010. Handle -m4010 and - -no-m4010. - (md_show_usage): Document -m4010 and -no-m4010. - -Tue Jul 11 13:22:50 1995 Ian Lance Taylor - - * ecoff.c (struct efdr): Add new field fake. - (init_file): Initialize fake. - (add_file): Add new parameter fake. Change all callers. - (ecoff_build_debug): Don't warn about a missing .end for a fake - file. - -Mon Jul 10 16:01:31 1995 Ken Raeburn - - * doc/as.texinfo: Split out most cpu chapters... - * doc/c-*.texi: ...to here. - - * read.c (po_hash): Now static. - -Mon Jul 10 13:47:22 1995 Ian Lance Taylor - - Based on patches from H.J. Lu : - * config/tc-i386.c (md_apply_fix3): Rename from md_apply_fix1. - Accept pointer to value and segment. Fix OBJ_ELF PCREL case to - handle global defined symbols correctly. - (md_apply_fix): Remove both versions. - * config/tc-i386.h (MD_APPLY_FIX3): Define. - - * configure.in: When switching on ${cpu}, use ${cpu}, not - $[target_cpu}, in default case. - * configure: Rebuild. - -Sat Jul 8 13:27:55 1995 Ian Lance Taylor - - * write.c (fixup_segment): Call resolve_symbol_value on - sub_symbolP, in case it isn't in the symbol table. - -Fri Jul 7 11:17:27 1995 Ian Lance Taylor - - * read.c (s_lcomm): For .lcomm 1, set align to 0, not 1. - - * config/obj-coff.c (coff_frob_symbol): If SF_GET_FUNCTION, set - BSF_FUNCTION. - (symbol_globalP, symbol_global_lastP): New global variables. - (yank_symbols): Sort defined global symbols to the end, just - before the undefined symbols. - (glue_symbols): Add two arguments, and use them instead of - referring directly to global variables. - (crawl_symbols): Call glue_symbols twice, once for defined globals - and once for undefined. Add corresponding know calls. - - * app.c (do_scrub_next_char): Always accept \v. Don't make it - conditional on BACKSLASH_V. - * read.c (next_char_of_string): Likewise. - * config/obj-bout.h (BACKSLASH_V): Don't define. - * config/tc-mips.h (BACKSLASH_V): Don't define. - - Add SPARC ELF PIC support. - * write.c (fixup_segment): Pass fixP to TC_RELOC_RTSYM_LOC_FIXUP, - not fixP->fx_r_type. - * config/tc-sparc.c (sparc_pic_code): New global variable. - (md_apply_fix): If generating PIC, adjust fx_addnumber for any non - PC relative reloc. - (tc_gen_reloc): If generating PIC, adjust various reloc types. - Remove fx_pcrel assert, since it is no longer true. - (md_parse_option): Handle -K PIC. - * config/tc-sparc.h (sparc_pic_code): Declare if OBJ_ELF. - (TC_RELOC_RTSYM_LOC_FIXUP): Define if OBJ_ELF. - (tc_fix_adjustable): Don't adjust PC relative relocs if PIC. - * config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Take a fixp, not a - reloc type. - - * Makefile.in (Makefile): Add dependency on conf.in, so that conf - is rebuilt when conf.in changes. - -Thu Jul 6 16:49:38 1995 Ken Raeburn - - * All files: Updated FSF address. - -Thu Jul 6 16:30:34 1995 Jim Wilson - - * ecoff.c (add_file): Don't collapse multiple .file commands into - a single file structure. - (ecoff_build_lineno): Set ilineBase to sum of previous file's - ilineBase and cline. - -Thu Jul 6 12:54:27 1995 Ian Lance Taylor - - Patches from Jerry Blakely : - * as.c (listing_filename): New static variable. - (show_usage): Mention -a=file. - (parse_args): Support = option of -a to set name of listing file. - (main): Pass listing_filename to listing_print. - * listing.c (list_file): New static variable. - (various): Replace printf with fprintf to list_file. - (listing_print): If name argument is not NULL, open it as - list_file. - * doc/as.texinfo, doc/as.1: Document -a=file. - - * config/tc-sparc.c (s_reserve): Don't permit redefinition, even - if the symbol was already in bss_section. Fix warning message. - - * listing.c (struct file_info_struct): Rename end_pending field to - at_end. - (file_info): Initialize at_end, not end_pending. - (buffer_line): If at_end set, just return immediately. Don't - worry about end_pending cases. Set at_end when EOF is read. - (print_source): Check at_end, not end_pending. - (listing_listing): Likewise. - - * config/tc-alpha.h (alpha_do_align): Don't declare. - (md_do_align): Don't define. - (tc_frob_label): Define. - (alpha_define_label): Declare. - (md_flush_pending_output): Define. - (alpha_flush_pending_output): Declare. - * config/tc-alpha.c (insn_label): New static variable. - (auto_align): New static variable. - (md_pseudo_table): Add cases for .text, .data, .align, .byte, - .hword, .int, .long, .octa, .quad, .short, .word, .double, .float, - and .single. Change .t_floating, .s_floating, .f_floating, - .g_floating, and .d_floating to use s_alpha_float_cons rather than - float_cons. - (s_alpha_text, s_alpha_data): New static functions. - (s_rdata, s_sdata): Clear insn_label and set auto_align. - (s_gprel32): If auto_align, align. Clear insn_label. - (emit_insn): Clear insn_label. - (s_alpha_align): New static function. - (alpha_align): Make static. Take label argument. - (alpha_flush_pending_output): New static function. - (s_alpha_cons, s_alpha_float_cons): New static functions. - (alpha_define_label): New function. - -Wed Jul 5 22:49:31 1995 Ken Raeburn - - * conf.in: Regenerate with autoreconf. - - Mon Jul 3 19:47:53 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.h (vms_resolve_symbol_redef): Use full prototype. - (vms_check_for_special_label, tc_frob_label): Move them to group - with other prototypes. - [WANT_VMS_OBJ_DEFS]: Only define the many OBJ_x, DBG_x, and DST_x - macros when this is defined. - * config/obj-vms.c: Fully prototype all local functions. - [symbolS, fragS]: Use consistently instead of their struct tags. - [WANT_VMS_OBJ_DEFS]: Define this. - (s_const): Make definition correctly match actual usage. - (VMS_stab_parse): Make `expected_type' arg be int rather than char. - (get_VMS_time_on_unix): Define as `static void'. - (hash_string): Make definition match actual usage; argument is - `char const *' rather than `unsigned char *'. - (VMS_Case_Hack_Symbol, VMS_Modify_Psect_Attributes, VMS_Psect_Spec, - VMS_Global_Symbol_Spec): Declare string args as `const char *'. - [IS_GXX_VTABLE]: New macro. - (vms_write_object_file: GSD loop): Use it. - (vms_write_object_file: data segment): Reorganize `fill' loop. - -Wed Jul 5 12:01:49 1995 Ian Lance Taylor - - * config/tc-sparc.c (md_shortopts): Add "K:" if OBJ_ELF. - (md_parse_option): If OBJ_ELF, check for -K. Die if -K PIC, since - PIC code is not currently supported. - - * as.c (parse_args): Change std_shortopts to be an array rather - than a constant string. Only include 'K' if WORKING_DOT_WORD is - not defined. Only check for 'K' in that case as well. - * as.h (flag_warn_displacement): Only declare if WORKING_DOT_WORD - is not defined. - - * conf.in: Add undef of HAVE_SBRK. - - * config/obj-coff.c (obj_coff_line): Call listing_source_line, in - both BFD_ASSEMBLER and non BFD_ASSEMBLER versions of the function. - - * symbols.c (S_SET_EXTERNAL): Warn if symbol is weak. - (S_CLEAR_EXTERNAL): Likewise. - (S_SET_WEAK): Warn if symbol is global. - - * config/obj-aout.c (obj_aout_frob_symbol): Warn about an attempt - to put an undefined symbol into a set. - - * Makefile.in: Remove @configure_input@; it's not needed in - files named Makefile. - - * config/tc-m88k.c (md_pseudo_table): Add ".set" so that the - explicit pseudo-op works, while continuing to treat "set" as an - instruction. - - * ecoff.c (ecoff_debugging_seen): New global variable. - (ecoff_directive_def): Set ecoff_debugging_seen. - (ecoff_stab): Likewise. - * ecoff.h: Make idempotent. - (ecoff_debugging_seen): Declare. - * config/tc-mips.c: Include ecoff.h. - (mips_debug): New static variable. - (s_stringer, s_mips_space): Remove unneeded declarations. - (md_parse_option): In case 'g', set mips_debug to debugging level. - (mips_local_label): New function. - * config/tc-mips.h (LOCAL_LABEL): Call mips_local_label. - (mips_local_label): Declare. - -Wed Jul 5 00:59:22 1995 Fred Fish (fnf@cygnus.com) - - * as.c (main): Only use sbrk when HAVE_SBRK defined. - * configure.in: Add test for sbrk. - * configure: Regenerate using autoconf 2.4. - -Mon Jul 3 15:58:16 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.h (MAX_RELOC_EXPANSION): Bump to 6. - * config/tc-hppa.c (tc_gen_reloc, SOM version): Handle - relocations for the difference of two (possibly external) - symbols. - (hppa_fix_adjustable): For SOM, reject reductions involving - the difference of two symbols. - (hppa_force_relocation): Force relocations for expressions - involving the difference of two symbols. - -Mon Jul 3 14:22:59 1995 Steve Chamberlain - - * configure[.in] (i386-*-win32): New host and target. - -Thu Jun 29 17:25:43 1995 Steve Chamberlain - - Support for long filenames non-bfd coff. - * config/obj-coff.c (filename_list_head, filename_list_tail): New. - (yank_symbols): Notice and record filenames which are too long. - (w_strings): Write out filename strings. - (c_dot_file_symbols): Put long filenames onto list. - -Wed Jun 28 17:33:13 1995 Steve Chamberlain - - * config/obj-coff.c (fixup_segment): PE doesn't use - the strange common symbol format that other 386s formats - do. - * config/tc-i386.c (md_begin): If LEX_AT defined then - '@' is in the set of identifiers. - (i386_operand): If LEX_AT, then don't look for @goto stuff. - * config/te-pe.h: Define LEX_AT. - -Wed Jun 28 17:49:59 1995 Ken Raeburn - - * doc/as.texinfo (H8/500 Floating Point): Indicate that IEEE FP - numbers are for the standard emulation code. - (SH Floating Point): Ditto. - (Overview): Describe new --emulation option for MIPS. - * doc/*.m4: Deleted. - -Thu Jun 22 19:26:25 1995 Ken Raeburn - - Sun May 7 11:53:41 MDT 1995 Bryan Ford - - * configure.in: Added i386-*-moss* target. - -Thu Jun 22 14:41:23 1995 Michael Meissner - - * write.c (write_object_file): Cast decode_local_label_name - argument to char * to avoid warning. - -Wed Jun 21 18:07:59 1995 Ken Raeburn - - Changes from Andreas Schwab : - * config/tc-m68k.c (insword): Increment the frag offsets. - (struct m68k_it): Add reloc[].pcrel_fix field to hold pc-rel - fixup. - (add_fix): Accept additional parameter, the pc-rel fixup. All - callers changed. Fix offset address if width == 'b'. - (m68k_ip) [case AINDX]: Allow explicit size spec. Don't make the - outer displacement pc-relative. - (md_pcrel_from): Make it relative to the first extension word of - the operand. - (opcode_ptr): Make it a macro if DO_BREAK_UP_BIG_DECL is - undefined. - (md_convert_frag_1): Don't reference fragP->fr_opcode[2..]. - (md_estimate_size_before_relax) [case TAB (FBRANCH, SZ_UNDEF)]: - Turn on long bit. - (m68k_ip) [case 'C']: Don't set set long bit, set it in the opcode - table. - (md_estimate_size_before_relax) [case TAB (PCINDEX, SZ_UNDEF)]: - Variable part increases by four, not six. - * write.c (fixup_segment) [TC_M68K]: Don't do further pcrel - processing after converting difference of two symbols in the - same segment. - - * write.c (fixup_segment): Don't conditionalize the pcrel fix on - TC_M68K. - - * config/tc-sparc.c (sparc_ip, case 'A'): If ASI is not a "#" - value, don't shift it an extra time. - -Wed Jun 21 14:18:37 1995 Steve Chamberlain - - * gasp.c (do_print, do_form, buffer_and_nest): Use case insensitive - string compares. - -Tue Jun 20 14:55:02 1995 Ken Raeburn - - * config/obj-coff.c (write_object_file): Cast time() argument to - time_t *. - -Tue Jun 20 12:00:53 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_build_unwind_subspace): Fix typo in last - change. - -Mon Jun 19 15:27:17 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_build_unwind_subspace): Zero out memory - from frag_more calls. - -Thu Jun 15 16:53:37 1995 Stan Shebs - - * config/obj-coff.c: Don't use "bfd/" when including libbfd.h - and libcoff.h. - (fill_section): Call PROGRESS. - * Makefile.in (INCLUDES): Add bfd srcdir. - - * mpw-config.in: Add bfd_gas flag and set for each config. - (i386-unknown-go32, m68k-unknown-coff): Recognize. - * mpw-make.in (HACK_O_RAMA, OBJ_COFF_OMIT_TIMESTAMP): Add to - config.h. - -Thu Jun 15 10:04:26 1995 Doug Evans - - * config/tc-arm.h (LOCAL_LABEL): Prepend '.' if not OBJ_AOUT. - (FAKE_LABEL_NAME): Likewise. - -Mon Jun 12 22:25:39 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): Check for invalid register in single - precision fmpyadd and fmpysub instructions. - -Thu Jun 8 19:33:02 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.c (myname): Delete all references. - (VMS_stab_parse, Write_VMS_MHD_Records, VMS_Case_Hack_Symbol): - Replace printf calls with as_tsktsk. - (PUT_LONG, PUT_SHORT): Use COPY_LONG, COPY_SHORT. - (VMS_Store_Immediate_Data): Move second buffer capacity check - below bottom of loop; first check at top suffices for loop itself. - (find_file): Remove redundant pointer checks in first two loops; - replace third loop with pointer to last list element determined - in first loop. - -Tue Jun 6 13:53:06 1995 Ken Raeburn - - * config/tc-sparc.c (sparc_ip): Handle defined absolute symbols as - ASI values. - - * config/obj-vms.c (vms_write_object_file, case N_DATA): Use - strcmp against FAKE_LABEL_NAME instead of checking third - character. (Suggested by Pat Rankin.) - -Mon Jun 5 20:10:46 1995 Pat Rankin (rankin@eql.caltech.edu) - - Add support for N_ABS and N_ABS|N_EXT type symbols. - - * config/obj-vms.h (LSY_S_M_{DEF,REL}, ENV_S_M_{DEF,NESTED}): - New macros for local symbols (from and ). - * config/obj-vms.c (Current_Environment): New file-scope variable. - (VMS_Local_Environment_Setup): New routine. - (GBLSYM_LCL): New macro. - (VMS_Global_Symbol_Spec): Handle local symbols too. - (VMS_Psect_Spec): Set GLOBALVALUE_BIT for absolute symbols. - (VMS_Emit_Globalvalues): Handle local and global absolute symbols. - (VMS_Store_PIC_Symbol_Reference): Ditto. - (vms_write_object_file: GSD symbol loop): Ditto. - -Mon Jun 5 16:10:40 1995 Steve Chamberlain - - * config/tc-arm.h (LOCAL_LABELS_FB): Define. - -Mon Jun 5 02:17:58 1995 Ken Raeburn - - * configure.in (i386-*-gnu*): Always use GNU ELF config. - -Wed May 31 17:49:18 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.c (obj_crawl_symbol_chain): Update *symbolPP - in `else' clause when removing a symbol. Also, revise comments - to match the code. - (vms_write_object_file (GSD symbol loop, case N_DATA)): Never - output symbol definitions for local numeric labels. - -Tue May 30 18:29:10 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * configure.in (architecture variants, cases armeb and arm*): Remove - spaces round assignment to endian. - -Tue May 30 12:31:31 1995 Ken Raeburn - - * write.c (write_object_file): Check for undefined local dollar - and fb labels. - - * symbols.c (decode_local_label_name): Extract instance number - from the correct location. - -Sat May 27 21:28:49 1995 J.T. Conklin - - * config/te-dpx2.h: Include obj-format.h. - (COFF_MAGIC): Renamed from FILE_HEADER_MAGIC. - -Wed May 24 13:45:32 1995 Steve Chamberlain - - * configure, configure.in, config/obj-coff.c, config/obj-coff.h: - Add support for ARM pe - -Tue May 23 17:00:32 1995 Doug Evans - - * config/tc-sparc.c (tc_gen_reloc): Handle BFD_RELOC_SPARC_WDISP16 - and BFD_RELOC_SPARC_WDISP19. - -Tue May 23 19:18:33 1995 Ken Raeburn - - * as.c (parse_args) [! USE_EMULATIONS]: Always print an error - message. - - * doc/internals.texi: Document obj_app_file and - TARGET_BYTES_BIG_ENDIAN. - -Mon May 22 20:03:23 1995 Ken Raeburn - - * ecoff.c (ecoff_stab): Add extra leading argument, for 4 May - change. - * ecoff.h (ecoff_stab): Fix declaration. - * obj.h (format_ops.process_stab): Include prototype. - * config/obj-elf.h (OBJ_PROCESS_STAB): Pass through seg argument. - * config/obj-ecoff.h (OBJ_PROCESS_STAB): Ditto. - - * config/e-mipself.c (mipself): New emulation mode, doesn't change - endianness from configured default. - * config/e-mipsecoff.c (mipsecoff): Ditto. - * configure.in (mips ecoff/elf targets): Include them. - * as.c (mipself, mipsecoff): Declare. - - * as.c (emulation_name): New variable. - (select_emulation_mode): Set emulation_name. Don't change argv. - (parse_args): Handle --emulation; complain if the supplied name - isn't what select_emulation_name came up with. - -Sun May 21 21:36:17 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Reverse changes from Dec. 19th which - changed the way unwinds were built for ELF. Rely on relocation - symbol reductions to avoid placing the end of function marker - symbols into the object file's symbol table. - -Sat May 20 12:31:36 1995 Ken Raeburn - - Added improved VMS support from Pat Rankin: - - Fri 19 May 16:51:40 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.h (AOUT_STABS): Define. - - * config/obj-vms.c (fpush, rpush): New routines. - (push): Replaced by the above. - (find_symbol): Slight reorganization to expose tail recursion. - - Fri Mar 17 18:40:36 1995 Pat Rankin (rankin@eql.caltech.edu) - - * Makefile.in (VMS_OTHER_OBJS): delete this. - * vmsconf.sh (make-gas.com): build ../libiberty/liberty.olb - first if necessary; link gas against it. - -Fri May 19 16:37:39 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * gasp.c (istrue): Correctly test for string inequality. - -Thu May 18 04:25:11 1995 Ken Raeburn - - Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * config/tc-arm.c (CP_T_{Pre,UD,WB}): Define, bits in co-processor - instructions. - ([ls]fm_flags): Correct error in bitmasks. - (cp_address_required_here): Delete second parameter, FLAGS. All - callers changed. Remove all dead code referring to FLAGS. If - address is just "[Reg]" then convert into a PRE-INCREMENT UP format. - (do_fp_ldmstm): Handle full-descending and empty-ascending stack - formats explicitly. - - * config/tc-arm.c (internalError): Define. - (ARM_{1,2,250,3,6,7,7DM,ANY,2UP,ALL,3UP,6UP,LONGMUL}): Define processor - variants. - (FPU_{CORE,FPA10,FPA11,NONE,ALL,MEMMULTI}): Define floating point - variants. - ({CPU,FPU}_DEFAULT): Define. - (cpu_variant): New variable. - (asm_flg): Change more_flags to flag_bits. - Add prototypes for new functions. - (FLAG_{S,P,B,T,ED,FD,FA,EA,IB,IA,DB,DA,L}): Delete. - (s_flag[], ldst_flags[], byte_flag[], cmp_flags[], ldm_flags[], - stm_flags[], lfm_flags[], sfm_flags[], round_flags[], except_flags[], - cplong_flag[]): New variables. - (asm_opcode, insns[]): New format, add version support. - (arm_flg_hsh): Delete. - (do_mul, do_mla): Remove "Warning" from warning messages. - (do_arit): Simplify. - (do_swap): Make error message more appropriate. - (md_begin): Build hash tables starting at first entry in tables. - (md_number_to_chars): Cope with big/little-endian selection. - (md_chars_to_number): New function. - (md_apply_fix): Rewrite to make endian independent. - (tc_gen_reloc): Better error messages. - (md_assemble): Reject opcodes forbidden by the currently selected cpu - variant. Rewrite handling code for instruction flags. - (md_shortopts): Add option "m:". - (md_parse_option): Get the desired cpu/fpu variant. - - From: David Taylor (dtaylor@armltd.co.uk) - * configure.in (architecture variants): Check for "armeb" and "arm*", - set endianness accordingly. - * read.c (read_a_source_file): New hooks md_start_line_hook and - md_after_pass_hook. - * config/arm-{big,lit}.mt: New files - * config/tc-arm.h ({LITTLE,BIG}_ENDIAN, BYTE_ORDER): Define. - (TARGET_FORMAT): Select depending on endianness and emulation and - object format. - (md_after_pass_hook, md_start_line_hook): Define. - * config/tc-arm.c: Include subsegs.h, symbols.h and listing.h. - (shift[]): Add uppper case equivalents. - (CP_T_[XY], TRANS_BIT): Define. - (conds[]): Delete initial NULL entry, add "lo" entry as synonym for - "cc". - (LONGEST_FLAG, flags[]): Delete. - (arm_psr): New structure. - (psrs[]): New variable. - (PSR_ALL): Define. - (LONGEST_INST): Bump to 5. - (LITERAL_MASK, COND_MASK, OPCODE_MASK, DATA_OP_SHIFT): Define. - (OPCODE_{AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,TST,TEQ,CMP,CMN,ORR,MOV,BIC, - MVN}): Define. - (insns[]): Add smull, umull, smlal, umlal, ldfm, stfm, msr and mrs - instructions. Add nop and adr pseudo ops. - (reg_table): Add APCS register name variants. - (arm_psr_hsh): New hash table. - (md_pseudo_table): Add "ltorg", "pool", "extend", "ldouble" and - "packed". - (MAX_LITERAL_POOL_SIZE): Define. - (struct literalS): New structure. - (literals, next_literal_pool_place, lit_pool_num, current_poolP): New - variables. - (add_to_lit_pool, symbol_locate, symbol_make_empty): New functions. - (validate_immediate): Return FAIL on failure. - (s_ltorg): New function. - (psr_required_here, psrf_required_here): New functions. - (cp_address_required_here): New parameter, flag, all callers changed. - If flag is non-zero, restrict the legal addressing modes. - (do_nop, do_mrs, do_msr, do_mull): New functions. - (negate_data_op): New function. - (data_op2): accept #x,y meaning x rotated right by y, but only when - suitable constants. If immediate is not legal, try changing the - opcode. - (do_adr): New function. - (do_ldst): accept "ldr reg, =expr". Put expr in the pool if it can't - be done as an immediate. - (do_fp_ldst): Use CP_T_[XY], not immediate values. - (do_fp_ldmstm): New function. - (arm_psr_parse): New function. - (output_inst): Use INSN_SIZE in call to md_number_to_chars. - (md_assemble): Add hack so that "Label instruction" causes alignment of - the label. - (arm_after_pass_hook, arm_start_line_hook, arm_frob_symbol): New - functions. - -Wed May 17 05:25:16 1995 Michael Meissner - - * config/tc-ppc.c (md_show_usage): Add \'s at end of lines in - strings for non-GCC compilers. - -Tue May 16 19:36:00 1995 Ken Raeburn - - * config/obj-ecoff.c (ecoff_pop_insert): New function. - (ecoff_format_ops): Use it. - (obj_ecoff_frob_symbol): Now static. - -Wed May 17 00:59:12 1995 Andrew Cagney - aka Noid - - * config/tc-ppc.c (md_begin): Was assuming that an instruction was - bigendian and hence 16bit relocs withing instructions would - ALWAYS be at addresses i+2-i+3. In LE mode it is i+0-i+1. - -Tue May 16 16:29:58 1995 Ken Raeburn - - * config/obj-multi.h (obj_frob_symbol, obj_frob_file, S_GET_SIZE, - S_SET_SIZE, S_GET_ALIGN, S_SET_ALIGN, obj_copy_symbol_attributes, - OBJ_PROCESS_STAB): New macros. - * config/tc-mips.c: Protect against redefining them also when - including obj-elf.h. Test only OBJ_ELF for including elf/mips.h. - (mips_init_after_args): New function. Set byte_order here. - (md_parse_option): Not here. - (byte_order): Don't bother initializing. - * config/tc-mips.h (mips_init_after_args): Declare. - (tc_init_after_args): New macro. - - * read.c (s_lcomm): Do ELF/ECOFF test at run time, not compile - time. - -Fri May 12 14:17:47 1995 Steve Chamberlain - - Initial support for PE object files. - * configure.in, configure (i386-*-pe, i386-*-*nt): Add. - * config/obj-coff.c (fixup_segment): Cope with PE wierdness. - * config/obj-coff.h (TE_PE): New target format. - -Thu May 11 14:58:21 1995 Ken Raeburn - - * config/obj-elf.c (NEED_ECOFF_DEBUG): Define if ECOFF_DEBUGGING - was defined by header files. Test in preprocessor conditionals - instead of ECOFF_DEBUGGING. - (ecoff_debug_pseudo_table): Make empty if NEED_ECOFF_DEBUG is not - defined. - (obj_read_begin_hook, obj_symbol_new_hook, elf_frob_symbol, - elf_frob_file): Only call ecoff routines if NEED_ECOFF_DEBUG is - defined. - (elf_ecoff_set_ext, elf_get_extr, elf_set_index): Define only if - NEED_ECOFF_DEBUG is defined. - (elf_format_ops): Reference elf_ecoff_set_ext only if - NEED_ECOFF_DEBUG. - -Wed May 10 18:09:12 1995 Ken Raeburn - - * Makefile.in (OBJS): Include @extra_objects@. - (obj-elf.o, obj-ecoff.o, e-mipself.o, e-mipsecoff.o): New rules - for building these independently. - * emul-target.h, config/e-mipself.c, config/e-mipsecoff.c: New - files. - - * acconfig.h (DEFAULT_EMULATION, EMULATIONS, USE_EMULATIONS, - OBJ_MAYBE_*, I386COFF, M68KCOFF, M88KCOFF): New macros. - * aclocal.m4 (GAS_UNIQ): New macro. - - * as.c (emulations, n_emulations) [USE_EMULATIONS]: New variable. - (select_emulation_mode, default_emul_bfd_name, common_emul_init) - [USE_EMULATIONS]: New functions. - (main) [USE_EMULATIONS]: Call select_emulation_mode before other - initialization. - * emul.h: New file. - * as.h [USE_EMULATIONS]: Include it. - - * configure.in: Handle enable-targets option. Iterate over target - list, building up a list of object file formats and emulation - configurations. (Only supports emulations for MIPS CPU so far.) - If multiple formats are needed, set obj_format to multi and add - format config files to extra_files. If emulation modes are - needed, add the relevant files to extra_files. - - * configure.in: Define I386COFF, M68KCOFF, M88KCOFF for those - configurations. - - * ecoff.c (ecoff_generate_asm_lineno): Filename argument now - points to const. - * ecoff.h (ecoff_generate_asm_lineno): Updated declaration. - - * obj.h (obj_read_begin_hook): Don't declare function if it's - already a macro. - - * read.c (s_space, cons, stringer): If md_flush_pending_output is - defined, call it on entry. - * config/obj-elf.c (obj_elf_section): If md_flush_pending_output - is defined, call it on entry. If md_elf_section_change_hook is - defined, call it before returning normally. - - * read.h (target_big_endian): Declare. - - * obj.h (struct format_ops): Added new function pointer fields - ecoff_set_ext, read_begin_hook, symbol_new_hook. - (ecoff_format_ops, elf_format_ops): Declare. - * config/obj-elf.c (elf_s_get_size, elf_s_set_size, - elf_s_get_align, elf_s_set_align, elf_copy_symbol_attributes, - elf_sec_sym_ok_for_reloc): New functions. - (elf_format_ops): New variable. - (elf_frob_symbol): Now takes additional int* argument. - * config/obj-elf.h (elf_frob_symbol): Update declaration. - (elf_pop_insert): Declare. - (obj_pop_insert): Define to call elf_pop_insert. - * config/obj-ecoff.c (ecoff_sec_sym_ok_for_reloc, - obj_ecoff_frob_symbol): New functions. - (ecoff_format_ops): New variable. - - * config/te-generic.h: If OBJ_HEADER is defined, use it as the - filename to include in place of obj-format.h. - * config/te-multi.h: New file, copied from te-generic.h. - * config/obj-elf.c (OBJ_HEADER): Define it to "obj-elf.h". - * config/obj-ecoff.c (OBJ_HEADER): Define it to "obj-ecoff.h". - - * config/obj-elf.c (ECOFF_DEBUGGING): Default to 0. - (obj_read_begin_hook, obj_symbol_new_hook, elf_frob_symbol, - elf_frob_file): Test it at run time. - (obj_ecoff_set_ext, elf_get_extr, elf_set_index): Define - unconditionally. - (elf_pseudo_table): Renamed from obj_pseudo_table, now static. - (ecoff_debug_pseudo_table): Split off into separate table. Define - it unconditionally. - (elf_pop_insert): New function. - * config/obj-elf.h (elf_pop_insert): Declare. - (obj_pop_insert): New macro. - (obj_ecoff_set_ext) [!OBJ_MAYBE_ELF]: Define to elf_ecoff_set_ext. - * config/obj-ecoff.h (obj_ecoff_set_ext): Define to ecoff_set_ext. - - * config/tc-mips.h: Protect against multiple inclusions. - (mips_pop_insert): Declare. - (md_pop_insert): Call it. - - * config/tc-mips.c: If OBJ_MAYBE_ELF is defined, include - obj-elf.h, but preserve OUTPUT_FLAVOR and protect some other - macros from redefinition. - (ECOFF_DEBUGGING): Default to 0. All references changed to - run-time tests or made unconditional. - (s_stringer, s_mips_space, s_elf_section): Deleted. - (md_pseudo_table): Don't refer to them. Split table into three - sections, for MIPS, non-ECOFF_DEBUGGING, and ELF. - (mips_pop_insert): New function. - (mips_flush_pending_output): New function. - (mips_enable_auto_align): New function. - * config/tc-mips.h (mips_pop_insert): Declare. - (md_pop_insert): New macro. - (mips_flush_pending_output): Declare. - (md_flush_pending_output): New macro. - (mips_enable_auto_align): Declare. - (md_elf_section_change_hook): New macro, calls - mips_enable_auto_align. - -Tue May 9 17:07:41 1995 Michael Meissner - - * configure.in: Add little endian PowerPC support. - * configure: Rebuild with autoconf. - * config/ppc-big.mt: New file for big endian PowerPC systems. - * config/ppc-lit.mt: New file for little endian PowerPC systems. - - * config/tc-ppc.h (target_big_endian): Declare. - (TARGET_FORMAT): Deal with little and big endian ELF variants. - (TARGET_BYTES_BIG_ENDIAN): Define as 1, not empty. - - * config/tc-ppc.c (ppc_big_endian): Delete variable, use - target_big_endian instead. - (md_parse_option): Parse -mlittle and -mlittle-endian to use - little endian support. Parse -mbig and -mbig-endian to use big - endian support. - (md_show_usage): Update to reflect current switches. - (ppc_set_cpu): Recognize powerpcle as little endian PowerPC. Use - as_fatal, not abort if unknown machine. - -Tue May 9 10:58:41 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Cast *valp to an integer when - comparing against signed values. - (hppa_force_relocation): Make "distance" an integer. - -Tue May 9 00:47:03 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * obj.h (struct format_ops) [BFD_ASSEMBLER]: New type. - (this_format) [BFD_ASSEMBLER]: Declare new variable, if not - already defined as a macro. - -Mon May 8 21:44:13 1995 Ken Raeburn - - * subsegs.h (seg_info): Provide dummy version for - non-BFD_ASSEMBLER, non-MANY_SEGMENTS configuration. It should - never get invoked, but this is easier than conditionalizing some - of the uses. - (struct seg_info_trash): Dummy type used by above to make code - compile. - -Fri May 5 14:47:13 1995 Ken Raeburn - - * config/obj-coff.h (SEPARATE_STAB_SECTIONS): Define to 1, not - empty. - * config/obj-elf.h (SEPARATE_STAB_SECTIONS): Ditto. - * config/obj-som.h (SEPARATE_STAB_SECTIONS): Ditto. - -Thu May 4 19:26:55 1995 Ken Raeburn - - * stabs.c (get_stab_string_offset): Always define. If - SEPARATE_STAB_SECTIONS isn't set, abort. - (SEPARATE_STAB_SECTIONS): Default to zero. - (aout_process_stab): New function, split out from s_stab_generic. - (OBJ_PROCESS_STAB) [AOUT_STABS]: Define to call aout_process_stab, - if not already defined. - (s_stab_generic): Test SEPARATE_STAB_SECTIONS at run time. If - it's not set, and OBJ_PROCESS_STAB isn't defined, abort. Always - pass six arguments to OBJ_PROCESS_STAB. - * read.h (get_stab_string_offset): Declare unconditionally. - * config/obj-aout.h (AOUT_STABS): Define. - * config/obj-bout.h (AOUT_STABS): Define. - * config/obj-ecoff.h (OBJ_PROCESS_STAB): Add new first argument, - ignored. - * config/obj-elf.h (OBJ_PROCESS_STAB) [ECOFF_DEBUGGING]: Ditto. - - * config/obj-ecoff.h (ECOFF_DEBUGGING): Define to 1, not empty. - * config/obj-elf.h (ECOFF_DEBUGGING): Ditto. Test value, not - whether it's defined. - -Wed May 3 21:38:20 1995 Ken Raeburn - - * as.h (LOCAL_LABELS_DOLLAR, LOCAL_LABELS_FB): If not already - defined, define them to zero. - * config/tc-*.h, config/te-*.h: If defining them, define them to - be 1 instead of empty. - * expr.c (integer_constant, operand): Test them at run time - instead of compile time. - * read.c (read_a_source_file): Ditto. - * symbols.c (colon): Ditto. - (dollar_*, define_dollar_label, fb_*): Define unconditionally. - * symbols.h (dollar_*, define_dollar_label, fb_*): Declare - unconditionally. - -Wed May 3 13:08:53 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Do nothing for an out of range - PC relative call since those only occur in cases where the linker - can fix them up. - (hppa_force_relocation): Force relocations for out of range PC - relative calls. - -Tue May 2 16:34:47 1995 Jeff Law (law@snake.cs.utah.edu) - - * configure (hppa*-*-lites*): Handle just like hppa*-*-*elf*. - * configure.in: Likewise. - -Tue May 2 11:22:00 1995 Ken Raeburn - - * read.c (pop_insert): New function. - (pop_override_ok, pop_table_name): New variables. - (md_pop_insert, obj_pop_insert): New macros. - (pobegin): Use them. - - * config/tc-mips.c: Use USE_STDARG and USE_VARARGS instead of - NO_STDARG &c. - - * read.c (target_big_endian): If TARGET_BYTES_BIG_ENDIAN is - defined, initialize to 1. - * config/tc-mips.c (mips_target_format): Changed to a function, - checking flavor and byte order at run time. - (md_parse_option, cases OPTION_EB and OPTION_EL): Set - target_big_endian here. - (md_begin): Not here. - * config/tc-mips.h (mips_target_format): Adjust declaration. - (TARGET_FORMAT): Call mips_target_format. - - * config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Define in terms of - OUTPUT_FLAVOR. - * config/tc-mips.c (g_switch_value, g_switch_seen): Define - unconditionally. - (md_begin, mips_ip, md_parse_option, s_change_sec, s_option, - s_abicalls, nopic_need_relax): Check USE_GLOBAL_POINTER_OPT at run - time, instead of compiling conditionally on GPOPT. - (GPOPT): Don't define. - (md_shortopts): Always include -G. - (RDATA_SECTION_NAME): Select at run time. - (md_begin): Test for ELF format at run time instead of compile time. - (mips_ip, s_change_sec): Ditto. - (md_parse_option, cases OPTION_CALL_SHARED and OPTION_NON_SHARED): - Ditto. - (OPTION_CALL_SHARED, OPTION_NON_SHARED, mips_regmask_frag): Define - unconditionally. - -Tue May 2 00:17:04 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * Makefile.in (TARG_CPU_DEP_*): New variables. - (targ-cpu.o): Depend on one, selected by autoconf substitution, - instead of TARG_CPU_DEPENDENTS. - * configure.in: Substitute $cpu_type, $obj_format, $atof, and - $emulation into Makefile.in. - * config/h8300.mt: Deleted. - * config/h8500.mt: Deleted. - * config/i386coff.mt (TARG_CPU_DEPENDENTS): Deleted. - * config/m68k.mt: Deleted. - * config/m68kcoff.mt (TARG_CPU_DEPENDENTS): Deleted. - * config/m88kcoff.mt (TARG_CPU_DEPENDENTS): Deleted. - * config/mips-big.mt (TARG_CPU_DEPENDENTS): Deleted. - * config/mips-lit.mt (TARG_CPU_DEPENDENTS): Deleted. - * config/sh.mt: Deleted. - * config/w65.mt: Deleted. - * config/z8k.mt: Deleted. - - * config/te-dpx2.h (dpx2): Deleted unused macro. - * config/te-generic.h (TE_GENERIC): Ditto. - * config/te-go32.h (TE_GO32): Ditto. - * config/te-hp300.h (TE_HP300): Ditto. - * config/te-hppa.h (PA, _TE_PA_H): Ditto. - * config/te-ic960.h (TE_IC960): Ditto. - * config/te-nbsd532.h (TE_NETBSD532): Ditto. - * config/te-pc532mach.h (TE_PC532MACH): Ditto. - * config/te-ppcnw.h (TE_PPCNW): Ditto. - * config/te-sco386.h (scounix): Ditto. - -Mon May 1 15:59:56 1995 Ken Raeburn - - * read.c (s_app_file): If obj_app_file is defined, call it with - string as argument. Don't call c_dot_file_symbol or - elf_file_symbol. - * config/obj-coff.h (obj_app_file): Define as c_dot_file_symbol. - * config/obj-elf.h (obj_app_file): Define as elf_file_symbol. - - * as.h (OUTPUT_FLAVOR): Don't define here. - * config/obj-aout.h (OUTPUT_FLAVOR) [BFD_ASSEMBLER]: Define. - * config/obj-bout.h (OUTPUT_FLAVOR): Define. - * config/obj-coff.h (OUTPUT_FLAVOR) [BFD_ASSEMBLER]: Define. - * config/obj-ecoff.h (OUTPUT_FLAVOR): Define. - * config/obj-elf.h (OUTPUT_FLAVOR): Define. - -Thu Apr 27 20:07:33 1995 Doug Evans - - * Makefile.in (RUNTEST): Use one in srcdir if present. - (RUNTESTFLAGS): Define. - -Wed Apr 26 15:54:10 1995 Ken Raeburn - - Support for more portable alignment handling in assembly code, - based on patches from Bryan Ford : - * read.c (potable): Added balign and p2align, for aligning by - bytes or powers of two independent of what ".align" does for a - given target. - * doc/as.texinfo: Document them. - -Tue Apr 25 11:12:04 1995 Rob Savoye - - * configure, configure.in: Look for m68k-*-vxworks* rather than - just m68k-wrs-vxworks so gas can be configured for - m68k-vxworks5.1. - -Fri Apr 21 15:19:06 1995 Ken Raeburn - - * config/tc-sh.c (md_apply_fix): If fx_r_type is zero, handle - fx_size of 1, and abort on unrecognized sizes. - - * config/tc-m68k.c (m68k_ip): Fix bug in last change regarding - non-isvar case. - -Sun Apr 16 01:52:52 1995 Ken Raeburn - - * config/tc-m68k.h (md_relax_table, TC_GENERIC_RELAX_TABLE): - Missed this one in 11 Apr changes. - - * config/tc-i386.h (TC_GENERIC_RELAX_TABLE): Fix typo. - -Thu Apr 13 18:18:08 1995 Ken Raeburn - - * config/tc-sh.c (md_convert_frag): Instead of aborting on large - displacements, print an error message. Don't invoke the code that - followed the abort call until it's been verified. - - * config/tc-m68k.c (md_show_usage): Add 68060 to list. Split cpu - list into three lines. - -Thu Apr 13 14:34:36 1995 Torbjorn Granlund - - * config/tc-m68k.c (m68k_init_after_args): Test for m68360. - (md_parse_option): Likewise. - (md_show_usage): Mention m68360. - * config/tc-m68k.h (TARGET_WORD_SIZE): Define. - (TARGET_ARCH): Define. - - * expr.c (integer_constant): If TARGET_WORD_SIZE is defined, - sign-extend appropriately. - -Thu Apr 13 11:20:17 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_validate_fix): Properly use PARAMS to - hide prototype from non-ANSI compilers, and don't use ANSI syntax - for arguments. - -Wed Apr 12 12:20:19 1995 Stan Shebs - - * mpw-config.in (TDEFINES): Put empty definition into - makefile fragment. - * mpw-make.in (xmalloc.c.o): Remove. - (as.new): Depend on Version.r. - (Version.r): Generate from version info. - - * mpw-make.in: Delete references to hex-value.c. - - * mpw-config.in: Add mapping from configs to object file formats, - get VERSION from Makefile.in and add to mk.tmp. - (mips-idt-ecoff) [TDEFINES]: Add TARGET_BYTES_BIG_ENDIAN. - * mpw-make.in (VERSION, gC): Don't define. - (ALL_CFLAGS): Remove -d flags. - (config.h): Remove definition of MPW, add HAVE_STDARG_H, - BFD_ASSEMBLER. - - * mpw-make.in (ALL_CFLAGS): Add definition of HAVE_STDARG_H, - include of ::libiberty:. - (config.h): Ifdef contents on GAS_VERSION. - - * mpw-make.in (as.c): Compile with C not gC. - (config-stamp): Touch correctly. - (install-only): New target. - (install): Depend on all and install-only. - - * mpw-config.in: Parse target and use to generate forward includes - to tc-, obj-, and atof- files, use te-generic.h for emulation. - * mpw-make.in (VERSION): Define. - (as.c): Compile with GCC. - (TARG_OBJECTS, CLIBS): Define. - (as.new): Use LDFLAGS, TARG_OBJECTS, CLIBS and EXTRALIBS in link - command. - (config.h, config-stamp): Build. - - * mpw-make.in (C, CFLAGS): Removed definitions. - (ALL_CFLAGS): Define. - Set default rule to use {CC} instead of {C}. - - * mpw-make.in (install): Moved here from mpw-build.in. - * mpw-build.in: Removed, functionality in mpw-make.in - - * mpw-make.in (CFLAGS): Add more include paths. - - * mpw-config.in (varargs.h, sys/*.h): Don't create when - configuring. - * mpw-make.in (CFLAGS): Add -w flag. - - * mpw-make.in: Replace 8-bit chars with their names. - - * mpw-config.in: New file, MPW version of configure.in. - * mpw-make.in: New file, MPW version of Makefile.in. - -Tue Apr 11 01:42:36 1995 Ken Raeburn - - * configure.in: Require at least autoconf 2.3, because earlier - versions lose on some AIX versions. - * configure: Regenerated. - - * configure.in: Add m68k-*-elf. - * config/tc-m68k.c (comment_chars) [OBJ_ELF]: Include '#'. - (md_pseudo_table) [OBJ_ELF]: Ignore "swbeg". - (md_begin): Set alt_notend_table['&'], so svr4-style immediate - operands are accepted. - (md_apply_fix): Argument VALP should point to valueT. - (md_convert_frag): Argument SEC should be type segT. - (md_shortopts) [OBJ_ELF]: Accept 'Q' with an argument. - (md_parse_option): Ignore it. - (md_convert_frag_1): Add in frag address for the symbol in the - displacement calculation. - * config/tc-m68k.h (TARGET_FORMAT) [OBJ_ELF]: Use "elf32-m68k". - (TARGET_ARCH): Define. - (REGISTER_PREFIX_OPTIONAL) [OBJ_ELF]: Default to 0. - (LOCAL_LABEL, FAKE_LABEL_NAME, REGISTER_PREFIX_OPTIONAL): Handle - these the same way for OBJ_ELF as for M68KCOFF. - - * gdbinit.in: Add breakpoint in as_abort. - - * write.c (cvt_frag_to_fill): If offset is less than zero, - complain about it specifically, instead of reporting an assertion - failure. - (relax_segment): Complain about .org backwards, then ignore it. - Do generic rs_machine_dependent relaxation only if - TC_GENERIC_RELAX_TABLE is defined, and use its value for the base - of the table. - * tc.h (md_relax_table): Delete declaration. - * as.h (struct relax_type): Add forward declaration for type. - * config/tc-a29k.c: Deleted md_relax_table. - * config/tc-{alpha,arm,h8300,hppa,i860,m88k,mips,ppc,sparc,z8k}.c: - Ditto. - * config/tc-{h8500,i386,i960,ns32k,sh,tahoe,vax,w65}.h: Declare - md_relax_table here, and define TC_GENERIC_RELAX_TABLE to expand - to md_relax_table. - * config/tc-h8500.c (md_relax_table): No longer const. - * config/tc-w65.c (md_relax_table): Ditto. - * config/tc-sparc.c (md_short_jump_size, md_long_jump_size): - Deleted. - * doc/internals.texi: Describe TC_GENERIC_RELAX_TABLE and - WORKING_DOT_WORD. Mention md_*_jump_size (but description needs - to be fleshed out later). Note m68k PCINDEX mode has been checked - in. - -Mon Apr 10 15:57:42 1995 Ken Raeburn - - * config/tc-mips.c (nopic_need_relax): New static function, split - out from md_estimate_size_before_relax. - (md_estimate_size_before_relax): Call it. - (load_address, macro): In NO_PIC branches, if nopic_need_relax - returns nonzero, don't attempt GP optimization. - - * config/tc-m68k.c (PCINDEX): New macro. - (md_relax_table): No longer const. Add PCINDEX entries. - (m68k_ip): For AINDX with simple symbol operand, generate a - PCINDEX frag if PC is used, or do normal non-AINDX processing for - address register. - (m68k_init_after_args): If cpu is 68000 or 68010, fix - md_relax_table to prevent relaxation of PCINDEX/BYTE mode to - SHORT, since they don't support that mode. - (md_convert_frag_1, case PCLEA/LONG): Add 4 to offset, not 2. Add - support for new PCINDEX modes. - (md_estimate_size_before_relax): Process PCINDEX/SZ_UNDEF mode. - - * config/tc-m68k.c (md_convert_frag_1, case PCLEA/SHORT): Add 2 to - offset. - (m68k_ip, case most punctuation/AOFF): If using PC, call add_frag - using PCLEA. - - * config/tc-m68k.c: Don't explicitly include config.h. Deleted a - bunch of "#if 0" code and useless comments. - (struct m68k_cpu): New type. - (archs, n_archs): New variables, with single list of name/enum - mapping and aliases. - (m68k_ip): Delete the table here. - (m68k_init_after_args): Use the new table here instead of - open-coding it. - (md_parse_option, case 'm'): Ditto. - - * doc/Makefile.in (Makefile): Fix rule for running config.status. - (internals.dvi, internals.ps, internals.ps4): New targets, not - built by default. - - * doc/internals.texi: Add loud disclaimer. Refill to 79 columns, - specify fill-column in local-variables section. Change - subheadings to subsections so they can be cross-referenced. - Describe broken words, frags, frag chains, generic relaxation, - relax table, m68k relaxation, m68k addressing modes, test suite - code. Add a few words about various file formats. - - * doc/as.texinfo (m68k): Recommend using `%' with registers as the - normal case, instead of the exceptional case. - -Thu Mar 30 14:38:47 1995 H.J. Lu (hjl@nynexst.com) - - * configure.in: Change linux to default to elf. Using - i[345]86-*-linuxaout will defaults to a.out. - * configure: Rebuild. - -Wed Mar 29 17:16:30 1995 Torbjorn Granlund - - * config/tc-m68k.c (md_apply_fix_2): Cast negative offsets to offsetT - (for hosting on 64 bit machines). - -Tue Mar 21 16:53:27 1995 Ian Lance Taylor - - * config/tc-mips.c (md_show_usage): Mention -mips4 and -m4650. - -Fri Mar 17 16:47:13 1995 Stan Shebs - - * write.c (write_object_file): Add PROGRESS macros. - -Fri Mar 17 12:40:34 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_comm): Make sure to always reset the frag - and section for common symbols. - -Thu Mar 16 17:26:18 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_validate_fix): Allow non PC relative - pointers in the .ctors and .dtors section also when using the - -mrelocatable option. - (md_parse_option): Support -m403 as a PowerPC computer. - (md_show_usage): Ditto. - -Wed Mar 15 14:45:42 1995 Ian Lance Taylor - - * ecoff.c (ecoff_build_debug): The cur_scope field of a fil_ptr - may be NULL when given strange input. Don't core dump. - -Tue Mar 14 21:36:34 1995 Ian Lance Taylor - - * config/tc-mips.c (load_register): Don't use addiu for dli of an - unsigned seemingly negative number. Don't bother shifting a zero - value. - (mips_ip): For case 'j', if there are more alternatives, and the - ISA level is at least 3, don't accept an unsigned seemingly - negative number. - -Tue Mar 14 19:16:43 1995 Ken Raeburn - - * read.c (s_app_line): Fix last patch to deal with a line number - of 1. - -Tue Mar 14 17:00:57 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_validate_fix): Use as_warn_where, not - as_bad_where to give a warning instead of an error. - -Mon Mar 13 17:03:46 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/tc-vax.c (md_assemble): issue a warning if a constant - is used as an operand where an immediate value is not allowed. - -Fri Mar 10 19:21:19 1995 Ken Raeburn - - * config/obj-coff.c: Redo my 10 Jan change, but get it right this - time. :-) - (fixup_segment): If linkrelax is set, just return. - (write_object_file): Don't treat h8300 and z8k specially with - regard to fixups. - * config/tc-h8300.c (md_begin): Set linkrelax. - * config/tc-z8k.c (md_begin): Ditto. - -Thu Mar 9 18:01:37 1995 Ian Lance Taylor - - * config/obj-coff.c (coff_header_append): Check return value of - bfd_coff_swap_scnhdr_out. - -Thu Mar 9 13:51:30 1995 Doug Evans - - Delete this patch, it breaks the h8300 assembler. - Tue Jan 10 13:34:14 1995 Ken Raeburn - * config/obj-coff.c (write_object_file): Don't treat h8300 and z8k - specially with regard to fixups. - -Thu Mar 9 12:28:18 1995 Michael Meissner - - * config/tc-ppc.c (mrelocatable): Change type to boolean. - (md_begin): Set the EF_PPC_RELOCATABLE if -mrelocatable. - -Wed Mar 8 15:39:39 1995 Ian Lance Taylor - - * config/tc-mips.c (md_begin): Check for a cpu string of r8000 or - r10000. If mips_isa is 4, set the machine number to 8000. - (append_insn): If mips_isa is at least 4, don't generate nops for - coprocessor delays. Check INSN_READ_FPR_R when setting - mips_cprmask[1]. - (mips_emit_delays): If mips_isa is at least 4, don't generate nops - for coprocessor delays. - (mips_ip): Check for INSN_ISA4 instructions. Handle new argument - types 'h', 'R', 'N', and 'M'. - (md_longopts): Accept "mips4". - (md_parse_option): Handle -mips4, and -mcpu=10000 and -mcpu=8000. - (s_mipsset): Permit .set mips4. - -Wed Mar 8 09:36:05 1995 Michael Meissner - - * config/tc-ppc.c (ppc_elf_validate_fix): Allow .stab sections to - have non PC relative relocations with -mrelocatable. - -Wed Mar 8 02:57:53 1995 Ken Raeburn - - * config/tc-m68k.c (opcode_ptr): Return pointer to const. - (md_begin): Make hash table errors fatal. Process opcode aliases - after main opcode table. - (md_apply_fix_2, case 4): Recode setting of lower_limit to avoid - gcc warning. - -Tue Mar 7 16:07:10 1995 Ian Lance Taylor - - * doc/as.texinfo: Add documentation for SPARC V9, from Doug Evans - . - -Mon Mar 6 09:58:34 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Change all occurences of pa-89 with pa-11 to - be consistent with current naming conventions. - (md_begin): Set a default architecture and machine type. - (pa_ip): If the current instruction specifies a newer machine type - than the current machine type, then update the current machine - type. - (need_pa11_opcode): Likewise. - -Sun Mar 5 19:38:09 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip, case 'z'): Don't lose argument - relocation bits for absolute calls. - -Fri Mar 3 17:41:50 1995 Ken Raeburn - - * config/tc-h8300.* (md_operand): Change empty function to empty - macro. - - * config/tc-h8300.c (build_bytes): Make H8/300-H warning message - clearer. - - * write.c (write_contents): If bfd_set_section_contents fails, - print a message and exit, instead of aborting. - -Fri Mar 3 16:26:19 1995 Michael Meissner - - * tc.h (md_apply_fix3): If MD_APPLY_FIX3 is defined, declare - md_apply_fix3. - - * write.c (fixup_segment): If MD_APPLY_FIX3 is defined, call - md_apply_fix3 with the normal 2 arguments and the current segment - pointer instead of md_apply_fix. - - * config/tc-ppc.h (MD_APPLY_FIX3): Define. - - * config/tc-ppc.c (ppc_elf_validate_fix): Warn if -mrelocatable - and a non PC relative relocation that isn't in the .got2 segment - was performed. - (md_apply_fix3): Rename from md_apply_fix and take segment pointer - as third argument. If ELF object format, call ppc_elf_validate_fix - for normal relocations. - (md_parse_option): If ELF object format, recognize the - -mrelocatable switch. - -Thu Mar 2 16:34:44 1995 Ian Lance Taylor - - * config/tc-i386.h (AOUT_MACHTYPE): Define as 100, not 0. - -Tue Feb 28 18:29:27 1995 Ken Raeburn - - * config/tc-arm.c, config/tc-arm.h (md_operand): Replaced empty - function in .c file with empty macro in .h file. - * config/tc-h8500.*, config/tc-hppa.*, config/tc-i386.*, - config/tc-i860.*, config/tc-i960.*, config/tc-ns32k.*, - config/tc-ppc.*, config/tc-sh.*, config/tc-sparc.*, - config/tc-tahoe.*, config/tc-vax.*, config/tc-w65.*, - config/tc-z8k.*: Ditto. - * config/tc-m68k.*: Ditto. - - * config/tc-m68k.c (mote_pseudo_table): Removed dots from opcode - names. - - * read.c (s_app_line): Ignore non-positive line numbers. - -Tue Feb 28 15:34:14 1995 Ian Lance Taylor - - * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust PLT or - GOT relocs either. - -Mon Feb 27 13:03:41 1995 Kung Hsu - - * configure.in: add a29k-*-vxworks configuration. - -Fri Feb 24 14:41:15 1995 Ian Lance Taylor - - * config/tc-mips.c (load_register): Take dbl argument to determine - handling of signed 32 bit values in 64 bit modes. Change all - callers. - (macro): Handle M_DLI and M_DLA_AB. - -Wed Feb 22 23:10:56 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Don't subtract the value of the - add symbol if it's a common symbol (the value of a common symbol - is its size, not a value in the traditional sense). - -Wed Feb 22 21:12:28 1995 Ian Lance Taylor - - * config/tc-mips.c (append_insn): If listing_prev_line is called, - call frag_grow to make sure there is still room for a variant. - -Fri Feb 17 14:50:08 1995 Ian Lance Taylor - - * config/tc-mips.c (md_pseudo_table): Add 2byte, 4byte and 8byte - if OBJ_ELF. From gary@Intrepid.COM (Gary Funck). - - * config/obj-elf.c (elf_frob_symbol): Warn if a symbol is both - weak and common. - * config/obj-aout.c (obj_aout_frob_symbol): Likewise. - -Fri Feb 17 12:43:47 1995 Michael Meissner - - * config/tc-ppc.c (md_pseudo_table): Don't redefine byte under - ELF. - (ppc_elf_cons): Don't support @pcrel any more, since DIFF_EXPR_OK - allows the normal expressions to generate it. - (md_apply_fix): Convert BFD_RELOC_32 with pcrel bit set into - BFD_RELOC_32_PCREL. Abort if either BFD_RELOC_16 or BFD_RELOC_8 - need PC relative relocations. - - * config/tc-ppc.h (DIFF_EXPR_OK): Define to allow PC relative - expressions to be handled. - -Thu Feb 16 14:30:13 1995 Doug Evans - - * expr.c (operand): Move md_operand handling to default case - (so it works). - -Wed Feb 15 16:08:47 1995 Jason Molenda - - * config/tc-h8500.c (tc_coff_symbol_emit_hook): Add ignored - parameter, to match prototype. - -Wed Feb 15 15:07:00 1995 Michael Meissner - - * config/tc-ppc.c (md_pseudo_table): If ELF, go to ppc_elf_cons - instead of cons. - (md_show_usage): Show all of the PowerPc options. - (ppc_elf_suffix): New function to recognize ELF suffixes that - specify a relocation, such as @GOT. - (ppc_elf_cons): Replacement for the standard cons function that - knows about the ELF suffixes. - (ppc_fixup): Add reloc field to hold non-standard relocation. - (md_assemble): Handle ELF suffixes like @GOT. - (md_create_short_jump): Dummy in case WORKING_DOT_WORD is not - defined. - (md_create_long_jump): Ditto. - (md_short_jump_size): Ditto. - (md_long_jump_size): Ditto. - (md_apply_fix): Handle BFD_RELOC_32_PCREL, BFD_RELOC_LO16, - BFD_RELOC_HI16, BFD_RELOC_HI16_S, BFD_RELOC_PPC_TOC16, and - BFD_RELOC_16 relocations. If relocation can not be found, print - the decimal value of the relocation. - -Wed Feb 15 11:46:02 1995 Ian Lance Taylor - - * config/tc-mips.c (md_apply_fix): Accept BFD_RELOC_16, for - DWARF. From gary@Intrepid.COM (Gary Funck). - - * config/tc-mips.c (macro): Handle M_U{L,S}D[_A] (unaligned double - loads and stores). - - * config/tc-i386.c (tc_i386_fix_adjustable): Do adjust global - symbols if OBJ_AOUT. - - * config/tc-mips.c (macro): Don't use the target register as a - base register when building the address for M_L{W,D}{L,R}_AB. - -Mon Feb 13 14:44:32 1995 Ian Lance Taylor - - * config/tc-mips.c (KT0, KT1): Define. - (mips_ip): Recognize $kt0 and $kt1 as register names. - - * config/tc-sparc.h (tc_fix_adjustable): Define if OBJ_ELF. - * config/tc-sparc.c (md_apply_fix): If OBJ_ELF, subtract out the - value of a defined symbol; the value was added in by - fixup_segment. This was previously corrected, if the reloc was - changed to be against a section symbol, in tc_gen_reloc. - -Fri Feb 10 14:04:04 1995 Ian Lance Taylor - - * config/tc-i386.c (tc_i386_fix_adjustable): Use S_IS_EXTERN - rather than !S_IS_LOCAL. - -Thu Feb 9 18:16:34 1995 Ian Lance Taylor - - * config/tc-i386.c (md_assemble): Adjust conditions for changing - BFD_RELOC_32 to BFD_RELOC_386_GOTPC to handle a switch in frags. - Patch originally from Rob Ryan . - - * config/tc-i386.c: Include subsegs.h. - (tc_i386_fix_adjustable): Declare return value. - (i386_operand): Don't use an assignment directly as a condition. - -Thu Feb 9 10:37:13 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): In some cases subtract the - value of the add symbol from valp. Offsets braindamage in the - "machine independent" fixup_segment. - -Wed Feb 8 18:51:23 1995 Ken Raeburn - - * messages.c (as_abort): New function. - * as.h (as_abort): Declare it. - (abort): New macro. - - Thu Jan 19 18:10:05 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/vms-conf.h (HAVE_UNISTD_H): define it unconditionally. - * config-gas.com: test for availability of ; create a - rudimentary one if necessary. - -Tue Feb 7 13:34:46 1995 Michael Meissner - - * configure.in: Add powerpc-*-eabi support, which is the same as - powerpc-*-elf. - (configure): Rebuild with autoconf. - -Mon Feb 6 03:37:00 1995 Ken Raeburn - - Changes from Bryan Ford for i386 - 16-bit and msdos support: - * config/tc-i386.c (flag_16bit_code): New variable. - (set_16bit_code_flag): New function. - (md_pseudo_table): Added entries "code16" and "code32". - (md_assemble): Ensure that correct data-size prefixes get emitted, - based on the current mode. Ensure that 32-bit addressing will - always be done. Move segment-prefix handling code. (Why?) Use - 16-bit jumps for 16-bit code, 32-bit jumps for 32-bit code. - * config/tc-i386.h (MAX_PREFIXES): Bump to 5. - (Data16, Data32): Define. - * doc/as.texinfo (i386-16bit): New node. - * configure.in (i386-*-msdos*): New target, using a.out format. - * configure: Regenerated. - -Thu Feb 2 15:21:24 1995 Ken Raeburn - - * config/tc-m68k.c (cpu32_control_regs): New macro. - (m68k_init_after_args): Use it, for cpu32 processors. - - Tue Jan 31 17:20:45 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.c (vms_tir_stack_psect): new routine; - (VMS_Set_Data, VMS_Set_Psect, VMS_Store_PIC_Symbol_Reference, - VMS_TBT_Routine_Begin, VMS_TBT_Line_PC_Correlation): use it; - (VMS_Global_Symbol_Spec, VMS_Procedure_Entry_Pt): treat - Psect_Number as `unsigned'. - - Thu Jan 26 17:06:28 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.c: performance tuning. - (VMS_Symbol_type_list): convert from single list head to small - array of list heads; - (SYMTYP_HASH): new macro for accessing VMS_Symbol_type_list[]; - (find_symbol, setup_basic_type, VMS_typedef_parse): use it; - (VMS_RSYM_Parse): move S_GET_VALUE() inside switch to avoid - calling it for uninteresting cases. - -Wed Feb 1 23:52:45 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Go ahead and call - hppa_field_adjust to get a new value for R_DATA_ONE_SYMBOL - relocations in SOM. - (hppa_fix_adjustable): Refine somewhat. - -Fri Jan 27 21:29:53 1995 Michael Meissner - - * config/tc-ppc.h (NO_STRING_ESCAPES): Don't define if we are - using ELF. - -Thu Jan 26 19:03:42 1995 Ken Raeburn - - * config/tc-h8300.c (get_specific): Add parens around | inside &. - (skip_colonthing): Set L_8 if ":8" is specified. - -Thu Jan 26 18:38:01 1995 Ian Lance Taylor - - * config/tc-ppc.c (md_begin): Permit mfdec to be duplicated on the - 601. Check that the error return from hash_insert is "exists". - -Thu Jan 26 11:35:33 1995 Michael Meissner - - * configure: Add support for configuring powerpc-*-eabi. - - * config/tc-ppc.c (GOT_symbol): Define if object format is ELF. - - * config/tc-ppc.h (GLOBAL_OFFSET_TABLE_NAME): Define if object - format is ELF and not defined to be "_GLOBAL_OFFSET_TABLE_". - -Wed Jan 25 16:23:13 1995 Jim Wilson - - * config/tc-sh.c (little): Add argument IGNORE to avoid - compiler warnings. - (md_pseudo_table): Add space for consistent formatting. - (COND8_RANGE, COND12_RANGE): Delete unused macros. - (COND8_F, COND8_M, COND12_F, COND12_M, UNCOND12_F, UNCOND12_M): - Correct minimum and maximum branch offsets. Add comments explaining - why these numbers are correct. - -Wed Jan 25 15:32:09 1995 David Edelsohn - - * config/tc-ppc.c (md_parse_option): Accept mpwr2 as a synonym for - mpwrx; mppc32, m603, and m604 as synonyms for mppc; and mppc64 and - m620 for PowerPC64 mode. - (ppc_symbol_new_hook): Add T0 as synonym for TC0 suffix. - -Tue Jan 24 16:44:23 1995 Ken Raeburn - - * config/tc-vax.c (vip): Introduce new ptr-to-const local variable - for scanning operand string. - - Sat Jan 21 17:50:38 1995 Pat Rankin (rankin@eql.caltech.edu) - - * config/vax-inst.h (struct vop, fields `vop_warn', `vop_error'): - make them pointers to const char; - (struct vit, field `vit_error'): ditto. - * config/atof-vax.c (md_atof): rename local `littlenum_pointer' - to `littlenumP' to avoid shadowing file scope variable. - * config/tc-vax.c (vip_begin, vip_op_defaults, vip_op_1): make - string arguments be pointers to const char; - (vip): make `alloperr' const char *; - (vip_op): make `err' and `wrn' const char *; rename `access' to - `access_mode' to avoid shadowing library function. - * config/obj-vms.c (`symbol_name'): make it const char *; - (get_struct_name): cast one use of `symbol_name' to char * - [caller guarantees that it won't modify the pointer's target]; - (PUT_COUNTED_STRING): use pointer to const char; - (VMS_typedef_parse): make `pnt2' const char *; - (Write_VMS_MHD_Records): make `cp' const char *; - (VMS_Modify_Psect_Attributes, array `Attributes'): make const, - and make field `Name' pointer to const char; - - * as.h (`seg_name[]' declaration): pointers to const char; - (struct _pseudo_type, field `poc_name'): pointer to const char. - * subsegs.c (`seg_name[]' definition): ditto; - * hash.c (hash_ask): rename argument `access' to `access_type' - to avoid shadowing library function. - * write.c (variable `the_object_file'): move from file scope - to block scope within write_object_file(); free it after use; - (fixup_segment): conditionally exclude it for OBJ_VMS. - (cvt_frag_to_fill): rename argument `headers' to `headersP' - to avoid shadowing file scope variable. - -Mon Jan 23 21:42:39 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip, case 'D'): Fix typo which caused - miscompilation of "diag" instructions. - -Mon Jan 23 15:51:41 1995 Ken Raeburn - - * configure: Regenerated. - - * config/tc-mips.c: Include libiberty.h. - -Mon Jan 23 14:07:58 1995 Ian Lance Taylor - - * config/tc-sh.h (tc_init_after_args): Don't define. - * config/tc-sh.c (md_begin): Remove unused variable table. - (md_assemble): Remove unused variable p. - (md_convert_frag): Cast fr_address to unsigned long for printf. - (md_apply_fix): Use as_warn_where rather than as_warn. - (sh_init_after_args): Remove empty function. - - * configure.in (i386-*-gnu*elf*): New target. - -Sat Jan 21 19:02:23 1995 Ian Lance Taylor - - * hash.c (hash_ask): If we find the slot after wrapping around, - break out of the loop. Fixes bug in Jan 18 change. - -Fri Jan 20 17:07:31 1995 Ken Raeburn - - * hash.c (hash_code): Undo last change. - -Thu Jan 19 14:49:47 1995 Ken Raeburn - - * config/tc-alpha.c (alpha_ip): Initialize local variables to keep - gcc quiet. - (gpdisp_hi16_howto): Don't use "const" with reloc_howto_type. - (in_range_signed): Add parens around subtraction inside shift. - * gasp.c (do_data): Initialize local variable "opname". - (istrue): Provide a default case to set "res" and keep "gcc -Wall" - quiet. - * write.c (write_contents): Deleted unused variable. - (print_symbol_value_1): Declare. - * hash.c (hash_ask): Delete disabled non-strcmp version of the - code, and automatic variables used only in those sections. - * write.c (chain_frchains_together_1): Only define local variable - "prev_fix" if BFD_ASSEMBLER. - * flonum-konst.c (dummy1): Return void. - * config/tc-vax.c (md_assemble): Remove two comparisons of - unsigned numbers versus zero. - * as.h (bcopy): If neither memcpy nor bcopy is defined as a macro, - define to use memcpy. - - * config/tc-alpha.c, config/alpha-opcode.h: Revert 2 June changes. - Turns out we never got the assignment done after all. - - Cleanup of VAX and VMS code, from Pat Rankin: - * config/obj-vms.c: Changed exported function names to lower case. - (Changed call sites in write.c.) Declare VMS system function - names used, conditional on actually being on VMS. Changed many - functions that returned no useful value to now be declared to - return void. Removed many unused variables. Supply missing - return statements or values. Supply `default' case in switch - statements. Ensure local variables get initialized. - * config/tc-vax.c: Minor changes to silence "gcc -Wall". - * config/obj-vms.h, config/tc-vax.h: Added some missing - declarations. - -Wed Jan 18 13:49:26 1995 Ken Raeburn - - * atof-generic.c (flonum_print) [TRACE]: New function. - (atof_generic) [TRACE]: Print multiplier before multiplication, - and print multiplication result before and after copy. - - * flonum-mult.c (flonum_multip): Avoid sign extension problems - around multiplication operation. - - * atof-generic.c (ASSUME_DECIMAL_MARK_IS_DOT): Define. - (atof_generic) [ASSUME_DECIMAL_MARK_IS_DOT]: Check for '.' - explicitly instead of calling strchr. - - * config/tc-sparc.c (sparc_ip): When scanning successive opcode - table entries, check names for pointer equality before doing - string comparisons. - - * hash.c (hash_ask): Call strcmp instead of expanding it inline. - (hash_code): Replaced with a version from bfd. - - * config/obj-coff.c (write_object_file): If COFF_FLAGS isn't - defined, default it to zero. - -Wed Jan 18 12:16:07 1995 Ian Lance Taylor - - * write.c (fix_new_internal): Clear fx_bsr on those targets which - use it. - - * expr.c (operand): Parenthesize && within ||. - * listing.c (listing_newline): Likewise. - (list_symbol_table): Use %lu to print sizeof. - * symbols.c: Comment out unused function indent. - (print_symbol_value_1): Cast pointer to unsigned long for printf. - * config/obj-coff.c (do_relocs_for): Only declare symbol_ptr if it - will be used. - * config/tc-h8300.c (md_begin): Remove unused variable reg. - (get_operand): Declare type of parameter direction. Remove unused - variable size. - (get_specific): Fix comment to avoid nested comments. - (check_operand): Cast X_add_number to unsigned long for printf. - (build_bytes): Remove unused local variables output_ptr, part, and - high. - (build_bytes): Cast X_add_number to unsigned long for printf. - (clever_message): Remove unused variable scan. - (md_assemble): Remove unused variable i. - (tc_coff_sizemachdep): Remove unused function. - * config/tc-h8300.h (tc_reloc_mangle): Declare. - -Tue Jan 17 10:58:06 1995 Ian Lance Taylor - - * config/tc-mips.c (mips_4650): New static variable. - (md_begin): Handle a cpu string of "4650". If mips_4650 was not - initialized, set it to 0. - (append_insn): Don't insert nops around HI and LO on a 4650. - (mips_emit_delays): Likewise. - (mips_ip): Use INSN_ISA mask to check ISA of instruction. Check - for INSN_4650. - (md_longopts): Add m4650 and no-m4650. - (md_parse_option): Handle mips-cpu=4650. Handle -m4650 and - -no-m4650. - * doc/as.texinfo: Document new MIPS options. - -Sat Jan 14 23:48:13 1995 Steve Chamberlain - - * config/tc-w65.c, config/tc-w65.h, config/w65.mt: Newfiles. - * config/obj-coff.h: Cope with w65. - * configure, configure.in: Recognize w65. - -Thu Jan 12 17:56:24 1995 Ken Raeburn - - * app.c (do_scrub_next_char) [__GNUC__ && __OPTIMIZE__]: If `get' - function is scrub_from_file, call scrub_from_file directly, and - get gcc's inlining capability into the act. - - * Makefile.in (VMS_OTHER_OBJS): Add ../libiberty/hex.o. - (OBJS): Delete hex-value.o. - (REAL_SOURCES): Delete hex-value.c. - (hex-value.o): Delete dependencies. - * hex-value.c: Deleted. - * as.c (main): Call hex_init. - * expr.c, config/tc-mips.c: Include libiberty.h. Replace - hex_value array references with hex_* macros. - -Wed Jan 11 17:51:38 1995 Ken Raeburn - - * config/tc-h8300.h (COFF_FLAGS): Don't define. - * config/tc-h8500.h (COFF_FLAGS), config/tc-sh.h (COFF_FLAGS), - config/tc-z8k.h (COFF_FLAGS): Ditto. - - * config/obj-coff.c (KEEP_RELOC_INFO): Make sure it's always - defined. - - * config/tc-m68k.c (m68k_ip, cases AOFF and AINDEX): Don't - generate 68020 addressing modes for a 68000 processor. - (md_estimate_size_before_relax, cases PCREL and PCLEA): Ditto. - -Tue Jan 10 13:34:14 1995 Ken Raeburn - - * config/obj-coff.c (write_object_file): Don't treat h8300 and z8k - specially with regard to fixups. - -Mon Jan 9 16:22:28 1995 Ken Raeburn - - * config/tc-mips.c (RELAX_RELOC1, RELAX_RELOC2): Cast values to - bfd_vma before subtracting. - - * config/obj-coff.c (size_section): Handle rs_space like rs_fill, - but make sure fr_symbol is null. - (fill_section): Ditto. - -Sun Jan 8 16:14:19 1995 Ian Lance Taylor - - * config/tc-mips.c (mips_ip): Fix handling of floating point - values when GPOPT is not defined. - -Fri Jan 6 16:59:41 1995 Ken Raeburn - - * gasp.c: Include string.h. Put config.h before other includes. - - * config/tc-alpha.c (alpha_ip): Delay calls to emit_add64 until - after any remaining operands are also known to match. - -Fri Dec 30 18:21:41 1994 Ken Raeburn - - * listing.c (list_symbol_table): Build a format string based on - the size of the value to be printed, as long as "unsigned long" is - at least as wide, after handling the special case of 4-byte - values. - - * Makefile.in (dependencies): Make $(OBJS) depend on as.h and - everything it includes. Delete those files from per-file - dependencies. - - * as.h (relax_substateT): Now defined to be unsigned int. - (relax_stateT): Separate typedef from enum definition. - (enum _relax_state): Reordered for better punctuation. Added new - values rs_align_code and rs_space. - (lineno, struct lineno_struct): Unused, deleted. - - * as.h: No longer include assert.h. - (as_assert): Declare. - (assert): New definition, calls as_assert longer needed. - (__PRETTY_FUNCTION__): Provide default for older versions of gcc. - * messages.c (as_assert): New function. - * gdbinit.in: Put a breakpoint there. - - * read.c (s_space): Rewrite to handle general expressions. - Generate rs_space frags for non-constant values. - * write.c (cvt_frag_to_fill): Treat rs_align_code and rs_space - like rs_align and rs_org. Verify that fr_offset is non-negative, - and force frag type to rs_fill only after assertion checks. - (relax_segment): Treat rs_align_code like rs_align. Treat - rs_space like rs_org in the first switch; in the second, force the - operand to a constant, and use it for the growth size. - -Wed Dec 28 20:57:37 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_subspace): For sections with the ZERO - attribute, set the "bss" field in the appropriate seginfo structure. - -Wed Dec 28 15:01:01 1994 Ken Raeburn - - * subsegs.h: Include obstack.h. - -Tue Dec 27 18:16:04 1994 Ken Raeburn - - * as.h (struct frag): Enable align* components now. - -Tue Dec 20 14:56:31 1994 Ken Raeburn - - * frags.c (frag_init): Call obstack_begin on `frags'. - * subsegs.c (subsegs_begin): Don't do it here. - * as.c (main): Call frag_init before subsegs_begin. - - * frags.c (frag_append_1_char): New function. - * frags.h (frag_append_1_char): Declare it. - (FRAG_APPEND_1_CHAR): Call it. Old definition is commented out - for now. - - * as.h (struct frag): Added (but commented out) new fields for - tracking current alignment. - (frag_now_fix): Changed macro to function declaration. - * frags.c (frag_now_fix): Define function here. - (frag_new): Use it instead of accessing `frags' directly. - * frags.h (frags): Change comment to indicate it shouldn't be - accessed directly. - * subsegs.h (struct frchain): New field frch_obstack, intended to - eventually replace global `frags' obstack. - * subsegs.c (subseg_set_rest): Use frag_now_fix instead of - accessing `frags' directly. Initialize fields of new frchainS - explicitly instead of with memset. - * config/obj-coff.c (obj_coff_ln) [!BFD_ASSEMBLER]: Use - frag_now_fix. - * config/tc-mips.c (s_loc), config/obj-vms.c - (vms_resolve_symbol_redef), symbols.c (colon): Likewise. - - * config/tc-m68k.c (md_apply_fix_2): Use offsetT and addressT - instead of long and unsigned long. - (md_apply_fix): Cast value before passing it. - - * config/obj-aout.h, config/obj-coff.c, config/obj-elf.h, - config/obj-som.h, config/tc-h8500.c, config/tc-hppa.c, - config/tc-hppa.h, config/tc-sh.c, config/tc-z8k.c: Don't rely on - use of ".." when including header files. - - * config/obj-coff.c (fixup_segment): Reformat condition in an `if' - statement. - - * Makefile.in (SUBDIR_INCLUDES): Deleted. - -Tue Dec 20 13:40:36 1994 Ian Lance Taylor - - * config/obj-coff.h: Include bfd/libcoff.h, not libcoff.h. - -Mon Dec 19 16:53:36 1994 Ian Lance Taylor - - * config/tc-mips.c (load_register): Rewrite to handle O_big 64 bit - constants. - (mips_ip): Accept O_big constants in case 'I'. Change case - 'i'/'j' to treat an O_big constant as an out of range value. - -Mon Dec 19 14:15:07 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_subspace): Make sure SEC_HAS_CONTENTS is - clear for a section with the "ZERO" attribute. - - * Reduce useless symbols for ELF in an attempt to make smaller - objects and speed up the linker. - * config/tc-hppa.c (struct call_info): Replace end_symbol field - with a size field. - (hppa_elf_mark_end_function): Delete unneeded function. - (pa_build_unwind_subspace): For the 2nd unwind relocation, use - the function symbol + function size instead of a special symbol - for the end of the function. - (process_exit): Compute the function size here. Don't call - hppa_elf_mark_end_of_function anymore. - (pa_procend): Likewise. - (hppa_fix_adjustable): Only reject 32bit relocations for SOM. - (elf_hppa_final_processing): Simplify. - -Mon Dec 19 13:49:07 1994 Ken Raeburn - - * configure.in: Recognize mips-sony-bsd and mips-dec-bsd, but - reject other vendors until we can be sure we're consistent with - bfd. - - * config/obj-vms.c (Create_VMS_Object_File): Instead of formatting - a buffer to pass to `error', just call `as_fatal' directly. - (VMS_Psect_Spec): Ditto. - (VMS_TBT_Module_Begin, VMS_TBT_Source_File, gen1, - VMS_typedef_parse, VMS_LSYM_Parse, VMS_Emit_Globalvalues): Call - as_tsktsk instead of printf. - (VMS_TBT_Module_Begin, VMS_TBT_Line_PC_Correlation, - VMS_TBT_Source_File, VMS_TBT_Source_Lines, - VMS_Store_Repeated_Data, VMS_Check_For_Main): Use explicit - integers rather than sizeof expressions using basic integer types, - in case host and target aren't the same. Use memcpy or COPY_* - macros instead of possibly unaligned word or longword assignment. - - * config/obj-vms.h (OBJ_SYMFIELD_TYPE): New macro. - * config/obj-vms.c (VMS_Store_PIC_Symbol_Reference, - VMS_Check_For_Main, VMS_write_object_file): Use sy_obj instead of - forcing sy_number to hold a pointer. - -Fri Dec 16 14:40:16 1994 Ken Raeburn - - * config/tc-sh.c (md_begin): Don't fill in md_relax_table here. - (md_relax_table): Use static initialization. - - * config/tc-h8300.c (parse_exp, get_operands, clever_message, - md_assemble, tc_crawl_symbol_chain, md_undefined_symbol, - tc_headers_hook, md_operand, md_number_to_chars): Don't use DEFUN. - - * Makefile.in (CHECKFLAGS): Don't pass AS_FOR_TARGET, - CC_FOR_TARGET, OBJDUMP_FOR_TARGET, NM_FOR_TARGET; they're not - used. - (AS_FOR_TARGET, CC_FOR_TARGET, OBJDUMP, OBJDUMP_FOR_TARGET, NM, - NM_FOR_TARGET): Don't define. - (VMS_OTHER_OBJS): Add xmalloc.o and xexit.o from libiberty. - (tooldir): Use exec_prefix, not libdir. - -Fri Dec 16 11:07:10 1994 Stan Shebs - - * config/obj-coff.h: Include libcoff.h, not ../bfd/libcoff.h. - - * as.h: Include progress.h. - * as.c (main): Call START_PROGRESS and END_PROGRESS. - (main, perform_an_assembly_pass): Call PROGRESS. - -Fri Dec 16 00:46:08 1994 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Use bfd_is_und_section and - bfd_is_abs_section rather than comparing against &bfd_und_section - and &bfd_abs_section. - -Thu Dec 15 15:27:14 1994 Jim Wilson - - * config/tc-sh.c (md_begin): Use a local variable when - initializing md_relax_table to avoid errors about modifying a - const data structure. - -Tue Dec 13 15:42:27 1994 Ian Lance Taylor - - * config/tc-ppc.c (tc_gen_reloc): Remove OBJ_ELF hack which - appears to no longer be needed. - -Tue Dec 13 08:04:15 1994 Ian Lance Taylor - - * config/tc-mips.c (macro_build): Accept BFD_RELOC_PCREL* without - requiring that the X_op_symbol be in the text_section. - (macro): Change the test for a legel expression difference to - correspond to changes in pseudo_set in read.c. - -Fri Dec 9 21:04:17 1994 Ken Raeburn - - * write.c (write_relocs) [RELOC_EXPANSION_POSSIBLE]: Use - bfd_install_relocation. - - * ecoff.c (ecoff_set_gp_prolog_size): If there is no current - routine, just return. - - * config/tc-alpha.c (alpha_ip, case 'B', subcase 'c'): Use opcode - value from pattern instead of assuming jsr. - * config/alpha-opcode.h (jmp): Add a "1,Bc" form. - -Thu Dec 8 17:48:25 1994 Ken Raeburn - - * Makefile.in (NM_FOR_TARGET): Use ../binutils/nm.new, not just - plain nm. - - * configure.in (ns32k-pc532-mach*): Select correct emulation. - (mips-sony-bsd*): Use ecoff. - (mips-*-gnu*): New target, using aout format, from Roland McGrath. - * configure: Regenerated. - -Tue Nov 29 13:58:10 1994 Ken Raeburn - - Use libiberty version of xmalloc: - * Makefile.in (REAL_SOURCES): Delete xmalloc.c. - (OBJS): Delete xmalloc.o. - (xmalloc.o): Delete dependencies. - * as.c (main): Call xmalloc_set_program_name once program name is - known. - - * config/tc-alpha.c (in_range_signed, in_range_unsigned): New - routines, split from in_range. - (in_range): Deleted. All calls changed to in_range_*signed. - (create_lita_section): Macro deleted. Single use expanded in - place. - (alpha_ip): Handle `t' and `8' operand types. - (md_apply_fix): Handle BFD_RELOC_12_PCREL. Print name of - unhandled relocation types. - * config/alpha-opcode.h: Added HALT and DRAINA. Disabled MOVI, - since it doesn't work, and isn't supported by the native - assembler. - - * input-scrub.c: Change wording of a comment to avoid interference - with Cygnus source-control tools. - - * as.h (errno) [NEED_DECLARATION_ERRNO]: Declare. - - * config/tc-m68k.c (init_table): List buscr and pcr control - registers. - (m68k_ip, case 'J'): Handle them. - - Delete signal handler code. It's been disabled since March 1993 - without complaints. - * as.c: Don't include signal.h. - (got_sig): Unused function deleted, declaration deleted. - (SIGTY): Macro deleted. - (main): Deleted disabled code for establishing signal handler. - -Mon Nov 28 11:37:35 1994 Doug Evans - - * app.c (do_scrub_next_char): Insert missing newline at end of file - like warning says we do. - -Mon Nov 28 00:11:15 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.h (pa_check_eof): Declare new extern function. - (tc_frob_file): Define to call pa_check_eof. - - * config/tc-hppa.c (pa_check_current_space_and_subspace): New - function to verify the current space and subspace are reasonable. - Call for the appropriate pseudo-ops and before instruction parsing. - (pa_check_eof): New function to verify enter/exit and proc/procend - pairs match at EOF. - (pa_code): Simplify. - - * config/obj-som.c: Delete #if 0 code. - -Wed Nov 23 19:36:09 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/obj-coff.h (TARGET_FORMAT): Select between coff-shl and - coff-sh. - * config/sh.mh (TARG_CPU_DEPENDENTS): Get it right. - * config/tc-sh.c (little): New function. - (md_parse_option): Notice new option. - (build_relax, build_Mytes, md_atof, md_convert_frag, md_apply_fix): - Cope with little endian data. - * config/tc-sh.h (COFF_MAGIC, LISTING_HEADER): Endian dependent. - -Wed Nov 23 10:54:38 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (tc_gen_reloc, ELF variant): Revert last - change. The real bug was in bfd/elfcode.h and has been fixed. - -Tue Nov 22 23:31:20 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (tc_gen_reloc, ELF variant): Add section->vma - to the relocation's offset. - -Tue Nov 22 14:37:58 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * Makefile.in (INSTALL_XFORM): Fix typo. - -Tue Nov 22 10:23:25 1994 J.T. Conklin - - * config/tc-alpha.c (s_alpha_set): Ignore the .set (no)move and - .set (no)volatile directives. - -Tue Nov 15 21:44:13 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_subspace): Make sure to always reset - current_subspace. - (pa_text, pa_data): Likewise. - - * config/tc-hppa.c (pa_align): New function. Aligns the current - offset within the current subspace along with updating the - alignment of the subspace itself. - (pa_subspace): Default alignment to one byte rathern than zero - bytes to avoid setting alignment to log2(0). - (md_pseudo_table): Use pa_alignment for .align. - -Tue Nov 15 15:24:45 1994 Ken Raeburn - - * messages.c (as_fatal): Always put a space after "fatal error:" - when printing message. - -Tue Nov 15 11:10:43 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.h (obj_frob_symbol): Delete. - (tc_frob_symbol): Make definition conditional on OBJ_SOM or - OBJ_ELF. For ELF subtract out symbol->section->vma for non common - symbols. - -Wed Nov 9 14:53:03 1994 Ken Raeburn - - * config/te-delta.h: New file, derived from te-sysv32.h. - -Wed Nov 9 11:52:44 1994 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-ppc.c (ppc_bf): Always set coff_line_base. - -Mon Nov 7 01:58:49 1994 Ken Raeburn - - * Makefile.in (VERSION): Bump to 2.5.3. - - * configure.in: Compare generic cpu name against "sparc", not - "sparc*", since sparc variants should be changed to "sparc". - * configure: Regenerated with autoconf 2.1. - - * config/tc-a29k.c (octal, toHex): Variables deleted. - (isoctal): Macro deleted. - (md_begin): Don't initialize them. - (machine_ip, case 'P'/'A'): For absolute operand, generate an - error message if it's out of range. - (md_apply_fix, case RELOC_JUMPTARG): Check range for PC-relative - jumps. - (md_apply_fix): Delete code inside "#if 0". - -Thu Nov 3 20:20:40 1994 Ken Raeburn - - * config/go32.mh: Unused file deleted. - - * read.c (get_absolute_expression): Indicate that the error may - merely be that the expression can't currently be reduced. - -Thu Nov 3 16:09:59 1994 J.T. Conklin (jtc@rtl.cygnus.com) - - * config/tc-m68k.h (TARGET_FORMAT): If TE_NetBSD define as - "a.out-m68k-netbsd". - * config/tc-sparc.h (TARGET_FORMAT): If TE_NetBSD define as - "a.out-sparc-netbsd". - - * config/te-nbsd.h: New file, NetBSD target emulation - * config/te-netbsd.h: Removed. - * configure.in (i[345]86-*-netbsd*,m68*-*-netbsd*,sparc*-*-netbsd*): - Set bfd_gas. Use nbsd emulation. - -Thu Nov 3 17:44:47 1994 Ken Raeburn - - Changes from net 2.5.2 release branch: - - * configure.in: Put AC_DEFINE(sparcv9) on its own line, so that - the shell variable settings associated with it are permanent. For - CPUs requiring bfd_gas=yes, select it based on CPU only, not - individual target names. Handle m68k-hp-hpux*, not just -hpux. - - * config/tc-z8k.c (tc_coff_symbol_emit_hook): Add dummy argument - to match prototype in obj-coff.h. - - * configure.in: Skip tests for defining WANT_FOPEN_BIN and - IBM_COMPILER_SUX. - * acconfig.h: Deleted them. - * configure, conf.in: Rebuild with autoconf 2.0. - * config/go32.cfg, config/vms-conf.h: Updated. - - * config/tc-m68k.c (md_apply_fix_2, md_convert_frag_1): Always use - IBM_COMPILER_SUX version of code, with comments indicating why. - - * listing.c (file_info): Use text mode when opening file for read. - Use "r" directly, no macro. - * input-file.c (input_file_open): Don't use FOPEN_RT, just use - "r". - * read.c (s_include): Ditto. - * output-file.c (output_file_create): Try both "wb" and "w", don't - bother with FOPEN_* macros. - * as.h: Don't include fopen-*.h. - - * config/alpha-opcode.h: Make "ret" with no operands equivalent to - "ret zero,(ra)", to match OSF1 and to be consistent with both - one-operand forms. - - Patches from DJ Delorie: - * as.h (alloca): undef alloca before defining it just in case - * config/go32.cfg: new file for autoconf values - * config/te-go32.h: new file - * configure.bat: new for autoconf - - * config/tc-i386.c (md_assemble): Fix typo in GOTPC check; had = - for ==. - - * configure.in: If target_frag doesn't exist, use /dev/null. - - * as.c (parse_args): For non-VMS systems, re-add `v' to - std_shortopts. Add "verbose" to list of long options. - - * write.c (adjust_reloc_syms): When generating an absolute section - symbol as a placeholder, don't mark it as used in a relocation - entry, here. - - * Makefile.in (comparison): Compare using makefile code from gcc, - stripped down to discard subdir stuff and adapted to give a - non-zero exit status if either file differs. - -Thu Nov 3 15:43:02 1994 Ian Lance Taylor - - * config/tc-mips.c (load_address): Fix RELAX_ENCODE arguments for - NO_PIC case. - -Tue Nov 1 16:10:59 1994 Ian Lance Taylor - - * config/tc-mips.c (s_change_sec): If not GPOPT, don't permit - switching to the readonly data section. - - * ecoff.c (ecoff_directive_type): Fix warning message. - -Sun Oct 30 00:57:35 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_proc): Delete disabled code to put each - proc in its own subspace, we're not going to use it. - -Tue Oct 25 14:44:33 1994 Ian Lance Taylor - - * config/tc-mips.c (macro): Ensure that mips2 case of M_LI_DD in - .rdata does not become a variant frag. - - * config/tc-mips.c (mips_cpu): Initialize to -1. - (md_begin): Don't mips_cpu if it was already set. - (md_parse_option): For -mipsN, don't set mips_cpu if it was - already set. For -mcpu=, just set mips_cpu, not mips_isa. - -Fri Oct 21 20:42:29 1994 Ian Lance Taylor - - * config/tc-mips.c (md_pseudo_table): If OBJ_ELF, handle .section. - (s_elf_section): New static function. - * ecoff.c (ecoff_build_symbols): Don't abort if we don't recognize - the section when setting the storage class; default to sc_Data. - -Thu Oct 20 00:43:38 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Set new_val to 8 for all - fixups to branch instructions (not just pc-relative ones) which - will generate SOM relocations. - -Wed Oct 19 13:41:56 1994 Ian Lance Taylor - - * config/tc-a29k.c: Include ctype.h with angle brackets. - (define_some_regs): Add new special register names defined on the - 29040. - (parse_operand): Add argument opt. If non-zero, don't warn about - a missing operand. - (machine_ip): If handling argument type 'I', pass opt as non-zero - to parse_operand. Handle new optional operand type 'I'. - (md_undefined_symbol): Handle special register names (srNN). - -Tue Oct 18 00:45:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * write.c (renumber_sections): New static BFD_ASSEMBLER function. - (write_object_file): Call it after removing gas created sections. - -Mon Oct 17 18:06:05 1994 Ian Lance Taylor - - * symbols.c (symbol_create): Use udata.p, not just udata. - * config/obj-elf.c (obj_ecoff_set_ext): Likewise. - (elf_get_extr): Likewise. - - * read.c (read_a_source_file): The second argument to as_where is - unsigned int *, not int *. - -Mon Oct 17 02:26:32 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Eliminate all uses of fx_addnumber. - (tc_gen_reloc): Simplify. It's no longer necessary to set a - reloc's addend field to zero for function symbols. - (md_apply_fix): Simplify. For fixups which will require a SOM - reloc, just clear out the necessary bits in the output file. - -Fri Oct 14 19:06:46 1994 Ken Raeburn - - * Makefile.in (BISON): Use bison -y, not bison. - -Thu Oct 13 19:22:54 1994 Ken Raeburn - - * Makefile.in (VERSION): Updated to 2.5. - (clean-here): Delete stamp-mk.com. - (distclean): Delete .gdbinit. - * Version 2.5 released. - -Wed Oct 12 20:30:51 1994 Ken Raeburn - - * config/te-nbsd532.h: Renamed from te-netbsd532.h. - * configure.in, configure: Adjusted. - -Wed Oct 12 16:33:38 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/cplus-dem.c: Removed. It isn't used. Even if it was, - it's better to use the one in libiberty. - -Wed Oct 12 18:48:39 1994 Ken Raeburn - - * symbols.c (resolve_symbol_value, case O_symbol): Undo last - change; it breaks the rs6000 support, and doesn't seem to be - needed. - -Wed Oct 12 11:56:50 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/tc-i386.h,te-netbsd532.h (TARGET_FORMAT): Changed to - a.out--netbsd to match corresponding changes in BFD. - -Wed Oct 12 11:06:11 1994 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-ppc.c (ppc_fix_adjustable): Resolve symbol values - rather than explicitly adding the frag address. - * config/obj-coff.c (coff_frob_symbol): Add a zero entry to mark - the end of the line numbers; this replaces the zero entry which - used to be added by coff_add_linesym, removed Oct 7. - (coff_adjust_section_syms): Ignore sections with no seginfo. - -Wed Oct 12 01:41:37 1994 Ken Raeburn - - * Makefile.in (bootstrap, bootstrap2, bootstrap3): Create a - "stage" symlink to the appropriate stage* directory, and use it - instead in the -B options. - (comparison): Revert yesterday's change. - -Tue Oct 11 16:48:11 1994 Ken Raeburn - - * config/tc-sparc.c (tc_gen_reloc): For non-a.out relocations, if - pc-relative, use fx_offset only, ignore address of relocation. - -Tue Oct 11 15:24:00 1994 Ian Lance Taylor - - * config/tc-mips.c (mips_ip): Don't use S_IS_LOCAL when checking - for an embedded PIC switch expression, since the definition of - S_IS_LOCAL was changed. - -Tue Oct 11 15:05:11 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * Makefile.in (comparison): When comparing as.new or gasp.new, try - running the binary through sed to avoid differences due to - "stage1" or "stage2" having been written into the binary. - -Sat Oct 8 01:48:04 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - ELF symbol size handling, based on code from Eric Youngdale: - * config/obj-elf.h (OBJ_SYMFIELD_TYPE): New macro. Adds an - expression pointer to the symbol structure, used for `size' - expressions that couldn't be reduced to constants when initially - processed. - (elf_frob_symbol): Declare. - (obj_frob_symbol): Call elf_frob_symbol always, rather than - ecoff_frob_symbol only if ECOFF_DEBUGGING defined. - * config/obj-elf.c (obj_symbol_new_hook): Deleted unused code. - Clear sy_obj field. - (obj_elf_size): Deleted unused code. If size is non-reducible - expression, allocate some storage for the sy_obj field and copy - the expression. - (elf_frob_symbol): New function. Computes sizes, calls - ecoff_frob_symbol if appropriate. - - * write.c (fixup_segment): For i386 elf and coff (for now), don't - add in value of symbol from another defined section of the file. - -Fri Oct 7 17:54:02 1994 Ken Raeburn - - * config/tc-m88k.h (TC_KEEP_FX_OFFSET): Define. - * config/obj-coff.c (do_relocs_for): Test only TC_KEEP_FX_OFFSET, - rather than both it and TC_M88K. - (coff_adjust_section_syms): New function. - (coff_frob_section): For non-empty sections, create aux entry for - the section symbol, indicating the size. - (n_line_nos): New variable. - (add_lineno): Increment it. - (coff_add_linesym): Increment n_line_nos, don't call add_lineno. - (coff_frob_file): New function; map coff_adjust_section_syms over - sections. - (obj_coff_line): Only reset line_base for .bf symbols. - * config/obj-coff.h (coff_adjust_section_syms, coff_frob_file): - Declare. - (obj_frob_file): New macro. - - * config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Renamed from - obj_frob_forward_symbol, and rewritten for new parameter list. - - Mon Oct 3 21:02:38 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.h (S_IS_LOCAL): fix obsolete flagseen[] reference. - -Wed Oct 5 11:49:26 1994 Ian Lance Taylor - - * config/obj-ecoff.c (obj_pseudo_table): Accept .esize and .etype - as synonyms for .size and .type. - -Wed Oct 5 00:08:10 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-coff.c (coff_frob_section): Remove assert about - section alignment. - * config/tc-sparc.c (md_section_align): Use section alignment, not - xvec align_power_min field. - -Fri Sep 30 19:05:20 1994 Pat Rankin (rankin@eql.caltech.edu) - - * vmsconf.sh (make-gas.com): handle DCL verification to enable - sensible feedback to the user while gas is being built. - -Fri Sep 30 16:23:31 1994 Ken Raeburn - - * Makefile.in (DISTSTUFF): New variable, listing only make-gas.com - for now. - (diststuff): New target; builds DISTSTUFF. - (realclean): Separate target, depend on clean and distclean, then - delete DISTSTUFF. - * make-gas.com: Deleted. - - * config/tc-i386.c (i386_validate_fix) [BFD_ASSEMBLER]: New - function. Converts reloc for "foo-GOT" to BFD_RELOC_386_GOTOFF - reloc for "foo". - (i386_operand): Don't look up section symbol for - undefined_section. - (reloc): Always permit return of 8- and 16-bit relocation types. - Add a space after "pc-relative" in the error message. - (tc_i386_fix_adjustable) [BFD_ASSEMBLER]: Reject - BFD_RELOC_386_GOTOFF relocs. - (i386_operand): For any GOTOFF reloc, convert it to a BFD_RELOC_32 - with a "foo-GOT" value. - * config/tc-i386.h (i386_validate_fix): Declare it. - (TC_VALIDATE_FIX): New macro -- call it. - (NOP_OPCODE): Cast to `char' to avoid compiler warnings. - - * as.h: If __STDC__ is not defined and varargs.h is available, use - it rather than stdarg.h. - - * write.h (struct fix): Added new bitfield fx_plt, for fixups - referring to PLT entries. - * write.c (fix_new_internal): Initialize fx_plt to zero. - (adjust_reloc_syms): Re-fetch `sym' after top of reduction loop. - Don't adjust fx_offset by frag address, since S_GET_VALUE now - includes the frag address. - (fixup_segment): Changed local var PCREL to type int, added PLT. - If PC-relative fixup refers to a PLT entry for a symbol in the - current section, don't reduce it. - - * write.c (adjust_reloc_syms): Exit loop through a label. If - DEBUG5 is defined, print out each fixup before and after - processing. - (fixup_segment): If DEBUG5 is defined, print out each fixup before - and after processing. - (print_fixup): Added prototype. Show address on first line. Show - fx_offset and fx_subsy. [!BFD_ASSEMBLER]: Only show fx_r_type if - NEED_FX_R_TYPE is defined. - - * symbols.c (print_symbol_value_1): Check S_IS_LOCAL, S_IS_EXTERN, - S_IS_DEBUG, S_IS_DEFINED also. - -Thu Sep 29 18:57:06 1994 Ken Raeburn - - * Makefile.in (all): Depend on .gdbinit. - (.gdbinit): Rebuild from gdbinit.in by running config.status. - - * gdbinit.in: Define new function "pf". Fix doc on "pe" and "ps". - - * write.c (print_fixup): Print source location on first line. - Show fx_r_type and fx_addsy fields. - -Wed Sep 28 14:56:39 1994 Ken Raeburn - - * configure.in: Set bfd_gas for all sparc targets in one place, - instead of separately for each. Correctly handle user-supplied - "--enable-bfd-gas" option. - - * gdbinit.in: Move "break abort" to end, in case gdb complains. - - * as.h (PRINTF_WHERE_LIKE, PRINT_LIKE) [USE_STDARG, !__GNUC__]: - Use PARAMS macro. - - * symbols.c (resolve_symbol_value, case O_symbol): Don't do any - processing if add_symbol is undefined or in expr_section. - (resolve_symbol_value, case O_add): For symbol plus - constant-valued symbol, convert to O_symbol and re-reduce. - (S_GET_VALUE): If symbol needs resolving, resolve it. - (indent_level): No longer static. - (print_symbol_value_1): Don't print frag address if it matches - zero_address_frag. Don't print "resolving" if already resolved. - Print segment name. Don't call print_expr_1 on an undefined - symbol. - (print_expr_1): Fix whitespace before printing X_add_number. - - * expr.c (make_expr_symbol): No longer static. Use symbol_create, - not symbol_new, for symbols holding expression values. - * expr.h (make_expr_symbol): Move declaration here. - * write.c (fix_new_exp): Handle O_add by creating an - expression-valued symbol, and calling fix_new_exp recursively. - (adjust_reloc_syms): If a fixup's symbol value is a sum of an - undefined symbol and a constant, fold the constant into the fixup, - and refer to the undefined symbol directly. Then process the - fixup again from scratch. - (write_object_file): Before calling adjust_reloc_syms, make a pass - through the symbol list trying to resolve values. - - * write.c (print_fixup): New routine, for debugging. - (write_relocs): Call bfd_install_relocation. Deleted various - hacks for working around problems with bfd_perform_relocation. - - * Makefile.in (VERSION): Update to 2.4.90. - -Wed Sep 28 11:50:40 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * Makefile.in (gasp.o): Depends upon config.h. - - * config/tc-mips.c: Include subsegs.h. - (md_apply_fix): If an unconditional b or bal overflows, and we are - not assembling PIC code, replace it with a j or jal. - - * config/tc-mips.c (md_apply_fix): Correct branch overflow test. - Use as_bad_where and as_warn_where rather than as_bad and as_warn. - -Mon Sep 26 17:15:59 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * write.c (write_relocs): Add file name and line number to - as_fatal calls. Handle bfd_reloc_overflow case specifically when - RELOC_EXPANSION_POSSIBLE. - -Fri Sep 23 16:11:28 1994 Ken Raeburn - - * as.h (USE_STDARG, USE_VARARGS): Define one or neither of these - here. Use them for deciding which PRINTF*LIKE macro definitions - to use. - * messages.c: Use them, instead of NO_STDARG, NO_VARARGS. - [!USE_STDARG && !USE_VARARGS] (va_alist, va_dcl, ...): Provide - default definitions matching what we were doing before. - (as_tsktsk): Remove the non-stdarg, non-varargs version, and - always use the varargs form if not using stdarg. It's safe to - always use vfprintf, because libiberty will provide it if the - native system doesn't. Also, always make format be const. - (as_warn, as_warn_where, as_bad, as_bad_where, as_fatal): Ditto. - -Fri Sep 23 14:42:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.c (load_register): Always use addiu when adding a - constant to $zero--no need to use daddiu. - (macro): Hack the -mips3 overflow tests to not fail when offsetT - is only 32 bits. - - * symbols.h (copy_symbol_attributes): Declare. - -Thu Sep 22 21:58:24 1994 Ken Raeburn - - * listing.c: Bugfixes based in part on patches from Paul - Kranenburg. - (listing_newline): Check filename as well as line number when - deciding whether to record it. - (list_symbol_table) [S_IS_REGISTER]: Check that S_IS_REGISTER is - false (if defined) as well as checking for reg_section. - (listing_listing): Iterate fetching lines while line number is too - low, and we haven't run off the end of the input file. - - * config/vms-conf.h: Changed HAVE_DELETE to HAVE_REMOVE. - -Thu Sep 22 13:39:10 1994 Kung Hsu (kung@x1.cygnus.com) - - * ecoff.c (ecoff_generate_asm_lineno): check if - current_stabs_filename is NULL before strcmp. - * read.c (read_a_source_file): fix a bug in generate_asm_lineno - checking. - -Wed Sep 21 18:17:35 1994 Ken Raeburn - - * config/ho-*.h: Now-unused files deleted. - - * symbols.c (copy_symbol_attributes): New function. Copies BFD - symbol flags and calls OBJ_COPY_SYMBOL_ATTRIBUTES. - (resolve_symbol_value, case O_symbol): Call it, if X_add_number is - zero. Don't call obj_frob_forward_symbol. - * read.c (pseudo_set): Call copy_symbol_attributes, but only if - X_add_number is zero. - * config/obj-elf.h (obj_frob_forward_symbol): Deleted. - - * config/tc-i960.c: Lots of whitespace, comment reformatting, - using GNU indent. - (strchr): Don't declare. - [BFD_ASSEMBLER]: Don't compile md_convert_frag, - md_estimate_size_before_relax, md_ri_to_chars, - md_create_short_jump, md_create_long_jump. - (brtab_emit): Use data_section, not SEG_DATA. - - Mon Sep 19 17:14:44 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/vms-conf.h: new file, manually derived from conf.in. - * config-gas.com: use it, and eliminate obsolete "host.h". - -Wed Sep 21 11:11:30 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-ppc.c (ppc_current_block): New static variable. - (ppc_stabx): Set sy_tc.within of a C_STSYM symbol to - ppc_current_block. Don't move around any stab symbol, just those - for common symbols. - (ppc_bs): Set ppc_current_block. - (ppc_es): Clear ppc_current_block. - (ppc_frob_symbol): Set the value of a C_STSYM symbol to the offset - from the csect of the enclosing block. - - * config/tc-mips.c (insns_since_cache_access): Remove. - (append_insn): Remove setting of insns_since_cache_access, and - special 4600 handling; it turns out not to be required. - -Tue Sep 20 16:13:18 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.c (md_shortopts): Remove E. - (md_longopts): Add EB and EL. - (md_parse_option): Handle -EB and -EL as separate options, rather - than as a single -E option with an argument. - -Mon Sep 19 12:42:05 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (hppa_fix_adjustable): Reject reductions - involving global symbols too. - -Mon Sep 19 12:12:46 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * as.h: Test NEED_DECLARATION_*, not NEED_*_DECLARATION. - - * configure.in: Test for remove, not delete. Fix cross-assembler - test. - * as.h: Test HAVE_REMOVE, not HAVE_DELETE; define unlink to - remove, not delete. - - * read.c (pseudo_set, case O_symbol): If - OBJ_COPY_SYMBOL_ATTRIBUTES is defined, invoke it. - [BFD_ASSEMBLER]: Copy BSF_FUNCTION setting too. - * config/obj-elf.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Define. - - Wed Aug 10 19:15:30 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.h (DSG_S_C_UBITU, DST_K_VFLAGS_DSC, DST_K_TS_ATOM, - many others): new macros; values obtained from "DSTRECRDS.SDL". - * config/obj-vms.h (various): use them. - (USE_BITSTRING_DESCRIPTOR): new macro, for selecting bitfield - representation (only enum bitfields can avoid being bitstrings). - (bitfield_suffix, setup_basic_type): new routines. - (VMS_typedef_parse): use them. Now recognize bitfields of all - integral types, not just type `int'. Caveat: the representation - used for bitfields still does not work for objects placed in - registers, and gcc's optimizer sometimes puts small structs there. - - Tue Jun 14 17:31:44 1994 Pat Rankin (rankin@eql.caltech.edu) - - * read.c (s_text) [#if OBJ_VMS]: clear the IN_DEFAULT_SECTION - bit from const_flag. - * config/obj-vms.h (IN_DEFAULT_SECTION): define this macro. - (tc_frob_label): define this to call vms_check_for_special_label, - and declare the latter. - * config/obj-vms.c (vax_g_doubles): declare this file-scope - variable. - (const_flag): initialize to IN_DEFAULT_SECTION instead of 0. - (vms_check_for_special_label): new routine (tc_frob_label). - (VMS_TBT_Routine_End): don't bother checking for `gcc_compiled.' - and `gcc2_compiled.' labels; they won't reach here any more. - (VMS_typedef_parse) [case 'r']: for types `double' and `complex - double', use `vax_g_doubles' flag to select type of double. - (VMS_write_object_file) [traceback setup]: don't pass symbols - with the IN_DEFAULT_SECTION attribute to the TBT_Routine_Begin - and TBT_Routine_End functions. - - Mon Jun 6 20:52:20 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.c (VMS_TBT_Routine_End): cache the result of - S_GET_VALUE() to avoid many repeated function calls. - (VMS_Check_For_Main) [#if HACK_DEC_C_STARTUP]: capitalize - _C$MAIN_ARGS in advance, in case -h3 (leave symbol name as-is) - gets requested. [All the HACK_DEC_C_STARTUP code appears to - be obsolete; gcc does it automatically for vms target. It's - also misnamed, because it is for the "VAX C" run-time library, - not the newer "DEC C" one which has much different startup code.] - {various}: use `S_SET_xxx(symbol,new_value)' rather than - `S_GET_xxx(symbol) = new_value'. - -Mon Sep 19 12:05:03 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-coff.c (c_dot_file_symbol): Use bfd_abs_section_ptr, - not &bfd_abs_section. - -Thu Sep 15 18:36:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * expr.c (clean_up_expression): Use addressT, not bfd_vma. - -Tue Sep 13 20:05:47 1994 Jeff Law (law@snake.cs.utah.edu) - - * expr.c (expr): Don't reduce the difference of two symbols in the - same frag if the symbols are not in normal sections. - - * config/obj-som.h (S_SET_OTHER, S_SET_TYPE): Delete a.out crud. - (S_SET_DESC, S_GET_OTHER, S_GET_TYPE, S_GET_DESC): Likewise. - (obj_attach_unwind_info): Do not define. Not needed anymore. - * config/tc-hppa.c: Delete whitespace at EOL. - (struct hppa_fix_struct): Delete fx_unwind field and all references. - (fix_new_hppa): Last arg is now a pointer to an int. Do not - call obj_attach_unwind_info anymore. For SOM R_ENTRY and R_EXIT - fixups, store 32bits of unwind information in the fx_addnumber - field of the fixup. - (md_assemble, pa_entry, process_exit, pa_procend): For SOM R_ENTRY - and R_EXIT fixups, pass a NULL pointer to fix_new_hppa, and a - pointer to 32 bits of unwind info. - (tc_gen_reloc): For SOM R_ENTRY and R_EXIT fixups, set the symbol - pointer to the dummy symbol; set the addend field to fx_addnumber. - (pa_comm, pa_equ, pa_type_args, pa_import): Use bfd_XXX_section_ptr - rather than &bfd_XXX_section. - -Tue Sep 13 21:15:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-i386.c (md_apply_fix_1): For GOTPC relocs, decrement - value by one; discard adjustments previously being made. From - Eric Youngdale. - - VMS- and Vax-related changes from Pat Rankin: - * Makefile.in (VMS_OTHER_OBJS): add concat, getopt, and getopt1. - * vmsconf.sh: no longer have make-gas.com echo text about needing - to modify the gcc-vms driver when intending to use with gcc 1.x. - * as.c (parse_options): suppress 'v' from std_short_options and - eliminate VMS-specific conditional initialization; - [default case]: check for '-v' if md_parse_options doesn't recognize - an option; - [default case, #if VMS]: check for filename argument when '-v' seen; - [case 'v']: delete. - * config/tc-vax.c (md_assemble): don't rely on `this_add_number' - for O_big literal operands (double floats and long long ints); - [VMS, md_shortopts]: add second colon after 'v'; - (md_parse_options) [VMS, case 'v']: check for argument, so - caller can handle `-v' w/o arg. - -Tue Sep 13 16:45:08 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/obj-coff.c (do_relocs_for): If TC_KEEP_FX_OFFSET - is defined, put the tx_offset into the r_offset. - * config/tc-sh.c (line_comment_chars): Add # - (tc_reloc_mangle): Deleted. - * config/tc-sh.h (TC_KEEP_FX_OFFSET): Define. - (TC_RELOC_MANGLE): Delete. - -Tue Sep 13 16:20:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * flonum-konst.c: Change preprocessor tests of HO_VMS to just VMS. - * hex-value.c: Ditto. - * config/obj-vms.c: Ditto. - - * config/tc-sparc.c (sparc_ip): Replace as_bad/exit sequence with - a call to as_fatal. - * config/tc-i860.c (i860_ip): Ditto. - * config/tc-hppa.c (pa_ip): Ditto. - * config/tc-alpha.c (alpha_ip): Ditto. - * as.c (parse_args): Ditto. - - * config/tc-mips.c (mips_ip): Replace as_warn/exit sequence with a - call to as_fatal. - - * write.c (write_contents): Use EXIT_FAILURE. - * output-file.c (output_file_create, output_file_close, - output_file_create, output_file_close): Ditto. - * messages.c (as_fatal): Ditto. - * config/obj-som.c (obj_som_version, obj_som_copyright): Ditto. - * config/obj-ieee.c (write_object_file): Ditto. - * config/obj-coff.c (write_object_file): Ditto. - * config/tc-vax.c (main): Use EXIT_SUCCESS. - * config/tc-m68k.c (main): Ditto. - - * hash.c (main): Pass a value to exit(). - - * as.h (EXIT_SUCCESS, EXIT_FAILURE): Moved here. - * as.c: ...from here. - (parse_args): Use them always. - (main): Use exit rather than return. - - * Makefile.in (*_FOR_TARGET, INSTALL_XFORM, install, uninstall): - Rewrite handling of program_transform_name. - - * configure.in: Test for functions unlink and delete. - * as.h: If unlink isn't available but delete is, define unlink to - be delete. - - Update for autoconf 1.118: - * gdbinit.in: New file, created from old .gdbinit. - * .gdbinit: Deleted. - * aclocal.m4 (GAS_GDBINIT): Deleted. - * configure.in: Don't use it. Instead, generate .gdbinit from - gdbinit.in. Don't substitute cpu_type, obj_format, emulation, - atof. Switched order of AC_LINK_FILES arguments. Use AC_PREREQ - to ensure that older versions of autoconf aren't used. - * Makefile.in: Added @configure_input@ line. - (configure): Deleted rule. - -Tue Sep 13 12:08:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-coff.c (fixup_segment): After handling the difference - of two symbols from the same segment, set fx_subsy to NULL, to - satisfy existing TC_COUNT_RELOC macros. - -Tue Sep 13 01:47:08 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * aclocal.m4 (GAS_GDBINIT): New macro. - * configure.in: Use it. - * configure: Regenerated. - -Mon Sep 12 20:56:38 1994 Ken Raeburn (raeburn@kr-laptop.cygnus.com) - - * .gdbinit (pe, ps): Define new commands. - * symbols.c (indent_level): New static variable. - (indent, print_expr_1, print_symbol_value_1, print_symbol_value, - print_expr): New functions. - - * Makefile.in (config-stamp): Add a "this file generated by make" - message to config.h. - - PIC implementation for i386-linux, based on code from Eric - Youngdale and Paul Kranenburg, with some work of my own: - - * write.c (fixup_segment): Test TC_RELOC_RTSYM_LOC_FIXUP on fixup - before processing same-section pcrel relocations. - (TC_RELOC_RTSYM_LOC_FIXUP): Default to 1. - - * expr.c (make_expr_symbol): If operator is O_symbol and - X_add_number is zero, just return the symbol. If operator is - O_constant, resolve the symbol's value before returning. - (operand): Permit use of "[]" for grouping. - (clean_up_expression): For difference of two symbols in the same - frag, add the difference of their offsets into X_add_number. - (expr): Reduce difference of two symbols in same frag to their - difference. - - * config/tc-i386.c (TC_RELOC): New macro. - (struct _i386_insn): New field disp_reloc. - (GOT_symbol): New variable. - (operand_special_chars): Added square-brackets and at-sign. - (reloc) [BFD_ASSEMBLER]: Added new argument OTHER; if it is not - NO_RELOC, just return it. - (reloc) [! BFD_ASSEMBLER]: Add third argument to dummy macro. - (BFD_RELOC_386_PLT32, _GOT32, _GOTOFF) [! BFD_ASSEMBLER]: More - dummy macros. - (tc_i386_fix_adjustable): New function. Returns zero if symbol in - fixup is not local, to prevent relocations against externals from - being dropped. - (md_assemble): Initialize disp_reloc field to NO_RELOC. Pass - disp_reloc field to reloc() function, and use TC_RELOC to generate - value to pass to fix_new_exp. - (md_assemble): Change 32-bit reloc against GOT_symbol into a GOTPC - reloc. - (i386_operand): Initialize disp_reloc field to NO_RELOC. Handle - @GOTOFF, @PLT, @GOT operands. For GOTOFF relocations with local - symbols, force generation of the section symbol. - (md_estimate_size_before_relax): If GOT_symbol exists, decide - we're generating PIC code, and convert relocations against - undefined symbols from PCREL to PLT32. - (md_apply_fix_1) [OBJ_ELF]: Fix up values for dynamic-linking - relocs. - (md_undefined_symbol): Notice GLOBAL_OFFSET_TABLE_NAME and set - and return GOT_symbol if it matches. - (F, MAP): Move macro definitions outside function. - (tc_gen_reloc): Only switch on size and pcrel if code wasn't - already supplied as PLT32. GOT32, GOTOFF, or GOTPC. Convert - BFD_RELOC_32 using GOT_symbol into GOTPC. - * config/tc-i386.h (TC_RELOC, tc_fix_adjustable, - TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): New - macros. - (NEED_FX_R_TYPE): Define. - (LOCAL_LABEL): Accept ".X" prefix too. - (GLOBAL_OFFSET_TABLE_NAME): Default to "_GLOBAL_OFFSET_TABLE_". - -Mon Sep 12 17:51:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-elf.c (obj_elf_type): Rewrite to accept syntax - reportedly to be used on Irix 6. - - * config/tc-mips.c (md_pseudo_table): Handle .globl and .global. - (s_mips_globl): New static function; needed for Irix 5 support. - * ecoff.c (ecoff_build_symbols): If BSF_FUNCTION is set for an - external symbol with no type, set the type to st_Proc rather than - st_Global. Don't set the index of an external st_Proc or - st_StaticProc symbol unless it is also a local symbol. - - * read.c (read_a_source_file): The second argument to as_where is - unsigned int *, not int *. - -Thu Sep 8 17:18:24 1994 Kung Hsu (kung@mexican.cygnus.com) - - * config/obj-ecoff.h : Change names to OBJ_GENERATE_ASM_LINENO, - and generate_asm_lineno. - * config/obj-elf.h : ditto. - * read.h : ditto. - * read.c (read_a_source_file): if no file when inst is read, set - generate_asm_lineno to true. - * ecoff.h : change name to generate_asm_lineno and add function - ecoff_no_current_file. - * ecoff.c : change name to generate_asm_lineno. - * ecoff.c (ecoff_generate_asm_lineno) : new function, to generate - ecoff style line for asm file. - -Thu Sep 8 19:43:49 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-coff.c (size_section): Do an fprintf to stderr rather - than a printf. - (fixup_segment): Use as_bad_where rather than as_bad. - -Wed Sep 7 17:21:12 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/tc-{h8300,sh}.[ch] (tc_coff_symbol_emit): Function doing - nothing becomes macro doing nothing. - -Wed Sep 7 19:10:09 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * Makefile.in (Makefile): Depend on config.status. - (config.status): Run config.status from . instead of srcdir. - - * config/tc-i386.c (tc_gen_reloc): Use bfd_get_reloc_code_name to - display the name of the relocation type that couldn't be handled. - * config/tc-sparc.c (tc_gen_reloc): Likewise. - * config/tc-alpha.c (tc_gen_reloc): Likewise. Deleted abort call - after call to as_fatal. - - * configure.in (i386-*-linux*): Don't set bfd_gas. - - * Makefile.in (CC_FOR_TARGET, NM_FOR_TARGET, OBJDUMP_FOR_TARGET, - install, uninstall): Don't use "brokensed" hack any more, the new - autoconf code should never let program_transform_name be empty. - - Update for autoconf beta 1.112: - * aclocal.m4 (GAS_CHECK_DECL_NEEDED, GAS_WORKING_ASSERT): New - macros. - * configure.in: Use them. Use AC_ARG_PROGRAM (now provided by - autoconf) instead of my hacked-up AC_PROGRAM_TRANSFORM_NAME. Move - test for CROSS_COMPILE just before AC_FUNC_ALLOCA, and emit a - message to try to ease confusion about autoconf's - "cross-compiling" message. - * acconfig.h (NEED_DECLARATION_MALLOC, NEED_DECLARATION_FREE, - NEED_DECLARATION_ERRNO): Renamed from NEED_*_DECLARATION. - * configure, conf.in: Regenerated. - -Wed Sep 7 12:49:55 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * configure.in: Check ${host} and ${target} rather than - ${host_canon} and ${target_canon}. - * configure: Likewise. - -Tue Sep 6 11:42:38 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.c (mips_cpu): New static variable. - (insns_since_cache_access): New static variable. - (md_begin): Set mips_cpu as well as mips_isa. - (append_insn): If mips_cpu is 4600, require four nop instructions - between an instruction which accesses the cache and certain CACHE - instructions. Keep track of the number of instructions seen since - an instruction which accesses the cache. - (md_parse_option): Set mips_cpu as well as mips_isa. - -Mon Sep 5 07:09:00 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * doc/Makefile.in (VPATH): Define using @srcdir@. - (prefix, program_transform_name, exec_prefix): Use autoconf style - @-substitutions. - -Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org) - - * config/ho-riscix.h, config/tc-arm.c, config/tc-arm.h: New files - * configure.in: Recognize the arm. - -Fri Sep 2 16:05:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * ecoff.c (add_file): Don't try to generate line numbers if the - symbol table has been frozen. - -Thu Sep 1 19:48:01 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * aclocal.m4 (AC_PROG_CC): Use AC_DEFUN, and omit AC_PROVIDE. - - * configure.in: Handle user-specified bfd-assembler option with - separate variable from preferred configuration, until the two are - resolved. Indicate bfd_gas=preferred for linux a.out. Use - AC_PROGRAM_TRANSFORM_NAME, for which a patch has been sent to djm. - * Makefile.in (target_alias, program_transform_name): Define, - using autoconf @-substitutions. - -Wed Aug 31 17:43:06 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * atof-generic.c: Deleted alloca handling here. - - * Makefile.in (prefix, exec_prefix): Use @-subtitutions. - - * aclocal.m4 (AC_OUTPUT_LINKS): Deleted redefinition, since - autoconf 1.109 has this fixed. - * configure.in: Don't change quote characters around AC_MSG_ERROR - invocation. Don't use AC_HEADER_STDC, since it requires running a - program. Cache NEED_*_DECLARATION values. - * configure, conf.in: Regenerated with a modified autoconf 1.109. - - * as.h (volatile): Don't test or define here; not needed. - (alloca): Replace alloca-conf.h inclusion with code recommended in - autoconf documentation. Include config.h first. - -Wed Aug 31 11:20:48 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-coff.h (S_IS_DEFINED): Absolute symbols are defined - also. - - * configure.in, configure: Initialize bfd_gas to no. - -Tue Aug 30 19:31:14 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * as.h: Include alloca-conf.h from "libiberty", not - "../libiberty". - -Mon Aug 29 16:11:30 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-ppc.c (md_apply_fix): Don't generate a reloc when a - symbol is used as an offset into a CSECT that is not a TOC. These - types of loads are generated by gcc -mminimal-toc. - -Sun Aug 28 13:22:52 1994 Ken Raeburn (raeburn@rtl.cygnus.com) - - * as.h (flag_*): Added comments describing meanings of some of - these variables. - (struct frag): Add some comments about the ns32k-specific fields - and why they're here. - (SIZEOF_STRUCT_FRAG): Cast addresses to char*, not int. - (flag_print_statistics): Declare. - - * as.c (parse_args): Set flag_print_statistics instead of - statistics_flag. Options array is now const. Added new option - "dump-config"; if specified, print TARGET_ALIAS, TARGET_CANONICAL, - TARGET_CPU, TARGET_OBJ_FORMAT, and TARGET_FORMAT, if defined. - (main): Change test to check flag_print_statistics. - (statistics_flag): Deleted. - - * frags.c (frag_variant): Removed PCREL_ADJUST and BSR arguments. - Always initialize them to zero. - * frags.h (frag_variant): Fixed prototype. - * config/tc-i960.c (get_cdisp): Don't pass the extra zero args. - * config/tc-ns32k.c (convert_iif): Don't pass the arguments; cache - the value of frag_now and fill in the fields later. - - * Makefile.in (distclean, realclean): Remove new - configure-generated files. - -Sat Aug 27 20:26:12 1994 Ken Raeburn (raeburn@kr-laptop.cygnus.com) - - Conversion to autoconf: - * acconfig.h, aclocal.m4: New files. - * configure.in: Rewritten (except for some target-specific code) - for autoconf. - * conf.in, configure: New files, generated from the above. - * Makefile.in: Changed magic sequence indicating insertion of - makefile fragments. - (VPATH, srcdir, CC, LIBS, OBJS dependencies): Use @-substitutions - from configure. - (LINKED_HEADERS): Deleted a.out.gnu.h, a.out.h, and host.h. - (config.status, configure): Rewrite rules. - (config-stamp): Depend on conf. Skip variables that configure is - now substituting itself. - (*.o dependencies): Deleted host.h. - (distclean, realclean): Don't delete host.h. - * as.c: Don't include stdio.h, string.h, sys/types.h. Include - signal.h after as.h. - * as.h: Include alloca-conf.h first. Include ctype.h, string.h, - strings.h, stdlib.h, unistd.h, sys/types.h, fopen-bin.h, - fopen-same.h, as suggested by autoconf test results. - [BROKEN_ASSERT]: Don't include assert.h. - (strdup): Declare. - (volatile, const): Define if not __STDC__ and not already defined. - (malloc, realloc) [NEED_MALLOC_DECLARATION]: Declare. - (free) [NEED_FREE_DECLARATION]: Declare. - * gasp.c: Include config.h, stdlib.h (if HAVE_STDLIB_H). Don't - include host.h. - (malloc) [NEED_MALLOC_DECLARATION]: Declare. - * messages.c: Include as.h first. Include errno.h only if - HAVE_ERRNO_H. If HAVE_VARARGS_H and not __STDC__, undefine - HAVE_STDARG_H. Set NO_STDARG and NO_VARARGS as appropriate. - * doc/Makefile.in (srcdir, INSTALL, INSTALL_PROGRAM, - INSTALL_DATA): Use autoconf @-substitutions. - - * input-file.c: Don't include assert.h here, 'cause as.h already - includes it. - - * config/tc-alpha.c: Added various prototypes for static - functions. - (in_range): New function, tests whether a value can fit in an - N-bit field. - (build_mem, build_operate_n): New functions for constructing - opcode values. - (emit_sll_n, emit_ldah_num, emit_addq_r, emit_lda_n): New - functions for emitting single instructions, no longer requiring a - recursive call to md_assemble. - (emit_add64): New function for expanding a REG:=REG+CONST - operation into one or more instructions, to handle wide constants. - (clear_insn): New variable. - (md_begin): Fill it in with zeros and BFD_RELOC_NONE values. - (alpha_ip): Use it to initialize local variable insns. - (alpha_ip, label "immediate" and cases 'P', 'G'): Use emit_add64 - for calculations. - -Fri Aug 26 14:46:15 1994 Ken Raeburn (raeburn@kr-laptop.cygnus.com) - - * subsegs.c (section_symbol): Reverse still-wrong test of - EMIT_SECTION_SYMBOLS. - - * write.c (BFD_FAST_SECTION_FILL): Always define. - (write_contents): If fill_size is 1, use memset instead of looping - calling memcpy. - -Wed Aug 24 12:46:08 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.h (LOCAL_LABEL): Define as 0, for compatibility - with native MIPS assembler. - * configure.in (mips-*-irix*): Don't set emulation. - * config/te-irix.h: Remove. - - * ecoff.c (ecoff_symbol_new_hook): Don't add a new file if we - haven't seen any input files yet. - * config/tc-alpha.c (md_begin): Just call symbol_create, rather - than calling symbol_new and then removing the symbol from the - list. - - * as.c (main): Move a inside the #if 0 block which uses it. - * ecoff.c (current_stabs_filename): Make const. - * frags.h (frag_align_pattern): Declare. - * gasp.c (new_file): Cast isp to long, and use %ld to print it. - * config/tc-alpha.h (md_operand): Add cast to void. - (alpha_do_align): Declare argument types. - (tc_get_register): Declare. - (alpha_frob_ecoff_data): Declare. - * config/tc-alpha.c: Include . - (s_mask): Don't declare; does not exist. - (line_comment_chars): Remove /* from descriptive comment. - (tc_get_register): Remove unused local reg. - (tc_gen_reloc): Don't bother to compare unsigned to zero. - (s_base): Correct warning to actually print register number. - (md_begin): Remove unused locals retval, lose, and i. - (alpha_fix_adjustable): Move default case inside switch to avoid - warning. - (load_symbol_address): Remove unused locals reloc_addr, p, sym, - and addend. - (emit_byte_manip_r): Declare types for all arguments. - (emit_extract_r, emit_insert_r, emit_mask_r): Likewise. - (emit_sign_extend, emit_bis_r, s_proc): Likewise. - (alpha_ip): Use sprint_value to print offsetT value. Remove - unused local size. Remove unused label get_macro. - (alpha_do_align): Make fill const. - (md_apply_fix): Remove unused label check_zov. - - * configure.in: Recognize i586 as a synonym for i[34]86. - -Tue Aug 23 12:32:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-coff.c (c_line_new): Change line_number argument from - unsigned short to int so that the type in the prototype matches - the promoted type in the definition. - (stack_delete): Comment out; not used. - * config/obj-coff.h (tc_coff_symbol_emit_hook): Declare if not - BFD_ASSEMBLER, not if BFD_ASSEMBLER. Declare argument type. - * config/tc-m68k.h (tc_coff_sizemachdep): Declare. - * config/tc-m68k.c (tc_coff_symbol_emit_hook): Add ignored - argument. - -Tue Aug 16 01:48:20 1994 Jeff Law (law@snake.cs.utah.edu) - - * gas/config/tc-hppa.c (pa_comm): Undo last change. Set sy_frag for - the common symbol to the zero address frag (the correct fix). - -Tue Aug 16 01:48:20 1994 Jeff Law (law@snake.cs.utah.edu) - - * gas/config/tc-hppa.c (pa_comm): Undo last change. Set sy_frag for - the common symbol to the zero address frag (the correct fix). - - * config/tc-hppa.c (pa_comm): Set sy_resolved for the common - symbol. - -Fri Aug 12 17:51:48 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.c (md_begin): Drop "el" from the end of - TARGET_CPU. Check for mips64orion. - -Tue Aug 9 19:43:45 1994 Stu Grossman (grossman@cygnus.com) - - * configure.in: Recognize ppc-*-netware. - * config/te-ppcnw.h: New file to support Power-PC/Netware - configurations. Currently, it just enables the use of backslash - escapes in string directives. - -Tue Aug 9 11:12:13 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-ppc.c (ppc_stabx): Call expression directly, rather - than via pseudo_set. If expression is a symbol, move stab symbol - to just after symbol from expression. - - * ecoff.c (ecoff_build_procs): Don't force adr of first fdr to be - zero. Undoes change of June 4, 1993. - - * config/tc-mips.c (md_parse_option): Accept -mcpu=4400, 4600, and - orion. - -Mon Aug 8 16:28:08 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * as.h: Remove FOPEN_WB patch of Aug 6. - * configure.in: Configure for ho-go32 correctly. - * config/ho-go32.h: Fix copyright. - -Mon Aug 8 11:59:51 1994 Jeff Law (law@snake.cs.utah.edu) - - * gas/config/tc-hppa.c (md_pseudo_table): Delete redundant - upper-case versions of the pseudo-ops. - -Mon Aug 8 13:42:16 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-sparc.c (md_apply_fix): If we are going to generate a - non PC relative reloc, don't put the addend in the object file. - -Sat Aug 6 01:15:02 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * as.h: If FOPEN_WB is not defined, do the right thing in a go32 - environment. - -Mon Jul 11 11:34:52 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/tc-h8300.c (pint): New function for handling varying - size of int pseudo op. - * doc/as.texinfo: Fix typo describing .h8300h pseduop. - -Mon Aug 1 02:40:43 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (create_new_space): Initialize sd_subspaces - field in the space chain. - - * config/tc-hppa.c (tc_gen_reloc): Cast return value from - hppa_gen_reloc_type. - -Thu Jul 28 15:45:37 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Check more carefully for - conflicting architectures. - (md_parse_option) [NO_V9]: Complain if v9 was selected. - (md_show_usage): Derive architecture list in usage message from - architecture_pname array. - (cypress): Macro deleted. - (op_hash): Don't initialize. - (s_common): Use bfd_und_section_ptr instead of bfd_und_section. - - * config/tc-sparc.c (BSR): New function. - (sparc_ip): Use it for right-shift operations of 32 bits or more. - - * config/tc-sparc.c (sparc_ip): Implement new operand type 'x'. - -Tue Jul 26 18:21:24 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff.h: Moved common includes and TARGET_FORMAT - definitions together. - (WORKING_DOT_WORD, WARN_SIGNED_OVERFLOW_WORD, - OBJ_COFF_OMIT_OPTIONAL_HEADER, BFD_HEADERS, BFD) [!BFD_ASSEMBLER]: - Moved these definitions to the start of the file, before the - includes. - (SYMBOLS_NEED_BACKPOINTERS, OBJ_COFF_MAX_AUXENTRIES): Always - define these. - (S_GET_ZEROES): Deleted. - (S_SET_ZEROES): Moved to obj-coff.c. - - * config/obj-coff.c (obj_coff_* psuedo-op fns): Deleted - forward declarations. - (obj_pseudo_table): Moved to one version end of file, - conditionalized internally. - (stack typedef, stack_init, stack_delete, stack_push, stack_pop, - tag_hash, tag_init, tag_insert, tag_find, tag_find_or_make): Moved - to one combined version at top of file, unconditional. Deleted - forward declarations. - (s_get_name): Moved one copy of declarations to start of file. - (def_symbol_in_progress): Ditto. Don't initialize. - (S_SET_ZEROES): Moved here from obj-coff.h. - (write_object_file): If TC_COFF_SET_MACHINE is defined, call it on - the file headers. - - * config/obj-coff.c (seg_info_off_by_4): Now const and static. - (SEG_INFO_FROM_SEG_NUMBER): Unused macro deleted. - (previous_file_symbol, def_symbol_in_progress, symbol_externP, - symbol_extern_lastP, last_functionP) [!BFD_ASSEMBLER]: Don't - bother explicitly initializing to zero value. - - * config/obj-coff.c (fixup_segment) [TC_I960]: Use SF_GET_BALNAME - and SF_GET_CALLNAME instead of the TC_S_IS_ versions. - - * config/tc-i960.h (TC_COFF_SET_MACHINE): New macro. Calls - tc_headers_hook. - - * config/tc-i960.c (targ_has_iclass): Use I_CX | I_CX2 where I_CX - was used previously. - (tc_headers_hook): If I_CX2 is found, set flags to F_I960CA. - - * config/tc-i960.c (po_hash): Declaration deleted. - (next_object_file_charP): Ditto. - (regnames, aregs, coj): Now const. - (parse_memop): Static array def_scale now const. - (md_begin): Cast away const when passing hash routines addresses - of values in regnames or aregs. - (md_longopts): Added "link-relax" and "no-relax" hyphenated forms. - Continue to accept one-word forms. - (struct tabentry, arch_tab): Moved to top level from inside - md_parse_option. Now const. - (md_show_usage): Use arch_tab to generate usage message. Print - hyphenated forms of relax options. - - * config/tc-i960.h (DEFINE_I960_AOUT, TC_S_IS_*, TC_S_*_SYSPROC, - TC_S_FORCE_TO_*): Moved from here... - * config/tc-i960.c: ... to here. Changed DEFINE_I960_AOUT stuff - to test OBJ_AOUT and OBJ_BOUT directly. - - * config/tc-i960.h (CTRL, COBR, COJ, REG, MEM*, FBRA, CALLJ, - M1-M3, REG_OPC, R_*, SFR, LIT, FP, OP, R, RS, RL, RSL, F, - {R,F}{,L}{2,4}, M, SFR_OK, LIT_OK, FP_OK, REG_ALIGN, MEMOP, I_*): - Macros deleted. - - * config/tc-i960.c (ARCH_JX): Define. - (arch_tab): Include JX. - (targ_has_sfr, targ_has_iclass): Handle JX. - (tc_headers_hook): Set flags to F_I960JX for i960JX. - -Fri Jul 15 15:36:51 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * subsegs.c (section_symbol): Had last change backwards. - -Thu Jul 14 13:21:06 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/atof-ns32k.c: Deleted. - - * config/obj-aout.c (obj_aout_frob_symbol): Use - bfd_ind_section_ptr and bfd_und_section_ptr. - - * subsegs.c (subseg_set_rest): Compare segT values directly, - without casting to int first. - - * config/tc-ns32k.c (md_begin): Return value from hash_insert - should be pointer to const. Don't call exit explicitly after - calling as_fatal; it won't return. - (convert_iif): Make local variable j be pointer to bit_fixS, since - that's how it's used. - (encode_operand, case 'b'): Ignore sprintf return value. Don't try - converting freeptr to int and back. - - Merged in NS32K support update from Ian Dall (dall@hfrd.dsto.gov.au): - - * config/te-pc532mach.h: New file. pc532-mach target emulation. - - * config/te-netbsd532.h: New file. Netbsd532 target emulation. - - * config/tc-ns32k.h: Add definition of NOP_OPCODE. - - * config/tc-ns32k.h: Add prototype for fix_new_ns32k_exp. - - * config/tc-ns32k.h: Add BFD_ASSEMBLER support. - - * config/tc-ns32k.c (tc_gen_reloc): New function for BFD_ASSEMBLER. - - * config/tc-ns32k.c (fix_new_ns32k_exp): Get reloc type - differently for BFD_ASSEMBLER. - - * config/tc-ns32k.c (md_estimate_size_before_relax): Get reloc - type differently for BFD_ASSEMBLER. - - * config/tc-ns32k.c (md_create_long_jump): Size of opcode is one - not 2. - - * config/tc-ns32k.c (md_convert_frag): Code for the BFD_ASSEMBLER - case. Also use smart md_pcrel_adjust function. - - * config/tc-ns32k.c (md_apply_fix): Code for the BFD_ASSEMBLER - case. Also use smart md_fix_pcrel_adjust function. - - * config/tc-ns32k.c (md_fix_pcrel_adjust): New function which can - find offset from opcode to operand even if in another frag - and in the presence of relaxing. - - * config/tc-ns32k.c (md_pcrel_adjust): New function which can - find offset from opcode to operand even if in another frag - and in the presence of relaxing. - - * config/tc-ns32k.c (md_number_to_disp): Check ranges properly. - - * config/tc-ns32k.c (md_atof): use atof_ieee instead of special - atof_ns32k. - - * config/tc-ns32k.c (reloc): New (static) function for - BFD_ASSEMBLER. - - * config/tc-ns32k.c (convert_iif): More correct pc relative code. - md_relax must be able to find opcode address even if in another frag. - - * config/tc-ns32k.c: More extensive comments. - - * config/tc-ns32k.c (encode_operand): Support new operand classes I - and Z. Drop Q. - - * config/tc-ns32k.c (fix_new_ns32k_exp): new function and - corresponding prototype. - - * config/tc-ns32k.c: make 32532 default machine instead of 32032. - - * config/tc-ns32k.c: include opcode/ns32k.h after as.h - - * aout_gnu.h: r_disp needs to be 2 bits for TC_NS32K - - * write.h: fx_im_disp needs to be 2 bits big for TC_NS32K - - * write.c (relax_segment): Use TC_PCREL_ADJUST macro (if defined) - instead of adding pcrel_adjust. - - * write.c (write_object_file): Adjust to_addr for the - BROKEN_DOT_WORD feature for the BFD_ASSEMBLER case. - - * write.c (write_object_file): Use TC_CONS_FIX_NEW if it is defined. - - * write.c (write_contents): Add code (currently if - BFD_FAST_SECTION_FILL is defined) to make large fills a lot faster. - - * configure.in: Remove ns32k from special FP list. All the ns32k - series use ieee float. - - * configure.in: Add ns32k-pc532-mach and ns32k-pc532-netbsd targets - - * as.h: include expr.h before targ-env.h. Some target dependent file - want to use expr structures. - -Wed Jul 13 14:49:05 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-m68k.c (m68k_ip): Change rp to be a const pointer. - (md_parse_option): Clear cpu field of current_architecture before - setting a new cpu type. Clear no_68881 for m68881 or m68882. - Clear no_68851 for m68851. - -Tue Jul 12 21:27:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/ho-sysv.h (realloc): Declare. - - * symbols.c (symbol_create): New function, most of the guts of the - old symbol_new function. - (symbol_new): Now just checks symbol_table_frozen, calls - symbol_create, and enters the symbol into the symbol table. - * subsegs.c (section_symbol): If EMIT_SECTION_SYMBOLS is not true, - and the symbol table is frozen, call symbol_create instead of - symbol_new. - * symbols.h (symbol_create, symbol_table_frozen): Declare. - - * symbols.c (symbol_clear_list_pointers): Always a function now. - * struc-symbol.h (symbol_clear_list_pointers): Deleted macro - version. - - * symbols.c (debug_verify_symchain): New macro, defined to be - verify_symbol_chain or a cast to void, depending on DEBUG_SYMS. - (many functions): Invoke debug_verify_symchain unconditionally. - -Tue Jul 12 12:06:42 1994 Kung Hsu (kung@x1.cygnus.com) - - * config/obj-ecoff.h: change calling interface of - OBJ_GENERATE_ASM_LINE_STAB. - * config/obj-elf.h: ditto. - * read.c (read_a_source_file): ditto. - * ecoff.h: change calling interface of - ecoff_generate_asm_line_stab. - * ecoff.c (add_file): record of filename to handle case of include - files, also change default built-in type from int to void for - asm file. - * ecoff.c (ecoff_generate_asm_line_stab): handle case of include - files. - -Mon Jul 11 17:20:23 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.c (macro): In case M_LA_AB, SVR4_PIC, large - constant, and case ldd_std, set mips_optimize to 2 temporarily to - avoid inserting an unexpected nop instruction. - -Sat Jul 9 00:05:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_build_lineno): Handle count correctly for last - line number. - -Fri Jul 8 15:22:07 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * gasp.c (process_pseudo_op): Pass right args to do do_aif. - (get_any_string): New arg 'pretend_quote'. - (get_and_process, do_formals, macro_expand, do_sdata, - process_pseudo_op): Use new arg. - -Fri Jul 8 12:23:44 1994 Kung Hsu (kung@mexican.cygnus.com) - - * config/obj-ecoff.h: define macro OBJ_GENERATE_ASM_LINE_STAB. - * config/obj-elf.h: ditto. - * read.c (read_a_source_file): generate line stabs for asm file. - * read.h: add extern generate_asm_line_stab. - * ecoff.h : add prototype for ecoff_generate_asm_line_stab(). - * ecoff.c (add_file): if there's no filename provided, set switch - to generate line stabs for .s file. - * ecoff.c (add_procedure): add stabs symbol for .ent directive. - * ecoff.c (generate_ecoff_stab): creates an artificial stabs. - * ecoff.c (generate_asm_line_stab): generate a artifitial label - for each line and generate a stabn for the line. - -Thu Jul 7 17:04:03 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * gasp.c (get_any_string): Cope with getting a string with an - alternate base specifier. - (do_aif, do_aelse): Only enable output if expression is true and previous - level was on. - (chartype_init): Add BASEBIT chartype. - (process_pseudo_op): Notice nesteed AIFs. - -Thu Jul 7 12:30:22 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * h8300.c (do_a_fix_imm): Code for 2 bit reloc type using in trapa - insn. (fix pr 5165, 5174) - -Thu Jul 7 11:31:32 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (R_DLT_REL): If it isn't defined, then define - to an appropriate value to avoid losing on old hpux systems. - - * config/tc-hppa.c (hppa_fix_adjustable): Reject reductions for - symbols in DLT relative relocs. - (tc_gen_reloc): Zero out the addend field for DLT relative relocs. - -Wed Jul 6 01:07:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-ppc.c (ppc_tc): If not OBJ_COFF, force TOC entry to - align to a four byte boundary. - -Tue Jul 5 15:42:09 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-alpha.c (load_expression): Handle 32-bit addends. - (gpdisp_hi16_howto): Now points to const. - (load_insn_table, alpha_ip): Fix uses of const. - - * doc/internals.texi: Updates to COFF description. Added "@end - defmac" as needed, and some extra heading and "@bye" so it'll - format as a separate document. - -Tue Jul 5 13:54:00 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/obj-elf.h (S_GET_ALIGN, S_SET_ALIGN): Define. - * config/obj-elf.c (obj_elf_common): Set alignment of common - symbol. - * config/tc-sparc.c (s_common): If OBJ_ELF, set alignment of - common symbol. - -Mon Jul 4 18:29:43 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (is_complex): New macro. - (cons_fix_new_hppa): "Handle" complex expressions. - -Fri Jul 1 00:48:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-coff.c (write_object_file): Set s_align field from - section_alignment array. - -Thu Jun 30 15:05:28 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * write.c (write_object_file): Use bfd_com_section_ptr. - * as.h (absolute_section, undefined_section): Use new BFD macros - bfd_abs_section_ptr and bfd_und_section_ptr. - -Thu Jun 30 14:36:37 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/tc-mips.c (macro): For M_LI_SS, decide how to handle it - based on contents of imm_expr and offset_expr, rather than - mips_pic. For M_LI_DD, decide how to handle it based on segment - name of offset_expr, rather than mips_pic. - (mips_ip): If g_switch_value < 4, use immediate values for 'l'. - If g_switch_value < 8, use .rdata rather than .lit for 'L'. - -Wed Jun 29 17:30:46 1994 Stan Shebs (shebs@andros.cygnus.com) - - * as.c (show_usage): Break long string into shorter ones. - (parse_args): Add -v, prints version id and continues. - * config/tc-mips.c (md_show_usage): Break long string. - -Mon Jun 27 09:47:16 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/tc-i386.c (md_parse_option): Handle "-V" and "-Q" if - OBJ_ELF is defined. - -Sun Jun 26 16:30:48 1994 Stan Shebs (shebs@andros.cygnus.com) - - * as.c (main) [HOST_SPECIAL_INIT]: New hook, for host-specific - initialization. - -Wed Jun 22 00:24:55 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.h (obj_frob_symbol): Define for OBJ_ELF. - More gas/bfd lossage exposed by the new linker code. - -Tue Jun 21 11:32:18 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * subsegs.c (subseg_change): Clear seginfo after allocating it. - (subseg_get): Pass actual size of seginfo to memset. - - * subsegs.c (abs_seg_info, und_seg_info): Define if BFD_ASSEMBLER. - (subseg_change): Store seg_info for bfd_abs_section_ptr in - abs_seg_info, and store seg_info for bfd_und_section_ptr in - und_seg_info. - (subseg_get): Likewise. Also, don't set output_section if it is - already set. - (seg_info): Define as function. - * subsegs.h (seg_info): Declare as function rather than defining - as macro. - * write.c (relax_and_size_seg): Call seg_info rather than - bfd_get_section_userdata. - -Mon Jun 20 16:30:54 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * configure.in (ppc-*-elf*): New target, like -sysv4*. - - * expr.c (operand): If "0f" is followed by '\0', don't do eol - checks. - -Mon Jun 20 15:17:43 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * ecoff.c (ecoff_build_aux): Call swap_tir_out and swap_rndx_out - via backend pointer, not directly. - -Fri Jun 17 18:05:06 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (config-stamp): Make sure there is at least one - element in the for loop. - -Fri Jun 17 11:01:04 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Misc trivial changes to make gcc -Wall happy. - - * config/tc-hppa.h (elf_hppa_final_processing): Declare. - -Wed Jun 15 20:44:46 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * as.c (parse_args): Cast xmalloc return value. - - * Makefile.in (config-stamp): If $(defs) contains multiple words, - emit a #define line for each. - * configure.in: For sparc64 target, use sparc cpu files and add - sparcv9 to extra_defs. No longer treat sparc64-*-aout* specially. - - * config/tc-sparc.c (membar_masks): Now static and const. - (md_show_usage) [!NO_V9]: Add -Av9 to usage message. - (current_architecture) [sparcv9]: Initialize to v9. - (md_begin) [sparcv9]: Don't bother changing it unconditionally - here. - (s_reserve): Don't pass unexpected argument to as_bad with - bad-segment message. - - * as.h (bfd_alloc_by_size_t) [BFD_ASSEMBLER]: Declare. - - * config/atof-ieee.c (int_to_gen): Commented out unused routine. - - * config/tc-vax.c (md_assemble): Removed check of operand section. - - Fri Jun 3 17:25:08 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.h (DBG_S_C_COMPLX4, DBG_S_C_COMPLX8): define - these new VMS symbol-type macros for `complex float' and - `complex double' support. Their values come from the existing - DSC$K_DTYPE_FC and DSC$K_DTYPE_DC macros in . - (DBG_S_C_REAL8_G, DBG_S_C_COMPLX8_G): G_float versions of - REAL8 and COMPLX8; not used yet, because gcc outputs the same - .stabs for `double' regardless of whether `-mg' is used. - * config/obj-vms.c (VMS_typedef_parse) [case 'r']: add entries - for gcc2's predefined types "complex float", "complex double", - and "complex long double" (identical to complex double). - -Wed Jun 15 12:32:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-coff.c (coff_frob_symbol): Use C_STAT for the .text - section symbol, not C_LABEL. - - * config/tc-mips.c (mips_ip): Permit a modifier in 'o' case, and - permit non constant expressions in 'u' case. Lets ``lui - $8,%hi(foo); lw $8,%lo(foo)($8)'' work correctly. - -Mon Jun 13 12:08:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-aout.c (obj_aout_frob_symbol): Warn about an attempt - to put a common symbol in a set. - -Sat Jun 11 16:41:21 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Add weak symbols as an extension to a.out. - * read.c (pseudo_set): Only preserve external bit for OBJ_AOUT and - OBJ_BOUT if not BFD_ASSEMBLER. - * config/aout_gnu.h (N_WEAKU, N_WEAKA, N_WEAKT, N_WEAKD, N_WEAKB): - Define as in ../include/aout/aout64.h. - * config/obj-aout.h (OBJ_SYMFIELD_TYPE): If not BFD_ASSEMBLER, - define as char. - (S_GET_WEAK, S_SET_WEAK): Define if not BFD_ASSEMBLER. - * config/obj-aout.c (obj_pseudo_table): Add "weak". - (obj_emit_symbols): Adjust type of weak symbols. - (obj_aout_weak): New static function. - -Fri Jun 10 13:48:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.c (obj_elf_section): Don't set any flags based on - the type of a special section. - - * config/ho-sunos.h: Include . Don't declare malloc, - realloc, free, or atol. - -Wed Jun 8 06:28:37 1994 Bill Cox (bill@cygnus.com) - - * Makefile.in (check): Delete as.new dependency, so that - regression test doesn't trigger an assembler build. - -Tue Jun 7 13:33:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (mostlyclean, realclean): New targets. - * doc/Makefile.in, testsuite/Makefile.in: Likewise. - -Mon Jun 6 13:10:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (RDATA_SECTION_NAME): Define. - (macro): Correct M_LI_SS SVR4_PIC/EMBEDDED_PIC case. After M_LI_D - or M_L_DOB or label dob, force a new frag to avoid getting - confused in tc_gen_reloc. - (mips_ip): Use RDATA_SECTION_NAME, not .rdata. - (s_change_sec): Likewise. - -Fri Jun 3 23:35:36 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (emit_expr): Use memset to zero out memory, rather than - going through md_number_to_chars. This permits handling symbolic - arguments when the size is larger than sizeof (valueT), if - TC_CONS_FIX_NEW is prepared to handle the case (as it is on MIPS). - -Fri Jun 3 12:50:13 1994 David J. MacKenzie (djm@rtl.cygnus.com) - - * as.c (show_usage), config/tc-alpha.c (md_show_usage), - config/tc-mips.c (md_show_usage): Fix up messages. - - * as.h: Replace flagseen with separate variables. - * as.c (parse_args): Set them. Don't accept -1 option, or -v - explicitly (it's a synonym for --version). - * as.c, input-scrub.c, messages.c, read.c, symbols.c, write.c, - config/obj-aout.c, config/obj-aout.h, config/obj-bout.c, - config/obj-bout.h, config/obj-coff.c, config/obj-coff.h, - config/obj-vms.c, config/tc-hppa.c, config/tc-i386.c, - config/tc-i960.c, config/tc-m68k.c, config/tc-mips.c, - config/tc-vax.c: Use the new flag variables instead of flagseen. - * config/tc-vax.c [OBJ_VMS]: Recognize -+, -1, -v, and document in - usage. - - * as.c (show_usage): Remove target specific messages; - instead, call md_show_usage. - (parse_args): Use getopt_long_only. Take pointers to argc and - argv. - (main): Pass parse_args pointers. - * as.h: Remove 3 variables that are redundant with flagseen. - * as.c, messages.c: Change their users to use flagseen. - Define getopt stuff. - * tc.h: Update md_parse_option decl. Add md_show_usage decl. - * config/tc-*.c: Add md_shortopts, md_longopts, - md_longopts_size, md_show_usage. Change calling convention for - md_parse_option. Remove md_parse_long_option. - * config/tc-ns32k.c: Rename `struct option' to `struct ns32k_option'. - * config/tc-i386.h: Don't define md_parse_option. - -Thu Jun 2 13:54:46 1994 David J. Mackenzie (djm@rtl.cygnus.com) - - * as.c (show_usage): New function. - (parse_args): Code moved from main. - Recognize --help and --version. - * config/tc-ns32k.h: Define TC_NS32K. - * doc/as.texinfo: Document all of the target-independent command - line options. - -Thu Jun 2 12:07:25 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * gasp.c (hash_new_table): Clear newly allocated table. - - * config/tc-m68k.c (enum _register): Add 68060 control registers - BUSCR and PCR. - (last_movec_reg): New macro. - (m68000_control_regs, m68010_control_regs, m68020_control_regs, - m68040_control_regs, m68060_control_regs): New arrays. - (control_regs): New pointer. - (m68k_ip): Use control_regs instead of testing CPU every time. - Use last_movec_reg too. In error messages, handle 68060, and - print 68060 for mfloat, too. - (m68k_init_after_args): Handle "68060". Use m68040up for making - m68851 choice. Set control_regs. - (md_parse_option): Handle "68060". - * configure.in: Setting cpu_type, recognize m68060 too. - - * config/obj-coff.c (fixup_segment) [!BFD_ASSEMBLER] - [DIFF_EXPR_OK]: Do conversion to pc-relative for difference, even - if pcrel is already set. - - * read.c (potable): Add this_gcc_requires_the_gnu_assembler in all - lower-case, in case we're ignoring case of opcodes in the input - file. - - * doc/as.texinfo (.section): Document as unavailable for a.out - type formats. - - * config/tc-alpha.c (machine): New variable. - (load_insn): New macro. - (load_insn_table): New function. - (md_begin): Call load_insn_table, once for basic instructions and - once for appropriate PAL instruction table. - (md_parse_option): Set `machine' based on -m##### arguments. - * config/alpha-opcode.h (alpha_pal21064_opcodes): Split out from - alpha_opcodes. - (alpha_pal21164_opcodes): New table. - (NUM21064OPCODES, NUM21164OPCODES): New macros. - - * configure.in (target i386-*-netbsd0.8): Use 386bsd emulation. - - * doc/Makefile.in (install-info-gasp): Use $$dir when installing - file. - -Wed Jun 1 10:48:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): Force floating point values to be - aligned correctly. - -Fri May 27 10:05:53 1994 Ken Raeburn (raeburn@cygnus.com) - - Merged in changes from gas-2.3 net release: - - * Makefile.in (VERSION): Updated to cygnus-2.3.1. - - * config/obj-vms.c: Replaced unchecked uses of malloc with - xmalloc. - - * listing.c (list_symbol_table): Only test BFD64, not - BFD_ASSEMBLER too. - - * config/obj-coff.c (fixup_segment) [BFD_ASSEMBLER] - [DIFF_EXPR_OK]: Don't check pcrel, just convert it. - - * config/obj-vms.c: Removed lots of extra semicolons after - compound statements. - (strchr): Don't declare here. - - * config/ho-vax.h (realloc): Declare. - - * config/ho-vms.h (strchr, strdup): Declare. - - * config/tc-sparc.c (md_parse_option) [OBJ_ELF]: Accept and ignore - option `-q'. - - Wed May 18 20:50:35 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.h (DBG_S_C_SQUAD, DBG_S_C_UQUAD): define these - new VMS symbol-type macros; signed and unsigned quadword integers, - for `long long' support. Their values come from the existing - DSC$K_DTYPE_QU and DSC$K_DTYPE_Q macros in . The - VMS debugger now recognizes `long long' variables correctly. - * config/obj-vms.c (VMS_typedef_parse) [case 'r']: add entries - for gcc2's predefined types "long double" (same as double, as - per gcc's current state), "long long int", "long long unsigned - int", and final `otherwise' case (to avoid uninitialized type - and size fields). [caveat: predefined types "complex int", - "complex float", "complex double", and "complex long double" are - still missing.] - - * config/ho-vms.h (EXIT_FAILURE): define as 0x10000002 instead - of 0, because the latter indicates success rather than failure - when passed to `exit' or return from `main' compiled by gcc2. - - * config/obj-vms.c (array_suffix, generate_suffix): replace two - hardcoded `0xa3's with macro DBG_S_C_ADVANCED_TYPE from obj-vms.h. - (VMS_typedef_parse): eliminate redundant if-then-else when - allocating new symbol entry and linking it to VMS_Symbol_type_list. - - Tue May 17 20:47:31 1994 Pat Rankin (rankin@eql.caltech.edu) - - * config/obj-vms.c (Write_VMS_MHD_Records): don't try to interpret - the contents of the GAS_VERSION string when falling back to it for - language processor identification. - - * make-gas.com, vmsconf.sh (ENVIRON): fix misspelling of - `psect_attr' in linker options. - - Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com) - - * configure.bat: update to latest makefile.in - * config/te-go32.h: [new] go32's environment - -Fri May 20 17:59:34 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * as.h: Don't declare parameters for strstr. - -Thu May 19 15:40:13 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-sparc.c (md_section_align): Don't change the size if - OBJ_ELF. - -Wed May 18 13:08:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (install): Redirect ln output to /dev/null. If ln - fails on gasp, install gasp.new, not gasp. - -Wed May 18 09:16:36 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): Use R_HPPA_ABS_CALL, not R_HPPA for - absolute calls. - -Tue May 17 12:50:46 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_parse_fp_cmp_cond): Report an error - on a partial completer match. - -Mon May 16 12:03:49 1994 Jeff Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Change .hppa_unwind to .PARISC.unwind - throughout code. - (is_complex): Delete definition and support for complex relocation - types. - (tc_gen_reloc): Delete special unwind crud for ELF. Simplify and - rewrite ELF code based on 94-02-02 PA ELF draft spec. - (pa_build_unwind_subspace): Use standard PARISC_DIR32 relocs for - the unwind descriptors. - -Fri May 6 14:13:15 1994 Steve Chamberlain (sac@cygnus.com) - - * config/go32.mh: New makefile fragment for go32 crossing. - * configure.in (host==go32): Use new fragment. - -Fri May 6 14:35:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * gasp.c: Include libiberty.h. - (main): Remove unused variable i. - - * config/tc-ppc.c (md_begin): When using -many, permit comparison - instructions to appear multiple times in the opcode table. - -Thu May 5 19:14:43 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * Makefile.in (VERSION): Update to 2.2.90. - - * symbols.c (symbol_new) [BFD_ASSEMBLER]: Don't permit additions - to the symbol table if it's already been set in the output bfd. - (symbol_begin) [! EMIT_SECTION_SYMBOLS] [RELOC_REQUIRES_SYMBOL]: - Don't use bfd_abs_section.symbol for gas absolute symbol. - - * doc/Makefile.in (distclean, clean-dvi, clean-info): Delete gasp - files too. - -Thu May 5 18:12:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_emit_delays): Make call to - mips_no_prev_insn unconditional. - -Thu May 5 17:25:38 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff*.*: Merged coffbfd versions into coff versions, - with a single "#ifdef BFD_ASSEMBLER" controlling most of it for - now. Deleted obj-coffbfd.* files. - * configure.in: Always use obj-coff.* for COFF targets. - -Wed May 4 13:34:11 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/te-dpx2.h (TARGET_FORMAT, REGISTER_PREFIX_OPTIONAL): - Define. - * configure.in (m68k-bull-sysv3*): Enable. - - * config/coff_gnu.h: Deleted. - -Wed May 4 11:29:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-m68k.h (TARGET_FORMAT): If not TE_SUN3, define as - "a.out-zero.big". - - * config/obj-coffbfd.c (fixup_segment): Make common symbol and PC - relative adjustments when TE_LYNX is defined as well as when - TC_I386 is defined. - -Wed May 4 02:29:21 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * as.h (strstr): Restore declaration. - (subseg_get) [BFD_ASSEMBLER]: Declare. - - * write.c (write_object_file): If obj_adjust_symtab is defined, - invoke it. Then call set_symtab, and finally invoke *_frob_file - hooks. - * config/obj-coff.c (coff_adjust_symtab): Renamed from - coff_frob_file. - * config/obj-coff.h (coff_adjust_symtab): Changed declaration - accordingly. - (obj_adjust_symtab): Macro also changed. - - * configure.in (i386-*-gnu*): New target, handled like i386-mach. - -Tue May 3 21:04:16 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff.h (TARGET_FORMAT) [TC_I960]: Select little - endian version. - - * config/obj-coffbfd.h (TARGET_FORMAT) [TC_I960]: Ditto. - - * config/obj-coff.c (coff_frob_section): Round up the size of - every section to a multiple of the alignment, so that BFD doesn't - surprise us. - - Eliminate many simple differences between the two COFF back ends: - - * config/obj-coffbfd.c: Removed all uses of DEFUN and DEFUN_VOID. - Made minor stylistic changes, deleted some register declarations. - (stack_top): Deleted. - (symbol_to_chars): Use absolute_section and reg_section instead of - the corresponding SEG_* symbols. - (obj_coff_endef, tag_find_or_make, fixup_segment): Likewise. - (stack typedef, stack_init, stack_delete, stack_push, stack_pop): - Moved to just after pseudo-op table. All functions now static. - (stack_delete): Removed declaration. - (tag_init, tag_insert, tag_find_or_make, tag_find): Moved to just - after stack functions. - * config/obj-coffbfd.h: Reordered some declarations and macros. - (stack_init, stack_delete, stack_push, stack_pop): Don't declare. - (stack typedef): Deleted. - (SYMBOLS_NEED_BACKPOINTERS): Always undef then define; don't test. - (SYM_AUXENT): New macro. - (SA_GET_*, SA_SET_*): Define in terms of SYM_AUXENT when feasible. - (SF_GET_*, SF_SET_*): Define in terms of SF_GET when feasible. - (SA_GET_SYM_TAGNDX, SA_GET_SYM_ENDNDX, SA_SET_SYM_TAGNDX, - SA_SET_SYM_ENDNDX, object_headers typedef, data_section_header, - text_section_header): Delete non-BFD_HEADERS versions, since we - always define that symbol now. - - * config/obj-coff.c (stack_top): Deleted. - (obj_coff_endef, obj_coff_dim, obj_coff_line, obj_coff_size, - obj_coff_scl, obj_coff_tag, obj_coff_type, obj_coff_val): Change - argument name from "ignored" to "ignore". - (obj_coff_val): Use frag_now_fix. - (obj_pseudo_table): Removed IGNORE_DEBUG version, since it doesn't - get used. - (stack typedef, stack_init, stack_delete, stack_push, stack_pop): - Moved to just after pseudo-op table. All functions now static. - (tag_init, tag_insert, tag_find_or_make, tag_find): Moved to just - after stack functions. - * config/obj-coff.h: Reordered some declarations and macros. - Protected against multiple inclusions. - (stack_init, stack_delete, stack_push, stack_pop): Don't declare. - (stack typedef): Deleted. - (SYMBOLS_NEED_BACKPOINTERS): Always undef then define; don't test. - (stdoutput): Deleted declaration. - (TARGET_FORMAT) [TC_I386]: Don't define if already defined. - -Mon May 2 17:09:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * subsegs.h (segment_info_type): Use fix_tail field even if - BFD_ASSEMBLER. - * subsegs.c (subseg_change): Initialize fix_tail field. - (subseg_get): Likewise. - * write.c (frags_chained): New static variable. - (fix_new_internal): If frags_chained is set, use fix_root and - fix_tail from seg_info (now_seg), rather than frchain_now. - (chain_frchains_together_1): Set fix_tail field. - (chain_frchains_together): Set frags_chained. - -Thu Apr 28 01:39:15 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/tc-mips.c (s_option): Only refer to g_switch_* variables - if GPOPT is defined. - (s_abicalls): Ditto. - (md_apply_fix): Cast char* to unsigned char* to avoid pointer - mismatch. - -Wed Apr 27 11:06:32 1994 Steve Chamberlain (sac@cygnus.com) - - * configure.in (i386-*-go32): Uses coff now. - * gasp.c (main): Now takes -D on command line. - (show_usage): Describe new options. - -Tue Apr 26 17:10:30 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * listing.c (list_symbol_table): Print "NO DEFINED SYMBOLS" and - "NO UNDEFINED SYMBOLS" if there aren't any, instead of displaying - the header with an empty list. - - * config/obj-coffbfd.c (fill_section): Check COFF_NOLOAD_PROBLEM - also before setting STYP_NOLOAD for .bss section. - - * config/tc-m68k.c (flag_reg_prefix_optional): New variable. - Initialized to value of REGISTER_PREFIX_OPTIONAL, if defined, or - zero. - (m68k_reg_parse): If flag_reg_prefix_optional is set, permit - register prefix to be absent. - (m68k_ip_op): Accept `&' also for immediate constants. - (insert_reg): Don't bother with (two!?) sanity checks of the - symbol table when inserting each register. - (m68k_parse_long_option): New function. Set - flag_reg_prefix_optional if "register-prefix-optional" is passed. - * config/tc-m68k.h (REGISTER_PREFIX): Always define if not already - defined. - (OPTIONAL_REGISTER_PREFIX): Don't define. - (REGISTER_PREFIX_OPTIONAL): If not already defined, define as zero - or one depending on M68KCOFF. - - Some changes to help Apollo support, from troy@cbme.unsw.edu.au: - * config/tc-m68k.c (DATA, ADDR, SP, FPREG, COPNUM, BAD, BAC): - Define as macros instead of enumerators, since the Apollo compiler - can't handle "enumVal1, enumVal2 = enumVal1" when defining an enum - type. - (make_pcrel_absolute) [NO_PCREL_RELOCS]: New function. - (tc_coff_fix2rtype) [NO_PCREL_RELOCS]: Generate only R_RELBYTE, - R_DIR16, and R_DIR32 relocs. - * config/tc-m68k.h [TE_APOLLO] (COFF_MAGIC, COFF_AOUTHDR_MAGIC): - Use Apollo versions. - [TE_APOLLO] (OBJ_COFF_OMIT_OPTIONAL_HEADER): Undefine. That is, - do include the optional header for Apollo target. - (COFF_MAGIC): Don't define as MC68MAGIC if it's already defined. - - * config/tc-m68k.h [TE_DELTA] (LEX_PCT): Define as 1, so that `%' - can be used within a label name. - - * config/tc-m68k.h (m68k_init_after_args): Declare. - (tc_init_after_args): Define as m68k_init_after_args. - * config/tc-m68k.c (m68k_init_after_args): New function, - containing one-shot code from md_assemble. Added warning for - combination of 68040 and 68851. - (md_assemble): Startup-time code deleted. - -Mon Apr 25 16:19:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * doc/Makefile.in (clean, distclean): Remove asconfig.texi. - -Sun Apr 24 00:13:08 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): 13 bit immediate constant (for break - instruction) is unsigned. - -Fri Apr 22 17:58:22 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-ecoff.c (ecoff_frob_file): Use bfd_ecoff_set_gp_value - and bfd_ecoff_set_regmasks to set the GP value and the register - masks, rather than using the now obsolete fake .reginfo section. - -Fri Apr 22 15:17:06 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * listing.c (list_symbol_table): Don't print register symbols as - undefined. - - * config/obj-coff.c (obj_symbol_new_hook): Don't need to strip - underscores, since symbol_new will already have done it. - * config/obj-coffbfd.c (obj_symbol_new_hook): Ditto. - - * as.c (main): If tc_init_after_args is defined, invoke it after - all arguments have been processed. - - Some changes to help Apollo support, from troy@cbme.unsw.edu.au: - * as.c (perform_an_assembly_pass) [TE_APOLLO]: Create .wtext - section instead of .text. Call create_target_segments. - * read.c (demand_copy_string): No longer static. - -Thu Apr 21 15:50:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (append_insn): Permit branches to be switched - with the preceding instruction even if .set nobopt has been seen. - .set nobopt actually controls whether to bring up an instruction - from the branch target, which gas does not currently support. - -Wed Apr 20 18:46:14 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff.h, config/obj-coff.c: Deleted all code used only - when BFD_ASSEMBLER is not defined, and all conditionals relating - to such code. No such targets remain. - - Fixes for stabs-in-coff: - * config/obj-coff.c: Include subsegs.h. - (coff_frob_section): New function. - (obj_coff_init_stab_section): New function. - * config/obj-coff.h (obj_coff_init_stab_section, - coff_frob_section): Declare. - (obj_frob_section): New macro; uses coff_frob_section. - (INIT_STAB_SECTION): New macro; uses obj_coff_init_stab_section. - - * config/tc-sparc.c (md_section_align): Always round up to - multiple of alignment power specified in bfd target vector. - - * gasp.c: Include ctype.h. - -Mon Apr 18 21:08:01 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * doc/Makefile.in, doc/as.texinfo: Renamed asdoc-config.texi to - asconfig.texi. - - * doc/Makefile.in (install-info-as, install-info-gasp): Get file - names from source directory without pathname. - - * config/obj-vms.c (VMS_write_object_file): While looking for - register mask, skip empty fill frags caused by enabling listing - output. - - * config/ho-sysv.h: Include string.h. - - * doc/internals.texi: New (well, recently added) file. Just added - info on as_warn and friends. - -Mon Apr 18 14:28:22 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_parse_space_stmt): Use the built-in - defaults for defined, private, and spnum fields for the - $TEXT$ and $PRIVATE$ spaces. Do not clobber spnum. Do - not reset the segment if just updating a space. - (pa_spaces_begin): Set BFD section flags for all built-in - subspaces. - -Fri Apr 15 10:51:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (first_proc_ptr): New static variable. - (add_procedure): Set first_proc_ptr if it hasn't been set. - (ecoff_build_lineno): If the first procedure does not start at - address zero, insert a dummy line to compensate. - - * Makefile.in (bootstrap, bootstrap2, bootstrap3): Make gasp.new - as well as as.new. - -Thu Apr 14 15:12:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * expr.c (operand): Try to parse "0f" and "0b" sequences as - floating point and binary numbers respectively; if it doesn't - work, treat them as local labels. - - * Makefile.in: Make $(OBJS) depend on $(ALL_OBJ_DEPS). - * configure.in: Set ALL_OBJ_DEPS in output Makefile. - - Based on suggestions from - (Charles Bailey): - * vmsconf.sh: In generated file, get ".obj" suffix right, build - source files from other directories into objects in the current - directory, and specify PSECT attributes explicitly to linker. - Also added missing label. - * Makefile.in (stamp-mk.com): Reference new variable - VMS_OTHER_OBJS for list of non-local object files, instead of - listing them here. - (VMS_OTHER_OBJS): New variable, added more libiberty files. - * make-gas.com: Regenerated. - - * config/ho-vms.h (unlink): Define as delete. - - * config-gas.com: Fix quoting on TARGET_CANONICAL definition. - Delete files before creating them. - -Thu Apr 14 13:34:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (de-stage1, de-stage2, de-stage3): Use rm -f. - - * config/tc-mips.h (DIFF_EXPR_OK): Define. - * config/tc-mips.c (macro_build): Permit BFD_RELOC_PCREL_LO16 for - certain cases of 'i', 'j' and 'o'. Change 'u' to take an - argument, the reloc type. - (load_register): Pass reloc type to macro_build for 'u'. - (macro): Likewise. For M_LA_AB permit a difference expression - when generating embedded PIC code between an arbitrary symbol and - a symbol in the .text section. - (mips_force_relocation): Force BFD_RELOC_PCREL_HI16_S and - BFD_RELOC_PCREL_LO16 to be emitted. - (md_apply_fix): Check that most relocs are not PC relative. - Handle BFD_RELOC_PCREL_HI16_S and BFD_RELOC_PCREL_LO16. - (tc_gen_reloc): Change #error to as_fatal. Handle - BFD_RELOC_PCREL_LO16 and BFD_RELOC_PCREL_HI16_S. - -Tue Apr 12 18:25:13 1994 Stan Shebs (shebs@andros.cygnus.com) - - * subsegs.c (subsegs_begin): Call memset with args in the correct - order. - (subseg_get): Clear newly allocated seginfo, set its pointer slots - to NULL instead of 0. - -Mon Apr 11 09:00:57 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_procend): Handle case where label was - defined after the .proc directive. - - * config/tc-hppa.c (pa_procend): Give an error if we encounter a - procend for a procedure without a name. - -Thu Apr 7 14:28:30 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (macro): Pass NULL for expression argument to - macro_build for nori case. - (SWITCH_TABLE): Define. - (mips_force_relocation): Force a relocation for a switch table - entry. - (md_apply_fix): Write switch table entry value into file. - (tc_gen_reloc): Use BFD_RELOC_GPREL32 for a switch table entry, - and set the addend to the difference between the reloc address and - the subtrahend. - -Thu Apr 7 10:38:18 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.h (elf_tc_symbol): Delete. No longer used. - (elf_tc_make_sections): Likewise. - (hppa_tc_make_sections, hppa_tc_symbol): Delete extern decls. - - * config/tc-hppa.c (hppa_tc_make_sections): Delete function. - (hppa_tc_symbol): Likewise. - - * config/obj-elf.c (elf_frob_file): Delete elf_tc_symbol and - elf_tc_make_sections stuff. It was there to support PA braindamage - which has been fixed, and in the case of elf_tc_make_sections is - redundant with elf_tc_final_processing. - -Wed Apr 6 20:48:30 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * configure.in (hppa*-*-*elf*): Don't require "-hp-" for the - manufacturer. - -Tue Apr 5 15:48:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): For case 'o', when generating - embedded PIC code, accept the difference between two local symbols - as being constant. - (mips_force_relocation): Only force a reloc to be generated for a - PC relative fixup. - (md_apply_fix): For BFD_RELOC_32 and BFD_RELOC_LO16, put the fixup - value into the file if the fixup will not generate a reloc. - -Tue Apr 5 11:14:14 1994 Ken Raeburn (raeburn@rtl.cygnus.com) - - * config/tc-sparc.c (s_reserve): If section passed isn't bss, - don't spew remainder of input file in error message. - (tc_gen_reloc): If bfd_reloc_type_lookup returns null, print error - message with reloc type and try to process remainder of file. - - * doc/Makefile.in (install-info-as, install-info-gasp): New - targets, now explicitly checking $(srcdir) for info files. - (install-info): Depend on both of them; do nothing more. - -Mon Apr 4 17:06:04 1994 Jeffrey A. Law (law@cygnus.com) - - * config/tc-hppa.c (tc_gen_reloc): Fix thinko in ELF version. - -Mon Apr 4 12:39:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-ppc.c (ppc_insert_operand): Check PPC_OPERAND_SIGNED - flag rather than signedp field. Only permit extended range if - PPC_OPERAND_SIGNOPT flag is set and assembling in 32 bit mode. - Based on patch from David Edelsohn (edelsohn@npac.syr.edu). - - * config/tc-ppc.c (ppc_size): New static variable. - (ppc_arch): Check for PPC_OPCODE_PPC before PPC_OPCODE_POWER. - (md_begin): If an instruction has a size specific flag set, only - add it if we are assembling that size. - -Thu Mar 31 16:51:16 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-sparc.c (tc_gen_reloc): Add a gruesome hack to get - cross section PC relative relocs right for COFF and ELF. - -Mon Mar 28 14:38:23 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff.h (SEPARATE_STAB_SECTIONS): Always define. - (OBJ_PROCESS_STAB): Don't define. - -Mon Mar 28 12:40:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-aout.c (obj_aout_frob_symbols): Don't let BFD clobber - the type of symbol set symbols which happen to be in the absolute - or undefined section. - -Mon Mar 28 12:35:00 1994 David Edelsohn (edelsohn@npac.syr.edu) - - * config/tc-ppc.c (md_parse_option): Add -mpwrx (POWER/2 aka - RIOS2), -mpwr (POWER aka RIOS1), -mppc (PowerPC aka MPC603/604), - and -many (all architectures). - -Sun Mar 27 14:04:19 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (tc_gen_reloc): Set addend for relocation - involving a function symbol which is not a plabel to zero. - (md_apply_fix): Never pass a function symbol to field_adjust. - -Fri Mar 25 17:35:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-aout.c (obj_aout_frob_symbol): If N_EXT is set for an - N_INDR symbol, set BSF_EXPORT and clear BSF_LOCAL. - - * config/tc-mips.c (append_insn): If EMBEDDED_PIC, don't swap a - branch with an instruction that uses $at, in case the branch is - later expanded. - (macro): If EMBEDDED_PIC, case M_JAL_A may use $at. - (md_pcrel_from): If not OBJ_AOUT, return 4 for an undefined symbol - to make it pcrel_offset. - (tc_gen_reloc): If not OBJ_AOUT, set the reloc addend to - reloc->address; another gruesome hack to get gas reloc handling to - do the right thing. - -Thu Mar 24 21:29:29 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-alpha.c (alpha_ip): Only set GP prolog size if using - PV register. - (T12): New macro. - (emit_insn): New function. - (md_assemble): Call it. - (alpha_force_relocation): Handle BFD_RELOC_26, for call_pal - instructions. - (lituse_pending): New variable. Set by anything that generates a - LITERAL reloc, cleared by anything that generates a LITUSE reloc, - tested by code that might want to emit a LITUSE reloc. - (emit_unaligned_io): New function. Currently calls md_assemble, - but it should eventually be converted to generate the insn itself - and call emit_insn directly. - (emit_load_unal, emit_store_unal, emit_byte_manip_r, - emit_extract_r, emit_insert_r, emit_mask_r, emit_sign_extend, - emit_bis_r): Likewise. - (alpha_ip, case 'I'): Handle with BFD_RELOC_23. - (alpha_ip, label get_macro): Don't emit the final instruction if - the opcode is zero. - (alpha_ip, case 'B', subcase 'd'): New case, for subword and - unaligned memory access macros. - (md_apply_fix): Handle BFD_RELOC_26. Generate an error message if - the value can't be resolved. - -Wed Mar 23 16:06:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (md_parse_option): For -membedded-pic, force - the -G value to 0x7fffffff. For SVR4 PIC options, don't call - bfd_set_gp_size here, it's done in md_begin. Don't permit -G with - -membedded-pic. - (mips_force_relocation): New function. - (md_apply_fix): Set fixP->fx_done appropriately. - (s_change_sec): For EMBEDDED_PIC, change .data and .rdata to - .sdata. - * config/tc-mips.h (TC_FORCE_RELOCATION): Define. - (mips_force_relocation): Declare. - (TC_HANDLE_FX_DONE): Define. - -Tue Mar 22 13:58:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (enum mips_pic_level): New enum. - (mips_pic): Change from int to enum mips_pic_level. Change all - uses (0 becomes NO_PIC, 2 becomes SVR4_PIC). - (load_address): Handle EMBEDDED_PIC. - (macro): Handle EMBEDDED_PIC in all PIC cases. - (md_parse_option): Accept -membedded-pic to use EMBEDDED_PIC. If - OBJ_ELF, accept -KPIC and -call_shared to use SVR4_PIC and accept - -non_shared to use NO_PIC (this is how the Irix 5 assembler - works). Do not permit -G with SVR4_PIC. - (s_abicalls): Warn if -G was used, and force -G 0. - (tc_gen_reloc): Set reloc->addend to 0 for a PC relative reloc for - anything but a.out, not just for ELF. For ECOFF, don't generate a - BFD_RELOC_16_PCREL_S2 reloc unless using EMBEDDED_PIC. - - * config/obj-ecoff.h (obj_sec_sym_ok_for_reloc): Define to be 1. - -Sun Mar 20 16:31:55 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (create_new_space): Use ints, not chars as - parameters to avoid losing when compiling with HP CC. - (create_new_subspace, update_subspace, fix_new_hppa): Likewise. - -Sun Mar 20 14:43:14 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * Makefile.in (config-stamp): If `defs' is defined, emit a - preprocessor directive to create a macro named by this value into - config.new; don't explicitly go for BFD_ASSEMBLER. - * configure.in: Define `defs', not `BFDDEF'. Set it to - MANY_SEGMENTS for any obj-coffbfd target. - * config/obj-coffbfd.h (BFD_HEADERS, BFD): Define. - * config/i386coff.mt (TDEFINES): Don't define BFD, MANY_SEGMENTS, - or BFD_HEADERS. - (LOCAL_LOADLIBES): Deleted. - * config/m68kcoff.mt (TDEFINES): Don't define those macros. - * config/m88kcoff.mt (TDEFINES): Ditto. - * config/ebmon29k.mt: Deleted. - * config/h8300hds.mt: Deleted. - * config/ic960coff.mt: Deleted. - * config/sparc.mt: Deleted. - * config/h8300.mt (LOCAL_LOADLIBES, TDEFINES): Deleted. - * config/h8500.mt (LOCAL_LOADLIBES, TDEFINES): Deleted. - * config/sh.mt (LOCAL_LOADLIBES, TDEFINES): Deleted. - * config/z8k.mt (LOCAL_LOADLIBES): Deleted. - (TDEFINES): Don't define the coffbfd macros. - - * Makefile.in: Insert makefile fragments before OBJS definition. - (OBJS): Add $(TE_OBJS). - - * config/obj-coff.c (obj_pseudo_table): Supply "section" - unconditionally. - - * write.c (set_symtab): Define only if BFD_ASSEMBLER. - -Sun Mar 20 12:06:05 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Makefile.in (STAGESTUFF): Add gasp.new. - -Fri Mar 18 20:09:16 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * write.c (symbol_table_frozen): New variable, to be set after - bfd_set_symtab is called. - (dump_section_relocs): Note whether a symbol is a section symbol - or not. - (adjust_reloc_syms): For now, always supply an absolute symbol for - fixups without symbols but not yet `done'. Use section_symbol to - get the symbol, instead of going directly for abs_symbol. - (write_relocs) [DEBUG4]: Abort if any symbol referred to by a - reloc is not a section symbol and is not in the symbol table. - (set_symtab): New function, broken out from write_object_file. - Counts symbol table instead of relying on an earlier count. - (write_object_file): Call set_symtab, but do it after potentially - invoking the *_frob_file macros. Don't bother counting symbols. - Call symbol_remove, instead of expanding it in place. Moved the - conditionalized `object_file_size' declaration down to - conditionalized block where it's used. When using the absolute - symbol for a fixup without a symbol, set sy_used_in_reloc. - (write_object_file) [BFD_ASSEMBLER]: Call section_symbol to get - the correct symbol for the absolute section. - - * subsegs.c (section_symbol): Use symbol_new instead of - symbol_make, since we may want it to go into the symbol table. - Make the new symbol have internal linkage. If - obj_sec_sym_ok_for_reloc says it's okay, use the BFD section - symbol with the newly created GAS symbol. - (obj_sec_sym_ok_for_reloc): Default to always returning 0. - * config/obj-aout.h (obj_sec_sym_ok_for_reloc) [BFD_ASSEMBLER]: - New macro. - * config/obj-elf.h (obj_sec_sym_ok_for_reloc): New macro. - - * config/tc-sparc.c: Include subsegs.h. - (in_signed_range): New function. - (sparc_ip): Use it. - (sparc_ip, case 'i'): Use BFD_RELOC_SPARC13, not _BASE13. - (sparc_ip, label "immediate"): Reject constants for pcrel - instructions only if the relocation type indicates a "call" - instruction and the offset is within range of a "jmpl %g0". If - it's not in range, use the absolute section symbol plus an offset. - (md_apply_fix): Use in_signed_range. Combined _SPARC13 and - _BASE13 cases. - (tc_gen_reloc): Permit BFD_RELOC_SPARC13. - - * config/ic960coff.mt (TDEFINES): Fixed typo (MANY_SECTIONS, not - MANY_SEGMENTS). - - * configure.in: Eliminated all targets using obj-coff but not - defining BFD_ASSEMBLER; I think all such targets that are - supported will be matched by real CPU-OS combinations earlier in - the case statement. - (targets *-*-coff*, *-sysv*, *-*-sco*, *-*-sysv32): Deleted. Made - some comments about the dpx2 configuration, but left it disabled, - since it couldn't be reached before. - (target a29k-amd-ebmonold): Deleted. - -Thu Mar 17 13:36:09 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_import): Correctly handle importing of an - already defined symbol. - -Wed Mar 16 17:11:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): Only accept overly large values for - the 'j' operand if there are no further alternatives for this - instruction. - - * config/obj-coffbfd.c (adjust_stab_section): Initialize - stabstrseg to SEG_UNKNOWN, not -1. After loop, check whether it - is not SEG_UNKNOWN rather than checking whether it is >= 0. - - * config/tc-mips.c (mips_align): Take new argument, label, and use - it instead of global insn_label. - (s_align, s_cons, s_float_cons, s_gpword): Save insn_label before - call to mips_emit_delay and pass it to mips_align. - -Wed Mar 16 11:54:12 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_equ): Handle both .reg and .equ correctly. - - * config/tc-hppa.c (pa_callinfo): Accept "millicode" as an - argument to a .callinfo directive. Don't loop forever on errors. - - * config/tc-hppa.c (pa_equ): Use pa_parse_number so that we can - use pre-defined registers as arguments. - -Mon Mar 14 14:29:45 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * write.c (write_object_file): Check both S_IS_LOCAL and - S_IS_EXTERNAL when deciding whether to discard a symbol. - - * config-gas.com: Scan Makefile.in, not version.c, for current - version number. Delete all versions of temp files when finished - with them. Create config.h. - - * config/obj-vms.c (VMS_Initialized_Data_Size): Cache symbol - values to reduce number of lookups with S_GET_VALUE. Skip debug - symbols to avoid "a really nasty bug". (From Holger Teutsch, - holger@botbso.rhein-main.de.) - (VMS_write_object_file): For "__vt.*" symbols, set S_GET_OTHER - field. (Also from Holger Teutsch.) Watch for a would-be register - mask that spans frags. - - * config/obj-coffbfd.c (obj_coff_line): Set symbol lnno field with - this_base, not line_base. (Patch from Andreas Arens, - ari@obelix.av.rwth-aachen.de.) - - * config/obj-aout.c (obj_crawl_symbol_chain): Retain symbols that - look local if they're exported or undefined. Used to be done for - i960 only. - - * read.c (s_lcomm, s_comm): Print symbol name being redefined. - Get it from the looked-up symbol, instead of using the string from - the input stream, which is no longer null-terminated. - (LEX_PCT): New macro, defaults to 0. - (lex_type): Use it for `%'. - - * config/tc-vax.c (md_parse_option): Handle `-h#' option for VMS. - (vip_op): Now static, and returns void. Callers changed. Added - forward decl. - (vip): Ditto. Call as_fatal directly if a program bug is - detected. - (op_hash): Let default initialization suffice. - - * Makefile.in (literal.o): Provide dependencies. - - * configure.in: Set new makefile variable OPCODES_LIB. - * Makefile.in (LIBS): Use it. - - * Makefile.in (make-gas.com, stamp-mk.com): New targets. - * vmsconf.sh: New file. - * make-gas.com: Regenerated from new script. - - * configure.in (sparc*-*-lynxos*): Handle any version number - suffix after "lynxos". Set emulation to lynx. - -Mon Mar 14 11:30:49 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/obj-coff.c (obj_coff_section): Delete declaration. - -Fri Mar 11 22:25:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-ppc.c (md_pcrel_from): Return 0 for undefined ELF - symbols. - (ppc_is_toc_sym): Change .toc to .got. - (md_apply_fix): Change handling of ELF relocs. - (tc_gen_reloc): Likewise. - -Fri Mar 11 17:42:20 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-vms.c (Close_VMS_Object_File): Add comment pointing - out some code that doesn't belong in this file. - - * config/obj-vms.h: Include aout/stab_gnu.h. - (N_GSYM, ..., N_LENG): Deleted. - (NO_RELOC): Undefine before defining as part of enum reloc_type. - - * config/tc-alpha.c: Add comment questioning need for all the - characters in FLT_CHARS. - - * as.c (main) [OBJ_VMS]: Don't call output_file_close. - - * config/obj-ecoff.c (ecoff_frob_file): Set strict order for - sections with recognized names, before computing VMA values. - -Fri Mar 11 17:56:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): Accept numbers between 0x8000 and - 0xffff for 'j' to be compatible with MIPS assembler. These - numbers are actually treated as negative. - -Thu Mar 10 13:36:29 1994 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-sparc.h (LOCAL_LABEL): Local labels are .Lfoo. - -Tue Mar 8 21:17:12 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff.c: Minor formatting/stylistic changes, plus: - (obj_coff_section): Declare. - (obj_pseudo_table): Make it available only if MANY_SECTIONS. - (obj_symbol_to_chars) [CROSS_COMPILE]: Some attemps to make this - work. It still doesn't. It now fails to compile, instead of - silently compiling to do nothing. - * config/obj-coff.h (SEPARATE_STAB_SECTIONS): Define only if - MANY_SECTIONS. - (OBJ_PROCESS_STAB) [! MANY_SECTIONS]: New macro, just emits - warning. - - Handle Alpha load-immediate-FP pseudo-instructions: - * config/alpha-opcode.h (ldif, ldig, ldis, ldit): New patterns. - * config/tc-alpha.c (lit8_sec, lit4_sec, lit8_sym, lit4_sym): New - variables. - (create_literal_section): New function. - (create_lita_section): Now a macro. - (get_lit8_offset, get_lit4_offset): New functions. - (maybe_set_gp): New function. - (select_gp_value): Call it. - (load_expression): Preserve addend if symbol is a section symbol. - (alpha_ip): Handle new operand type `F' for floating-point - constants; store them in .lit{4,8} sections. - (alpha_ip, case 'G'): Emit LITUSE relocations for symbol exprs. - - * config/tc-i386.c (smallest_imm_type): Never return Imm1. - -Tue Mar 8 14:18:15 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/obj-coffbfd.c (w_strings): Only copy strings out if - their symbols are going to be written. - -Tue Mar 8 11:49:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * messages.c (as_perror): Declare arguments const. - * as.h (as_perror): Change declaration. - -Mon Mar 7 16:08:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (load_address): When calling frag_grow, allow - for the (up to) two nops which may be inserted by append_insn if - mips_optimize is 0. - (macro): Likewise. - -Thu Mar 3 11:37:55 1994 Doug Evans (dje@canuck.cygnus.com) - - * config/atof-ieee.c (make_invalid_floating_point_number): - Add cast to avoid warning from gcc. - -Wed Mar 2 10:31:01 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Add a few casts to make HP C compiler happy. - - * config/obj-som.c (obj_som_version, obj_som_copyright): Be - prepared - to handle an error from bfd_som_attach_aux_hdr. - - * config/tc-hppa.h: Wrap ELF specific decls inside an ifdef. - -Mon Feb 28 15:03:26 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-alpha.c (md_atof): Omit warning about FP values. - (line_comment_chars): Add ! to list. - (md_apply_fix): Do process 32- and 64-bit relocations. - - * config/obj-coffbfd.c (obj_coff_lcomm): Put "#if 0" around the - unused parts (most of the function). - (obj_coff_init_stab_section): Cast alloca result. - - * configure.in (i960-*-coff, i960-*-vxworks5.*): Use coffbfd, and - gas_target ic960coff. - * config/ic960coff.mt: New file. - * config/obj-coffbfd.h [TC_I960]: Include coff/i960.h. - (TARGET_FORMAT) [TC_I960]: Use coff-Intel-little. - * config/te-ic960.h (CROSS_COMPILE): Don't undef this. We'll - always build little-endian object files. - * config/tc-i960.c (md_reloc_size): Don't define at all if BFD or - BFD_ASSEMBLER is defined. - (mem_fmt): Since COFF doesn't handle callx relocations yet, treat - them like normal 32-bit relocations. - (md_apply_fix): For callx relocations, store zero. - (tc_bout_fix_to_chars): Store symbol index for all callx - relocations, regardless of link-relax setting. - (tc_coff_fix2rtype, tc_coff_sizemachdep): New functions. - (i960_handle_align) [! OBJ_BOUT]: If link-relax option is - selected, print an error message and clear it. - * config/tc-i960.h (BFD_ARCH, COFF_FLAGS, COFF_MAGIC, - TC_COUNT_RELOC, TC_COFF_FIX2RTYPE, TC_COFF_SIZEMACHDEP, - tc_fix_adjustable): New macros. - (tc_coff_fix2rtype, tc_coff_sizemachdep): Declare. - -Fri Feb 25 20:56:57 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (hppa_tc_symbol): Call PA ELF BFD version. - (hppa_tc_make_sections): Likewise. - (pa_build_symextn_section): Delete unused function. - (hppa_tc_make_symextn_section): Likewise. - (pa_export): Delete call to pa_build_symextn_section. - - * config/tc-hppa.h (hppa_tc_symbol): Add extern decl. - (elf_hppa_final_processing): Delete extern decl. - (hppa_tc_symbol): Delete extern decl. - -Fri Feb 25 13:15:31 1994 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-coffbfd.c (fill_section): Correct test for whether to - fill a section (from Minh Tran-Le ). - -Thu Feb 24 11:30:26 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * configure.in: Don't require version number for i386-*-mach. - - * read.c (potable): Added ".this_GCC_requires_the_GNU_assembler", - which is ignored by gas, but will cause other assemblers to choke. - Intended for use by gcc ports that require gas instead of native - assemblers. - -Thu Feb 24 07:10:31 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/ho-hppaosf.h: Fix braino in test for ANSI-C. - -Wed Feb 23 16:51:43 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * write.c (write_contents): Give the user a reasonable error - message rather than "assertion failed" if bfd_set_section_contents - fails. - -Tue Feb 22 10:07:32 1994 Ken Raeburn (raeburn@rtl.cygnus.com) - - * config/ho-mach3.h: New file. - -Mon Feb 21 11:41:18 1994 Ian Lance Taylor (ian@cygnus.com) - - * ecoff.c (ecoff_build_debug): Don't set hdr->magic here. It is - now set in bfd/ecofflink.c:ecoff_write_symhdr. - - * config/obj-coffbfd.c (write_object_file): use bfd_get_error (), - not bfd_error. - * config/obj-elf.c (elf_frob_file): Likewise. - - * read.c (s_lcomm): Use an alignment power of 3 for 8 byte .lcomm - variables. - - * config/ho-hpux.h (BROKEN_ASSERT): Define if not __GNUC__. - - * read.c (read_a_source_file): Use correct arguments to memcpy - (broken 19 Jul 1993). From kjd@pescadero.stanford.edu (Kenneth - Duda). - -Sun Feb 20 18:01:54 1994 Ian Lance Taylor (ian@lisa.cygnus.com) - - * config/obj-coff.h (obj_coff_section): Declare. - * config/obj-coff.c (obj_pseudo_table): For "section", use - obj_coff_section. - (obj_coff_section): Rewrite. - -Fri Feb 18 14:16:32 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * configure.in (i386-*-mach3*): New target; uses BFD. - * config/te-mach.h: New file. - * config/obj-aout.c (obj_aout_frob_file): New function. - * config/obj-aout.h (obj_aout_frob_file): Declare it. - (frob_file): New macro. - * config/tc-i386.c (md_apply_fix_1) [TE_Mach]: Don't adjust - pcrel32 relocations. - * config/tc-i386.h (TARGET_FORMAT) [TE_Mach]: Use a.out-mach3. - - * write.c (write_object_file): Removed register declarations. - -Thu Feb 17 16:25:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - Some support for PowerPC ELF. - * configure.in: If cpu is powerpc*, use ppc. - (ppc-*-sysv4*): Use object format elf. - * config/tc-ppc.h: Only declare a number of things if OBJ_COFF is - defined. - (TARGET_ARCH): Make it call ppc_arch. - (ppc_arch): Declare. - (TARGET_FORMAT): Set based on OBJ_COFF or OBJ_ELF. - (NO_STRING_ESCAPES): Define. - (LOCAL_LABEL, FAKE_LABEL_NAME): Define for OBJ_ELF. - * config/tc-ppc.c: Only define a number of functions of OBJ_COFF - is defined. - (md_pseudo_table): Most pseudo-ops are OBJ_COFF specific. Added - OBJ_COFF specific "bi" and "ei". - (md_parse_option): Fix handling of -u. Make -m601 set - PPC_OPCODE_601. If OBJ_ELF, accept -V and -Q. - (ppc_set_cpu): New function. - (ppc_arch): New function. - (md_begin): Call ppc_set_cpu. - (ppc_insert_operand): For a signed operand accept an unsigned - value, for IBM compatibility. - (ppc_byte): Don't call stringer for strings; instead, treat two - double quotes as a single double quote. - (ppc_comm): Set sy_tc.output for a .lcomm symbol. - (ppc_biei): New function. - (ppc_tc): If not OBJ_COFF, ignore first argument. - (ppc_fix_adjustable): Call as_bad_where, not as_bad. - (ppc_is_toc_sym): New function. - (md_apply_fix): Use ppc_is_toc_sym. Handle BFD_RELOC_16 and - BFD_RELOC_8. - -Thu Feb 17 09:29:37 1994 David J. Mackenzie (djm@thepub.cygnus.com) - - * messages.c (as_perror) [BFD_ASSEMBLER]: Use bfd_get_error and - bfd_set_error and new error names. - -Tue Feb 15 20:23:20 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * configure.in: Support i960-vxworks versions > 5.0 as coff. - Default is still bout if no version is specified. - - * atof-generic.c (atof_generic): Use switch and strcasecmp instead - of large number of compares when looking for inf/nan values. - -Fri Feb 11 13:13:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (macro): Do unaligned loads and stores - correctly when big endian, and give errors on overflow rather than - generating incorrect code. - -Thu Feb 10 11:24:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * as.c: Include libiberty.h. - - * read.c (do_align): Don't define label just_record_alignment - unless it might be used. - - * as.c (main): If md_parse_long_option is defined, call it with a - long option. - * config/tc-mips.h (md_parse_long_option): Define. - * config/tc-mips.c (mips_trap): New static variable. - (md_begin): Report an error if mips_trap is set at ISA level 1. - (macro): If mips_trap, use trap instructions instead of break - instructions for overflow and divide by zero detection. - (mips_parse_long_option): New function. Support --trap, - --no-break, --break and --no-trap. - * doc/as.texinfo: Document new options. - - * read.c (potable): Add "zero". - * config/tc-i386.c (md_pseudo_table): Remove "zero". - * config/tc-m88k.c (md_pseudo_table): Likewise. - -Thu Feb 10 01:24:27 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Reject integer values for - pc-relative operand fields. This forces "call 0" to become "jmpl - %g0,%o7" with no relocations needed. - -Wed Feb 9 13:08:32 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * as.h (xmalloc, xrealloc): Declare using PTR rather than char *. - * xmalloc.c (xmalloc, xrealloc): Use PTR rather than char *. - - * app.c (do_scrub_next_char): If NO_STRING_ESCAPES is defined, - don't treat backslash specially inside strings. - * read.c (next_char_of_string): Likewise. - -Wed Feb 9 09:42:45 1994 Stan Shebs (shebs@andros.cygnus.com) - - * config/obj-coffbfd.c (obj_coff_init_stab_section): Use memset - instead of memcpy to zero the initial stab symbol, duh. - * config/obj-elf.c (obj_elf_init_stab_section): Ditto. - * config/obj-som.c (obj_som_init_stab_section): Ditto. - -Tue Feb 8 17:25:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * write.c (fixup_segment): Use as_bad_where, not as_bad. - - * subsegs.c (subseg_set_rest): Call memset with the arguments in - the right order. Explicitly clear fix_root and fix_tail fields. - -Tue Feb 8 16:00:25 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/obj-coff.c (coff_frob_symbol): For abs_symbol, set *punt - and do nothing else. - - * symbols.c (symbol_begin): Initialize value of abs_symbol - properly. - - * write.c (adjust_reloc_syms): Use abs_symbol instead of calling - section_symbol. - - * ecoff.c (ecoff_build_debug): Fix "/*" in comment to silence - complaint from "gcc -Wall". - - * configure.in (alpha-*-netware*): New target, like alpha-*-osf*. - - * config/tc-alpha.c (GP_ADJUSTMENT): Move definition to start of - file. - (tc_gen_reloc): Remove uninitialized variable `code', and code - that tried to use it (incorrectly). For LITERAL reloc, set addend - to negative of GP value. - (load_symbol_address): Don't adjust return value by GP_ADJUSTMENT. - - * write.c (write_relocs): Print some sensible error message if - bfd_perform_relocation returns bfd_reloc_overflow. - -Mon Feb 7 15:49:24 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * configure.in (hppa*-*elf*): New configuration for PA ELF. - (hppa*-*-osf*): Default object format is SOM. - -Mon Feb 7 16:07:35 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-alpha.c (md_atof): Warn that floating-point values - might not assemble properly. - - * configure.in (target alpha-*-osf*): Don't set "dev=yes" any - more. - - * config/tc-alpha.c (load_expression): Parenthesize operations in - range checking, to avoid precedence questions. - - * config/tc-alpha.c (addr32): New static variable. - (md_parse_option): Set it for "-32addr". - (load_symbol_address): If addr32 is set, use ldl instead of ldq. - - * atof-generic.c (atof_generic): Calculate maximum_useful_digits - and more_than_enough_bits_for_digits in integer arithmetic, to - eliminate the only sources of dependence on floating point - support, which doesn't work yet on the Alpha. - -Mon Feb 7 03:56:05 1994 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * ecoff.c (ecoff_build_debug) [TC_ALPHA]: Specify version stamp as - 0x30b for Alpha for now, until ".verstamp" is handled. - - * literal.c (add_to_literal_pool): Use seginfo->frchainP, which - actually refers to the literal pool section, rather than - frchain_now, which refers to whatever section the assembler was - in. - - * write.c (fixup_segment): Only do range checking if size of fixup - is smaller than word size. Otherwise, we always wind up with - zeros. - - * config/tc-alpha.c (md_section_align): Change second argument and - return type to valueT, to agree with tc.h. - (alpha_do_align): Local static array nop_pattern is now unsigned - char, to avoid overflow warnings. - * config/tc-alpha.h (md_section_align): Delete declaration. - - * config/obj-ecoff.c (ecoff_frob_file): Ensure that ecoff_data for - output bfd is non-null before indirecting through it. - - * config/tc-alpha.c (alpha_frob_ecoff_data): Renamed from - alpha_frob_file. - * config/tc-alpha.h (tc_frob_file): Macro deleted. - * config/obj-ecoff.c (ecoff_frob_file) [TC_ALPHA]: Call - alpha_frob_ecoff_data, then fill in optional-header info with gp - value and register masks. - -Sun Feb 6 16:13:47 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * configure.in (hiux): Fixes from m-kasahr@sramhc.sra.co.JP. - - * config/obj-som.c (obj_som_init_stab_section): Same change - as coffbfd and elf below. Zero the initial stab symbol after - allocating it. - -Sat Feb 5 12:30:32 1994 Stan Shebs (shebs@andros.cygnus.com) - - * config/obj-coffbfd.c (obj_coff_init_stab_section): Zero the - initial stab symbol after allocating it. - * config/obj-elf.c (obj_elf_init_stab_section): Ditto. - -Sat Feb 5 11:53:31 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): addb[tf] should only accept - non-negated condition completers. Add support for addb pseudo-op - which accepts both negated and non-negated completers. - -Sat Feb 5 00:15:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * configure.in (rs6000*): Use cpu_type ppc. - (ppc-*-aix*): New target; use coff and force bfd_gas. - * config/tc-ppc.h, config/tc-ppc.c: New files for PowerPC/POWER - (RS/6000) support. At the moment, only XCOFF is supported. - - * config/obj-coff.c (SA_SET_SYM_ENDNDX): Made non-static. - (S_SET_DATA_TYPE): Likewise. - (coff_last_function): Renamed from local static last_functionP in - coff_frob_symbol and made externally visible. - (coff_frob_symbol): New local static set_end; use it to try to - avoid calling SA_SET_SYM_ENDNDX on a symbol that will be punted. - * config/obj-coff.h (S_SET_DATA_TYPE): Declare. - (SA_SET_SYM_ENDNDX): Declare. - (coff_last_function): Declare. - - * expr.c (operand): If DOLLAR_DOT is defined, accept `$' as - equivalent to `.' to mean the current location. - - * read.c (LEX_BR): If not defined, define as 0. - (lex_type): Use LEX_BR as the type of `{',`}',`[',`]'. - - * symbols.c (symbol_new): If tc_canonicalize_symbol_name is - defined, call it with preserved_copy_of_name. If - tc_symbol_new_hook is defined, call it on the new symbol. - (symbol_find_base): If tc_canonicalize_symbol_name is defined, - call it on a copy of the name argument. - - * write.c (write_object_file): Simplified usage of obj_frob_symbol - and tc_frob_symbol. Always call both if the symbol is going to be - output. - - * write.c (relax_segment): Use %ld rather than %d when printing - fragP->fr_var, and cast it to long. - - Changed relocs to be based on subsegments (when BFD_ASSEMBLER). - * subsegs.h (struct frchain): If BFD_ASSEMBLER, added new fields - fix_root and fix_tail. - (segment_info_type): If BFD_ASSEMBLER, don't define fix_tail - field. - * write.c (fix_new_internal): If BFD_ASSEMBLER, set fix_rootP and - fix_tailP based on frchain_now, not seg_info (now_seg). - (chain_frchains_together_1): Chain the subsegment relocs together. - * subsegs.c (subseg_change): Don't clear fix_tail field. - (subseg_get): Likewise. - * literal.c (add_to_literal_pool): Look through the relocs via - frchain_now, not seginfo. - -Thu Feb 3 23:07:30 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-ecoff.h (TARGET_SYMBOL_FIELDS): Changed - ecoff_undefined to ecoff_extern_size. - * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Likewise. - * config/tc-mips.c (s_extern): Set ecoff_extern_size to the - external symbol size, rathern than setting the symbol value. - (md_estimate_size_before_relax): Check both ecoff_extern_size and - symbol value to see if GP referencing can be used. - * ecoff.c (ecoff_symbol_new_hook): Clear ecoff_extern_size, not - ecoff_undefined. - (ecoff_frob_symbol): Don't check ecoff_undefined. - (ecoff_build_symbols): Get size of an undefined symbol from - sym->ecoff_extern_size, not S_GET_VALUE (sym). - -Wed Feb 2 13:55:08 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Makefile.in: Avoid bug in losing hpux sed. - -Wed Feb 2 11:40:11 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (file_mips_isa): New static variable. - (md_begin): Set it. - (s_mipsset): Add support for .set mipN to set the ISA level. - - * gasp.c (kinfo): Fully bracket initializer. - -Tue Feb 1 19:28:12 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * gasp.c (malloc): Don't declare, since host.h or system header - files may declare it differently. - - * config/atof-ieee.c (int_to_gen): Now static. - - * config/ho-i386aix.h: Include sys/types.h and stdlib.h, not - ho-sysv.h. Based loosely on a patch from Minh Tran-Le. - -Tue Feb 1 10:50:17 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * gasp.c: Include host.h. - -Tue Feb 1 12:13:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): Make an unsupported instruction a - warning, not an error. - - * config/obj-coff.c (dot_text_symbol, dot_data_symbol, - dot_bss_symbol): Don't define if BFD_ASSEMBLER. - (obj_symbol_to_chars): bfd_coff_swap_aux_out now takes more - arguments. - (coff_line_base): Renamed from line_base. Changed all uses. - (coff_add_linesym): Renamed from add_line_sym. Made non-static. - Changed all uses. - * config/obj-coff.h: If TC_PPC, include coff/rs6000.h. - (S_SET_STORAGE_CLASS, S_GET_STORAGE_CLASS): Declare if - BFD_ASSEMBLER. - (coff_line_base): Declare. - (coff_add_linesym): Declare if BFD_ASSEMBLER. - * config/obj-coffbfd.c (symbol_to_chars): bfd_coff_swap_aux_out - now takes more arguments. - -Mon Jan 31 17:55:14 1994 Stan Shebs (shebs@andros.cygnus.com) - - * as.c (statistics_flag): Renamed from quiet_flag. - (main): Get statistics with --statistics instead of -noquiet. - -Mon Jan 31 07:19:30 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * Makefile.in: Support for Gnu ASsembler Preprocessor. - * gasp.c: New file. - * read.c (s_lcomm): Align lcomm data. - * config/tc-z8k.c (tc_reloc_mangle): Don't allow subtraction - from different sections. - -Sun Jan 30 14:58:26 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * write.c (write_object_file): If tc_frob_file is defined, call it - just before calling obj_frob_file. - * config/tc-alpha.c (alpha_gp_value): Renamed from gp_value - (references changed), and made non-static. - (getExpression): Return void. - (select_gp_value): Abort if gp_value is non-zero. Delete call to - non-existent bfd_set_gp_value. - (alpha_validate_fix): Function deleted. - (alpha_frob_symbol): Function deleted. - (alpha_local_label): Function deleted. - (alpha_frob_file): Renamed from alpha_end. - * config/tc-alpha.h (alpha_frob_symbol, alpha_validate_fix, - alpha_local_label, alpha_end): Declarations deleted. - (alpha_gp_value, alpha_frob_file): Declare. - (tc_frob_symbol, TC_VALIDATE_FIX, md_end): Macros deleted. - (LOCAL_LABEL): Move code here from tc-alpha.c:alpha_local_label. - (md_convert_frag): Simplified slightly. - (tc_frob_file): New macro. - - * read.c (do_align): New function, most of guts of s_align_* - functions. Look for md_do_align macro, give it a chance to bypass - all but recording of section alignment. - (s_align_bytes, s_align_ptwo): Call do_align. - (s_lcomm) [TC_ALPHA]: Align object to largest power of two that - divides object size. - - * frags.c (frag_align_pattern): New function. - (frag_align): Rewrite for clarity. - - * config/tc-vax.c (md_assemble): Handle O_constant expression. - (vip_begin): Returns pointer to const char. Cast hash_insert arg - to PTR to avoid compiler complaints about const. - (md_begin): Local variable errtxt must point to const. - - * configure.in: Handle host vax-*-ultrix* like vax-*-bsd*. Don't - bother with *-*-ultrix or *-*-sysv*, except *-*-sysv, since only - the last has an existing host support file. Do handle vax-bsd and - vax-ultrix targets. - -Fri Jan 28 11:26:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-coff.c (obj_coff_section_header_append): Do not - declare if BFD_ASSEMBLER. - (stack_pop): Correct test for stack underflow. - (obj_coff_endef, obj_coff_dim, obj_coff_line, obj_coff_size, - obj_coff_scl, obj_coff_tag, obj_coff_type, obj_coff_val): Declare - type of ignored argument to avoid gcc warning. - (align): Removed unused function. - -Thu Jan 27 18:14:19 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-alpha.c, config/tc-alpha.h, config/alpha-opcode.h: New - files, based on port of gas-1.38 contributed by CMU, using a.out - variant. Updated for gas-2.x and ECOFF. Floating-point constants - are still broken, bootstrap testing incomplete. - - * literal.c: Comment changes. - - * listing.c (listing_source_file): Check for null listing_tail - before indirecting through it. - - * expr.h (struct expressionS): Added struct tag. - - * as.h: If __GNUC__ and inline are both undefined, define inline - away. - - * write.c (cvt_frag_to_fill): Don't assume that fr_var for - rs_align or rs_org frags will be 1. - (relax_segment): For rs_align, if fr_var is not 1, complain if - required padding is not a multiple of the size of the pad pattern. - (fixup_segment): Leave gp-relative relocations alone. For pcrel - relocations referring to the same segment, clear fx_pcrel when - clearing fx_addsy. - * as.h: Adjust comments on rs_align. - - * atof-generic.c: Some reformatting. - (atof_generic): Be careful when mixing signed/unsigned values of - different sizes. - - * write.c, config/obj-{aout,bout,coff*}.c, config/tc-sparc.c: - Query the fx_done field instead of fx_addsy to see if the fixup - still needs to be applied. Set fx_done and clear fx_addsy both, - for now. If TC_HANDLES_FX_DONE isn't defined, assume md_apply_fix - will only clear fx_addsy, and set fx_done accordingly after - returning. - * config/tc-sparc.h (TC_HANDLES_FX_DONE): Define. - * config/tc-sparc.c (md_apply_fix): Set fx_done for non-pcrel fix - with no fx_addsy. - - * symbols.c (dot_text_symbol, dot_data_symbol, dot_bss_symbol): - Deleted. - (symbol_begin): Moved to end of file, so function inlining can - work better. - (fb_label_count, fb_label_max): Default C static initializers are - sufficient. - * symbols.h (dot_text_symbol, dot_data_symbol, dot_bss_symbol): - Declarations deleted. - * config/obj-coff.c (dot_text_symbol, dot_data_symbol, - dot_bss_symbol): Defined here, static. - - * config/obj-aout.c [BFD_ASSEMBLER]: Undef NO_RELOC before - including aout/aout64.h. - - * write.c (write_object_file): If EMIT_SECTION_SYMBOLS is false, - don't write out a section symbol even if it's used in a - relocation; assume relocations will handle section numbers - somehow. Rename "punt_it" label to "punt_it_if_unused" to reflect - it's true use. - (EMIT_SECTION_SYMBOLS): Default to 1. - (adjust_reloc_syms): Don't create a new symbol for an absolute - reference; just use the absolute section symbol. - (write_relocs): Make printout of reloc values dependent on flag - DEBUG3, not DEBUG2. - * config/obj-aout.h (EMIT_SECTION_SYMBOLS): Define as 0. - * config/obj-ecoff.h (EMIT_SECTION_SYMBOLS): Ditto. - -Thu Jan 27 16:43:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (lex_type): No longer make '{' a valid character for - symbol names. - - * as.c (main): Print long values using %ld. - - * messages.c (as_warn_internal): New static function. - (as_warn, 3 versions): Use as_warn_internal. - (as_warn_where, 3 versions): New function. - * as.h (as_warn_where): Declare. - -Tue Jan 25 18:30:34 1994 Stan Shebs (shebs@andros.cygnus.com) - - * as.c (quiet_flag): New flag. - (main): If -noquiet given, display execution time and memory used. - -Tue Jan 25 15:53:11 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * doc/{all.texi,as.texinfo}: Add documentation for HPPA port. - -Mon Jan 24 19:18:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_frob_symbol): New function. Put undefined - symbols of known size in the undefined section. Put small common - symbols in a .scommon section. - * ecoff.h (ecoff_frob_symbol): Declare. - * config/obj-ecoff.h (obj_frob_symbol): Define. - * config/obj-elf.c (obj_elf_write_symbol_p, obj_elf_write_symbol, - obj_elf_frob_symbol): Removed unused functions. - * config/obj-elf.h (obj_frob_symbol, obj_write_symbol): Removed - unused macros. - (obj_elf_frob_symbol, obj_elf_write_symbol): Removed declarations - of unused functions. - (obj_frob_symbol): Define if ECOFF_DEBUGGING. - - * config/tc-mips.c (g_switch_seen): New static variable. - (md_parse_option): Set g_switch_seen for -G option. - (s_option): If creating PIC code, force the GP size to be 0. Warn - if -G switch used with a non-zero value. - - * symbols.c (S_IS_COMMON): Use bfd_is_com_section rather than - comparing against bfd_com_section. - -Mon Jan 24 14:12:25 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * read.c (s_lcomm): Treat Alpha like MIPS in handling of .sbss - section. - -Thu Jan 20 13:17:58 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * expr.c (operand): For floating point operand with unusual fp - char from FLT_CHARS, preserve the character. Patch from Lisa - Repka. - -Wed Jan 19 23:15:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (md_pseudo_table): Add all data allocation - pseudo-ops: .hword, .int, .long, .octa, .quad, .short, .single. - -Tue Jan 18 15:51:59 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/obj-coffbfd.c (obj_coff_endef): For C_EFCN, C_BLOCK and - C_FCN assume .val has been set to . - -Tue Jan 18 16:19:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Disable multiple $CODE$ subspace code. It - confuses GDB for some unknown reason. - * config/obj-som.c: Likewise. - -Tue Jan 18 19:05:32 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * literal.c (add_to_literal_pool): Handle duplicates of values - already written to literal pool. - -Tue Jan 18 17:23:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-aout.c (obj_aout_frob_symbol): Try to get symbols - with explicitly marked stabs through BFD: if a symbol marked - N_UNDF | N_EXT is in the absolute section, move it to the - undefined section; move a symbol marked N_INDR into - bfd_ind_section and set the BSF_INDIRECT flag; set the - BSF_WARNING flag for a symbol makred N_WARNING. - -Mon Jan 17 15:40:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.h (ecoff_set_gp_prolog_size): Declare. - * ecoff.c (ecoff_set_gp_prolog_size): Return type is void. - -Mon Jan 17 00:18:55 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): Explicitly check for comma before 'u' - and 'f' template operand. - - * config/tc-hppa.c (pa_ip): Handle 'N', 'O', 'o', '0', '1', 'u', - and '2' in copr and sfu instruction templates. - -Sun Jan 16 16:44:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * as.h (subseg_force_new): Add prototype. - -Sat Jan 15 09:20:55 1994 Doug Evans (dje@canuck.cygnus.com) - - * app.c (do_scrub_next_char): Allow lines like " foolab :". - - * read.c (emit_expr): Fix computation of mask. - * config/obj-elf.c (obj_elf_section): Fix loop termination test. - -Thu Jan 13 16:15:15 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * ecoff.c (ecoff_set_gp_prolog_size): New function. - (current_file_idx): New static variable. - (add_file): Use and increment current_file_idx instead of indx - parameter. - - * struc-symbol.h (struct symbol): Make all bitfields unsigned. - - * config/tc-i960.c (i960_validate_fix): Added argument - add_symbolPP. Indirect through it to get "add_symbolP". - * config/tc-i960.h (i960_validate_fix): Supply prototype. - (TC_VALIDATE_FIX): Pass address of add_symbolP. - - * configure.in (i386-*-netbsd*): New target, using te-netbsd.h. - (i386-*-netbsd0.8): New target, like 386bsd. - - * configure.in: Set BFDDEF in Makefile to "define" or "undef". - * Makefile.in (config.h): Protect against multiple inclusions. - Define or undef BFD_ASSEMBLER as specified by $(BFDDEF). - (ALL_CFLAGS): Omit $(BFDDEF). - * as.h: Include config.h. - (struct symbol): Added forward declaration. - (add_to_literal_pool): Fix declaration. - * as.c: Don't include config.h. - - * literal.c (add_to_literal_pool): Take symbol and addend as - arguments, instead of expression, for now. Fix calculation of - offset to return. - - * subsegs.h (segment_info_type) [NEED_LITERAL_POOL]: Add field - literal_pool_size. - -Thu Jan 13 12:14:21 1994 Jeffrey A. Law (law@snake.cs.utah.edu - - * subsegs.c (subseg_get): Accept new argument "force_new". If - set then a new segment is always created. All callers changed. - (subseg_force_new): New function. Similar to subseg_new, but - always force a new segment to be created. - - * config/obj-som.c (som_frob_file): Call adjust_code_sections - for each section. - (adjust_code_sections): New function. Adjusts the VMA for all the - $CODE$ subspaces. - - * config/tc-hppa.c (md_assemble): Also handle creating a fixup - for the unwind descriptors if a function's label follows the - .PROC and .ENTRY directives. - (pa_entry): Don't set BSF_FUNCTION for the label symbol here; it - is done elsewhere. Don't create a fixup for the unwind - descriptors if the function's label has not been defined yet. - (pa_proc): For SOM, place each procedure within a new $CODE$ - subspace. Adjust the segment and frag for the associated - function label if it exists. - -Wed Jan 12 22:05:33 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (hppa_fix_struct): Add new "segment" field. - (hppa_fix_new): Initialize segment field. - (md_apply_fix): Do nothing for pc-relative fixup which involves - crossing a segment boundary. - (pa_procend): Undefine the current label after handling .PROC - and .PROCEND directives. - (dummy_symbol): Make type "symbolS *". Change references as - appropriate. - -Wed Jan 12 13:29:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (read_a_source_file): Cast array argument to unsigned - char. - * write.c (adjust_reloc_syms): Remove unused variable symseginfo. - (write_object_file): Don't define punt_it if it won't be used. - (fixup_segment): Don't define skip if it won't be used. - - * config/tc-mips.h (TARGET_FORMAT): Define as mips_target_format. - (mips_target_format): Declare. - * config/tc-mips.c (mips_target_format): Define with appropriate - default definition. - (md_parse_option): If -EL or -EB is used, change byte_order and - mips_target_format as appropriate. - -Tue Jan 11 21:52:36 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * app.c (do_scrub_next_char): Another attempt to fix bugs - dealing with labels without colons (for HPPA and MRI). - -Tue Jan 11 17:01:06 1994 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Truncate args to %hi/%lo to 32 bits. - - * expr.c (integer_constant): Fix computation of too_many_digits. - Variable digit_2 renamed to start. Fix check for whether number - will fit in 32 bits. - * read.c (emit_expr): Use valueT instead of long. - -Tue Jan 11 13:01:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.c: If TC_MIPS, include elf/mips.h. - (special_sections): Define. - (obj_elf_special_section): Get default types and attributes from - list of special sections. - * config/tc-mips.c (ELF_TC_SPECIAL_SECTIONS): Define. - - * config/obj-ecoff.c (ecoff_frob_file): Force .sdata and .sbss - sections to be close together. - - * config/tc-mips.c (macro): Corrected $at warnings in a couple of - spots. - - * listing.c (listing_prev_line): New function. - * listing.c: Include subsegs.h. - (listing_prev_line): New function. - (calc_hex): Reset byte_in_frag to zero for each new frag. - * config/tc-mips.c (append_insn): Call listing_prev_line after - emitting nop instructions. - * Makefile.in (listing.o): Depends upon subsegs.h. - -Mon Jan 10 09:52:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): Put check for missing label on .PROC - here. Handle case where label may be defined after the .PROC. - (pa_proc): It is not an error if the procedure's label isn't - defined before the .PROC directive. - -Sun Jan 9 04:43:30 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/te-netbsd.h: New file. - * config/tc-i386.h (TARGET_FORMAT) [TE_NetBSD]: Use bfd target - a.out-netbsd-386 for this configuration. - -Fri Jan 7 17:38:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_stab): Don't clobber the ECOFF symbol information - with the associated stabs information. - (ecoff_build_symbols): Never set the type of stabs symbols to - st_Global. Don't update the symbol index or ifd if the gas symbol - is not the same as the ECOFF symbol (which is now the case for - stabs symbols). - -Fri Jan 7 11:14:07 1994 Stan Shebs (shebs@andros.cygnus.com) - - * config/tc-mips.c (macro): Add a LOSING_COMPILER ifdef that - splits the function. - (macro2): New function, if LOSING_COMPILER defined. - -Fri Jan 7 09:38:25 1994 Steve Chamberlain (sac@cygnus.com) - - * config/obj-coffbfd.c (fill_section): Don't ever fill past the - end of a section. (write_object_file): Temporary fix - setup - stdoutput. - -Thu Jan 6 18:05:21 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/tc-sparc.c (tc_gen_reloc): Fix handling of addends in - non-pcrel_offset relocations. - -Thu Jan 6 01:06:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): Warn about using $1 as well as $at - without .set noat. - -Wed Jan 5 14:22:22 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * literal.c: New file. - * Makefile.in (REAL_SOURCES, OBJS): List it. - - * as.h (DEBUG): Don't define. - (struct expressionS, struct fix): Declare in case they're used in - prototypes. - (add_to_literal_pool) [BFD_ASSEMBLER]: Declare. - - * config/tc-mips.h (TARGET_FORMAT) [OBJ_AOUT]: Fix for new names - in bfd. - - * subsegs.c (subseg_get): New function. Creates segment if - needed, returns pointer, but doesn't change current segment. - (subseg_new): Use it. - -Tue Jan 4 15:12:43 1994 Stan Shebs (shebs@andros.cygnus.com) - - * Makefile.in (INCLUDES): Add $(srcdir)/.. to places to search. - * config/obj-ecoff.c: Include files as "bfd/" instead of "../bfd/". - * app.c, flonum.h, hex-value.c (const): Change #if to be more - portable. - -Tue Jan 4 22:11:34 1994 Rob Savoye (rob@darkstar.cygnus.com) - - * config/ho-vsta.h, configure.in: Add support for VSTa - micro-kernel. - -Thu Dec 30 15:27:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * write.c (write_relocs): bfd_perform_relocation now takes an - additional argument, to return an error string (which we ignore). - -Wed Dec 29 14:37:26 1993 Ken Raeburn (raeburn@cujo.cygnus.com) - - * write.h (struct fix): Field tc_fix_data should be type PTR, not - void*, for compatibility with non-ANSI compilers. Added - single-bit field "fx_done". - -Sun Dec 26 14:31:47 1993 Torbjorn Granlund (tege@adder.cygnus.com) - - * config/tc-hppa.c (pre_defined_registers): Convert to lower case. - Delete spurious register names "%r4L", etc. - (selector_table): Sort and convert to lower case. - (cons_fix_new_hppa): `reloc_type' => `rel_type'. - (pa_ip): Always use strcmp for non-text and strcasecmp for text. - (reg_name_search): Rewrite to call strcasecmp only once per - iteration. - (pa_chk_field_selector): Rewrite to use binary search. - (pa_parse_neg_add_cmpltr): Use strcasecmp for completer comparisons. - (pa_parse_space_stmt): $TEXT$ and $PRIVATE$ are symbols; use case - sensitive comparisons. - (pa_parse_space_stmt): Canonicalize strncasecmp arg to lower case. - (pa_space): "$text$" => "$TEXT$"; "$private$" => "$PRIVATE$". Use - case sensitive comparison for all symbolic names. - (pa_subspace): Canonicalize strncasecmp arg to lower case. - (pa_subspace_start): Use case sensitive comparison for symbolic names. - -Mon Dec 20 10:37:48 1993 Ken Raeburn (raeburn@cujo.cygnus.com) - - * write.c (adjust_reloc_syms) [RELOC_REQUIRES_SYMBOL]: If no - symbol is present (i.e., relocation against absolute), create a - phony local symbol, and use it in the reloc. - (fixup_segment): When adjusting a reloc with an absolute symbol, - have TC_FORCE_RELOCATION control clearing add_symbolP too. - * config/tc-sparc.h (RELOC_REQUIRES_SYMBOL): Define, for OBJ_COFF. - - * symbols.c (S_IS_EXTERNAL, S_IS_LOCAL): Don't use both BSF_EXPORT - and BSF_GLOBAL, since they're the same. - - * as.c (main): Only invoke md_end if it's defined as a macro. - * tc.h (md_end): Don't declare it. - * config/tc-*.[ch] (md_end): Deleted, in cases where it doesn't do - anything. - * config/tc-vax.c (vip_end): Deleted null function. - * config/tc-mips.c (md_mips_end): Renamed from md_end. - * config/tc-mips.h (md_mips_end): Declare. - (md_end): New macro, calls md_mips_end. - - * write.c (write_object_file): Don't close output file. - * as.c (main): Close output file (if needed) after calling - listing_print, which should be after calling write_object_file, - which sets the frag addresses. - - * config/obj-coff.c (obj_coff_dim, obj_coff_endef, obj_coff_line, - obj_coff_scl, obj_coff_size, obj_coff_tag, obj_coff_type, - obj_coff_val): Add unused int argument to satisfy prototypes; goes - with Ian's 10 Sep changes. - (S_GET_DATA_TYPE, S_SET_DATA_TYPE, S_GET_STORAGE_CLASS, - S_SET_STORAGE_CLASS): Now function instead of macros. - (obj_emit_lineno) [BFD_ASSEMBLER]: Deleted. - (tag_insert): Local var ERROR_STRING is const. Use "const" not - "CONST" for argument NAME. Fixed prototype. - (coff_frob_symbol): Removed explicit "#if 1" directive. If - S_IS_EXTERNAL, set storage class to C_EXT. - (s_get_name): Use "const" not "CONST". - * config/obj-coff.h (S_GET_DATA_TYPE, S_SET_DATA_TYPE, - S_GET_STORAGE_CLASS, S_SET_STORAGE_CLASS): Deleted. - (obj_emit_lineno): Declare only for non-BFD_ASSEMBLER. For - BFD_ASSEMBLER, define as macro that aborts. - (obj_extra_stuff, tc_headers_hook): Declare only for - non-BFD_ASSEMBLER. - (coff_frob_symbol): Fix prototype. - -Sun Dec 19 00:37:20 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (tc_gen_reloc): Test of pcrel_offset had sense - reversed. - -Thu Dec 16 21:13:11 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_begin): Initialize "dummy_label". - (tc_gen_reloc, SOM version): For relocations which have no symbol, - set sym_ptr_ptr to dummy_label. Avoids lossage in generic BFD code. - -Thu Dec 16 16:07:56 1993 Ken Raeburn (raeburn@cujo.cygnus.com) - - * read.c (lex_type): No longer make '[' a valid character for - symbol names. - - * config/tc-vax.c (tc_aout_fix_to_chars): Local variable - NBYTES_R_LENGTH now const. - - * config/obj-*.c, config/tc-*.c: Omit superfluous "return" - statements at ends of functions. Don't check for null return from - hash_new, since it won't return at all if there's no memory - available. Also, check for null return from hash_insert, rather - than zero-length string, as success indicator. - - * subsegs.c (section_symbol): New function. - * subsegs.h (section_symbol): Declare. - * write.c (adjust_reloc_syms): Use it. - -Wed Dec 15 15:39:53 1993 Ken Raeburn (raeburn@cujo.cygnus.com) - - * Makefile.in (RUNTEST): New variable. - (CHECKFLAGS): Pass it down. - - * ecoff.c (ecoff_directive_frame): Permit extra trailing operands; - unused for now, but supplied by Alpha OSF1 compiler. - - * as.h: Protect against multiple inclusions. - (int_to_gen): Don't declare. - - * config/atof-vax.c (atof_vax): NULL is not a valid character - constant. - -Tue Dec 14 21:38:25 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * configure.in (hppa*-*-osf*): Do not consider this a developmental - configuration. - - * config/tc-hppa.c (md_apply_fix): Handle cases where no - relocation will be emitted for 32bit formats. - -Mon Dec 13 23:33:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Do not call hppa_field_adjust - for any of the 'T' field selectors. - -Sat Dec 11 11:23:12 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-h8500.c (build_bytes): Get reloc type right for a - %page operation. (md_assemble): Don't modify input_line_pointer. - (mdcoff_sizemachdep): New function. - * config/tc-h8500.h (TC_COFF_SIZEMACHDEP): New macro. - * config/tc-z8k.c (get_operand): Delete bogus check. - -Wed Dec 8 16:31:51 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * write.c (number_to_chars_*): Delete bogus range check. - - * output-file.c (TARGET_ARCH): No default. - -Tue Dec 7 16:02:53 1993 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/tc-sh.c (md_convert_frag): Truncate disps before calling - md_number_to_chars. (md_assemble): Don't modify - input_line_pointer. - -Mon Dec 6 11:49:03 1993 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-h8300.c (md_assemble): Don't update input_line_pointer. - -Mon Dec 6 11:20:02 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/obj-som.[ch] (obj_read_begin_hook): Remove last change. - Breaks with the HP compilers. - - * config/tc-hppa.c (struct call_info): Remove fields which were - set but never used. Remove all code which sets those fields. - (struct subspace_dictionary_chain): Likewise. - (struct space_dictionary_chain): Likewise. - (pa_desc): Delete useless function. Delete all references. - (hppa_tc_make_sections): No need to count the number of symbols for - the symbol extension section. - -Sun Dec 5 17:05:29 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/obj-som.c (obj_som_version): Pass version string to - SOM BFD backend. - (obj_som_copyright): New function. Much like obj_som_version. - - * config/tc-hppa.c (obj_copyright): Define as appropriate for - SOM and ELF. - (pa_copyright): Just a stub now. - - * config/obj-som.c (obj_read_begin_hook): Delete unused function. - * config/obj-som.h (obj_read_begin_hook): Provide dummy definition. - (TARGET_SYMBOL_FIELDS): Delete. SOM isn't making use of them. - - * config/tc-hppa.c (tc_gen_reloc, SOM version): Handle relocation - expansion due to rounding mode selectors. Handle R_[RDSN]_MODE - relocations for selecting the current rounding mode. - - * config/tc-hppa.c (evaluate_absolute): Support e_rrsel and - e_rlsel field selectors. - -Fri Dec 3 18:33:24 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.h: If ECOFF_DEBUGGING, undef - SEPARATE_STAB_SECTIONS and INIT_STAB_SECTION, and define - OBJ_PROCESS_STAB to call ecoff_stab. - * config/obj-elf.c: Don't compile obj_elf_init_stab_section if - INIT_STAB_SECTION is not defined. - -Fri Dec 3 10:56:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_apply_fix): Delete old wrapper function. - (md_apply_fix_1): Rename to md_apply_fix. Fix argument decls. - Fix comments in various places. Always return a value. - Avoid dereferencing a NULL fx_addsy. - (hppa_force_relocation): Avoid dereferencing a NULL fx_addsy. - - Fri Dec 3 09:47:30 1993 Pete Hoogenboom (hoogen@cs.utah.edu) - - * config/tc-hppa.c: (tc_gen_reloc): Addend for a plabel relocation should - be either 0 or 2 (no static link or static link required). Always - assume no static link. - -Thu Dec 2 11:52:21 1993 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-sparc.c (tc_gen_reloc): Make adjustment to addend be - dependent on howto fields, not on format flavour. - - * struc-symbol.h (struct symbol): New fields sy_obj and sy_tc, - defined as types OBJ_SYMFIELD_TYPE and TC_SYMFIELD_TYPE, if those - macros are defined. - * config/obj-coff.h (TC_SYMFIELD_TYPE, OBJ_SYMFIELD_TYPE): Define. - (TARGET_SYMBOL_FIELDS, I960_SYM_FIELDS): Don't define. - (sy_tc, sy_obj): Define so that the fields look like they used to, - until all references get changed. - - * write.c (fixup_segment): Lots of variables no longer register. - Reordered some code for easier reading. - * config/obj-coff.c (obj_coff_dim): dim_index no longer register. - Deleted superfluous return statement. - (obj_coff_line, obj_coff_size, obj_coff_scl, obj_coff_type, - obj_coff_val, tag_init, tag_insert): Deleted superfluous return - statement. - (align, obj_coff_section): Deleted debugging printfs. - * config/tc-i386.c (md_assemble): Discard some register decls. - Use assignment rather than memcpy to copy template. - (op_hash, reg_hash, prefix_hash): Default C initialization of - statics is sufficient. - * config/tc-sparc.c (print_insn): Array Reloc is now const, and - points to const. - - * config/obj-coff.h (TARGET_FORMAT): Only use coff-sparc-lynx if - TE_LYNX; use coff-sparc otherwise. - [USE_NATIVE_HEADERS]: Delete this code; it isn't used. - - * write.c (fixup_segment): Call TC_VALIDATE_FIX, if defined, - before processing a fixup. Call TC_ADJUST_RELOC_COUNT just before - returning. Remove some i960-coff-specific code. - (TC_ADJUST_RELOC_COUNT): Default to doing nothing. - * config/tc-i960.h (TC_ADJUST_RELOC_COUNT) [OBJ_COFF]: Define. - (i960_validate_fix): Declare. - (TC_VALIDATE_FIX): Define. - * config/tc-i960.c (i960_validate_fix): New function. - - * write.c (number_to_chars_littleendian): New function. Write out - bytes in little endian order, doing size and range checking. - (number_to_chars_bigendian): New function, similar. - * write.h: Declare them. - * config/tc-*.c (md_number_to_chars): Use them. - * config/tc-vax.c (md_apply_fix): Ditto. - * config/tc-i386.c (md_apply_fix): Ditto. - - * config/obj-coff.c: Rearranged code for handling line number - data. - (line_fsym): Renamed from function_lineoff in BFD_ASSEMBLER case, - since the usage is different from non-BFD_ASSEMBLER case. - (in_function, clear_function, set_function): New macros, to - combine some of the functionality implemented in differnet ways in - BFD_ASSEMBLER and non-... code. Used in other functions that used - to check function_lineoff &c. - (obj_emit_lineno): Split into two copies, one for BFD_ASSEMBLER, - one for not. Non-BFD_ASSEMBLER version now has temporary variable - to contain char* pointer pointed to by char** argument. Always - follow CROSS_COMPILE code; easier to read that way. - (obj_coff_ln): Don't call add_lineno or c_line_new if appline is - set. - (obj_coff_endef) [BFD_ASSEMBLER]: Don't do anything special for - ".bf", it's been done elsewhere. - (coff_frob_symbol): If ilne number data is pending, call - add_linesym to flush it. - (coff_frob_file): Don't do that here. - * config/obj-coff.h (coff_frob_file): Declare. - (obj_frob_file): Define, to call it. - - * config/tc-sparc.h (md_create_short_jump, md_create_long_jump, - md_estimate_size_before_relax: Define them as macros calling - as_fatal. - * config/tc-sparc.c: Don't define them as functions. - - * configure.in: Handle target alpha-*-osf*. (No cpu files yet.) - -Wed Dec 1 23:37:14 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Makefile (clean): Depend on clean-here. - -Wed Dec 1 11:35:21 1993 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/ho-go32.h: Include fopen-bin.h. - * as.h: If FOPEN_WB isn't defined, include fopen-same.h. - * output-file.c (output_file_create): Use FOPEN_WB instead of "w". - * input-file.c (input_file_open): Use FOPEN_RT instead of "r". - * listing.c (file_info): Use FOPEN_RB instead of "rb". - * read.c (s_include): Use FOPEN_RT instead of "r". - - * stabs.c: Include obstack.h. - - * tc.h (md_create_long_jump): Don't declare if it's already - defined as a macro. - (md_create_short_jump, md_estimate_size_before_relax): Ditto. - - * messages.c (as_perror) [BFD_ASSEMBLER]: Use bfd_errmsg instead - of strerror. Clear bfd_error. - - * config/te-lynx.h (LOCAL_LABELS_FB): Define, if not already - defined. - -Wed Dec 1 10:41:56 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (hppa_elf_mark_end_of_function): New function. - (pa_process_exit, pa_procend): Call it for ELF objects. - -Wed Dec 1 12:10:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (macro): Subtract 8 from offset in non PIC l.d - case. See comment. From wilson@cygnus.com: for M_L_DAB, set - coproc before doing goto ld. - -Tue Nov 30 13:40:30 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * write.c (TC_FORCE_RELOCATION): Provide a default definition. - (fixup_segment): Allow the target machine to specify that a - relocation must be generated for a particular fixup. Remove - #ifndef TC_HPPA hack. - - * config/tc-hppa.h (TC_FORCE_RELOCATION): Define. - - * config/tc-hppa.c (md_apply_fix_1): Never change fx_addsy to - be NULL. Only fixup_segment is supposed to do that. - (hppa_force_relocation): New function. - -Tue Nov 30 11:21:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (stabs.o): Added dependencies. - - * config/obj-ecoff.c (ecoff_frob_file): Don't call bfd_set_symtab. - -Sun Nov 28 12:11:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * app.c (do_scrub_next_char): Output a TAB before any - .app* directive. - - * config/tc-hppa.c (fix_new_hppa): Make sure a sub_symbol - exists before trying to peek at its name. - (pa_space): Do not call pa_align_subseg. See hppa/unsorted/align3.s - for testcase. - (pa_align_subseg): Delete unused/unwanted function. - -Sat Nov 27 22:49:07 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * read.c (read_a_source_file): Fix test for when to stick a colon - on the end of a label. Make code conditional on either MRI or - LABELS_WITHOUT_COLONS. - - * app.c (do_scrub_next_char): If a line begins with whitespace, leave - the single whitespace character alone. Eat all others. - - * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define. - -Wed Nov 24 01:22:54 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_procend): Do not call process_exit. - (exit_processing_complete): Delete unwanted variable and all - references. - -Wed Nov 24 02:31:38 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * ecoff.c (ecoff_setup_ext): Renamed from ecoff_build_ext. - Changed to not actually build the external symbol information, as - that is now done by the ECOFF back end. - (ecoff_build_debug): Changed accordingly. - * ecoff.h (obj_ecoff_set_ext): Declare. obj-format.c function - called by ecoff_setup_ext. - * config/obj-ecoff.c (ecoff_frob_file): If debug_info count is 0, - set corresponding pointer to NULL. Don't set raw_size and - raw_syments. - (obj_ecoff_set_sym_index): Removed. - (obj_ecoff_set_ext): New function. - * config/obj-ecoff.h (obj_set_sym_index): Don't define. - (obj_ecoff_set_sym_index): Don't declare. - * config/obj-elf.c (obj_ecoff_set_ext, elf_get_extr, - elf_set_index): New functions used for ECOFF_DEBUGGING. - (elf_frob_file): Reworked ECOFF debug generation to use - new functions in bfd/ecofflink.c. - -Sun Nov 21 23:54:52 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_def_subspaces): Only create the unwind - subspace for ELF. In the SOM world, the linker is responsible - for creating the unwind subspaces. - -Fri Nov 19 16:25:09 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-coffbfd.c: Use PARAMS rather than EXFUN. - (yank_symbols): Don't call S_SET_EXTERNAL if the storage class is - already set. Fixes .def var; .val external_var; .scl 3; .endef. - (adjust_stab_section): Make static. Declare return type. Remove - unused variables. - - * config/tc-i386.h: Declare tc_coff_fix2rtype and - tc_coff_sizemachdep. - -Fri Nov 19 04:33:59 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * write.c (write_object_file): Disable obj_check_file_symbols - hook; only back end using it wasn't using it correctly. - (write_object_file): Always call obj_frob_symbol and - tc_frob_symbol; always retain symbol if it's used by a relocation, - regardless of what these routines indicate. - * config/obj-coff.c (coff_frob_symbol): Renamed from - coff_check_file_symbols. - * config/obj-coff.h (obj_check_file_symbols): Deleted. - (coff_frob_symbol): Declare. - (obj_frob_symbol): Call it. - - * config/obj-coff.c (obj_crawl_symbol_chain, obj_emit_strings, - obj_pre_write_hook): Don't define for BFD_ASSEMBLER. - (c_section_header): Ditto. Delete superfluous return at end of - function. - - * config/obj-coff.h [TC_SPARC]: Include coff/sparc.h, and specify - coff-sparc-lynx. - (SA_GET_SYM_TAGNDX): Use BFD_HEADERS version for BFD_ASSEMBLER - too. - (c_section_header): Rewrite prototype so that it contains no - preprocessing directives. Don't declare it at all if - BFD_ASSEMBLER. - - * configure.in (sparc*-*-lynxos): New target, using coff and - BFD_ASSEMBLER. - - * stabs.c: New file. - * Makefile.in (REAL_SOURCES, OBJS): List it. - * read.c (STAB_SECTION_NAME, STAB_STRING_SECTION_NAME, - get_stab_string_offset, s_stab_generic, s_stab, s_xstab, s_desc): - Moved to new file. - - * config/tc-sparc.c (tc_gen_reloc): Handle coff files like elf - files. - -Wed Nov 17 17:23:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * configure.in (mips-*-irix5*): New target. Use elf and mips-big. - * config/obj-elf.c: If ECOFF_DEBUGGING, include ecoff.h. - (obj_pseudo_table): If ECOFF_DEBUGGING, define ECOFF - pseudo-ops. - (obj_read_begin_hook): If ECOFF_DEBUGGING, call - ecoff_read_begin_hook. - (obj_symbol_new_hook): If ECOFF_DEBUGGING, call - ecoff_symbol_new_hook. - (obj_elf_init_stab_section): Cast alloca result. - (elf_frob_file): If ECOFF_DEBUGGING, finish up ECOFF debugging - information and write it out into .mdebug section. - * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): New macro. - (TARGET_SYMBOL_FIELDS): Use ELF_TARGET_SYMBOL_FIELDS. - (ECOFF_DEBUGGING): Define if TC_MIPS. - (TARGET_SYMBOL_FIELDS): If ECOFF_DEBUGGING, override to add - fields required by ECOFF. - * config/tc-mips.c: Check ECOFF_DEBUGGING rather than - OBJ_ECOFF in many cases. - (mips_any_noreorder): New variable. - (mips_cprestore_offset): Initialize to -1. - (mips_frame_reg): New variable. - (RELAX_ENCODE, RELAX_OLD, RELAX_NEW, RELAX_RELOC1, - RELAX_RELOC2, RELAX_RELOC3, RELAX_WARN): New macros. - (md_pseudo_table): Handle "gpword" and "cpadd". - (md_begin): Initialize ok to false. If OBJ_ELF, set alignment - of text, data and bss sections to 4. Set alignment of - .reginfo section to 2. If ECOFF_DEBUGGING, create .mdebug - section. - (ALIGN_ERR, ALIGN_ERR2): Removed unused and useless alignment - check. - (append_insn, macro_build, macro_build_lui): Take place - argument. Changed all callers. - (append_insn): If appending a nop, don't emit one. - (macro_build): Changed assertion for 'i', 'j', 'o' case. - (gp_reference): Removed. - (load_address): New function. - (macro): If mips_noreorder is used, set mips_any_noreorder. - Extensive changes to handle GP and PIC symbols differently. - Build both possible code choices using a variant frag, and - make a final decision at the end of assembly when all - information is known. Added PIC support for all symbol - references. - (mips_ip): Don't permit anything but a number after $ for a - coprocessor register. Don't use .lit4 or .lit8 sections when - generating PIC code. If OBJ_ELF, set alignment of .lit4 or - .lit8 section to 4. - (md_apply_fix): Accept and ignore GOT16 and GPREL32 relocs. - (s_change_sec): Set alignment of ELF .rodata or .sdata section - to 4. - (s_mipsset): If .set noreorder, set mips_any_noreorder. - (s_cpload): Ignore .cpload if not generating PIC code. Warn - if .cpload is not in noreorder section. - (s_cprestore): Ignore .cprestore if not generating PIC code. - (s_gpword, s_cpadd): New functions. - (tc_get_register): Added frame argument; if true, set - mips_frame_reg to return value. Changed all callers. - (md_estimate_size_before_relax): Don't error out, but instead - determine how much a frag should grow. - (tc_gen_reloc): Return multiple relocs if appropriate, as - determined by md_estimate_size_before_relax. - (md_convert_frag): New function. - (mips_elf_final_processing): Set ELF header flags based on - mips_any_noreorder and mips_pic. - * config/tc-mips.h (RELOC_EXPANSION_POSSIBLE): Define. - (MAX_RELOC_EXPANSION): Define to be 3. - (md_relax_frag): Define to be 0. - (md_convert_frag): Don't define. - (tc_get_register): Changed declaration. - - * ecoff.h, ecoff.c: New files pulled out of config/obj-ecoff.c to - support generating ECOFF debugging information for MIPS ELF - targets. Compiled only if ECOFF_DEBUGGING is defined. Changed - handling of external symbols: it now always generates exactly - those external symbols that are defined in the global symbol list. - * Makefile.in (REAL_SOURCES): Added ecoff.c. - (REAL_HEADERS): Added ecoff.h. - (OBJS): Added ecoff.o. - (ecoff.o): New target. - * config/obj-ecoff.c: Almost entirely moved into ecoff.c. - Remaining code mostly just calls ecoff.c code. - * config/obj-ecoff.h: Define ECOFF_DEBUGGING. - (TARGET_SYMBOL_FIELDS): Make ecoff_symbol a pointer to a - struct localsym. - (obj_read_begin_hook, obj_symbol_new_hook): Define to call - functions in ecoff.c. - (ecoff_stab): Don't declare (now declared in ecoff.h). - (obj_set_sym_index): Define. - (obj_ecoff_set_sym_index): Declare. - - * frags.h (frag_grow): Declare. - * frags.c (frag_grow): Made non-static. - - * write.c (is_dnrange): Do not define if md_relax_frag is defined. - (relax_segment): If md_relax_frag is defined, use it to handle a - frag of type rs_machine_dependent rather than looking through - md_relax_table. - - * read.c (read_a_source_file): If we find a bad pseudo-op, - do a continue to go on to the next line rather than a break. - Removed duplicate bad pseudo-op code which was never executed. - - * read.c (s_lcomm): Do not require a comma after the name. - - * subsegs.h (segment_info_type): Changed hadone field to bitfield. - Added bss bitfield. - * as.c (perform_an_assembly_pass): Set bss flag for bss_section. - * read.c (s_lcomm): Set bss flag for .sbss section if used. - * write.c (relax_and_size_seg): Don't set SEC_HAS_CONTENTS for a - bss section. Set SEC_RELOC if there are any relocations, even for - a zero size section. - - * write.c (write_relocs): In RELOC_EXPANSION_POSSIBLE case, base - data offset on reloc[0]->address rather than reloc[j]->address, so - that multiple relocs can affect different memory locations. - - * write.c (chain_frchains_together, relax_and_size_seg, - adjust_reloc_syms, write_relocs): Make third argument PTR, not - char *, to match definition of bfd_map_over_sections. - - * app.c (do_scrub_next_char): Don't interpret a comment character - as starting a CPP line directive unless it is a '#' and is the - very first characters on the line (i.e., do not permit leading - whitespace). - - * messages.c (identify): Make file argument non-const, to match - callers. - -Tue Nov 16 20:38:21 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_ip): Fix thinko in 21bit range check. - -Sat Nov 13 18:22:48 1993 Steve Chamberlain (sac@jonny.cygnus.com) - - * config/tc-sh.c (md_apply_fix): Cope with IMM16 type too. - * config/tc-z8k.c (build_bytes, md_apply_fix): Understand nDISP7 - relocs. - -Fri Nov 12 16:51:47 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.[ch]: Fix assorted trivial indention problems. - * config/obj-som.c (obj_som_version): Add missing ';'. - (som_frob_file): Delete whitespace at EOL. - -Fri Nov 12 15:26:21 1993 Ken Raeburn (raeburn@cygnus.com) - - * Makefile.in (VERSION): Updated following 2.2 release. - -Fri Nov 12 14:52:17 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (hppa_fix_struct): Use a real type for the - field selector, rather than an int. All uses of field selectors - fixed. - (tc_gen_reloc): For SOM PLABELs, always set addend to zero for now. - (md_apply_fix_1): Do not call hppa_field_adjust for any PLABEL - field. - - Thu Nov 11 15:49:08 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (pa_type_args): For .import statements, - silently ignore attempt to change the symbol type for a function - from ST_ENTRY to ST_CODE on .import. - -Wed Nov 10 16:19:13 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * write.h (fixS): Rename fx_callj field to fx_tcbit. - * write.c, config/obj-coff.c, config/obj-coffbfd.c, - config/tc-i960.c: Corresponding changes. - -Tue Nov 9 00:49:01 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Makefile.in (distclean): Delete config-stamp and config.h - - * config/tc-hppa.c (evaluate_absolute): Avoid relying on - ANSI-C features. - - * config/tc-hppa.c (pa_type_args): Renamed from pa_export_args. - Accept new argument "is_export". All callers changed. When - processing a .export directive for a function, do not allow - the user to set the type to "CODE", instead warn and set the - type to "ENTRY". - -Mon Nov 8 12:05:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip, printInsn): Handle 'k' (from Ted - Lemon ). - (mips_ip): Permit odd numbered floating point registers if -mips3. - (macro): Use BFD_RELOC_MIPS_LITERAL relocation for M_LI_SS. - -Mon Nov 8 07:45:01 1993 Doug Evans (dje@canuck.cygnus.com) - - * configure.in: Remove h8300h, we have multilib now. - -Mon Nov 8 06:09:18 1993 D. V. Henkel-Wallace (gumby@cirdan.cygnus.com) - - * configure.in: Support generic netware as being ELF format. - Recognise unixware if the user supplies it. - -Sun Nov 7 01:02:08 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * First cut at cleaning up PA instruction parsing. - * config/tc-hppa.c (pa_get_absolute_expression): Accept pointer to - insn structure as an argument, and a pointer to a string. All - callers changed. Always read any field selector here. Call - evaluate absolute to get a return value. - (evaluate_absolute): Addept pointer to insn structure as its - argument. All callers changed. - (INSERT_FIELD_AND_CONTINUE): New macro for inserting a bitfield - into an instruction and continuing the main pa_ip loop. - (CHECK_FIELD): New macro for simple range checking of fields. - (pa_ip): Delete unused variables. Use INSERT_FIELD_AND_CONTINUE - and CHECK_FIELD. All immediate fields now pass through - pa_get_absolute_expression which will also handle field selectors. - Delete dead code. Simplify. - (md_apply_fix_1): Use CHECK_FIELD to verify any fixes that are - applied are in range. Use bfd_put_32 rather than inserting each - byte of the fixed instrution into the buffer ourselves. - - * write.c (fixup_segment): Delete {SEG,GLOBAL}_DIFF_ALLOWED code, - it was PA specific and is no longer needed (it's now handled - within the PA backend). - * config/tc-hppa.h (SEG_DIFF_ALLOWED): Delete definition. - * config/tc-hppa.c (fix_new_hppa): If the subtract symbol for - a fixup is $global$ change it to NULL as $global$ is really only - needed long enough to determine the base type of relocation to use. - - * config/tc-hppa.c (create_new_subspace): Initialize subspace_defined. - - * config/tc-hppa.c (pa-ip, case 'z'): Make field selectors work - for 'z' operands (target of ble branch). - -Sat Nov 6 22:41:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: (update_subspace): Fix type and name of last - parameter. All callers fixed. - (md_begin, pa_chk_field_selector, pa_entry): Lint. - - * config/tc-hppa.c (cons_fix_new_hppa): Reset field selector - to default state after it's been used. - -Fri Nov 5 12:08:21 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/obj-som.c (obj_som_init_stab_section): Change - space/subspace sort keys for the stab sections so as to avoid - bugs in the hp linker and pxdb. - -Thu Nov 4 17:00:05 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * write.c (chain_frchains_together): Update pointer to last - frag for a segment in the seginfo structure. - -Thu Nov 04 09:09:35 1993 Jeffrey Wheat (cassidy@cygnus.com) - - * Makefile.in: Changed RUNTESTFLAGS to RUNTEST_FLAGS - -Wed Nov 3 12:16:27 1993 Ken Raeburn (raeburn@rover.cygnus.com) - - * write.c (fixup_segment): Handle conversion of subtraction to - pc-relative addressing even if pc-relative flag is already set. - - * config/tc-m68k.c (m68k_ip_op): Use strchr, not index. Don't - declare either. - - * doc/Makefile.in (distclean): Delete intermediate files from dvi - build, but not the dvi or info files. - * Makefile.in (clean-here): New target; cleans up current - directory only. - (distclean): Use it instead of clean. - - * read.c (s_xstab): Don't use alloca. - - * messages.c (identify): New routine; print message identifying - following messages as coming from assembler. - (as_show_where, as_bad_internal, as_bad_where): Call it. - (as_fatal): Don't need to identify program any more. - -Tue Nov 2 18:04:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Add default case to reloc switch. - - * read.c (s_lcomm): Put small objects in .sbss for MIPS ELF as - well as MIPS ECOFF. - (get_stab_string_offset): Remove unused variable aligned. - -Tue Nov 2 15:07:07 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c: Add %dp and %rp as synonyms for %r27 and %r2 in the - predefined register table. - (pa_parse_number): Handle %rp in common register shortcut code. - Consistently set return value to -1 for an error. Clean up error - messages and only print them when "print_errors" is true. Handle - empty string case like the HP assembler -- assume a value of - zero. - - * config/ho-hpux.h: Do not include ho-sysv.h. Instead include - standard hpux include files to pick up various function decls. - - * config/ho-hppaosf.h: Delete _IO* macros. They are defined in - stdio.h. Delete bogus declaration of free. Get path to - alloca-conf.h right. - -Tue Nov 2 13:57:30 1993 Ken Raeburn (raeburn@rover.cygnus.com) - - * expr.c (operand): Fix checks for characters following "0b" or - "0f". - -Mon Nov 1 21:37:04 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/obj-som.h (obj_attach_unwind_info): Define as a hook - so GAS can attach unwind descriptor information to a BFD symbol. - * config/tc-hppa.c (fix_new_hppa): If necessary attach unwind - descriptor information to the BFD symbol. - (md_apply_fix): R_HPPA_ENTRY and R_HPPA_EXIT can never be "applied", - they are simply markers. Make R_HPPA_UNWIND_* handling OBJ_ELF - dependent. - (pa_build_unwind_subspace): Whole function is OBJ_ELF dependent. - (pa_entry): Build a R_HPPA_ENTRY relocation when configured for SOM. - (pa_exit): Likewise, but built a R_HPPA_EXIT relocation. Do not - build "end-of-function" symbols for SOM, they are not needed. - - * config/tc-hppa.c (process_exit): Create temporary symbols with - correct prefixes so they can be eliminated later. - - * config/tc-hppa.c (call_info struct): Delete unused "frame" field. - (pa_callinfo): Insert framesize into the unwind information as - soon as it's available. - (pa_build_unwind_subspace): Do not insert framesize into the unwind - information here. - - * Add support for marker type relocations. These mark areas - of interest to the linker. ENTRY/EXIT relocations for SOM are - an example of marker relocations. - * write.c (write_relocs): Instead of assuming size of a relocation - is 4 bytes, pick up the size from relocation itself. - (fixup_segment): Do not complain that a value is too small for - marker relocations. - - * struc-symbol.h: Add new "sy_used" field to the symbol structure. - * expr.c (operand): Set sy_used for any symbol used as an operand. - (expr): Likewise for any symbol used in an expression. - * config/tc-hppa.h (tc_frob_symbol): Define. Punt imported - symbols which are never used and absolute symbols which local scope. - - * config/obj-som.h (obj_frob_file): Define. - * config/obj-som.c (obj_som_init_stab_section): Set alignment - of stab sections. Make space for the special stab entry. - (adjust_stab_sections): Adjust the special entry in the - stabs section. - (som_frob_file): New function. Simply calls adjust_stab_sections - for each section. - -Mon Nov 1 17:54:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (PIC_CALL_REG, SP, FP): Define. - (mips_pic, mips_cprestore_offset): New static variables. - (md_pseudo_table): Handle .abicalls, .cpload, and .cprestore. - Ignore .bgnb and .endb. - (gp_reference): _gp_disp is never addressed off GP. - (macro_build): Ignore macros while searching for insn. For cases - i, j, and o, accept the reloc type as an argument rather than - assuming BFD_RELOC_LO16. Don't try to convert BFD_RELOC_LO16 to - BFD_RELOC_MIPS_GPREL. Added new case a. - (set_at, load_register, macro): Changed calls to macro_build to - pass new argument for i, j and o cases. - (macro): Handle M_JAL_1, M_JAL_2 and M_JAL_A. These require - special handling when generating SVR4 PIC code. - (mips_ip, tc_get_register, s_frame): Use macros FP, SP, GP and AT - rather than hard coded constants. - (md_apply_fix): Handle BFD_RELOC_MIPS_LITERAL and - BFD_RELOC_MIPS_CALL16. - (s_option): Set mips_pic based on .option picN. - (s_abicalls): New function; set mips_pic to 2. - (s_cpload): New function; handle .cpload. - (s_cprestore): New function; handle .cprestore. - - * config/obj-ecoff.c (obj_pseudo_table): Add entries for .bgnb, - .endb and .verstamp, setting them to s_ignore. - -Sun Oct 31 00:36:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (subspace_dictionary_chain): Add new ssd_defined - field. Define SUBSPACE_DEFINED accessor macro. - (pa_subspace): Allow user to override subspace attributes for - built-in subspaces. Set ssd_defined at the end of fcn -- that - way the attributes can only be changed once. Pass newly allocated - name to is_defined_subspace, not a pointer to the input line. - Fix typo in space/subspace rework. - (is_defined_subspace): Delete unused 2nd arg. All callers changed. - - * config/tc-hppa.c (pa_import): If currently in the text segment - and a symbol is imported without type information, set BSF_FUNCTION - for the symbol. - * write.c (relax_and_size_seg): Correct test to determine if - the section's size was rounded up. - - * config/obj-som.h (obj_set_symbol_type): Define a hook so GAS - can properly set all the SOM symbol types. - * config/tc-hppa.c (pa_symbol_type): New enum to represent the - symbol types which can be set from an IMPORT/EXPORT statement. - (pa_export_args): Set the pa_symbol_type type based on arguments. - If defined, call obj_set_symbol_type to pass this information on - to the BFD backend. - - * read.c (get_stab_string_offset): Set SEC_DEBUGGING for any - stab section we make. - (s_stab_generic): Likewise. - -Sat Oct 30 14:26:20 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Allow backends to override the value of the fake label. - * write.h (LOCAL_LABEL): Delete DOT_LABEL_PREFIX code. Instead - assume backends will define LOCAL_LABEL if anything other than - 'L' is used to denote a local label. - (FAKE_LABEL_NAME): New macro. Defines the default name used for - the "fake" label. - * expr.c (make_expr_symbol): Delete DOT_LABEL_PREFIX code - and instead simply use the string defined by FAKE_LABEL_NAME. - (operand): Likewise. - * read.c (s_stab_generic): Likewise. - * config/tc-hppa.h (FAKE_LABEL_NAME): Define as L$0\001 so it's - known to be a local label. - * config/tc-i386.h (DOT_LABEL_PREFIX): Delete. - (LOCAL_LABEL, FAKE_LABEL_NAME): Define. - * config/tc-m68k.h (DOT_LABEL_PREFIX): Delete. - (LOCAL_LABEL, FAKE_LABEL_NAME): Define. - * config/te-sco386.h (DOT_LABEL_PREFIX): Delete. - (LOCAL_LABEL, FAKE_LABEL_NAME): Define. - - Rework space/subspace handling in PA code to fully support - SOM spaces/subspaces. - * config/tc-hppa.c (USE_ALIASES): New object-format dependent define - to control the use of space/subspace name aliases. - (update_subspace): Accept space chain entry for containing space - as a new parameter. All callers changed. - (pa_get_label): Use current_space rather than pa_segment_to_space. - (pa_define_label): Likewise. - (pa_undefine_label): Likewise. - (md_begin): Change into the (possibly modified) text_section. - (pa_parse_space_stmt): Create a new segment/space if create_flag - is true, and the space name is not one of the two predefined spaces. - (pa_subspace): Use current_space rather than a lookup via - pa_segment_to_space. Reset BFD section flags as required by - the .subspace directive. Likewise for the section alignment. - Pass the current space to update_subspace and create_new_subspace. - (pa_spaces_begin): Only use space/subspace aliases if USE_ALIASES - is true. When not using aliases, create a BFD section for each - subspace encountered. When not using aliases replace the default - text, data, and bss segments with new ones. - (create_new_subspace): When not using aliases each subspace has a - section/segment and subsegments are not needed, so set the subsegment - to zero. - - * config/tc-hppa.c (pa_parse_space_stmt): If needed, call - obj_set_section_attributes to pass space attributes to the - BFD backend. - (create_new_space): Likewise. - (create_new_subspace): Likewise for subspace attributes using - obj_set_subsection_attributes. - (update_subspace): Likewise for subspace attributes using - obj_set_subsection_attributes. - - * config/tc-hppa.c (pa_parse_space_stmt): Get segment and sort key - for $TEXT$ and $PRIVATE$ from the default space structure. - - * config/tc-hppa.c (pa_export_args): Always set BSF_FUNCTION - as appropriate for the given type. - - * config/tc-hppa.c (tc_gen_reloc): Preliminary stab at handling - SOM relocations. - - * config/tc-hppa.c (pa_comm): Delete incorrect check for symbol - redefinition. - - * config/obj-som.[ch]: New files for SOM support. Note SOM - support is not yet complete in GAS or BFD. - - * config/ho-hppabsd.h: Delete IO* macros, they are defined in - stdio.h. Delete declaration of free. Include stdlib.h, unistd.h, - and string.h. - -Fri Oct 29 13:26:12 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * Allow backends to override the section names used for embedded - stabs support. Needed for SOM. - * read.c (STAB_SECTION_NAME): Default the name of the stab section - to ".stab". - (STAB_STRING_SECTION_NAME): Likewise for the stab strings section. - (get_stab_string_offset): Is now passed the full name for the - stab string section rather than a name prefix. All references - changed. - (s_stab_generic): New argument for the stab string section name. - all references changed. - (s_xstab): Append "str" to the stab section name to get the - stab string section name. - * config/obj-coffbfd.c (obj_coff_init_stab_section): Append "str" - to stab section name to get the stab string section name. Pass - the full name of the stab string section to get_stab_string_offset. - * config/obj-elf.c (obj_elf_init_stab_section): Likewise. - - * config/tc-hppa.c (md_begin): Disable "-R" option to fold - textand data segments. Warn user "-R" is unsupported on the - PA. - -Thu Oct 28 12:36:13 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - - * config/tc-hppa.c (md_pseudo_table): Default alignment is 8 for - .align and .ALIGN directives. - - * config/tc-hppa.c (pa_space): Do not report an error for a .space - directive which does not define a "well-known" space and does - not include a space number as an argument. - - * config/tc-hppa.c (pa_def_subspaces): Correct initialization of the - "defined", "loadable", "code_only" and "space_index" fields. - (pa_def_spaces): Correct initialization of the "spnum", "defined", - and "private" fields. - - * write.h (struct fix): Add new tc_fix_data field for the various - backends to attach machine dependent fixup information to. - * write.c (fix_new_internal): Initialize new tc_fix_data field. - * config/tc-hppa.c (hppa_fix_struct): Delete unnecessary fix_fixP and - fx_next fields. - (hppa_find_hppa_fix): Delete unnecessary function. Fix all - callers to get HPPA fixup information from the tc_fix_data field - in the GAS fixup. - (hppa_fix_root): Delete unnecessary variable. - (fix_new_hppa): Attach HPPA fixup data to the GAS fixup. - - * config/tc-hppa.c (pa_set_start_symbol); Delete unwanted - function. Fix all callers. - (subspace_dictionary_chain): Delete unused ssd_start_sym field. - - * config/tc-hppa.c (hppa_fix_adjustable): New function to determine - if a particular fixup is adjustable. - * config/tc-hppa.h (tc_fix_adjustable): Call hppa_fix_adjustable to - perform the real work. - - * config/tc-hppa.h (RELOC_EXPANSION_POSSIBLE): Move definition out - of OBJ_XXX conditionals. - (MAX_RELOC_EXPANSION): Likewise. - - * config/tc-hppa.c (log2): Renamed from is_power_of_2. Fix all - callers. Now returns log2 (N) for positive N which are an exact - power of two or -1 for an error. - - * config/tc-hppa.c (pa_callinfo): Range check values provided for - ENTRY_GR, ENTRY_FR and ENTRY_SR. Properly adjust vaues before - inserting them into the unwind table. - - * config/tc-hppa.c (NEEDS_FIXUP): Delete definition and all references. - (hppa_gen_reloc_type): New object format dependent macro. - (pa_ip): Delete tons of code which was either OBJ_SOM or OBJ_ELF - conditional. The code can (and will) be shared between SOM & ELF - formats in the near future. - (cons_fix_new_hppa, md_apply_fix_1): Likewise. - (pa_build_unwind_subspace, process_exit, pa_exit): Likewise. - (tc_gen_reloc): Use hppa_gen_reloc rather than an object format - specific call. - - * config/tc-hppa.c (pa_comm): Set the segment for a common symbol - to bfd_und_section. - - * config/obj-elf.h (obj_elf_version): Add extern prototype. - - * configure.in (hppa-*-bsd*): New configuration. - BFD is always used for GAS generating SOM objects. - - * write.c (adjust_reloc_syms): Set sy_used_in_reloc if an - adjustment is rejected by the target machine. - - * config/tc-hppa.c (pa_big_cons): Delete function and its - declaration. All callers changed to use pa_cons. - - * write.c (fixup_segment): Fix indention and open/close brace - problem. - - From Pete Hoogenboom: - * config/tc-hppa.c (md_atof): Return a NULL on success rather than - an empty string. - - * config/tc-hppa.c (pa_parse_space_stmt): Advance - input_line_poitner when an invalid argument is encountered. - -Thu Oct 28 13:09:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-a29k.c (md_begin): When opcodes are mashed together in - the table, require that the one without bit 0x1000000 set come - first. Require further that it be case 'b' or 'P'. The a29k - opcode table already meets these constraints. - (machine_ip): When handling case 'i' or 'A', make sure that the - appropriate opcode really exists by looking at the next entry in - the opcode table. - -Wed Oct 27 11:48:56 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-m68k.c (m68k_ip): Adjust offsets for PC relative - fixups. Add 6 for long 7.3 case, 2 for short 7.2 case. - - * config/obj-ecoff.c (obj_ecoff_ent): Ignore an optional number - after a .ent directive. - - * config/tc-mips.c (mips_ip): Handle '>' case (shift amount - between 32 and 63 for double shift instruction). Do & 0x1f rather - than % 32. - (printInsn): Handle '>'. - -Tue Oct 26 16:58:36 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-ns32k.c (tc_aout_fix_to_chars): Output the symbol - number in the right place. Untested. Probably does not work for - cross assembly. From cagney@cs.adelaide.edu.au (Andrew Cagney). - - * config/tc-m68k.c (md_apply_fix_2): Error if a short branch uses - an illegal offset of 0 or -1. - - * config/obj-elf.c (obj_elf_init_stab_section): Align .stab - section to a longword boundary. - -Tue Oct 26 10:24:31 1993 Ken Raeburn (raeburn@cygnus.com) - - * Makefile.in (CHECKFLAGS): Pass down RUNTESTFLAGS. - - From Jeff Law: - * config/tc-hppa.c (tc_gen_reloc): ELF32_HPPA_R_ADDEND -> - HPPA_R_ADDEND. - -Mon Oct 25 14:06:17 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Fix up membar argument handling. - -Mon Oct 25 11:17:58 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * config/tc-sh.c (build_Mbytes): Write the relocs to the correct - address. (md_assemble): Make error handling a bit more graceful. - (md_apply_fix): Don't warn on non aligned displacement. - - * config/tc-z8k.c (get_specific, built_bytes): Understand all the - aspects of lda. - -Mon Oct 25 10:20:31 1993 Ken Raeburn (raeburn@rover.cygnus.com) - - * doc/Makefile.in (install-info): Use "$<*" so VPATH will find - as.info* even if they're in $(srcdir) (e.g., for FSF - distributions). - - * write.c (write_relocs): For relocs that are pc_relative and - pcrel_offset and not partial_inplace, adjust reloc->addend to - compensate for a bfd_perform_relocation bug. - - * config/tc-sparc.h: Removed remaining non-BFD_ASSEMBLER code. - * config/tc-sparc.c: Ditto. - (tc_gen_reloc): Include fx_offset for pcrel fixups. - -Sun Oct 24 16:49:00 1993 Jim Wilson (wilson@x1.cygnus.com) - - * config/tc-mips.c (md_pseudo_table): Add dword pseudo op. - -Fri Oct 22 20:40:56 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * messages.c: replaced all variables called Format with 'format', - for consistency throughout - - * configure.in: handle mips*- instead of mips, mips*el for little - endian configurations - -Fri Oct 22 14:45:49 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * input-scrub.c (physical_input_file, logical_input_file, - physical_input_line, logical_input_line): Made static. - (as_where): Return current file name and line number, don't print - them out. - * messages.c (as_show_where): New static function. Other - functions use it instead of as_where. - (as_bad_internal): New static function. - (as_bad): Use as_bad_internal. - (as_bad_where): New function, like as_bad but taking a file name - and line number. - * as.h (as_bad_where): Declare. - (as_where): Change prototype for new arguments. - * write.h (fixS): Added fields fx_file and fx_line. - * write.c (fix_new_internal): Save file and line number in fix. - (fixup_segment): Use as_bad_where, not as_bad. - * input-file.c (f_in, file_name): Made static. - * cond.c (struct file_line): Just use file and line fields. - (s_else): Use as_where and as_bad_where, not get_file_line and - set_file_line. - (get_file_line, set_file_line): Removed. - * listing.c (listing_newline): Use as_where. - * config/obj-coffbfd.c (obj_coff_init_stab_section): Use as_where. - * config/obj-ecoff.c (add_file): Use as_where. - * config/obj-elf.c (obj_elf_init_stab_section): Use as_where. - * config/tc-m68k.c (md_apply_fix_2): Use as_bad_where. - * config/tc-mips.c (tc_gen_reloc): Use as_bad_where, not assert. - -Thu Oct 21 12:52:01 1993 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-m68k.h: Don't define REGISTER_PREFIX or - OPTIONAL_REGISTER_PREFIX if either is already defined. - - * config/tc-m68k.c (m68k_ip): Delete some code in "#if 0". - - * configure.in: Set bfd_gas for all sparc targets. Added facility - for keeping or rejecting configurations still under development; - default is to assume production environment, and reject configs - still being worked on. Mark Elf configurations (except sparc and - i386) as developmental. Deleted cases matching some generic names - in favor of more specific names. (E.g., when we get Alpha - support, we'll still only support VMS for Vax.) - - * config/tc-sparc.h (md_end): New macro. - * config/tc-sparc.c (md_end): Function deleted. - (BFD_RELOC_*): Delete macros that used to help keep the non-bfd - version compiling. All sparc targets will use bfd now. - * tc.h (md_end): Don't declare if it's defined as a macro. - - Changes from Jeff Law and Peter Hoogenboom: - - * read.c (next_char_of_string): Limit octal character constants to - three digits. - - * config/tc-hppa.h: Major cleanup. Use GNU-style comments. Warn - against placing additional object-file dependent code here. Warn - against contaminating all of GAS with the internals of tc-hppa.c - through inclusion of tc-hppa.h. Delete all forward declarations - for functions only used within tc-hppa.c, likewise for structures, - variables, and #defines. Try to group OBJ_ELF and OBJ_SOM - conditional code in a few small places. - - * config/tc-hppa.c: Major cleanup. Use GNU-style comments. Group - structures, global variables, forward declarations together. - Reduce (or in some cases eliminate) OBJ_ELF and OBJ_SOM - conditional code -- try to group conditional code together - into a few places. Make all functions and variables which - are only used within tc-hppa.c static. PARAMize all functions. - Add comments to functions. Delete unused functions, variables, - #defines, etc. Delete unused members within structures. Delete - ldil;ble hacks -- it is believed they were installed to work - around old gas bugs. Avoid using mixed case for local - functions, variables, and structures. Fix formatting problems - not found by GNU-indent. Add FIXME notices for things which - should be worked on the near future. Delete lots of old - useless (1.36 PA-SOM) code. - - * config/tc-hppa.c: (fix_new_hppa): Initialize the fx_r_type - field of the fixS structure. Needed to build unwind - descriptors correctly. - - * write.c: (fixup_segment): Allow expressions such as - sym1-sym2+const as long as sym2 is $global$. - - * write.c (adjust_reloc_syms): Provide a hook so that a target - cpu configuration can reject certain relocation reductions. - * config/tc-hppa.h (tc_fix_adjustable): New macro. Only accept relocations - which do not involve function symbols. - - * config/tc-hppa.h: Reindent with GNU-indent. Delete references - to OBJ_OSFROSE. Fix typos (OBJ_SOME -> OBJ_SOM). Delete unused - STAB_FIXUP macro. - * config/tc-hppa.c: Likewise. - - * config/tc-hppa.c (md_apply_fix_1): Use elf_symbol_type, instead - of elf32_symbol_type. - (pa_export_args): Likewise. - (elf_hppa_final_processing): Likewise. - (pa_desc): Do not call obj_elf_desc. (Is pa_desc even needed - anymore?) - (hppa_tc_make_sections): Do not declare elf_get_symtab_map any - ore. - - * config/tc-hppa.c: (md_section_align): Align all sections to - a multiple of the section alignment rather than always a - multiple of 8. - - * config/tc-hppa.c (hppa_tc_symbol): If the argument relocation - bits are zero (eg they specify no relocations), then do not even - bother adding their entries to thesymextn section. - -Thu Oct 21 15:44:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-sparc.c (md_parse_option): Accept and ignore -sparc - option, which is used by the SunOS make default .s.o rule. - -Wed Oct 20 12:26:33 1993 Ken Raeburn (raeburn@rover.cygnus.com) - - * config/tc-sparc.c (sparc_ip, label "immediate"): Convert relocs - operating on upper 32 bits of immediate constants to lower-half - relocs with adjusted constants. - -Tue Oct 19 18:13:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-m68k.h (AOUT_MACHTYPE): Define to be external variable - m68k_aout_machtype. - * config/tc-m68k.c (omagic): Remove obsolete and unused variable. - (m68k_aout_machtype): New variable, if OBJ_AOUT. - (md_assemble): Initialize m68k_aout_machtype based on - current_architecture, if OBJ_AOUT. - (md_parse_option): Remove obsolete reference to omagic. - -Thu Oct 14 16:51:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (md_pseudo_table): Ignore .livereg pseudo-op. - (s_option): Ignore .option O* and .option pic*. - (s_ent): Skip whitespace between symbol and optional digit. - (my_getSmallExpression): Handle ($xx) correctly: assume 0($xx). - - * app.c (do_scrub_next_char): Always accept 'x' and 'X' as escape - characters in state 6. - * read.c (next_char_of_string): Accept \Xh* and \xh* where h* are - hexadecimal digits. - - * config/tc-i386.c (md_apply_fix_1): Make cross segment calls work - for ELF by hacking around bizarre bfd_perform_relocation behaviour - that I don't dare change. - -Thu Oct 14 11:33:25 1993 Michael Meissner (meissner@osf.org) - - * config/tc-i386.c: (md_begin): Do not zero static arrays. Don't - call strchr for each character to see if it is a special char, - instead add a second loop over special_chars. Set alignment - of text, data and bss sections to 4. - (pi, te, pt, pe, ps): Add declarations so that DEBUG386 can be - used again. - (reloc): Don't return 8 and 16 bit non-PC relative relocations on - ELF, since the ELF object format does not have these type of - relocations. Change the abort into as as_bad and return - BFD_RELOC_NONE to silence compiler warnings. - (md_assemble): Keep track of the instruction size. Allow white - space between the $ and the constant for compatibility with older - gases and other assemblers. - (i386_operand): Skip spaces between $ and expression. - (tc_gen_reloc): Don't allow anything but 32 bit relocations on - ELF. Convert abort into an as_bad and assert into as_fatal. - -Wed Oct 13 16:50:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-coffbfd.c (fixup_segment) [DIFF_EXPR_OK]: If - sub_symbolP is in the current segment, convert to a PC-relative - fixup and discard the symbol. - -Wed Oct 13 14:00:02 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-ecoff.c (ecoff_build_symbols): Handle st_End symbol - for st_StaticProc just like st_Proc. - - * write.c (relax_and_size_all_segments): Moved #endif for OBJ_BOUT - so that OBJ_BOUT doesn't forget to adjust all the fragments in the - .bss section. - -Tue Oct 12 17:26:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c: If OBJ_ELF, include elf/mips.h. - (mips_regmask_frag): New static variable, if OBJ_ELF. - (md_begin): If OBJ_ELF, create .reginfo section and set - mips_regmask_frag to a frag. - (mips_elf_final_processing): New function, if OBJ_ELF. Set - mips_regmask_frag to register mask information. - * config/tc-mips.h (elf_tc_final_processing): New macro, defined - if OBJ_ELF. - -Tue Oct 12 03:33:26 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * messages.c (as_fatal): Use myname when printing messages. - - * config/tc-i960.c (md_begin): Use null pointer, not empty string, - as initial "return" value in case hashing isn't needed. - - * config/tc-a29k.c (md_atof): Return null, not empty string, on - success. - * config/tc-h8300.c (md_atof), config/tc-h8500.c (md_atof), - config/tc-hppa.c (md_atof), config/tc-i860.c (md_atof), - config/tc-i960.c (md_atof), config/tc-m88k.c (md_atof), - config/tc-ns32k.c (md_atof), config/tc-sh.c (md_atof): Ditto. - -Mon Oct 11 16:46:31 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - fix for pr 3571 - * config/tc-h8300.c (get_specific): Special action if 8 bit - address seen. (check_operand): Don't complain if truncating top - bits of an 8 bit address. (build_bytes): Allow an immediate and - an absolute in the same insn. - -Mon Oct 11 17:18:51 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * write.c (write_contents): Don't crash if seginfo is NULL. - - * config/obj-ecoff.c (ecoff_frob_file): Write out register masks - by modifying .reginfo section, not by directly modifying BFD - backend data. - -Mon Oct 11 14:11:32 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config/ho-sunos.h: remove extern time declaration - -Mon Oct 11 16:14:43 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * messages.c (as_fatal): Do mention that it's the assembler that - got the fatal error. - -Fri Oct 8 14:09:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_gprmask, mips_cprmask): New variables to - hold register masks. - (md_begin): Initialize them to zero. - (append_insn): Update mips_gprmask and mips_cprmask. Also add - register variables pinfo and prev_pinfo. - * config/tc-mips.h (mips_gprmask, mips_cprmask): Declare. - * config/obj-ecoff.c (ecoff_frob_file): If TC_MIPS, set gprmask - and cprmask from mips_gprmask and mips_cprmask. - - * config/tc-mips.h: Define TARGET_FORMAT if OBJ_ELF. - * config/tc-mips.c (GPOPT): Define if OBJ_ECOFF or OBJ_ELF. - (various): Change all references to GP references to apply if - GPOPT, not if OBJ_ECOFF. - (s_change_sec): Rearrange somewhat. If OBJ_ELF, use .rodata - instead of .rdata. If OBJ_ELF, set section flags for .rodata and - .sdata sections. - (s_frame, s_loc, s_mask): Comment out entire functions, rather - than just body. They're not used anyhow. - * configure.in: Set cpu_type to mips for mips*. Accept - mips-*-elfl* and mips-*-elf*. - -Thu Oct 7 18:36:29 1993 Michael Meissner (meissner@osf.org) - - * config/obj-elf.c (obj_elf_common): Allow the alignment field to - not be specified. - -Wed Oct 6 13:01:34 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (cons_fix_new_mips): New function. Turn - BFD_RELOC_64 into BFD_RELOC_32. - * config/tc-mips.h (TC_CONS_FIX_NEW): Define. - (cons_fix_new_mips): Declare. - - Changes to let cons handle bignums like general expressions. - * expr.h (expressionS): New field X_unsigned. - * expr.c (operand): Initialize X_unsigned to 1. Set it to 0 for - unary minus case. - (expr) Fix typo resultP to right if missing operand. Set - X_unsigned to 1 when building new expression. - * read.c (potable): Make "octa" and "quad" call cons, not - big_cons. - (cons): Handle bignums. If given an O_constant (small integer) to - fill a big space, turn it into a bignum. - (parse_bitfield_cons): Set X_unsigned field. - (bignum_low, bignum_limit, bignum_high, grow_bignum, big_cons): - Removed. - * read.h (big_cons): Remove prototype. - * symbols.c (resolve_symbol_value): Don't give a warning if a - symbol in expr_section can not be resolved. - (S_SET_VALUE): Clear X_unsigned. - * write.c (write_object_file): If resolve_symbol_value failed on a - symbol we are writing out, give a warning. - * config/tc-h8500.c (parse_reglist): Set X_unsigned. - * config/tc-hppa.c (md_pseudo_table): Change "octa" and "quad" to - call pa_cons, not pa_big_cons. - (pa_big_cons): Remove. - * config/tc-hppa.h (pa_big_cons): Remove declaration. - * config/tc-i960.c (md_pseudo_table): Change "quad" to call cons, - not big_cons. - -Tue Oct 5 10:53:36 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * doc/as.texinfo (Copying): new node, to handle the recent changes - in the texinfo/gpl.texinfo file - -Mon Oct 4 17:10:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (big_cons): Handle "0" correctly. - - * config/tc-mips.c (md_begin): Set target_big_endian correctly. - -Mon Oct 4 15:37:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c (m68k_ip): Mode 7.3 operand using PC should - have pc-relative fixup. - (md_parse_option): Move "-k" case down near "-pic" case. - - * configure.in: Alphabetize list of cpu type alternatives. Enable - OS values of "linux*elf*" and "linux*coff*" to select those - formats, with linux emulation. Don't bother checking for upper- - or mixed-case versions of "ose". - -Thu Sep 30 11:05:35 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * config/z8k.c (md_pseudo_table): add "unseg". - -Wed Sep 29 16:15:11 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * config/m88k-opcode.h (m88k_opcodes): correct a few mistakes - found while extending the dissassembler. - -Tue Sep 28 12:02:04 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * configure.in: Split i386 LynxOS out from other coff targets, - add a specific Lynx emulation. - Add m68k LynxOS target. - * config/tc-i386.c: Define specific Lynx target format. - * config/tc-m68k.c: Define specific Lynx target format. - * config/te-lynx.h: New file. - - * config/obj-coffbfd.h: Don't set TARGET_FORMAT to be - "coff-{i386,m68k}" if TARGET_FORMAT already defined. - (INIT_STAB_SECTION): Define. - * config/obj-coffbfd.c: Include . - (write_object_file): Look for .stab sections and call - adjust_stab_section. - (adjust_stab_section): New function, fills in the first symbol - of a stab section with number of symbols and string table size. - (obj_coff_init_stab_section): New function, creates the initial - symbol for a stab section. - -Mon Sep 27 15:21:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/atof-vax.c (md_atof): Return null on success instead of - empty string. - * config/atof-tahoe.c (md_atof): Ditto. - * read.c (float_cons): Expect a null pointer for success, not an - empty string. - - * hash.c (hash_insert, hash_jam, hash_grow): Return null pointer - on success, instead of empty string. All callers changed. - - * config/tc-vax.c: Use PARAMS in declarations. - (vip_op): Use NULL instead of empty string for success in error - and warning fields. - -Sun Sep 26 23:45:29 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * expr.c (expr) [DIFF_EXPR_OK]: Permit subtraction of two symbols - in different defined segments. - - * write.c (relax_segment): Localize "aim" variable. If - DIFF_EXPR_OK, don't impose checks on symbol segment types. - (fixup_segment) [DIFF_EXPR_OK]: If sub_symbolP is in the current - segment, convert to a PC-relative fixup and discard the symbol. - - * config/tc-m68k.c (flag_want_pic): New variable, mostly ignored. - (md_parse_option) [TE_SUN3]: Set it for "-k". - (m68k_ip): Generate proper fixup for mode 7.3. - * config/tc-m68k.h (DIFF_EXPR_OK): Define. - -Sat Sep 25 05:08:19 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c (struct m68k_incant, getone, gettwo): Moved - earlier in the file. - (insop, add_exp): Now defined as functions, for readability. - (insop): Now takes two arguments; callers changed. - -Fri Sep 24 12:37:59 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * config/tc-m88k.c (get_o6): new function. - (get_bf, get_cmp, get_cnd, get_cr, get_fcr, get_imm16, get_reg, - get_vec9, getval, get_pcr, calcop, match_name): make static and - prototype. - (s_file): remove extraneous forward decl. - (md_begin): add const to retval decl. - (calcop): cope with instructions without arguments. Handle 'o' - type argument, the o6 field of the prot insn. - (md_estimate_size_before_relax): return a dummy value. - - * config/m88k-opcode.h (m88k_opcodes): comment change; o6 field is - in bits 10 through 7. flt.[dxs]s requires an r register in the - second argument. New instruction lda.x. New instruction muls - (alias for mul). - -Fri Sep 24 13:43:30 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (distclean): Recurse like clean. - * doc/Makefile.in (distclean): New target. - - * config/tc-mips.c (md_begin): Set BFD architecture and machine - based on MIPS ISA level. - -Thu Sep 23 17:58:58 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * as.c (main): "exhausted", not "exhuasted". - - * struc-symbol.h (struct symbol): Add sy_used_in_reloc field. - * write.c (adjust_reloc_syms): Set sy_used_in_reloc. - (write_object_file): Never strip symbols with sy_used_in_reloc - set. - - * config/obj-elf.c (obj_elf_section): Rewrote to handle both - Solaris and SVR4 style .section pseudo-ops. - (obj_elf_ident): Set SEC_READONLY for .comment section. - * config/tc-sparc.c (md_apply_fix): If this is ELF, and we're - generating a reloc, don't apply a fix. - -Thu Sep 23 13:16:58 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-coffbfd.c (relax_align): Now static. - -Mon Sep 20 19:23:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (get_stab_string_offset): Make non-static. Make - arguments const. Don't align strings to 4 byte boundaries. - * read.h: Declare get_stab_string_offset. - * config/obj-elf.c (obj_elf_section): Set SEC_ALLOC as well as - SEC_LOAD for progbits section. - (obj_elf_init_stab_section): New function. - (adjust_stab_sections): Add casts to avoid warnings. - * config/obj-elf.h (INIT_STAB_SECTION): Call - obj_elf_init_stab_section. - (OBJ_PROCESS_STAB): Removed definition. - -Fri Sep 17 18:12:34 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.h (S_GET_SIZE): Define. - (obj_frob_forward_symbol): Define. - * config/tc-i386.c (line_comment_chars): Initialize in all cases. - -Thu Sep 16 14:23:08 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * tc.h: Declare tc_gen_reloc differently depending upon - RELOC_EXPANSION_POSSIBLE. - * config/obj-elf.c (obj_elf_section): Only set flags when first - creating the section. - -Wed Sep 15 12:15:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (append_insn): Don't swap a trap instruction - with a branch. - -Tue Sep 14 13:31:04 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.c (obj_elf_data, obj_elf_text): New functions; - set previous_section and previous_subsection and then call s_data - and s_text, respectively. - (obj_pseudo_table): Add data and text. - (obj_elf_section): Add SEC_LOAD to default initialization of - flags. Treat .rodata1 like .rodata. Set SEC_LOAD as well as - SEC_ALLOC for "alloc" string. Don't bother trying to find the - section; just use subseg_new. - - * read.c (change_to_section): Removed. This is now done by - subseg_new. - (get_stab_string_offset): Rearranged somewhat. Create the section - using subseg_new. Store the string index in seg_info, rather than - in a static variable. Force the first string to be empty. Use - frag_more rather than FRAG_APPEND_1_CHAR. - (s_stab_generic): Rewrote. - * subsegs.h (segment_info_type): Added stabu union. - * subsegs.c (subseg_new): Initialize stab_string_size to 0. - * config/obj-aout.c: Don't include aout/stab_gnu.h. - (obj_aout_stab, obj_aout_desc): Removed. - (obj_pseudo_table): Removed desc and stabX entries. - * config/obj-bout.c: Same changes as config/obj-aout.c. - * config/obj-bout.h (S_SET_TYPE): Define. - (tc_bout_fix_to_chars): Declare. - * config/obj-coff.c (obj_coff_stab): Removed. - (obj_pseudo_table): Removed desc and stabX entries. - * config/obj-coff.h (SEPARATE_STAB_SECTIONS): Define. - * config/obj-coffbfd.c (current_stab_symbol): Removed. - * config/obj-coffbfd.h (obj_symbol_type): Removed n_strx, n_type, - n_other, n_desc and n_value fields. - (S_{S,G}ET_{OFFSET,OTHER,TYPE,DESC}): Removed. - (MAKE_STAB_SYMBOL): Removed. - * config/obj-ecoff.c (obj_ecoff_stab): Renamed to ecoff_stab. - Changed arguments and removed parsing code. - (obj_pseudo_table): Removed stabX entries. - * config/obj-ecoff.h (ecoff_stab): Declare. - (OBJ_PROCESS_STAB): Define. - * config/obj-elf.c: Don't include aout/stab_gnu.h. - (obj_elf_stab, obj_elf_xstab, obj_elf_desc, - elf_stab_symbol_string, elf_stab_symbol, obj_elf_stab_generic): - Removed. - (obj_pseudo_table): Removed desc, stabX and xstabs entries. - (obj_elf_version): Use subseg_new, not bfd_make_section. Don't - set SEC_LOAD for .note section. - (adjust_stab_sections): Get frag pointer from seg_info, rather - than looking through frags. - * config/obj-elf.h (S_{S,G}ET_{OTHER,TYPE,DESC}): Removed. - (SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB): - Define. - * config/obj-vms.c (obj_aout_stab): Removed. - (obj_pseudo_table): Removed stabX entries. - * config/obj-vms.h (S_SET_TYPE): Define. - - * as.h: Declare listing. - * read.c: Don't declare listing. - (emit_expr): Cast fix_new_exp argument. - (parse_bitfield_cons): Correct printf format. - * symbols.c (symbol_new): Add cast to avoid warning. - * write.h: Declare text_last_frag and data_last_frag. - * config/obj-bout.c (obj_bout_line): Added dummy argument. - * config/obj-coffbfd.c: Add some casts to avoid warnings. - * config/tc-a29k.c: Likewise. - * config/tc-i960.c: Likewise. Also fully bracket structure - initializations, fix printf formats, and remove unused variables. - -Mon Sep 13 16:48:38 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (s_desc): Only compile and use if S_SET_DESC is defined. - * struc-symbol.h: Declare verify_symbol_chain and - verify_symbol_chain_2 even if not SYMBOLS_NEED_BACKPOINTERS. - * symbols.c (verify_symbol_chain): Removed useless expression. - * write.c (headers, the_object_file): Only use if not - BFD_ASSEMBLER and not BFD. - (fixup_segment, cvs_frag_to_fill): Only use if BFD_ASSEMBLER or - not BFD. - (merge_data_into_text): Only use if BFD_ASSEMBLER or (not BFD and - not OBJ_AOUT). - * write.h: Declare relax_segment. - * config/obj-coffbfd.c (stack_pop, stack_push, stack_init): Made - static. - (stack_top): Commented out, since it's not used. - Fixed up pseudo-op functions to take an ignored int argument. - (size_section): Added default BAD_CASE to switch. - Changed bzero calls to memset. - * config/obj-coffbfd.h (S_IS_LOCAL): Call strchr on S_GET_NAME - (s), not on s itself. - * config/tc-a29k.c (s_use): Take ignored int argument. Only - define if OBJ_COFF is not defined. - * config/tc-i386.c: (fits_in_signed_byte, smallest_imm_type): Make - argument signed again. - * config/tc-m68k.c (s_bss, s_even, s_proc): Take ignored int - argument. - (m68k_ip): Fully bracket initialization of archs. - Correct several formats for __LINE__ to be %d rather than %s. - (init_table): Fully bracket initialization. - Cast values larger than 0x7f assigned to fr_opcode to char. - - * subsegs.c: Renamed non-BFD_ASSEMBLER subseg_new to subseg_set. - Wrote non-BFD_ASSEMBLER subseg_new. Now subseg_new always takes a - section name, and subseg_set always takes a segT. Changed all - callers as appropriate. - * config/obj-coffbfd.c (change_to_section): Renamed to - obj_coff_add_segment. Corrected. Made callers use subseg_new. - * config/obj-coffbfd.h (obj_segment_name, obj_add_segment): - Define. - -Mon Sep 13 13:15:03 1993 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-sparc.h (LOCAL_LABEL): Remove test for name[0] == 'L'. - -Fri Sep 10 11:22:08 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.h (S_SET_SIZE): Actually set the size. - - Gcc lint. - * Added a number of casts to function calls. - * app.c (do_scrub_begin), as.c (main), expr.c (integer_constant, - operand, expr), read.c (read_begin, HANDLE_CONDITIONAL_ASSEMBLY, - read_a_source_file, s_align_bytes, demand_empty_rest_of_line, - ignore_rest_of_line, big_cons, is_it_end_of_statement, s_ignore), - read.h (is_name_beginner, is_part_of_name), config/obj-elf.c - (obj_elf_section), config/tc-i386.c (parse_register), - config/tc-sparc.c (isoctal, s_proc): Cast char - array indices to unsigned char. - * app.c (process_escape): Make static. Add prototype. Change - argument from char to int. - * as.c: Include output-file.h for prototypes. Comment out unused - function got_sig. - * Makefile.in (as.o): Depend on output-file.h. - * as.h (BAD_CASE): Cast val argument to long, and use %ld. - (pseudo_typeS): Add prototype to poc_handler field. - (print_version_id): Add prototype. - (xmalloc, xrealloc): Change size arguments to unsigned long. - (do_scrub_next_char): Add prototypes for function arguments. - (had_errors, had_warnings, scrub_from_file): Remove duplicate - declarations. - * atof-generic.c (atof_generic): Make size variables unsigned. - * cond.c (ignore_input): Removed unused local variable ptr. - * expr.c (floating_constant, integer_constant): Make static. Add - prototypes. - * flonum-copy.c (flonum_copy): Make size variables unsigned. - * frags.h: Add prototype for frag_init. - * hash.h, hash.c: Change hash values from char * to PTR, make hash - strings const, make returned error strings const char *. Added - prototypes for functions. - * input-file.h, input-file.c (input_file_buffer_size): Return - unsigned int. - * input-scrub.c (buffer_length): Make unsigned. - (input_scrub_push, input_scrub_pop): Make static. - * listing.c (list_symbol_table): Cast sprintf argument to unsigned - long and use %lx. Print name of segment rather than address of - structure. - (listing_list, listing_title): Change argument to int. - (listing_eject, listing_flags, listing_psize): Add int argument. - * listing.h: Corresponding declaration changes. - * obj.h (obj_emit_symbols): Rename prototype argument to avoid - shadowing. - * read.h: Change get_absolute_expression prototype to return - offsetT. Add prototype for next_char_of_string. Various - prototype changes. - * read.c: Remove prototype for next_char_of_string. - (pobegin): Make errtxt const. Make new_length, tmp_len and num - unsigned. - (s_abort, s_align_ptwo, s_comm, s_data, s_app_line, s_fill, - s_globl, s_lsym, s_org, s_set, s_text, s_desc): Add int argument. - Change all callers. - (s_comm): Change temp from valueT to offsetT. Cast to long when - printing and use %ld (only for error messages anyhow). - (s_long, s_int): Remove unused functions. - (cons): Change argument to int. - (emit_expr): Use %lx when printing longs. - (get_absolute_expression): Return offsetT, not long. - (get_stab_string_offset): Comment out unless - SEPARATE_STAB_SECTIONS. - (s_stab_generic): Remove unused offset. Define seg_is_new only - if SEPARATE_STAB_SECTIONS. Use toP only in local block. - * struc-symbol.h (verify_symbol_chain_2): Add prototype. - * symbols.c: Remove nested comment. - (symbol_new): Rename value to valu. - (colon): Use %ld and cast to long in error message. - * symbols.h: Remove duplicate verify_symbol_chain declaration. - * tc.h: Remove unused md_emit_relocations declaration. - (tc_gen_reloc): Add declaration. - * write.c (cvt_frag_to_fill): Change first argument name depending - on BFD_ASSEMBLER. - (write_relocs): Remove unused offset, frags. Remove tc_gen_reloc - declarations. Make n unsigned. - (write_contents): Remove unused i, n, relocs, fixp. Rename frags - to f to avoid shadowing. - (write_object_file): Define fragP only if not BFD_ASSEMBLER or not - WORKING_DOT_WORD. Remove unused keep. Only declare punt and - punt_it if they will be used. Make i and n unsigned. - (fixup_segment): Cast to long and use %ld in error message. - * xmalloc.c (xmalloc, xrealloc): Make size argument unsigned. - * config/obj-aout.h: Remove nested comment. Add prototype for - obj_aout_frob_symbol. - (obj_aout_line, obj_aout_desc): Add int argument. - * config/obj-ecoff.c: Changed build routines to use an unsigned - offset. - (add_string): Make len unsigned long. - (obj_ecoff_stab): Use %lu in error message. - * config/obj-elf.c (obj_elf_common): Comment out unused label - allocate_bss. - (obj_elf_frob_symbol): Return 0 (currently broken). - (obj_elf_desc, obj_elf_version, obj_elf_size, obj_elf_type, - obj_elf_ident, obj_elf_weak, obj_elf_local, obj_elf_common, - obj_elf_line, obj_elf_previous): Add int argument. - (obj_elf_write_symbol_p): Make static. - * config/obj-elf.h (obj_elf_write_symbol): Add prototype. - * config/tc-hppa.h: Remove declarations of functions declared in - read.h. - * config/tc-i386.c (ENCODE_RELAX_STATE): Cast to relax_substateT. - (s_bss): Add int argument. - (fits_in_signed_byte, smallest_imm_type): Make argument unsigned. - (dummy): Remove unused function. - (md_assemble): Rename local o to op to avoid shadowing. - (tc_gen_reloc): Rename local reloc to rel to avoid shadowing. - * config/tc-m68k.c (s_data1, s_data2): Add int argument. - * config/tc-mips.c (mips_ip, md_apply_fix): Cast to long and use - %ld in error messages. - * config/tc-sparc.c: Remove duplicate declarations. - (getExpression): Rewrite condition to avoid empty conditional - body. - (s_reg, s_proc, s_reserve, s_common, s_seg, s_xword): Add int - argument. - -Thu Sep 9 17:10:00 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - Changes from Jeff Law: - - * config/tc-hppa.c (md_assemble): Fix typo. - (pa_ip): Delete unused variables and labels. Do not check for - unsigned values being < 0, it can't happen. - (is_same_frag): Return a value in recursive call case. - (pa_callinfo): Delete unused variables and labels. - (pa_comm): Likewise. - (pa_copyright): Likewise. - (pa_export): Likewise. - (pa_import): Likewise. - (pa_param): Likewise. - (pa_space): Likewise. - (pa_subspace): Likewise. - -Thu Sep 9 15:05:34 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * read.c (get_stab_string_offset, s_stab_generic): If - BFD_ASSEMBLER, call subseg_set rather than subseg_new. - -Wed Sep 8 15:09:17 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-elf.c (obj_elf_section): Set SEC_LOAD when using - default flag values. - -Tue Sep 7 10:22:52 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * read.c: (change_to_section): Don't include body if not MANY_SECTIONS. - - * read.c: (s_stab, s_xstab, s_desc): New functions to parse - various stab-related directives. - * read.h: (s_stab, s_xstab, s_desc): New function prototypes. - * write.c: (merge_data_into_text): Fix ifdef tangle. - * config/obj-coffbfd.c (current_stab_symbol): Fake symbol - for stab reader to use. - * config/obj-coffbfdh.h (obj_symbol_type): Added fields for - stab reader, macros to access. - -Fri Sep 3 16:44:03 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-elf.h (elf_symbol): No longer special-cased on - sparcv9, since elf_symbol_type is now independent of size. - - * config/obj-elf.h (elf_symbol): Fixed name of elf_symbol_type. - - * config/tc-hppa.h (struct default_subspace_dict, struct - default_space_dict): Field "sort" is now unsigned char. - - * config/tc-hppa.c (pa_def_subspaces, pa_def_spaces): Align - columns for easier reading. - (bcmp, index): Deleted USG-specific definitions. Should be dealt - with in ho-*.h, or in libiberty. Changed mention of index to - strchr. - (label_symbolP, label_symbol_defined, callinfo_found, - within_entry_exit, exit_processing_complete, within_procedure, - pa_def_subspaces, pa_def_spaces, pa_pseudo_op_moves_pc, - label_symbols_rootP, pa_get_label, pa_label_is_defined, - pa_undefine_label): Now static. - (movers): Now const, in addition to pointing to const data. - * config/tc-hppa.h (label_symbolS_rootP, pa_get_label, - pa_label_is_defined, pa_undefine_label, pa_pseudo_op_moves_pc): - Delete declarations. - - Merged more changes from Jeff Law and Pete Hoogenboom: - - * config/tc-hppa.c (pa_def_subspaces, pa_def_subspaces): Remove - entries for .stab and .stabstr. - - * config/obj-elf.c: (elf_stab_symbol_string): Set the - SEC_LOAD attribute for the .stabstr section. - (obj_elf_stab_generic): Set the SEC_LOAD attribute for the - .stab section. - (obj_elf_stab_generic): Change '#if 1' to '#if 0'. - (obj_elf_stab_generic): Incorrect byte count on call to - md_number_to_chars function. - - * config/tc-hppa.c (hppa_tc_symbol): Static functions need - argument relocation bits too. - - * config/tc-hppa.c (pa_stringer): Correctly handle escaping - characters which should appear unaltered in the output string (for - example an escaped double-quote). - - * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Always - initialize name. - (pa_parse_neg_cmpsub_cmpltr): Likewise. - (pa_parse_nonneg_add_cmpltr): Likewise. - (pa_parse_neg_add_cmpltr): Likewise. - - * config/tc-hppa.h (parse_cons_expression_hppa): Remove prototype - for now. - (cons_fix_new_hppa): Likewise. - * config/tc-hppa.c (md_apply_fix): Fix type of valp to match - prototype. - - * config/tc-hppa.c: Include libhppa.h. - - * config/tc-hppa.h: Delete extern declarations of functions - found in libhppa.h. - - * config/tc-hppa.c (pa_space): Rework to avoid unwanted #ifdef - OBJ_ELF conditionals. - * config/tc-hppa.h (LOCAL_LABEL): Correctly identify local labels - on the PA. - -Thu Sep 2 10:43:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (macro_build): Accept 'z', and ignore it. - (macro): Use "z,s,t" for div instructions to match corresponding - change in opcode table. - (mips_ip): Added 'z'--must be zero register. - -Wed Sep 1 15:56:42 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * write.c (write_relocs) [RELOC_EXPANSION_POSSIBLE]: Declare - tc_gen_reloc correctly. - - * configure.in: Use "case" instead of "if" when possible. Rewrote - Makefile editing to reduce work done. Treat "hppa*" as "hppa". - -Wed Sep 1 12:19:07 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * config/obj-coffbfd.c (obj_coff_section): add 'd' as an alias for - section type of data. 'd' seems to be used for m88k. - -Wed Aug 25 22:33:22 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_align, s_stringer, s_cons, s_float_cons, - s_mips_space): Set insn_label to NULL to avoid changing it at the - next .align statement. - (append_insn): Don't swap jal with instruction that sets the - register that jal sets. - -Wed Aug 25 16:15:57 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * configure.in: recognize m88110. - -Wed Aug 25 13:37:46 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - Merged changes from Pete Hoogenboom and Jeff Law at Utah: - * config/tc-hppa.c (pa_build_unwind_subspace): SEC_ALLOC should - not be on for .hppa_unwind. - (md_pseudo_table): .PARAM and .param are valid pseudo-ops for GAS. - (pa_param): New function to handle .PARAM directives. - (pa_ip): Pass "isbranch" argument down to pa_parse_*_compltr - functions. Handle '|' for movb; allow movb,n. - (pa_parse_nonneg_cmpsub_cmpltr): Delete old useless - version. Handle cases where no completer exists for - comb,n or addb,n. - (pa_parse_neg_cmpsub_cmpltr): Handle cases where no - completer exists for comb,n or addb,n. Make logic - mirror that of pa_parse_nonneg_cmpsub_cmpltr. - (pa_parse_nonneg_add_cmpltr): Likewise. - (pa_parse_neg_add_cmpltr): Likewise. - * config/tc-hppa.h (pa_param): Declare. - -Tue Aug 24 15:41:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-hppa.c (hppa_tc_make_symextn_section): Now static. - Added forward declaration. - - Merged changes from Pete Hoogenboom and Jeff Law at Utah: - - * config/obj-elf.c (elf_frob_file): Arguments were incorrect on - call to elf_tc_make_sections. - (obj_elf_version): A .note section shouldn't have the SEC_ALLOC - attribute. - - * config/tc-hppa.c (hppa_tc_make_sections): Add some processing to - handle symbol extension sections. - - * config/tc-hppa.c (pa_build_symextn_section): New function to - create a symbol extension section. - (pa_export_args): Make call to pa_build_symextn_section. - (hppa_tc_symbol, hppa_tc_make_sections, - hppa_tc_make_symextn_section): New functions. - * config/tc-hppa.h: Update elf_tc_symbol and elf_tc_make_sections - macros. - - * read.c (emit_expr): Place check for TC_CONS_FIX_NEW in the - BFD_ASSEMBLER branch as well. - - * config/tc-hppa.h: If ELF is the target object format, define - some ELF- and hppa-specific types and constants. - - * config/tc-hppa.c (getExpression): Fix a typo. - - * read.c (read_a_source_file): Use TC_EQUAL_IN_INSN to determine - if a `=' is part of an instruction. - (read_a_source_file): Handle case where end-of-line markers are - also used within instructions. - * config/tc-hppa.h (TC_EQUAL_IN_INSN, TC_EOL_IN_INSN): Define. - - * config/tc-hppa.c (md_apply_fix_1): Keep relocations for - out-of-range branches/'calls using "bl" or calls which may need - argument relocation stubs. Do not need/keep relocations for - conditional branches. - (elf_hppa_final_processing): Fix calculation of function size. - - * config/obj-elf.c (obj_elf_version): Mark .note section as - READONLY. - - * config/tc-hppa.c (parse_cons_expression_hppa): Pass exp, not the - address of exp, to expression. - (pa_build_unwind_subspace): Turn SEC_HAS_CONTENTS flag on. - (md_apply_fix_1): Delete unwanted comments. - (process_exit): Symbols marking the end of a function are always - BSF_LOCAL. - - * config/tc-hppa.c: Include elf32-hppa.h from BFD tree. - (pa_space): Declare and initialize gdb_section. - - * config/obj-elf.c (elf_frob_file): Change - elf_tc_final_processing_hook to elf_tc_final_processing. - - * config/tc-hppa.c (fix_new_hppa): Fix argument list to match - argument type declarations. - (getExpression): Fix typo. - (pa_export_args): Change elf_symbol_type to elf32_symbol_type. - (elf_hppa_final_processing): Likewise. Name changed from - elf_hppa_final_processing_hook. - (start_symbol_root, start_symbol_last): Deleted. - - * config/tc-hppa.h (TC_PARSE_CONS_EXPRESSION): Fix typo. - - * config/tc-hppa.h: Replace "symbolS" with "struct symbol" to - avoid changing include ordering. - - * config/tc-hppa.c (pa_ip, case 'y'): Handle just like 't'. - -Mon Aug 23 12:47:58 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (set_at): Added unsignedp argument. Use - load_register. - (set_at_unsigned): Removed; changed callers to use set_at. - (load_register): Removed unused ip argument. Changed callers. - (append_insn): Don't swap branch and branch likely. - (macro_build): Handle 'u'. - (load_register): Handle 64 bit constants. - (macro): Added M_DABS, removed M_ABSU. Numerous changes to - support 64 bit constants. - (mips_ip): Use hex constants in range checks for clarity. - (md_number_to_chars): Support 8 byte values. - -Fri Aug 20 16:50:59 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * config/tc-m88k.h: updated copyrights. - (TC_CONS_RELOC): declare to be RELOC_32. - -Fri Aug 20 11:16:44 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_isa): New static variable. - (md_begin): Initialize mips_isa based on TARGET_CPU. Don't sanity - check macros. Set text alignment and GP size here. - (md_assemble): Don't set text alignment and GP size here. - (append_insn): Don't insert NOPs for load delays if mips_isa >= 2. - Use the right mask and shift for WRITE_FPR_T and WRITE_FPR_S. Add - a NOP after a branch likely. - (mips_emit_delays): Don't insert NOPS for load delays if mips_isa - >= 2. - (macro): Support r6000 and r4000 macros. - (mips_ip): Check insn ISA level against mips_isa before using it. - Added 'x' case for ignored register. - (md_parse_option): Handle -mipsN and -mcpu=XX. - -Fri Aug 20 01:26:52 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-i386.c (md_pseudo_table) [OBJ_ELF]: Handle ".zero". - -Thu Aug 19 12:15:18 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (s_local): Function moved and renamed... - * config/obj-elf.c (obj_elf_local): ...to here. - * config/tc-sparc.c (md_pseudo_table), config/obj-elf.c - (obj_pseudo_table): Move handling of ".local". - - * tc.h (md_parse_option): Don't declare if defined as a macro. - - * config/tc-i386.h (NO_RELOC) [BFD_ASSEMBLER]: Define as - BFD_RELOC_NONE. - (md_parse_option): New macro, converted from function. - * config/tc-i386.c (md_parse_option): Function deleted. - (comment_chars) [OBJ_ELF]: Include "/". - (line_comment_chars) [OBJ_ELF || TE_I386AIX]: Don't include "/". - (md_assemble): Cast 0xe9 to char explicitly, to avoid compiler - warning. - (md_assemble, md_estimate_size_before_relax, md_create_long_jump): - Call reloc for fix_new type, or use correct enumerator, instead of - always using NO_RELOC. - (i386_operand): Change "ifndef I386COFF" to "ifdef OBJ_AOUT" for - tests for valid section. - (md_convert_frag) [BFD_ASSEMBLER]: Compensate for frag start - address. - (md_apply_fix_1) [BFD_ASSEMBLER]: For pc-relative reloc with - symbol, compensate for location of reloc. - (reloc, BFD_RELOC_32, BFD_RELOC_32_PCREL) [!BFD_ASSEMBLER]: Define - to return zero. - -Wed Aug 18 16:51:29 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-elf.c: Undef NO_RELOC before including aout/aout64.h. - (obj_elf_weak): New function. - (obj_pseudo_table): Handle ".weak". - (obj_elf_section): If section directive includes a string, ignore - it for now. Accept "progbits" flag. - (obj_elf_type): Accept `@' before flag name. - - * write.c (relax_and_size_seg) [BFD_ASSEMBLER]: Get rid of `if(1)' - condition. - (fixup_segment) [BFD_ASSEMBLER]: Use bfd_is_com_section, rather - than checking for bfd_com_section directly. - (fixup_segment): Simplify range check. - (fixup_segment) [OBJ_COFF && TC_I960]: Simplify cpp condition - test. - - * symbols.h (S_SET_WEAK): Declare. - * symbols.c (S_SET_WEAK): New function. - (S_SET_EXTERNAL, S_CLEAR_EXTERNAL): Don't bother with BSF_EXPORT, - it's not a separate flag any more. Clear BSF_WEAK. - - * read.c (potable): Treat "string" like "asciz". - -Wed Aug 18 15:30:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (append_insn): Don't swap branch instructions - if .set nobopt or .set volatile. - (gp_reference): .lit8 and .lit4 are accessed via the GP register. - (macro): Added cases M_LI_S, M_LI_SS. Fixed M_LI_D and M_LI_DD. - (mips_ip): Added cases 'F', 'L', 'f', 'l' for floating point. - * config/obj-ecoff.c: Renamed some variables to avoid shadow - warnings. - -Mon Aug 16 14:16:02 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config/obj-coff.h (S_IS_COMMON): add missing backslash - - * configure.in (z8k-*-{coff,sim}): use coffbfd for this target - -Thu Aug 12 11:47:58 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (mips_ip): Suggested by - davidj@ICSI.Berkeley.EDU (David Johnson): Don't accept symbolic - names for 'E' and 'G' argument types (coprocessor registers) and - don't warn if $1 is used on the coprocessor. - (macro): Handle M_{L,S}WC{0,2,3}_AB correctly. - -Mon Aug 9 12:09:14 1993 Doug Evans (dje@canuck.cygnus.com) - - * read.c (emit_expr): Use BFD_RELOC_16 for 2-byte values. - * config/tc-sparc.c (md_apply_fix, tc_gen_reloc): Handle - BFD_RELOC_16. - * config/tc-sparc.h (WORKING_DOT_WORD): Define. - -Mon Aug 9 13:36:22 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * write.c (merge_data_into_text): Define only if BFD_ASSEMBLER is - defined or BFD is not. - (relax_and_size_all_segments): Declare local variable fragP. - -Fri Aug 6 15:22:53 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (md_apply_fix, case BFD_RELOC_32): Fill in - bytes with real values, not zeros. - -Fri Aug 6 10:57:59 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * configure.in (mips-*-riscos*, mips-*-sysv*): New (untested) - targets, using ecoff and mips-big. - - * config/tc-mips.c (mips_ip): From davidj@ICSI.Berkeley.EDU (David - Johnson): Added case for 'C' for coprocessor instruction codes. - -Thu Aug 5 13:08:56 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (md_apply_fix, case BFD_RELOC_64): Fill in - bytes with real values, not zeros. - (md_pseudo_table): Call cons for .uaxword. - - * config/obj-elf.c (obj_pseudo_table): Handle ".8byte". - - * read.c (emit_expr): Use BFD_RELOC_64 for 8-byte expressions. - - * write.c (write_object_file): Test DEBUG_SYMS instead of DEBUG - for verifying symbol chain. - (merge_data_into_text, relax_and_size_all_segments): New - functions, split out from write_object_file. - -Tue Aug 3 15:43:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-elf.c (obj_elf_stab_generic, in disabled code): If - debug section is new, allocate an extra 12 bytes at its start. If - ".stabs" type is N_SO, fill in filename symbol field of that first - entry. Return early if "goof", to simplify later code slightly. - (adjust_stab_sections): New function. - (elf_frob_file): Apply adjust_stab_sections to each section. - - * config/obj-elf.c (obj_elf_section, obj_elf_previous): No longer - static. - * config/obj-elf.h (obj_elf_section, obj_elf_previous): Declare. - * config/tc-sparc.c (md_pseudo_table): Call them for "pushsection" - and "popsection", and call cons for "uaword" and "uahalf". - - * config/obj-elf.c (obj_elf_version): Use English in error - messages. - -Tue Aug 3 11:29:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-ecoff.c: Updated for BFD ECOFF changes. Now gets the - swapping routines and external structure sizes via the - ecoff_backend information. No longer includes coff/mips.h. - -Mon Aug 2 17:35:48 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-ecoff.c (get_tag): Save tag name in permanent memory - and in hash_ptr->string. - - * app.c (do_scrub_next_char): Reset state to 0 after .appline if - file name is not seen. - -Mon Aug 2 11:51:41 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (md_apply_fix, case BFD_RELOC_64): New case, - parallel to BFD_RELOC_32. - (tc_gen_reloc): Accept BFD_RELOC_64. - -Thu Jul 29 22:21:28 1993 Ian Lance Taylor (ian@cygnus.com) - - * write.c: Don't use short int in a prototype. - - * expr.c (operand): Make return value simply depend on contents of - returned expression. - -Thu Jul 29 18:38:37 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * configure.in: sparc*-aout and sparc*-vxworks are BFD assemblers - -Thu Jul 29 18:38:37 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * config/ho-sunos.h: remove some old function decls that conflict - w/ ANSI, and which weren't needed anyway - -Wed Jul 28 16:34:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-elf.h (obj_frob_symbol): Renamed from tc_frob_symbol, - and disabled since it breaks Ian's new symbol-value code. - - * expr.c (integer_constant): Accept more digits if BFD64. - -Wed Jul 28 11:30:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-m68k.c (m68k_ip): If we have a normal constant when we - expect a bignum, turn it into a bignum. Output extra zeroes - before a short bignum, rather than after. - -Tue Jul 27 15:54:27 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * symbols.c (symbol_new): Conditionalize verify_symbol_chain call - on DEBUG_SYMS, not DEBUG. - (symbol_remove): Likewise. - (symbol_insert): Likewise. - -Tue Jul 27 08:45:05 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.c (mips_optimize): New static variable. - (append_insn): If mips_optimize == 0, always insert NOP - instructions. If mips_optimize < 2, don't swap branches. - (md_parse_option): If -Ox or -gx, set mips_optimize accordingly. - -Mon Jul 26 18:02:43 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * Makefile.in (clean): if testsuite does not exist, then skip it. - -Fri Jul 23 14:13:25 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-mips.c (prev_insn_unreordered, - prev_prev_insn_unreordered): New static variables. - (append_insn): Don't swap branch instruction if - prev_prev_insn_unreordered (see comment). - (mips_no_prev_insn): Clear the unreordered variables. - (s_mipsset): When turning on reordering, set the unreordered - variables. - -Fri Jul 23 13:09:44 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-elf.c (obj_elf_section): Sections ".init" and ".fini" - are also magic, and have special default flag settings. - (obj_elf_frob_symbol): Since the return value from this function - isn't used, don't bother calling obj_elf_write_symbol_p, since it - doesn't accomplish anything else. - - * config/tc-sparc.c (md_section_align): Round up section size only - for a.out format. - - * symbols.c: Don't define DEBUG by default. - -Thu Jul 22 12:09:41 1993 Ian Lance Taylor (ian@cygnus.com) - - * write.c (fix_new_exp): Handle a O_uminus expression. - - * expr.c (expr): Don't let absolute_section override - undefined_section for the return value. - - * read.c (read_a_source_file): In NO_PSEUDO_DOT case, if we find a - pseudo-op with a poc_handler field of NULL, ignore it and treat it - as an instruction instead. - * config/tc-m88k.c (md_pseudo_table): Add "set" with a NULL - poc_handler field. - - * config/tc-h8500.c (md_begin): Use a local variable when - initializing md_relax_table to avoid warnings about modifying a - supposedly const data structure. - -Thu Jul 22 10:58:51 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * config/obj-aout.c: Only include aout/aout64.h if BFD_ASSEMBLER - is defined. - -Wed Jul 21 17:32:02 1993 Fred Fish (fnf@deneb.cygnus.com) - - * configure.in (case ${host}): Map *-*-sysv4* to gas_host=sysv. - * configure.in (case ${generic_target}): Add i[34]86-*-sysv4* - case to set obj_format=elf. Must go before i386-*-sysv* case that - sets obj_format=coffbsd. Add *-*-sysv4* to *-*-elf and - *-*-solaris case, and move to before *-sysv* case that wants to - set obj_format to coff. - * config/tc-i386.c (i386_operand): Change all 'exp.X_op' to - 'exp->X_op'. - * config/tc-i386.c (md_apply_fix): Fix valp to be 'valueT *' for - BFD_ASSEMBLER case. - -Wed Jul 21 12:47:51 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-aout.c: Include aout/aout64.h. - (obj_aout_frob_symbol): Set BSF_DEBUGGING for a constructor - symbol, so that BFD doesn't tamper with the type. - - * read.c (read_a_source_file): If NO_PSEUDO_DOT is defined, look - up opcodes as pseudo-ops even if they don't start with '.'. - * config/tc-m88k.h (NO_PSEUDO_DOT): Define. - * config/tc-m88k.c (md_assemble): Removed special pseudo-op - handling. - (md_apply_fix): Set fx_offset to the upper 16 bits of the reloc. - Output the low 16 bits for RELOC_HI16, not the high 16 bits. - * config/obj-coffbfd.c (do_relocs_for): If TC_M88K, set the - r_offset field of the reloc to the fixup offset. - (fixup_segments): If TC_M88K, don't warn about fixup overflows. - * doc/as.texinfo: Minor updates. - -Tue Jul 20 19:28:56 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Extensive changes to permit symbols to contain any expression - type and to delay the computation of the expression until the - value is actually needed. This permits setting symbols to values - calculated based on object code size. Expressions were changed to - no longer be in a section, to stop the overloading of segment and - expression type that previously occurred. - - * as.c (big_section, pass1_section, diff_section, absent_section): - Removed. - (expr_section): Added (used for dummy symbols which hold - intermediate expression values). - (perform_an_assembly_pass): Create expr_section, do not create the - sections now removed. - * as.h (segT): Removed SEG_ABSENT, SEG_PASS1, SEG_BIG, and - SEG_DIFFERENCE. Added SEG_EXPR. - (SEG_NORMAL): Corresponding changes. - * subsegs.c (seg_name, subsegs_begin): Changed accordingly. - * write.c (write_object_file): Ditto. - * config/obj-aout.c (seg_N_TYPE): Ditto. - * config/obj-bout.c (seg_N_TYPE): Ditto. - * config/obj-coff.c (seg_N_TYPE): Ditto. - * config/obj-coffbfd.c (seg_N_TYPE): Ditto. - * config/obj-vms.c (seg_N_TYPE): Ditto. - - * expr.h (operatorT): Moved in from expr.c, added some values. - (expressionS): Added X_op field, removed X_seg field; renamed - X_subtract_symbol to X_op_symbol. - * expr.c: Extensive changes to assign expression types rather than - sections and to simplify the parsing. - * write.c (fix_new_internal): New static function. - (fix_new): Removed sub_symbol argument. - (fix_new_exp): New function, takes expression argument. - * write.h: Prototype changes for fix_new and fix_new_exp. - * cond.c (s_if): Changed accordingly. - * read.c (s_lsym, pseudo_set, emit_expr, parse_bitfield_cons, - parse_repeat_cons, get_segmented_expression, - get_known_segmented_expression, get_absolute_expression): Ditto. - * symbols.c (resolve_symbol_value, S_GET_VALUE, S_SET_VALUE): - Ditto. - * write.c (write_object_file): Ditto. - * config/obj-coff.c (obj_coff_def, obj_coff_val): Ditto. - * config/obj-coffbfd.c (obj_coff_def, obj_coff_val, - obj_coff_endef, yank_symbols): Ditto. - * config/obj-elf.c (obj_elf_stab_generic, obj_elf_size): Ditto. - * config/tc-a29k.c (md_assemble, parse_operand, machine_ip, - print_insn, md_operand): Ditto. - * config/tc-h8300.c (parse_exp, colonmod24, check_operand, - do_a_fix_imm, build_bytes): Ditto. - * config/tc-h8500.c (parse_exp, skip_colonthing, parse_reglist, - get_specific, check, insert, md_convert_frag): Ditto. - * config/tc-hppa.c (the_insn, fix_new_hppa, cons_fix_new_hppa, - md_assemble, pa_ip, getExpression, getAbsoluteExpression, - evaluateAbsolute, pa_build_unwind_subspace, pa_entry, - process_exit): Ditto. - * config/tc-hppa.h (STAB_FIXUP, is_DP_relative, is_PC_relative, - is_complex): Ditto. - * config/tc-i386.c (pe, md_assemble, i386_operand, - md_estimate_size_before_relax, md_create_long_jump): Ditto. - * config/tc-i860.c (md_assemble, getExpression, print_insn): - Ditto. - * config/tc-i960.c (parse_expr, subs, segs, md_convert_frag, - get_cdisp, mem_fmt, parse_ldconst, relax_cobr, s_sysproc, - i960_handle_align): Ditto. - * config/tc-m68k.c (struct m68k_exp, struct m68k_it, seg, op, - subs, add_fix, isvar, m68k_ip, md_assemble, md_convert_frag_1, - md_estimate_size_before_relax, md_create_long_jump, get_num): - Ditto. - * config/tc-m88k.c (md_assemble, get_imm16, get_pcr, - md_create_short_jump, md_create_long_jump): Ditto. - * config/tc-mips.c (md_assemble, append_insn, gp_reference, - macro_build, macro, my_getExpression): Ditto. Also removed - get_optional_absolute_expression; just use get_absolute_expression - instead. - * config/tc-ns32k.c (get_addr_mode, evaluate_expr, convert_iif, - fix_new_ns32k, fix_new_ns32k_exp, cons_fix_new_ns32k): Ditto. - * config/tc-ns32k.h (fix_new_ns32k prototype): Ditto. - * config/tc-sh.c (parse_exp, check, insert, md_convert_frag): - Ditto. - * config/tc-sparc.c (md_assemble, sparc_ip, getExpression, - print_insn): Ditto. - * config/tc-tahoe.c (struct top, md_estimate_size_before_relax, - tip_op, md_assemble): Ditto. - * config/tc-vax.c (seg_of_operand, md_assemble, - md_estimate_size_before_relax, md_create_long_jump): Ditto. - * config/tc-z8k.c (parse_exp, check_operand, newfix): Ditto. - -Tue Jul 20 12:17:16 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) - - * configure.in: i386-lynx is the same as i386-coff - -Mon Jul 19 15:21:20 1993 Ken Raeburn (raeburn@rtl.cygnus.com) - - * config/obj-elf.c (obj_elf_previous): New function. - (previous_section, previous_subsection): New vars. - (obj_elf_section): Save current place in case DWARF code wants us - to pop back to it. Handle unquoted section name as well as quoted - section name. Don't crash on invalid strings. - (obj_pseudo_table): Handle new pseudos "previous", "2byte", and - "4byte". - - * config/obj-elf.h: Don't include struc-symbol.h. - (obj_elf_frob_symbol): Declare arg as struct symbol *. - - * config/tc-sparc.h (LOCAL_LABEL) [OBJ_ELF]: Local labels can start with - "L" or "_.L_". - - * write.c (write_relocs): New function, split off from - write_contents. Use memset instead of bzero. - (write_object_file): Apply write_relocs to each section before - applying write_contents. - - * read.c (read_begin): Call obstack_begin with values closer to 1K - multiples. - (read_a_source_file, big_cons, float_cons): Use memcpy instead of - bcopy. - -Mon Jul 19 14:30:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/tc-m68k.c (m68k_ip_op): Don't decrement strend when - calculating opP->isiz; this permits the expression size to be - determined as well, later on. - - * expr.c (clean_up_expression): Don't cancel the subtraction of - undefined symbols. - - * read.c (s_data), config/obj-coffbfd.c (obj_coff_data): If -R, - switch to text section rather than data section. - -Mon Jul 19 12:35:39 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c (m68k_ip, case AINDX): Add 6 to operand - expression (to take the pc-rel instruction itself into account) - before using the expression, instead of after. - -Fri Jul 16 08:56:04 1993 Ian Lance Taylor (ian@cygnus.com) - - * read.c (float_cons): Simplified parsing logic. If - REPEAT_CONS_EXPRESSIONS is defined, accept a repeat count. - - * symbols.c (colon): Rather than a special case for TC_HPPA, - use new macro tc_frob_label. - * config/tc-hppa.h (tc_frob_label): Define. - - * config/tc-mips.c: Many changes to support simple assembler - optimization. - (insn_label, prev_insn, prev_prev_insn, dummy_opcode, - prev_insn_valid, prev_insn_frag, prev_insn_where, - prev_insn_fixp, prev_insn_is_delay_slot): New static - variables. - (insn_uses_reg, mips_no_prev_insn, mips_emit_delays, - mips_align, s_stringer, s_mips_space): New static functions. - (mips_define_label): New global function. - (md_pseudo_table): For "ascii", "asciz", "asciiz", call - s_stringer. Changed argument to float_cons from 0 or 1 to 'f' - or 'd'. For "space" call s_mips_space. - (md_begin): Call mips_no_prev_insn. - (append_insn): Only insert necessary NOP instructions. - (macro): Call mips_emit_delays before setting mips_noreorder. - Increment and decrement mips_noreorder rather than using - save_reorder_condition. Don't bother to use noreorder in - M_L_DOB and M_L_DAB, since append_insn will not insert a NOP. - (md_atof): Handle floating point numbers correctly for both - big and little endian targets. - (s_align, s_cons): Call mips_align rather than frag_align. - (s_change_seg, s_cons): Call mips_emit_delays. - (s_float_cons): Let float_cons do the work. - (s_mipsset): Call mips_emit_delays when setting noreorder. - * config/tc-mips.h (tc_frob_label): Define to be - mips_define_label. - - * config/obj-ecoff.c (ecoff_build_symbols, ecoff_build_procs, - ecoff_frob_files): Consistently use S_GET_VALUE rather than - bfd_asymbol_value. Warn if taking difference of symbols in - different segments. - -Thu Jul 15 11:51:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * config/obj-ecoff.c (ecoff_frob_file): Discard all open scopes, - with a warning. - - * config/obj-coffbfd.c (fixup_segment): If TC_M88K, don't adjust - by md_pcrel_from if we are relocating against a symbol (we still - need md_pcrel_from for a PC relative relocation within the same - file). - * config/tc-m88k.c (md_pcrel_from): Corrected return value. - (omagic): Removed unused variable. - - * Preliminary support for m88k-coff. - * configure.in (m88k-*-coff*): New target. Use coffbfd and - m88kcoff. - * config/m88kcoff.mt: New file. - * read.c (lex_type): New macro LEX_AT to set lex type of '@'. - (pseudo_set): Handle difference of symbols in different fragments - by saving the entire expression as the value of the symbol. - * symbols.c (resolve_symbol_value): Resolve difference - expressions. - * config/obj-coffbfd.c (obj_pseudo_table): If TC_M88K, accept - "sdef" as a synonym for "def". - * config/obj-coffbfd.h: If TC_M88K, include coff/m88k.h and set - TARGET_FORMAT. - (S_IS_LOCAL): Any symbol which includes \001 in the name is local. - * config/tc-m88k.c, config/tc-m88k.h: Numerous changes to bring - m88k port up to date, and to add COFF support. - -Wed Jul 14 15:09:32 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Removed sy_forward and replaced it with an undefined expression - as the value of a symbol. - * struc-symbol.h (struct symbol): Removed sy_forward field. Added - sy_resolved and sy_resolving single bit fields. - * symbols.c (symbol_new): Don't initialize sy_forward field. - (resolve_symbol_value): New function to adjust symbol value by - fragment address, using recursion to resolve forward symbols. - * symbols.h: Added prototype for new function. - * read.c (pseudo_set): Set symbolP->sy_value to an undefined - expression rather than setting symbolP->sy_forward. - * write.c (write_object_file): Use resolve_symbol_value on - symbols, keeping the common case (the old behaviour) inline. - * config/obj-aout.c (obj_aout_frob_symbol): Removed sy_forward - handling (subsumed by write.c change). - * config/obj-coff.c, config/obj-coffbfd.c (obj_coff_val): Set - sy_value rather than sy_forward. - * config/obj-coffbfd.c (obj_coff_endef, yank_symbols): Check - expression segment rather than sy_forward. - (yank_symbols): Use resolve_symbol_value. - (crawl_symbols): Removed extra pass over symbols. - * config/obj-aout.c, config/obj-bout.c, config/obj-coff.c, - config/obj-vms.c (obj_crawl_symbol_chain): Removed extra pass over - symbols which handled sy_forward; use resolve_symbol_value - instead. - * config/obj-coff.h, config/obj-coffbfd.h (obj_frob_forward_symbol): - Define. - * config/obj-elf.c (obj_elf_stab_generic): Check expression - segment rather than sy_forward. - * config/obj-vms.c (VMS_Check_For_Main): Don't initialize - sy_forward; do initialize sy_resolved and sy_resolving. - * config/tc-hppa.h (STAB_FIXUP): Use sy_value, not sy_forward. - - * Changes to keep a full expression as the value of a symbol, not - just a longword: - * struc-symbol.h: New field sy_value. - * as.h: Include expr.h before struc-symbol.h. - * expr.h: Use struct symbol rather than symbolS. - * symbols.c (S_GET_VALUE, S_SET_VALUE): Rewrote to retrieve value - of sy_value field; compile unconditionally, not just if - BFD_ASSEMBLER. - * symbols.h: Compile S_{SG}ET_VALUE prototypes unconditionally. - * write.c (write_object_file): Set BFD symbol value to gas symbol - value. - * config/obj-aout.h, config/obj-bout.h, config/obj-coff.h, - config/obj-coffbfd.h, config/obj-generic.h, config/obj-vms.h - (S_GET_VALUE, S_SET_VALUE): Removed macro definitions. - * config/obj-ieee.c (S_GET_VALUE, S_SET_VALUE): Removed. - * config/obj-coff.h, obj-coffbfd.h: Rewrote several macros to use - S_GET_VALUE rather than ost_entry.n_value. - * config/obj-aout.c (obj_symbol_to_chars), config/obj-bout.c - (obj_symbol_to_chars), config/obj-coff.c (obj_symbol_to_chars), - config/obj-coffbfd.c (symbol_to_chars): Get value to write out - using S_GET_VALUE--don't assume it is already set. - * config/obj-ieee.c (do_symbols): Set BFD symbol value to gas - symbol value. - * config/obj-vms.c (various): Don't assign directly to - S_GET_VALUE; use S_SET_VALUE instead. - -Wed Jul 14 09:35:23 1993 Doug Evans (dje@canuck.cygnus.com) - - * configure.in: Make sparc64-*-aout* use bfd gas. - - * configure.in: Recognize h8300h. - -Tue Jul 13 12:09:44 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * config/tc-h8500.c (line_comment_chars): Add hash. - (parse_exp, skip_colonthing, build_bytes): Add support for - R_H8500_HIGH16 relocation type. - -Mon Jul 12 11:15:34 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * config/obj-elf.c (obj_elf_section): Allow `@' to introduce an - attribute name. Handle `execinstr' attribute. - -Mon Jul 12 07:22:28 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.c (mips_ip): Don't warn on 'i' or 'j' mismatch if - there is another alternative for the instruction. - -Fri Jul 9 17:31:34 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) - - * doc/as.texinfo: updates for H8/300H - -Thu Jul 8 14:41:43 1993 Mark Eichin (eichin@cygnus.com) - - * config/tc-i960.c (md_create_short_jump, md_create_long_jump, - md_number_to_chars, md_section_align): Adjusted to use valueT, - addressT, to match tc.h. - -Thu Jul 8 14:15:05 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (s_common): Revamp to handle both syntaxes, - independent of format. - -Thu Jul 8 07:25:25 1993 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-h8300.h (TC_CONS_RELOC): Use R_RELLONG if H8/300H. - -Wed Jul 7 18:11:07 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com) - - * configure.in: define CROSS=-DCROSS_COMPILE if it is a cross - build; also recognize h8300-*-coff - -Wed Jul 7 10:21:24 1993 Ian Lance Taylor (ian@cygnus.com) - - * symbols.c (fb_label_instance, fb_label_instance_inc): Don't dump - core just because somebody uses a label before it is defined. - - * config/mips-opcode.h: Moved to opcode/mips.h. - * config/tc-mips.c: Include opcode/mips.h rather than - mips-opcode.h. - (append_insn): An extra NOP is only needed after instructions - which set HI or LO, not after instructions which read it. - (macro_build, mips_ip): Support new 'E', 'G' and 'B' arguments. - (macro): cfc1 and ctc1 now take "t,G" rather than "t,d". - * config/tc-mips.h (struct mips_opcode): Don't define. - * config/mips-big.mt, config/mips-lit.mt (TARG_CPU_DEPENDENTS): - Set to $(srcdir)/../include/opcode/mips.h. - - Get the MIPS assembler up to speed with other gas changes: - - * config/obj-ecoff.c (ecoff_set_vma, ecoff_frob_symbol): - Removed; don't change the symbol value. - (ecoff_build_symbols, ecoff_build_procs, ecoff_frob_file): Use - bfd_asymbol_value rather than S_GET_VALUE to include section - vma in symbol value. - (ecoff_frob_file): Ignore BSF_SECTION_SYM symbols, since ECOFF - doesn't output them. Set the vma of sections. - * config/obj-ecoff.h: Don't define obj_frob_symbol. - * config/tc-mips.c (tc_gen_reloc): Adjustment by section vma is no - longer necessary. - (various): use valueT rather than long. - -Wed Jul 7 08:33:30 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.h (ENV64): Define for v9. - - * config/tc-sparc.c (s_xword): For numbers, call big_cons. - (sparc_ip, md_apply_fix, tc_gen_reloc): Handle some sparc64 - relocation types. - (md_number_to_chars): Handle 8-byte value. - - * config/obj-elf.h (elf_symbol): For v9, use 64-bit symbol type. - - * as.h (valueT): Typedef moved here. - * struc-symbol.h (valueT): ...from here. - * write.c (write_object_file): Locals from_addr, to_addr, - table_addr are now addressT. Supply prototype for bfd_alloc for - now. - (fixup_segment): Local add_number is now valueT. Correct some - range-checking bugs. - (relax_align): Type `int' should be sufficient for the exponent. - (fix_new): Argument offset is type offsetT. Locals size and - newsize are type valueT. - * write.h (struct fix): Fields fx_offset and fx_addnumber are now - type valueT. - (fix_new): Fix prototype. - * symbols.c (symbol_new): Symbol value is type valueT. - (S_SET_VALUE, S_GET_VALUE): Likewise. - (S_IS_*): Specify int return type explicitly. - * symbols.h (symbol_new, S_GET_VALUE, S_SET_VALUE): Fixed - prototypes. - * read.c (s_comm): Values read are type valueT. - * expr.h (expressionS): Field X_add_number is an offsetT. - * tc.h (md_create_long_jump, md_create_short_jump, - md_section_align): Addresses are now type addressT. - (md_number_to_chars, md_apply_fix): Pass value as valueT. - * config/tc-i386.c (md_create_short_jump, md_create_long_jump, - md_number_to_chars, md_section_align): Adjusted. - * config/tc-sparc.c (sparc_ip): Initialize `len' variable to make - gcc shut up. - (md_create_short_jump, md_create_long_jump, md_number_to_chars, - md_section_align): Adjusted. - - * config/tc-sparc.c (s_reserve): Permit use for other than a.out - format. - (s_common): Handle Solaris-2 version. - - * config/ho-generic.h (free): Returns void if __STDC__. - - * config/obj-elf.h (obj_elf_frob_symbol, elf_frob_file, - elf_file_symbol): Declare. - - * expr.c (floating_constant, integer_constant): Now return void. - -Thu Jul 1 12:13:43 1993 Ian Lance Taylor (ian@cygnus.com) - - * configure.in: Match on sparc*-fujitsu-none rather than - sparclite*-fujitsu-none. - -Wed Jun 30 11:12:02 1993 Ian Lance Taylor (ian@cygnus.com) - - * read.c (cons): Conditionalize parsing of expression. Move - putting value into object file into separate function. Separate - out MRI and WANT_BITFIELDS cases into separate functions. - (emit_expr): New function to write data into object file. - Conditionalize on TC_CONS_FIX_NEW and TC_CONS_RELOC rather than on - processor types. - (parse_bitfield_cons): New function to parse bitfield expressions - as used by i960 assemblers. Only compiled if - BITFIELD_CONS_EXPRESSIONS is defined. - (parse_mri_cons): New function to parse MRI style strings. Only - compiled if MRI is defined. - (parse_repeat_cons): New function to parse repeat counts. Only - compiled if REPEAT_CONS_EXPRESSIONS is defined. - * read.h (emit_expr): Added declaration of new function. - * config/tc-a29k.h (TC_CONS_RELOC): Define to be RELOC_32. - * config/tc-h8300.h (TC_CONS_RELOC): Define to be R_RELWORD. - * config/tc-hppa.c (parse_cons_expression_hppa): New function to - parse a HPPA expression, rather than special case in cons - function. - (cons_fix_new_hppa): New function to emit an HPPA fixup, rather - than special case in emit_expr function. - * config/tc-hppa.h (TC_PARSE_CONS_EXPRESSION, TC_CONS_FIX_NEW): - Define to use new functions from tc-hppa.c. - * config/tc-i960.h (BITFIELD_CONS_EXPRESSIONS): Define. - (WANT_BITFIELDS): Removed; now obsolete. - * config/tc-mips.h (REPEAT_CONS_EXPRESSIONS): Define. - * config/tc-ns32k.c (cons_fix_new_ns32k): New function to emit an - NS32K fixup, rather than special case in emit_expr function. - * config/tc-ns32k.h (TC_CONS_FIX_NEW): Define to be - cons_fix_new_ns32k. Also use PARAMS rather than checking - __STDC__. - * config/tc-sparc.h (TC_CONS_RELOC): Define to RELOC_32. - - * write.c (relax_and_size_seg, adjust_reloc_syms, write_contents): - Don't core dump if gas has no information about a section. - -Wed Jun 30 06:21:27 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (md_begin): If sparcv9 is defined, reset - current_architecture to v9 automatically. - - * config/tc-sparc.h (TARGET_FORMAT): Use elf64-sparc for v9. - - * config/tc-sparc64.h, config/tc-sparc64.c: New files. - * configure.in: Use sparc64 cpu files for v9, and default to elf - format. - - * write.c (relax_and_size_seg): Always fully process a section. - Section size is last frag's (vm)address plus its size. If no - relocations are present, force SEC_RELOC flag clear. - (dump_section_relocs): New debugging routine. - (adjust_reloc_syms): New routine, broken out from write_contents. - Don't adjust relocs that are already relative to section symbol. - Look for obj_fix_adjustable macro to know what else to skip, - instead of obj_write_symbol. Look for section symbol stored in - section information. - (write_object_file): Map adjust_reloc_syms over all sections. - (write_contents): Clear SEC_RELOC flag if no relocations are - found. - - * as.h (__PTR_TO_INT, __INT_TO_PTR): New versions for Saber, to - keep it quiet. - - * write.c (remove_subsegs): Don't define for BFD_ASSEMBLER. - -Fri Jun 25 14:42:53 1993 K. Richard Pixley (rich@sendai.cygnus.com) - - * Makefile.in (all, dvi, info, install-info, clean-info): do not - echo recursion lines. - (install-info, clean-info): collapse into the dvi and info rule. - -Fri Jun 25 10:47:24 1993 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Remove support for %d/%q fp regs. - All fp regs are now specified as %f. - (priv_reg_table): fpq -> fq. - -Fri Jun 25 03:43:06 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * as.h (strstr): Disable declaration for now. - (fprint_value, sprint_value): Declare. - - * subsegs.c (subseg_new_rest): Use memset to clear new frag. - (subseg_new) [BFD_ASSEMBLER]: Initialize all seginfo fields. - - * expr.c (expr_part): Made sanity checks a.out-specific. - (expr): Disabled sanity checks. - - * subsegs.h (segment_info_type) [BFD_ASSEMBLER]: Add field for - section symbol. - * subsegs.c (subseg_change): Initialize section symbol pointer - when setting up a new section. - - * symbols.c (symbol_new) [BFD_ASSEMBLER]: Point BFD symbol's udata - field back at gas symbol structure. - - * symbols.c (colon): Cast obstack_next_free value to char* before - doing arithmetic on it. - * subsegs.c (subseg_new_rest): Likewise. - * as.h (frag_now_fix): Likewise. - - * config/obj-elf.c (elf_file_symbol): Use subseg_new instead of - calling bfd_make_section_old_way directly, and call subseg_set - instead of subseg_change. Now returns void. - (obj_elf_write_symbol): Only check local symbols for now. - (elf_stab_symbol): Now static and void, and disabled until it - works completely. - (obj_elf_size): For expression values, fail silently for now. - (obj_symbol_new_hook): Do nothing. - - * config/tc-sparc.c (tc_gen_reloc): Handle BFD_RELOC_SPARC_WDISP22 - relocation. - (s_local) [OBJ_ELF]: New function. - (md_pseudo_table) [OBJ_ELF]: Call it for "local". - (s_common): Rearrange to handle Solaris .common pseudo, which may - sometimes use bss space instead of common. - * config/obj-elf.h (TARGET_SYMBOL_FIELDS): Add new `local' field. - -Thu Jun 24 16:33:53 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: set host config to hpux for hppa*-hp-hpux - -Thu Jun 24 13:35:06 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * app.c (app_pop, app_push): Fix bug reported by Chris Arthur. - -Tue Jun 22 01:04:23 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * subsegs.c (subseg_new): Don't special-case a.out -R flag here. - * config/obj-aout.c (s_sect): Do it here. - - * as.h (BAD_CASE): Don't make some lame compilers think we want - substitution inside strings. - - * as.c (print_version_id): New function, split off from main. - (main): Call it. - * config/tc-sparc.c (md_parse_option) [OBJ_ELF]: Print version id - for -V. Ignore -Q and -s options for now. - -Mon Jun 21 17:37:59 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: make installation & builds work again for crosses - -Sun Jun 20 18:18:26 1993 Ken Raeburn (raeburn@poseidon.cygnus.com) - - * listing.c (list_symbol_table): Rewrite to print wide (>32 bits) - symbol values correctly. - - * write.c (write_object_file): Deleted unused variables. - (fixup_segment): Use sprint_value. - - * messages.c (sprint_value, fprint_value): New routines. - - * config/obj-elf.c (elf_stab_symbol): Now returns void. - (obj_elf_stab_generic): Fix typo in logic. - - * Makefile.in (INCLUDES): Look in ../bfd for bfd.h. - - * as.h (addressT, offsetT): New types, using BFD types if - available. - (relax_addressT, struct frag): Use them. - * struc-symbol.h (valueT, struct broken_word): Likewise. - - * as.h (subseg_new) [BFD_ASSEMBLER]: Name argument is const. - * subsegs.c (subseg_new) [BFD_ASSEMBLER]: Name argument is const. - -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) - -Sun Jun 20 02:34:04 1993 Ashley Saulsbury (ans@sics.se) - - * m88k-opcode.h : fixed tiny tiny mistake - xcr was incorrectly - specified, should have both S1 and S2 fields identical - If only finding the problem was as fast as fixing the bug !!!! - -Tue Jun 15 16:01:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * write.c (write_contents): Do write out non-loadable sections. - Debug sections can fall in this category. - - * read.c (s_app_file): Call elf_file_symbol for ELF files. - * config/obj-elf.c (elf_file_symbol): New function. - - * config/obj-elf.c (elf_stab_symbol_string): Renamed from pa_..., - added argument to specify section base name. - (obj_elf_stab_generic): Renamed from ..._stab. New argument - specifies section base name. - (obj_elf_stab): New function, calls obj_elf_stab_generic with - ".stab" as section base name. - (obj_elf_xstab): New function, calls obj_elf_stab_generic. - (obj_elf_type): Handle "object". Use bitwise-or to merge in - symbol flags rather than simply replacing, so global/local flags - are preserved. - (obj_elf_ident): Rewrite. - -Tue Jun 15 17:03:25 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: remove parentdir support; use INSTALL_XFORM - -Wed Jun 9 11:26:07 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-i386.c (md_pseudo_table): .align uses a power of two - for any a.out target, not just Linux and 386BSD. - * config/tc-i386.h (DOT_LABEL_PREFIX): Do not define for any a.out - target. - -Mon Jun 7 13:33:19 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m88k.c: Don't include flonum.h, md.h, m88k.h. They - don't exist or duplicate other inclusions. - - * config/tc-vax.h (NO_RELOC): Define. - -Mon Jun 7 09:55:03 1993 Doug Evans (dje@canuck.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Fix parsing of asi number. - Fix error message. - -Sat Jun 5 19:32:52 1993 Torbjorn Granlund (tege@nada.kth.se) - - * gas/config/m88k-opcode.h (m88k_opcodes): Add 88110 instructions. - * gas/config/tc-m88k.c (get_reg): New arg reg_prefix. Compare first - char to reg_prefix instead of to 'r'. - (calcop): Change calls to get_reg. - (calcop): Handle new case 'x' to set reg_prefix. - (calcop): Set reg_prefix to 'r' after each call to get_reg. - (cmpslot): Add 88110 conditions. - - * gas/config/m88k-opcode.h: Swap cases for "rot" for consistency. - - * gas/config/tc-m88k.c (get_bf): Always restore input_line_pointer - before returning. - - * gas/config/m88k-opcode.h (m88k_opcodes): Make equal mnemonics - adjacent; mov.s and mov.d swapped. - (m88k_opcodes): Fix typo `r2' -> `2'. - -Fri Jun 4 15:59:31 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * config/h8300.c: Support for H8/300-H opcodes. - - * config/obj-coffbfd.c (w_strings): String table length is 4 - bytes, no matter what the host int size is. - - * configure.in (alpha-*-osf*): New. - -Fri Jun 4 07:51:18 1993 Ian Lance Taylor (ian@cygnus.com) - - * configure.in (mips-*-ecoffl*): New target; use ecoff and - mips-lit. - (mips-*-ecoff*): Added trailing '*'. - - * config/obj-ecoff.c (ecoff_build_procs): Force the adr of the - first FDR in a file to be zero. - -Thu Jun 3 14:09:59 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (VERSION): Jump to 2.1.4. - - * config/ho-hppabsd.h: New file, from Peter Hoogenboom. - - * config/tc-mips.c (md_assemble): Call bfd_set_gp_size only for - ECOFF format. - -Tue Jun 1 15:21:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c (md_assemble): The 68040 cpu doesn't want a - separate '851 mmu. - - * config/obj-elf.c, config/obj-elf.h: Update for new type, macro, - and routine names. Assuming 32 bits for now. - - * config/obj-elf.c (elf_frob_file): Look for macro - elf_tc_final_processing_hook, instead of assuming a function - always exists. - * config/tc-hppa.c (elf_hppa_final_processing_hook): Renamed from - tc_final_processing_hook. - * config/tc-hppa.h (elf_tc_final_processing_hook): Use it. - - * config/tc-hppa.h (elf_tc_symbol, elf_tc_make_sections): Macros - moved here from obj-elf.h. - * config/obj-elf.h: Don't include CPU-specific header files. - -Sun May 30 16:49:37 1993 Peter Hoogenboom (hoogen@fast.cs.utah.edu) - - * configure.in: configurations should match on 'hppa*' not 'hppa'. - - * read.c: Add support for HPPA assembly language syntax (denoted - with '#ifdef TC_HPPA'). - - * symbols.c: Add support for HPPA assembly language syntax (denoted - with '#ifdef TC_HPPA'). - - * write.c (write_contents): Add support for HPPA-style - relocations. - - * config/obj-elf.c: Stab symbols weren't written properly. - (obj_elf_version): - (obj_elf_desc): - (obj_elf_write_symbol): - (obj_elf_write_symbol_p): - (obj_elf_frob_symbol): - (elf_stab_symbol): - (elf_frob_file): - - * config/tc-hppa.c: Support for HPPA symbol extension sections. - Remove some unused code. Support for HPPA assembly language - syntax. - - * app.c: - - * symbols.c: - - * config/obj-elf.h: - (obj_write_symbol): - (obj_frob_file): - (elf_tc_symbol): - (elf_tc_make_sections): - - * config/tc-hppa.h: - -Sun May 30 21:44:45 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/obj-ecoff.c (obj_read_begin_hook, add_file): Assume - hash_new will have succeeded if it returns. - * config/tc-a29k.c (md_begin): Likewise. - - * config/tc-i386.c (tc_aout_fix_to_chars): Now nbytes_r_length is - const. - (mode_from_disp_size, opcode_suffic_to_type): Now inline under - gcc. - (fits_in_{signed,unsigned}_{byte,word}): Likewise. - - * expr.c: Delete register declarations; gcc ignores them anyways. - -Fri May 28 19:03:32 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * hash.c (hash_new): Use xmalloc, since many callers don't check - for failure. - -Thu May 27 13:02:15 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * frags.c (zero_address_frag, bss_address_frag): These are - external. - - * tc.h (md_reloc_size): This is const. - * config/tc-{a29k,h8300,h8500,i386,i860,i960,m68k,ns32k,z8k}.c - (md_reloc_size): Now const. - - * config/aout_gnu.h (enum machine_type, enum reloc_type): Delete - trailing commas. - * as.h (enum _segT): Ditto. - - * struc-symbol.h (N_TYPE_seg): This should be const. - -Thu May 27 11:43:59 1993 Michael Meissner (meissner@osf.org) - - * config/obj-ecoff.c (add_file): Cast file_name to char * in - listing_source_file call. - - * config/obj-elf.c (elf_stab_symbol_string): Cast first argument - of subseg_new call to eliminate const attribute. - (obj_elf_stab): Ditto. - (obj_symbol_new_hook): Cast first argument of bzero call to char *. - - * read.c (s_align_bytes): Properly record alignment. - - * expr.c (__): Undefine __ macro before use, since OSF/1 uses it - for the prototype/no prototype macro. - - * as.c (got_sig): Don't do return ((SIGTY) 0), SIGTY might well be - void. - - * as.h (relax_stateT enum): Delete trailing comma. - -Thu May 27 11:07:50 1993 Ian Lance Taylor (ian@cygnus.com) - - * app.c (do_scrub_begin): Let line_comment_chars override - comment_chars. - (do_scrub_next_char): If a line comment character is not at the - start of a line, treat it as a comment character if it is one. - For a CPP line comment use pseudo-op .appline rather than .line. - * input-scrub.c (logical_input_line): Make int rather than - unsigned. - (input_scrub_push, input_scrub_begin): Initialize - logical_input_line to -1 rather than 0. - (bump_line_counters): Increment logical_input_line. - (new_logical_line): If line_number is -2, decrement - logical_input_line. - (as_where): Use logical_input_line even if it is 0. - * read.h (s_app_file prototype): Now takes an int argument. - * read.c (potable): Make .appfile call s_app_file with 1. New - .appline pseudo-op calls s_app_line. - (s_app_file): If .appfile, call new_logical_line with -2 to - account for newline inserted by do_scrub_next_char. If listing, - call listing_source_file. - (s_app_line): New function to handle fake pseudo-op .appline. - * config/obj-coff.c (obj_pseudo_table): Make .appline call - obj_coff_ln. - (obj_coff_ln): Added argument to indicate whether .appline. - * config/obj-coffbfd.c (obj_pseudo_table): Make .appline call - obj_coff_ln. - (obj_coff_ln): Added argument to indicate whether .appline. - * config/tc-mips.c (s_file): Pass argument to s_app_file. - -Tue May 25 11:59:07 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-bout.h (S_GET_VALUE): Removed unnecessary cast. - -Thu May 20 19:14:24 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c (md_apply_fix_2): Straighten out check for - invalid values. - -Wed May 19 07:33:17 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * config/tc-h5000.c (build_bytes): Understand @rd mode and build - relocations correctly. - -Mon May 17 15:06:26 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * Makefile.in (FLAGS_TO_PASS): Leave out TEXI2DVI for now, because - it's wrong. - - * config/tc-m68k.c (md_apply_fix_2): Apply range checks and warn - if value is out of range. - - Patch from Minh Tran-Le: - * config/tc-i386.c (i386_operand): For in/out port register used - as base reg, include InOutPortReg in operand type. - (MATCH): Accept overlap value of InOutPortReg. - -Mon May 17 09:29:34 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-ecoff.c (add_file, obj_ecoff_loc, obj_ecoff_stab): - Add calls to listing routines to produce combined source/assembler - listings. - (obj_ecoff_stab): Create a file pointer if none used yet. - (ecoff_frob_file): Set symcount to correct value. - -Fri May 14 06:53:33 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * Makefile.in (VERSION): Bump to version 2.1, in preparation for - release. - - * config/obj-aout.h (H_GET_HEADER_SIZE, H_SET_SYMBOL_TABLE_SIZE): - Define in terms of constants, not C structure sizes. - - * config/tc-rs6000.c, config/tc-rs6000.h: Delete empty files. - -Thu May 13 17:01:55 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-aout.c (obj_header_append): Don't define if it's - defined as a macro. - * config/obj-hp300.h (obj_header_append): Define it as a macro. - * config/obj-hp300.c (hp300_header_append): New function. - - * Makefile.in (distclean): Don't bother cleaning up doc files; - they aren't going to be in this directory. - -Thu May 13 07:51:35 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-ecoff.c (ecoff_build_symbols): Handle absolute - symbols. - - * tc.h (TC_COFF_SIZEMACHDEP): Don't define here. - * config/tc-sh.h (TC_COFF_SIZEMACHDEP): Define here instead. - -Mon May 10 06:01:12 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/obj-vms.c (VMS_Symbol_type_list): Don't bother with - initialization. - - * configure.in (targets): Treat m68*-*-sysv* like m68k-*-coff. - -Wed May 5 14:00:49 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.c (macro): Correct floating point double word - loads and stores for big endian target. - -Wed May 5 08:39:21 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * config/tc-i386.c: Replace SEG_* with *_section, fix up subseg_* - calls. Deleted some unused code. - * config/obj-coff.c: Likewise. - - ELF support, mostly contributed by Utah: - * config/obj-elf.c (obj_elf_section, obj_elf_stab, obj_elf_line, - obj_elf_type): Rewrite. - (obj_elf_frob_symbol, elf_stab_symbol_string, elf_stab_symbol, - obj_elf_desc, obj_elf_version, obj_symbol_new_hook, obj_elf_size): - New functions. - (obj_elf_ident): Dummy. - * config/obj-elf.h (FALSE, TRUE, S_*, tc_frob_symbol, - TARGET_SYMBOL_FIELDS): New macros. - (gdb_section): New variable decl. - - * config/tc-i386.c (md_atof): Return zero, not empty string, on - success. - - BFD_ASSEMBLER conditional changes: - * config/obj-coff.c (lineno_rootP, seg_N_TYPE, *_section_header): - Don't define these. - (SA_SET_SYM_ENDNDX, SA_SET_SYM_TAGNDX): New functions. - (fetch_coff_debug_section): Ditto. - (obj_coff_endef): Call fetch_coff_debug_section. - (struct line_no): New type. - (c_symbol_merge): New way for copying aux fields. - (c_dot_file_symbol): Put symbol in absolute section, and set flag - BSF_DEBUGGING. - (function_lineoff): New symbol. - (function_lineoff, text_lineno_number, our_lineno_number, - lineno_lastP): Don't define. - (c_line_new): Don't define. - (obj_emit_lineno, obj_coff_endef): Use abort calls as, uh, - placeholders, until - line-number recording gets implemented. - (obj_new_symbol_hook): New code for handling aux fields. - (add_lineno, add_linesym): New functions. - (obj_coff_ln): Call add_lineno, not c_line_new. - (obj_coff_endef): New code for handling symbol names. New lineno - code. Look for section name "*DEBUG*" for debugging section. - (align, coff_check_file_symbols, obj_coff_section, - coff_frob_file): New functions. - * config/obj-coff.h: Reordered some includes. - (BYTE_ORDERING, FILE_HEADER_MAGIC, seg_N_TYPE, N_TYPE_seg, - DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE, AOUTHDR, AOUTHDRSIZE): Don't - define these. - (TARGET_SYMBOL_FIELDS, I960_SYM_FIELDS): New macros. - (SYM_AUXENT): New macro (for non-BFD_ASSEMBLER too) for accessing - aux entries. Most SA_* macros now use it unconditionally. - (S_*): Use `bsym' field, and access BFD private data. - (SF_*): Use `sy_flags' symbol field for most of these. - (H_*, object_headers, lineno, lineno_*P, OBJ_EMIT_LINENO): Don't - define. - (*_section_header): Don't define. - * config/tc-i386.c (md_convert_frag, md_apply_fix): Changed - interface. - (tc_gen_reloc) [I386COFF]: New function. - (tc_aout_fix_to_chars, tc_coff_fix2rtype): Don't define. - * config/tc-i386.h (TARGET_ARCH, TARGET_BYTES_BIG_ENDIAN): New - macros. - - * config/obj-coff.c (stack_init): Don't do assignments inside - conditions. - (obj_coff_def): Simplified handling of symbol name a bit. - (tag_insert): Name argument is now pointer to CONST. - (obj_crawl_symbol_chain): Commented out. - - * config/obj-coff.h: Use PARAMS macro in prototypes. - - * write.c (relax_and_size_seg) [BFD_ASSEMBLER]: Don't indirect - through frchainP pointer if it is null. - - * configure.in: Warn if BFD mode is explicitly turned off but is - required by specified target. - (mips ecoff targets): Don't need to set bfd_gas here; it gets - taken care of later. - - * config/obj-coffbfd.c (crawl_symbols): Don't clear sy_forward - field. - (yank_symbols): Merge symbols only if sy_forward is null. - - * config/tc-m68k.h (AOUT_MACHTYPE): Don't define if already - defined. - - * tc.h (md_convert_frag) [BFD_ASSEMBLER]: Section arg is not - pointer. - * config/tc-m68k.c (md_convert_frag) [BFD_ASSEMBLER]: Ditto. - - * config/tc-sparc.h (LOCAL_LABEL) [OBJ_ELF]: Anything starting - with "." is a local label. - - * config/te-hppa.h, config/tc-hppa.h, config/tc-hppa.c: New config - files. - - * config/te-linux.h, config/te-386bsd.h: New config files. - * configure.in (i386-*-linux, i386-*-bsd): Use them. - * config/tc-i386.h (TARGET_FORMAT): Select format based on target - environment. - (DOT_LABEL_PREFIX): Don't define for 386bsd or Linux. - -Wed May 5 13:14:01 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-ecoff.c (init_file): Set fMerge to 0 since dbx seems - to want it that way. - (ecoff_build_symbols): Turn local st_Proc symbols into - st_StaticProc symbols. Set index field of external st_Proc and - st_staticProc symbols correctly. - * config/tc-mips.h (NO_LISTING): Don't define. People might want - listings. - -Tue May 4 21:22:54 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-hp300.h, config/obj-hp300.c, config/te-hp300.h: New - files. - * configure.in (m68k-*-hpux): Use them. - - * config/obj-aout.c (obj_pre_write_hook): Use AOUT_VERSION if - defined, otherwise zero. - - * config/aout_gnu.h (OMAGIC): Don't define if already defined. - -Mon May 3 15:59:32 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Allow any abs expression as an - address space number. - -Wed Apr 28 19:11:22 1993 Ken Raeburn (raeburn@deneb.cygnus.com) - - * config/obj-aout.h (TARGET_DEFAULT): Don't default this at all. - - * config/tc-a29k.c: Include ctype.h. - (define_some_regs): Added special-purpose registers for 29050. - - * config/tc-i386.c (comment_chars) [TE_I386AIX]: Include "/". - - * config/obj-coffbfd.c (fill_section): Don't set STYP_REG here. - (change_to_section): Set it here instead. - -Wed Apr 28 13:40:29 1993 Ian Lance Taylor (ian@rtl.cygnus.com) - - * config/obj-ecoff.c (obj_symbol_new_hook): Make up a .file if one - hasn't been seen yet. - (add_ecoff_symbol): Don't refer to cur_file_ptr if it is NULL. - -Mon Apr 26 18:29:05 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-sh.c, config/tc-sh.h: New files supporting Hitachi - SH. - -Mon Apr 26 12:28:27 1993 Ian Lance Taylor (ian@cygnus.com) - - * expr.c (operand): Fix unary plus operator (previously was the - same as '~' operator!). - -Wed Apr 21 00:20:11 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * write.c (cvt_frag_to_fill): Define even if BFD is defined. - (write_object_file): Do define if BFD_ASSEMBLER. Invoke - obj_check_file_symbols if defined. Call verify_symbol_chain_2 - instead of open-coding it. Fix some bugs in patching up symbol - chain. - (relax_segment): Make some code we "ought to be able to" use for - all targets no longer conditionalized on ns32k target; instead, do - it always, and if the appropriate conditions fail, abort. - - * symbols.c (DEBUG): Enabled. - (symbol_new): Make sure bfd_make_empty_symbol works. - (verify_symbol_chain_2): New function; takes one symbol as - argument, anywhere in the chain. - (dollar_label*): Use default initializers. - - * as.c (perform_an_assembly_pass): Call md_begin here... - (main): ...and not here. - - * config/tc-m68k.h (TARGET_FORMAT): Use a.out-sunos-big for a.out. - (tc_frob_symbol): New macro: Get rid of symbols in reg_section. - - * config/tc-m68k.c (omagic): Don't define for BFD_ASSEMBLER. - (add_fix, add_frag): Now functions instead of macros. - (m68k_reg_parse, m68k_ip, md_estimate_size_before_relax, get_num, - s_data1, s_data2, s_bss): Use new *_section names, for - compatibility with BFD_ASSEMBLER mode; rewrite switch statements - to handle non-integral segT. - (tc_coff_fix2rtype, tc_aout_fix_to_chars, - tc_coff_symbol_emit_hook): Don't define for BFD_ASSEMBLER. - (tc_gen_reloc): New routine for BFD_ASSEMBLER. - (md_apply_fix, md_apply_fix_2): Renamed old md_apply_fix to - md_apply_fix_2; new md_apply_fix definition varies interface - depending on BFD_ASSEMBLER. - (md_convert_frag, md_convert_frag_1): Likewise. Use new *_section - names. - - * config/obj-vms.c: Include config.h. - (version_string): Delete declaration. - (Write_VMS_MHD_Records): Use GAS_VERSION instead. - (vms_resolve_symbol_redef): New function, taken from VMS code in - symbols.c. - (_doprnt): Deleted. - (VMS_Store_Struct, VMS_Def_Struct, VMS_Set_Struct, - VMS_TBT_Block_End, get_VMS_time_on_unix, generate_suffix, - VMS_Psect_Spec): Fixed to compile under traditional C. - * config/obj-vms.h: Use PARAMS macro. - (vms_resolve_symbol_redef): Declare. - (RESOLVE_SYMBOL_REDEFINITION): New macro. - * symbols.c (colon): Remove some VMS-specific code, look for - RESOLVE_SYMBOL_REDEFINITION macro instead. - - * config/tc-m68k.c (m68k_ip): Don't try expanding DBcc - instructions. - - * config/tc-i386.c: Reordered some functions so inlining might - work. Use PARAMS in function declarations. - (reloc): New routine. - (md_assemble): Rearrange switch statements to work with - non-integral segT. - - * struc-symbol.h [BFD_ASSEMBLER]: Undefine - SYMBOLS_NEED_BACKPOINTERS before defining it. - - * subsegs.c (subseg_new_rest): Now static. - - * read.c (pseudo_set): Better error message for difference of - symbols in different frags. - - * Makefile.in (check): Pass down some new variables, indicating - pathname or program name for cc, nm, objdump. - - * as.h (OUTPUT_FLAVOR): New macro. - * config/tc-sparc.c (tc_gen_reloc): Use OUTPUT_FLAVOR. - - * configure.in: Initialize bfd_gas properly. Warn that ELF - support is incomplete. - -Thu Apr 15 22:39:05 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * read.c (float_cons): Accept null pointer return from md_atof. - * config/tc-m68k.c (md_atof): Return null for success. - * config/tc-sparc.c (md_atof): Ditto. - -Thu Apr 15 16:04:39 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) - - * doc/as.texinfo: formatting and comment cleanups; show SPARC - alternative options in same style as other machines; simplify some - conditional use; include GPL as separate file (from texinfo dir) - - * doc/Makefile.in: (as.info) include directory containing GPL in - makeinfo search path - - * doc/h8.texi: new file; conditional settings for GAS manual - on Hitachi chips - -Tue Apr 13 15:31:40 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) - - * doc/as.texinfo: mention SPARC architecture options. - -Fri Apr 9 17:43:11 1993 Ken Raeburn (raeburn@cygnus.com) - - * configure.in: Rearranged whitespace in per-host/per-target - sections. Added hooks for dropping in HPPA support (not included - yet). Separate out overrides of variables based on target format - and bfd-gas selection from actual target-specific commands. Add - error message for recognized but unsupported format name. - -Fri Apr 9 09:05:47 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-ecoff.h (ecoff_build_lineno): Make ilineMax in - symbolic header match cline in FDR; the native linker seems to - want that. - -Thu Apr 8 15:51:28 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * doc/Makefile.in: as.texinfo is in $(srcdir). Use - $(srcdir)/as.texinfo explicitly in several places - -Thu Apr 8 15:15:02 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) - - * doc/Makefile.in: update dvi, clean targets for new source - file structure - -Thu Apr 8 12:52:46 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/ho-decstatn.h: Define BROKEN_ASSERT if not __GNUC__, - rather than undefining know. - * configure.in: Match ultrix*, not just ultrix. - -Wed Apr 7 20:18:10 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) - - * doc/as.texinfo: converted conditional markup to use new - Texinfo facilities, avoiding m4. - - * doc/as-all.texinfo, all.m4, pretex.m4: deleted. - - * doc/Makefile.in: recast doc configuration to use a link to an - included texinfo file. - - * doc/all.texi: settings for generic form of documentation. - -Tue Apr 6 11:56:21 1993 Ian Lance Taylor (ian@cygnus.com) - - * read.c (cons): Zero out frag when creating reloc. - -Mon Apr 5 09:41:58 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.c (gp_reference): Certain magic symbols can never - be referenced off the GP register. - - * app.c (do_scrub_next_char): Handle states 9 and 10 correctly - when dealing with characters of type LEX_IS_TWOCHAR_COMMENT_1ST, - LEX_IS_STRINGQUOTE, and LEX_IS_ONECHAR_QUOTE. - - * config/te-irix.h: New file; irix needs a different LOCAL_LABEL - definition from other MIPS targets. - * configure.in (mips-*-irix): Use emulation irix. - -Sun Apr 4 15:21:09 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-h8500.c: Get relax size of branch instructions right, - (get_operand): Parse @sp+ correctly. - -Fri Apr 2 15:59:49 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * subsegs.h (segment_info_type) [BFD_ASSEMBLER]: Don't include - COFF section header field. - - * configure.in: Print error message if host or target is not - supported. - - * configure.in: If with-bfd-assembler, use obj-coff instead of - obj-coffbfd. - - * config/ho-generic.h: Include string.h. - -Fri Apr 2 08:54:57 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.h (LOCAL_LABEL): Treat any label starting with - '$' as local, for any object file format. - - * config/tc-mips.c (macro): Optimizations to branching code and a - couple of bug fixes from ralphc@pyrps5.eng.pyramid.com (Ralph - Campbell). - - * config/ho-irix.h: New file; if not gcc, define BROKEN_ASSERT. - * configure.in (mips-sgi-irix*): Set gas_host to irix. - -Wed Mar 31 17:53:54 1993 Ian Lance Taylor (ian@cygnus.com) - - * subsegs.c (subseg_new): Set output_section of new section. - * as.c (perform_an_assemly_pass): Don't set output_section here. - * expr.c (expr_part, expr): Turn off section assertions for ECOFF, - since it has additional sections. - * read.c (s_lcomm): For MIPS ECOFF, put small objects in .sbss, - not bss_section. - * config/obj-ecoff.h (TARGET_SYMBOL_FIELDS): Added - ecoff_undefined field. - * config/obj-ecoff.c (obj_symbol_new_hook): Initialize - ecoff_undefined field. - (add_file): If using stabs, just output a stabs symbol rather than - creating a new fdr. - (obj_ecoff_begin, obj_ecoff_bend): Ignore line number by reading - it with get_absolute_expression, rather than skipping it by hand. - (obj_ecoff_loc): If using stabs, just output a stabs symbol rather - than ECOFF line number information. - (obj_ecoff_stab): Accept non-zero values for stabs line number. - (ecoff_build_symbols): Set ifilesym correctly. Set storage class - to small, undefined and/or readonly sections if appropriate. - Don't output symbol names containing \001 characters. - (ecoff_frob_file): Make sure at least one fdr is output. - * config/tc-mips.h: Define TC_MIPS. - * config/tc-mips.c (g_switch_value): New static variable. - (md_assemble): Set gp size of output BFD. - (gp_reference): New function; returns 1 if expression can be - accesssed via gp. Always returns 0 if not using ECOFF. - (macro_build): Convert BFD_RELOC_LO16 to BFD_RELOC_MIPS_GPREL if - possible. - (macro): Generate sequences using gp if possible. - (md_parse_option): Ignore -EL and -EB. Parse -G. - (md_apply_fix): Added BFD_RELOC_MIPS_GPREL to ignored case. - (s_change_sec): Handle .rdata and .sdata for ECOFF. - (s_extern): Mark symbol as external. Set ecoff_undefined field. - -Tue Mar 30 10:11:41 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * output-file.c (output_file_create): Don't call as_perror for - filename rejected by application. - - * as.c (main) [BFD_ASSEMBLER]: If errors occur, close and unlink - the output file. - - * doc/as.texinfo: Don't use @value in node names for the moment; - references don't appear to work right. - - * as.h (const, volatile): Put these definitions back, and use - them. - - * doc/as.texinfo: First pass at using new texinfo features -- - variables, conditional tests. Far from complete. - -Mon Mar 29 16:05:40 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * read.c: Temporary hack to handle some 64-bit constants. This - should be redone later. - (target_big_endian): Declare. - (big_cons): If it's set, reverse order of bytes being copied. - * config/tc-sparc.c (md_begin): Set target_big_endian. - - * read.c (s_ignore): Delete declaration of is_end_of_line. - - * config/obj-coffbfd.c (yank_symbols): Build list of file symbol - forward pointers properly. - -Mon Mar 29 13:47:33 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/obj-coffbfd.c (do_relocs_for): Fix bug where nrelocs - wasn't being stored into scnhdr. - * config/obj-coffbfd.h: Add prototype of s_get_segment. - * read.c (TC_START_LABEL): Default definition. - (read_a_source_file): Use TC_START_LABEL macro to work out - if a label has been seen. - -Mon Mar 29 12:56:56 1993 Ian Lance Taylor (ian@cygnus.com) - - * configure.in: Set BFDDEF and BFDLIB at the top of Makefile, not - the bottom (make expands variables in dependencies when the - dependencies are read, not when they are used). - - * config/obj-coffbfd.c (fill_section): Don't set NOLOAD bit for - a29k .bss section; the mondfe program doesn't like it. - -Sun Mar 28 08:12:53 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/tc-m68k.c: Use PARAMS macro, and use CONST instead of - const. - (current_architecture): Don't need initializer. - -Fri Mar 26 08:12:48 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * doc/none.m4: Define Z8000. - * doc/Makefile.in (as-*.texinfo): Refer to $(srcdir). Remove the - texinfo file before recreating it. - (TEXI2DVI): Need to set TEXINPUTS if "make as.dvi" is to work in - this directory. - (srcdir): Delete second, bogus definition. - (as.info): Look for as-*.texinfo in current directory rather than - in $(srcdir). - (as.dvi): Ditto. - (dvi): New rule. - * doc/configure.in: Create links to all as-*.texinfo files in the - source directory, if that's not the current directory. - - * configure.in (per-host): Accept MIPS host with BSD version - number. - (per-target): Classify i486 as i386. Use generic cpu_type instead - of target_cpu in selecting format etc. - - * app.c (do_scrub_next_char): Use .appfile, not .app-file. - * read.c (potable): Change .app-file to .appfile. - - * config/ho-decstatn.h: Renamed from ho-decstation.h. - * configure.in: Adjusted. - - * config/obj-bfd-sunos.*: Unused; deleted. - - * Makefile.in (version.c, vers-stamp): Deleted. - (config.h): Define GAS_VERSION. - * as.c (version_string): Deleted declaration. - (main): Look for GAS_VERSION instead. - - * doc/as.texinfo: Updated description of -a* (listing) options, - and describe how to pass them through from gcc. - - * config/obj-coffbfd.c (do_relocs_for): Don't allocate storage or - process relocs if there aren't any relocs to process. Avoids - malloc/free bug on SCO too. - - * as.h: Move local include files below system include files, to - avoid some redefinition complaints on some systems. - (const, volatile): Don't need these conditionally defined if we - use CONST and VOLATILE from ansidecl.h. - (seg_name): Use CONST, not const. - -Fri Mar 26 10:22:04 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.c: Reindented to GNU standards. - -Thu Mar 25 08:59:14 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-coffbfd.c (do_relocs_for): Remove a29k special case. - (fixup_segment): Add a29k special case; the linker is not prepared - to see a segment offset here. - - * app.c (do_scrub_next_char): Added new state, 10, modifying state - 9 to only keep a space in between identifier characters. - -Wed Mar 24 02:16:22 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com) - - * Makefile.in: add dvi target; as-$(config).texinfo might live in - srcdir, might be in objdir. - - * doc/Makefile.in: dvi depends on as.dvi - -Mon Mar 22 23:59:13 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: add installcheck target - -Mon Mar 22 16:25:57 1993 Jim Wilson (wilson@sphagnum.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Add support for membar mask names. - Add missing colons in prefetch error messages. Add support for - ASI names. - -Mon Mar 22 10:19:00 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-mips.c (macro): Use $AT for any floating point load. - -Sat Mar 20 12:50:51 1993 Ken Raeburn (raeburn@urth.cygnus.com) - - * config/tc-m68k.c (m68k_ip): For operand type 'M', reject - bignums, but don't emit error message. - -Fri Mar 19 21:02:19 1993 Jim Wilson (wilson@sphagnum.cygnus.com) - - * Makefile.in (targ-cpu.o): Depend on config.h. - -Wed Mar 17 16:44:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * app.c (do_scrub_next_char): Added new state, 9, to avoid - dropping a space immediately following an identifier. - * expr.c, write.c: Rewrote assert expressions to not use multiple - lines; I don't think that can be done portably. - * config/tc-mips.c (macro): Use $AT if target register is zero in - load instruction, which it can be for a floating point load. - -Mon Mar 15 12:17:28 1993 Ian Lance Taylor (ian@cygnus.com) - - * write.c (write_contents): Compute the relocs before writing out - the section contents. - * config/obj-ecoff.h, config/obj-ecoff.c: Numerous changes to get - symbol table and values right. - * config/tc-mips.h (LOCAL_LABEL): If OBJ_ECOFF, any label starting - with $L is local. - * config/tc-mips.c (tc_gen_reloc): If OBJ_ECOFF, adjust the addend - by the section vma. - - * config/z8k.mt (TARG_CPU_DEPENDENTS): The relevant file is - z8k-opc.h, not z8k.h. - - * config/obj-coffbfd.c (obj_coff_endef): Correct test for .bf - symbol. - -Fri Mar 12 18:33:36 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: recognize sparc-sun-solaris2* instead of -solaris2 - -Fri Mar 12 12:00:07 1993 Ian Lance Taylor (ian@cygnus.com) - - * expr.c, write.c: Ultrix native 4.2 cc requires assert condition - to be on a single line. - -Thu Mar 11 17:56:22 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (config.h): Create file, writing out definitions of - target cpu, alias, and canonical name. - (ALL_CFLAGS): No longer define TARGET_CPU. - - * Makefile.in (check): Print a message, instead of quitting - silently. - - * as.c (main): Don't catch any signals, for now. - - * version.c: Deleted. - * Makefile.in: Generate it, putting in only the version number - itself. - (VERSION): New variable. - * as.c: Include config.h. - (main): Reformatted version string. Include target alias. Don't - print if not requested (i.e., unknown -v argument). - - * as.c (stralloc): Deleted. - (main): Call strdup instead. - - * configure.in: Handle all 68300 series chips. - * config/tc-m68k.c: Include config.h. - (md_assemble): Assume TARGET_CPU is defined. Accept some 68300 - series cpus as defaults. - (md_parse_option): Accept some m68300 series CPUs as defaults. - -Wed Mar 10 17:41:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * as.c (EXIT_SUCCESS, EXIT_FAILURE): Define to normal values if - not already defined. - (main, got_sig): Use them. - * config/ho-vms.h (EXIT_SUCCESS, EXIT_FAILURE): Reverse default - values. - -Tue Mar 9 07:40:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-ecoff.c, config/obj-ecoff.h: Preliminary ECOFF - support. - - * config/tc-mips.h (TARGET_FORMAT): Define based on OBJ_AOUT vs. - OBJ_ECOFF as well as TARGET_BYTES_*_ENDIAN. - (struct loc, struct proc, struct file): Moved to tc-mips.c within - #ifndef OBJ_ECOFF block, since ECOFF uses different versions. - * config/tc-mips.c: Rearranged for ECOFF support. Added - prototypes for all static functions. Moved existing minimal - debugging format support info #ifndef OBJ_ECOFF blocks. - (macro_build_lui): Eliminated sign_extend argument, because ECOFF - does not support a non sign extended high 16 bits reloc. Adjusted - all callers accordingly. - (tc_get_register): Renamed from get_register, and made non-static. - - * config/mips-big.mt, config/mips-lit.mt: New files. Define - TARGET_BYTES_BIG_ENDIAN and TARGET_BYTES_LITTLE_ENDIAN, - respectively. - * configure.in (mips-*-bsd*): Use gas_target mips-lit. - (mips-*-ultrix*, mips-*-irix*, mips-*-ecoff): New targets, using - obj_format ecoff and gas_target mips-lit or mips-big. - -Tue Mar 9 07:43:01 1993 Ken Raeburn (raeburn@cygnus.com) - - * version.c: Bump to version 2.0.1. - -Tue Mar 9 07:40:06 1993 Ian Lance Taylor (ian@cygnus.com) - - * write.c (chain_frchains_together): Check that seg_info (section) - is not NULL. - (write_object_file): Call obj_frob_file after setting the symbols, - not before. - -Tue Mar 9 00:00:00 1993 Ken Raeburn (raeburn@cygnus.com) - - * Version 2.0 released. - -Mon Mar 8 14:57:10 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-i386.h (TC_COUNT_RELOC): Look for fx_addsy only. - -Fri Mar 5 09:05:55 1993 Ian Lance Taylor (ian@cygnus.com) - - * read.h: Define stringer here. - * read.c, config/obj-ieee.c, config/obj-tcm88k.c: Not any of these - places. - -Thu Mar 4 11:52:23 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * read.c (s_space): Multiply repeat count by mult, not fill. - -Thu Mar 4 05:20:42 1993 Ken Raeburn (raeburn@cygnus.com) - - * read.c: Include ctype.h. - -Wed Mar 3 10:41:46 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - Patches from Eric Youngdale: - * make-gas.com: Find obstack.obj if it's not in the current - directory. - * read.c (s_ignore): Don't declare is_end_of_line. It's - redundant, and triggers a VMS gcc compiler bug. - - * write.c (write_object_file): Macro SUB_SEGMENT_ALIGN now takes - current segment as an argument. (Ignored in all cases but VMS.) - All callers and definitions changed. - -Tue Mar 2 11:56:19 1993 Ian Lance Taylor (ian@cygnus.com) - - * listing.c: Cleaned up a bit, added prototypes, made NO_LISTING - case compile again. - -Tue Mar 2 08:53:34 1993 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-m68k.c (isbyte): Accept all values from -255 to +255, - so "~0x80" won't be rejected. - - * config/obj-elf.c: No longer include elf/reloc.h. - (obj_elf_section): Set SEC_READONLY and SEC_CODE for text section. - (obj_elf_stab, obj_elf_desc): Deleted do-nothing and commented-out - routines. - (obj_elf_xstab): New routine. - (obj_elf_set_size): Call as_warn, not fprintf. Pass desired - argument to s_ignore. Put "#if 0" around unused code. - (obj_pseudo_table): Use s_ignore instead of do-nothing routines. - Call elf_xstabs for .stabs and .xstabs operators. - - * config/tc-sparc.h (TARGET_FORMAT) [OBJ_ELF]: Now "elf32-sparc". - - * write.c (relax_and_size_seg): Set SEC_RELOC only if fixups are - present. - - * configure.in: mips-bsd configuration was missing format spec. - Should use aout. - - * Makefile.in (Makefile): Depends on configure.in. - - * config/tc-mips.c (append_insn): Don't check for alignment of - frag in memory; alignment of instructions in section is a separate - matter. - - * config/tc-mips.c (macro_build_lui): Fix some assumptions of ANSI - C availability. - - * listing.h: Always provide function declarations, not macros, so - pcc won't lose. - -Tue Mar 2 00:50:43 1993 John Gilmore (gnu@cygnus.com) - - * CONTRIBUTORS: Update Gilmore entry. - -Mon Mar 1 12:03:16 1993 Jim Wilson (wilson@sphagnum.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Correctly assemble prefetch - instructions. Accept integer prefetch function numbers. - -Wed Feb 24 14:58:19 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (s_xword): Now call big_cons, so large - constants are accepted, but symbolic values are not. GCC will not - generate the latter currently. - - * frags.c (frag_init): New function. - (zero_address_frag, bss_address_frag): Now initialized at run - time. - * as.c (main): Call frag_init. - -Wed Feb 24 10:32:42 1993 Ian Lance Taylor (ian@cygnus.com) - - * app.c (do_scrub_next_char): In LEX_IS_LINE_COMMENT_START case: - Don't unget ch2 if we didn't get it. - -Wed Feb 24 04:14:07 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * doc/Makefile.in (TEXIDIR): Updated for new layout. - - * config/tc-sparc.c (s_common): Add support for ELF version. - (tc_gen_reloc) [BFD_ASSEMBLER]: New function. - * config/tc-sparc.h (TARGET_ARCH, TARGET_FORMAT) [BFD_ASSEMBLER]: - New macros. - (md_convert_frag): New macro. - - * config/tc-m68k.c (m68k_ip): For PC-relative addressing of a - symbol, fix the offset so "+2" isn't required. - - * config/tc-i960.c (line_comment_chars, line_separator_chars): - Define as common/bss. - (op_hash, reg_hash, areg_hash, iclasses_seen, br_cnt): Default C - initializers are sufficient. - - * config/obj-aout.h [BFD_ASSEMBLER]: Include libaout.h from bfd. - (TARGET_FORMAT) [BFD_ASSEMBLER]: Default to "a.out". - (S_SET_*, S_GET_*, obj_frob_symbol) [BFD_ASSEMBLER]: New macros. - (S_SET_TYPE) [!BFD_ASSEMBLER]: New macro. - * config/obj-aout.c: Use PARAMS macro for declarations. Remove - "IGNORE_DEBUG" conditional, since both branches are identical. - Use S_SET_TYPE, S_GET_TYPE, and S_GET_DESC instead of directly - referencing symbol structure members. - (obj_aout_frob_symbol) [BFD_ASSEMBLER]: New function. - - * as.h (struct frag): Reordered a couple of fields for better - packing. - - * write.c (record_alignment) [BFD_ASSEMBLER]: Record it in the - section info. - (write_contents) [BFD_ASSEMBLER]: New function. - (write_object_file) [BFD_ASSEMBLER]: Always handle -R here. Call - fix_new with BFD_RELOC_NONE instead of 0 or NO_RELOC. Call - obj_frob_file, obj_frob_symbol, tc_frob_symbol if defined. - (fixup_segment): Make sure common-section symbols get treated the - same as undefined symbols. - (fix_new) [BFD_ASSEMBLER]: Argument r_type is of type - bfd_reloc_code_real_type. Use seg_fix_{root,tail}P derived from - section info. - * write.h (fix_new): Update prototype. - - * tc.h (md_operand, md_convert_frag, tc_headers_hook, - md_section_align, md_undefined_symbol): Don't provide prototypes - if these are defined as macros. - (md_convert_frag) [BFD_ASSEMBLER]: BFD version needs bfd and - section passed. - - * symbols.c (symbol_new): Argument NAME is now pointer to const. - Simplified STRIP_UNDERSCORE code. Remove assumptions about null - pointers in freshly allocated storage. [BFD_ASSEMBLER]: Get new - BFD symbol. - (colon): Display other/desc fields of redefined symbol only if - S_GET_OTHER and S_GET_DESC are defined. - (symbol_make): Argument NAME is now pointer to const. - (symbol_find, symbol_find_base): Likewise. - (S_IS_*, S_GET_*, S_SET_*) [BFD_ASSEMBLER]: New functions. - * symbols.h: Fix prototypes for new const arguments. Add - prototypes for BFD_ASSEMBLER S_* functions. - - * subsegs.c (subseg_change) [BFD_ASSEMBLER]: BFD version of code - for changing to an existing section. - (subseg_new_rest) [BFD_ASSEMBLER]: Split off from subseg_new, - called by subseg_new and subseg_set. - (subseg_new) [BFD_ASSEMBLER]: Rewritten to change to new section, - given section name and subseg number. - (subseg_set) [BFD_ASSEMBLER]: New function; change to a possibly - new section/subsection. - - * read.c: Don't include ctype.h. - (cons) [BFD_ASSEMBLER]: For undefined symbols, use BFD_RELOC_32 - for now; should be machine-dependent. - - * configure.in: Accept *-*-elf and *-*-solaris* as ELF format - targets, forcing BFD use. - -Wed Feb 17 18:59:03 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c: Use PARAMS macro for static function - declarations. Use BFD_RELOC_ macros everywhere, with - compatibility macros declared for non-BFD mode. - (struct sparc_it) [BFD_ASSEMBLER]: Use bfd_reloc_code_real_type - instead of enum reloc_type. - (emit_sparc_reloc): Commented-out function deleted. - (md_convert_frag): Deleted. - (tc_aout_pre_write_hook): Don't define for BFD_ASSEMBLER. - (md_apply_fix): Changed calling sequence (conditionally) for BFD - version. - * config/tc-sparc.h (md_convert_frag): New macro. - - * config/obj-aout.c (obj_aout_stab): Refer to undefined_section, - not SEG_UNKNOWN. Use S_SET_TYPE, S_GET_TYPE, S_GET_DESC instead - of referencing fields directly. - - * write.c (cvt_frag_to_fill): New function; extracted from - write_object_file. - (write_object_file) [! BFD_ASSEMBLER]: Call it. - (relax_and_size_seg) [BFD_ASSEMBLER]: New function; relax section - and set its size and flags. - - * struc-symbol.h (struct symbol) [BFD_ASSEMBLER]: Replace some - fields with BFD equivalents. Turn on back-pointers, and add - target-specific fields at end. - -Thu Feb 11 09:20:37 1993 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-coffbfd.c (fill_section): Don't set vaddr here. - (write_object_file): Set it here instead, so that fixup_segment - can see the correct value. - -Mon Feb 8 13:56:17 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * write.c (write_object_file): Check for errors and warnings and - bail out before processing contents. - (chain_frchains_together_1): New function, does most of the work - of remove_subsegs. - (chain_frchains_together) [BFD_ASSEMBLER]: New function. - (remove_subsegs) [! BFD]: Call it. - (write_object_file) [BFD_ASSEMBLER]: Converted to use BFD - structures and routines. - - * config/obj-elf.*: New files. - - * config/mips.mt, config/rs6000.mt: Deleted. - - * config/h8300.mt: Don't specify compiler here. - - * config/z8k.mt: The z8k code depends on the z8k opcode table, - not the h8300 one. - * config/tc-z8k.h: Comment fix. - - * write.c: Reordered some functions for better inlining. - (fixup_segment): Linkrelax code is no longer conditional on - TC_I960. - -Thu Feb 4 12:45:16 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/{h8500.mt, config/tc-h8500.c, config/tc-h8500.h, - config/obj-coffbfd.c, obj-coffbfd.h}: support for the H8/500. - -Wed Feb 3 19:28:18 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-vms.h (SUB_SEGMENT_ALIGN): Define VMS version here. - * write.c (write_object_file): Not here. - (fix_new): Initialize fx_addnumber. - - * listing.c: Don't include target-cpu.h explicitly, since as.h - includes it. - -Thu Jan 28 00:35:40 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * write.h [BFD_ASSEMBLER]: Don't declare next_object_file_charP, - *_fix_root, *_fix_tail, seg_fix_rootP, seg_fix_tailP. - (struct fix): Reordered fields for compactness and efficiency. - Converted some logical fields to 1-bit fields. - - * config/obj-aout.h: Use PARAMS. - [BFD_ASSEMBLER]: Don't define/declare AOUT_MACHTYPE, seg_N_TYPE, - N_TYPE_seg, DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE. - - * read.c: Don't include listing.h; as.h includes it. Removed - DONTDEF code. - [BFD_ASSEMBLER]: Include subsegs.h. - (old_buffer, new_broken_words): Default initialization is - sufficient. - - * output-file.c [BFD_ASSEMBLER]: Include bfd.h, default TARGET_MACH - to 0, define stdoutput. - (output_file_create) [BFD_ASSEMBLER]: Call bfd_perror on failure. - Call bfd_set_arch_mach. - (output_file_close) [BFD_ASSEMBLER]: Call bfd_close, not - bfd_close_all_done. Call bfd_perror on failure. - (output_file_append) [BFD_ASSEMBLER]: Don't define. - - * config/m68kcoff.mt (LOCAL_LOADLIBES): Delete definition. - - * subsegs.h (segment_info_type): Always define. Omit field scnhdr - if not MANY_SEGMENTS. Define new field bfd_section if - BFD_ASSEMBLER. - (seg_info): New macro. - - * expr.c, input-scrub.c: Use PARAMS macro. Deleted unused - variables, and some irrelevant comments. - - * Makefile.in (ALL_CFLAGS): Include $(BFDDEF). - (LIBS): Include $(BFDLIB). Don't bother with $(CLIB). - * configure.in: Permit --with-bfd-assembler now, with a warning. - Variable need_bfd is now a boolean, as is new variable bfd_gas. - Set BFDDEF and BFDLIB in Makefile when appropriate. - - * as.c: Removed "#ifdef DONTDEF" and "#ifdef comment" code. - (main): Refer to flag_always_generate_output instead of - flagseen['Z']. - - * as.c (main) [BFD_ASSEMBLER]: Open output bfd. - (*_section) [BFD_ASSEMBLER]: Define them. - (perform_an_assembly_pass) [BFD_ASSEMBLER]: Initialize them, and - set section flags when appropriate. - * as.h (SEG_NORMAL) [BFD_ASSEMBLER]: Require that the specified - section is not absolute, undefined, or an assembler internal one. - (absolute_section, undefined_section): Always define. - * expr.c, read.c, symbols.c: Refer to *_section, not SEG_*; break - switch statements into if-else trees. - * symbols.c [MANY_SEGMENTS]: Deleted redundant definitions of - SEG_BSS and SEG_DATA. - - * as.h (frag_now_fix): New macro. - * symbols.c (colon): Use it. - -Wed Jan 27 21:43:53 PST 1993 Ralph Campbell (ralphc@pyramid.com) - - * config/tc-mips.c: Added mips support for mips-dec-bsd. - * config/tc-mips.h: Added mips support for mips-dec-bsd. - * config/ho-mipsbsd.h: Added mips support for mips-dec-bsd. - * config/mips-opcode.h: Added mips support for mips-dec-bsd. - * configure.in: Added mips support for mips-dec-bsd. - * atof-generic.c: Define TRUE and FALSE if not defined. - -Thu Jan 21 12:48:19 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * version.c: Bumped version number to 1.93.05. - -Wed Jan 20 17:11:53 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/obj-coff.c (obj_emit_relocations): Don't use #elif. - (obj_emit_lineno): Don't need return at end of void function. - (obj_symbol_new_hook): Ditto. - - * config/tc-m68k.c: Removed some unused code. - (tc_aout_fix_to_chars): Array nbytes_r_length is now const. - - * config/tc-m68k.h (TC_COUNT_RELOC): Don't emit reloc if only - offset field is set. - -Fri Jan 8 05:44:49 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-sparc.c (sparc_ip): For %uhi and %ulo, if not - ENV64, emit no reloc. - (md_pseudo_table): For ".xword", call s_xword. - (s_xword): New function. - - * config/tc-sparc.c (architecture_requested, warn_on_bump, - md_relax_table): Use default zero initialization. - (s_reserve): Since SEG_E2 is equivalent to SEG_BSS, just use the - latter, instead of selecting with preprocessor conditionals. - -Thu Jan 7 08:58:21 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: recognise all sparclite variants - -Thu Jan 7 05:25:25 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * read.c (s_data) [!BFD_ASSEMBLER]: Fix typo in 4 Jan change -- - accidentally changed to use subseg_change where it should have - been subseg_new. - -Tue Jan 5 08:42:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * expr.c (operand): If character other than comma or newline is a - logical end-of-line character, use the newline case. - From Eric Youngdale: - (operand): Set X_add_number field for floating-point numbers. - (operand): Treat zero byte as end-of-operand. - - * configure.in (per-target): Look for with_bfd_assembler option. - For now, only accept "no", until the merge is done. - - Merged changes from Eric Youngdale (youngdale@v6550c.nrl.navy.mil): - * as.c, flonum-konst.c, hex-value.c, input-file.c, version.c, - config/obj-aout.h, config/obj-vms.c: VMS -> HO_VMS. - * read.c: Finish conversion to S_* macros in the VMS only - parts of the program. Add "const" modifier to hex_value. - * as.c, read.c, symbols.c, write.c: Change "ifdef VMS" to - "ifdef OBJ_VMS". - * expr.c: Add "const" modifier to hex_value. - * symbols.c: Finish conversion to S_* macros in the VMS only - parts of the program. Add "const" modifier to - md_[long,short]_jump_size. Remove declaration of const_flag - (which will be declared in obj-vms.h). - * write.c: Add "const" modifier to md_[long,short]_jump_size. - Fix arguments to VMS_write_object_file. - * config-gas.com: New file. Script for VMS systems to set up the - configuration to build gas for VMS, and create config.status. - * make-gas.com: Redone to work with new scheme. - * config/obj-vms.c: Patch to fix bug where we were not correctly parsing the - stabs directives. - * config/obj-vms.c: Define macros COPY_LONG and COPY_SHORT which - will swap bytes if needed on a big endian system. Use throughout - as needed. - * config/obj-vms.c (obj_aout_stab): Add code to generate listing file. - * config/obj-vms.c (VMS_typedef_parse): Add alias to correctly handle certain - types of malformed stabs. Change parsing algorithm so that we are - more certain of having all of the information that we need on hand. - * config/obj-vms.c (final_forward_reference): New function, used to help - resolve the data types of as many struct elements as possible - when some part of the struct is not fully defined by the compiler. - * config/obj-vms.c (VMS_LSYM_Parse): Correctly handle case of continuation - stabs directives. - * config/obj-vms.c (VMS_write_object_file): Define all vtable psects - as symbols as well in the object file. Look for external functions - that start with "__vt.", and turn them into variables, since the - g++ compiler is incapable of doing this. - * config/tc-vax.c: Add '1' option for backward compatibility with older GCC - versions. - * bignum-copy.c (bignum_copy): Fix bug where we pad with zeroes. - * input-scrub.c (as_where): Fix bug where as would crash if we did not - have the name of the source file yet. - * config/ho-vms.h: define HO_VMS, not HO_VAX. - -Mon Jan 4 05:17:26 1993 Ken Raeburn (raeburn@cygnus.com) - - * read.c (s_data): Always use "data_section", since it'll map to - SEG_DATA or SEG_E1 if needed. - (s_lcomm): Likewise with bss_section. - (s_fill): Use memset, not bzero. - -Thu Dec 31 04:29:27 1992 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * read.c: Deleted some code under "#ifdef DONTDEF" that was for - handling GDB symbol table data. - - * config/obj-aout.h (segment_name): Delete definition. - (seg_name): Delete declaration. - * config/obj-bout.h (segment_name, seg_name): Ditto. - * config/obj-vms.h (segment_name, seg_name): Ditto. - * config/obj-coff.h (segment_name): Ditto. - * config/obj-coffbfd.h (segment_name): Ditto. - - * Changes for BFD_ASSEMBLER: - * obj.h (obj_crawl_symbol_chain): Declare only if not - BFD_ASSEMBLER. - (obj_header_append, obj_pre_write_hook): Ditto. - * as.h (stdoutput): New var, defined only if BFD_ASSEMBLER. - (segT) [BFD_ASSEMBLER]: New typedef for "asection *". - (segment_name) If BFD_ASSEMBLER, look up BFD section name; - otherwise, use seg_name array. - (seg_name): Declare only if not BFD_ASSEMBLER. - (section_alignment): Declare only if not BFD_ASSEMBLER. - (big_section, reg_section, pass1_section, diff_section, - absent_section, text_section, data_section, bss_section): If - BFD_ASSEMBLER, declare as variables; otherwise, declare as macros, - mapping to segT enum values. - (tc_aout_fix_to_chars, next_object_file_charP): Force parse errors - if these are used or defined, if BFD_ASSEMBLER. - (subseg_set, subseg_new) [BFD_ASSEMBLER]: Functionality of old - subseg_new split into two functions. - (SEG_NORMAL): For BFD_ASSEMBLER, always return true, for now. - - * as.h (volatile): Don't define if already defined. - (had_errors, had_warnings): Provide prototypes for ANSI C even if - NO_STDARG. - (as_bad, as_fatal, as_tsktsk, as_warn): For GNU C version 2, - declare with format attribute for -Wformat checking. - -Wed Dec 30 10:18:57 1992 Ian Lance Taylor (ian@cygnus.com) - - * app.c, config/tc-*.c: Don't include read.h, since it is already - included by as.h. - - * These are based on patches from Minh Tran-le - . - * configure.in (i[34]86-ibm-aix*): Accept i486 for host. Use - obj_format coffbfd and gas_target i386coff for target. - (i[34]86-*-isc*): New host (uses sysv). - * config/i386aix.mt: Removed (no longer used). - * config/mh-i386aix (RANLIB): Use true rather than /bin/true. - (MINUS_G): Removed. - (LDFLAGS): Added, defined as -shlib. - * config/te-i386aix.h (REVERSE_SORT_RELOCS): Undefine. - * config/te-sco386.h (LOCAL_LABEL): Don't define. - (DOT_LABEL_PREFIX): Define. - * expr.c (operand): If DOT_LABEL_PREFIX, use .L0\001 as a label - name rather than L0\001. - * read.c (s_lcomm): Make a frag in SEG_BSS rather than using - local_bss_counter. - * symbols.c, symbols.h (local_bss_counter): Removed. - * write.c (write_object_file): bss no longer uses - local_bss_counter. Pass correct data and bss size to - VMS_write_object_file. - * config/obj-vms.c (VMS_write_object_file): Accept bss size as - argument, rather than using local_bss_counter. - * config/tc-m88k.c (s_bss): Don't use local_bss_counter. - * config/tc-sparc.c (s_reserve): Don't use local_bss_counter. - * config/obj-coffbfd.c (had_lineno, had_reloc): Removed. - (size_section): Restored sanity check. - (do_relocs_for): Base section address on s_paddr rather than - computing it. Adjust a29k R_IHIHALF special case to account for - section paddr (used to require paddr to be zero). If there are no - reclos, set s_relptr to 0. Set relocation size in object_headers. - (fill_section): Always set s_vaddr here, removing - ZERO_BASED_SEGMENTS case. Force s_scnptr for bss to 0. Don't set - NOLOAD for i386 .bss, because it confuses the SVR3 native linker. - Set STYP_INFO for .comment. - (coff_header_append): Use object headers and H_{SET,GET}_* macros. - Make aouthdr writing depend on OBJ_COFF_OMIT_OPTIONAL_HEADER. - (crawl_symbols): Handle 8 character section name correctly. Use - H_{SET,GET}_* macros. - (do_linenos_for): Set lineno size in object_headers. - (write_object_file): Use H_{SET,GET}_* macros. Don't bother to - set s_vaddr here. If string_byte_count remains 4, set it back to - 0, and only write strings out if there are some. Call - fill_section before do_relocs_for and do_linenos_for. - (obj_coff_section): Handle optional quoted second argument giving - section characteristics. - (obj_coff_bss): Added to handle .bss. - (obj_coff_ident): Added to handle .ident (puts string in .comment - section). - (obj_coff_lcomm): Put common symbols in .bss, not .data. - (fixup_mdeps): Change to segment. Call frag_wane after - md_convert_frag. - (fixup_segment): Explicitly check S_IS_COMMON before making 386 - adjustment (already happened only for common symbols, but this is - clearer). - * config/obj-coffbfd.h (OBJ_COFF_OMIT_OPTIONAL_HEADER): Define. - * config/tc-i386.c (s_bss): Don't use if I386COFF. - (md_pseudo_table): Ignore .optim and .noopt. - (tc_coff_sizemachdep): New function. - * config/tc-i386.h (REVERSE_SORT_RELOCS): Undef, for SVR3 - compatibility. - (LOCAL_LABEL): Removed definition. - (DOT_LABEL_PREFIX): Defined. - -Mon Dec 28 10:32:05 1992 Ken Raeburn (raeburn@cygnus.com) - - * app.c (app_push): Use memcpy, not bcopy. - (do_scrub_next_char): For \", return " not '. - (symbol_chars): Now const. - - * expr.c (operand): If not LOCAL_LABELS_FB, don't look for "0f" - and "0b". If LOCAL_LABELS_DOLLAR, check for "0$". - - * config/obj-coff.h: Don't use #elif. - - * config/ho-sunos.h: Don't include sys/stdtypes.h; 4.0.3 doesn't - have it. (Reported by Noah Friedman, friedman@gnu.ai.mit.edu.) - -Wed Dec 16 12:12:33 1992 Ian Lance Taylor (ian@cygnus.com) - - * write.c, config/obj-ieee.c: don't define SUB_SEGMENT_ALIGN - if it is already defined. - -Tue Dec 15 12:40:11 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * app.c (do_scrub_begin): allow single quote strings if so - configured. - - * config/*z8k*: checkpoint - -Sun Dec 13 00:04:38 1992 Ian Lance Taylor (ian@cygnus.com) - - * read.c (read_a_source_file): avoid calling xmalloc (0). - -Sat Dec 12 15:26:34 1992 Ian Lance Taylor (ian@cygnus.com) - - * listing.c: Call xmalloc, not malloc; don't declare malloc. - - * Changes to support SCO 3.2v4: - * read.c (s_align_bytes, s_align_ptwo): If not SEG_DATA or - SEG_BSS, fill with NOP_OPCODE. - * config/i386coff.mt: Add opcode/i386.h to TARG_CPU_DEPENDENTS. - * config/obj-coffbfd.c (do_relocs_for): Increment addr even if not - using ZERO_BASED_SEGMENTS. - (fill_section): If ZERO_BASED_SEGMENTS, set segment addresses, but - never set segment address for SEG_E2 (.bss) and don't write out - SEG_E2 contents. Set .init and .fini sections to STYP_TEXT. - (obj_coff_endef): Don't merge labels or symbols awaiting forward - definitions, and don't merge tags with non-tags. Check for .bf - rather than just checking whether the second character is b and - the third character is f. - (obj_coff_val): gcc can generate values which we don't handle - correctly; discard information for now, since it only affects the - debugging information. - (tag_find_or_name): Don't insert tags in the symbol table. - (yank_symbols): Don't merge labels. - (write_object_file): Don't define SUB_SEGMENT_ALIGN if it is - already defined. Fill subsegments with NOP_OPCODE, not 0. Don't - set segment address if ZERO_BASED_SEGMENTS. - (obj_coff_section): Accept and ignore a trailing quoted string, as - used in AT&T i386 syntax. - (fixup_segment): Take segment as argument. On the i386, adjust PC - relative addends by the segment vaddr. - * config/tc-i386.h: Define SUB_SEGMENT_ALIGN. - * config/tc-a29k.h: Define ZERO_BASED_SEGMENTS. - * config/tc-i386.c: (i386_operand): If I386COFF, accept any segment type. - -Tue Dec 8 00:06:48 1992 Ken Raeburn (raeburn@rtl.cygnus.com) - - * config/obj-coffbfd.c: Include libcoff.h. - - * version.c: Now version 1.93. - -Mon Dec 7 00:39:09 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-i386.c (md_pseudo_table): For 386bsd and linux, do - power-of-two alignment for .align. - - * as.h: If BROKEN_ASSERT, just redefine `assert' to be trivial, - and leave everything else alone. - -Fri Dec 4 16:58:42 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (as.new): Don't bother saving as.old. - - * write.c: Conditionalize on OBJ_VMS, not VMS. - (magic_number_for_object_file): Don't define if OBJ_VMS. - - * config/obj-vms.c: Changes for traditional C. - -Thu Dec 3 01:24:07 1992 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * config/ho-generic.h (malloc, realloc): Declare. - - * Lots of comment/whitespace changes. - - * write.h (struct fix): Some fields reordered, narrowed. - - * read.c (MASK_CHAR): Define using C types, not magic number. - - * as.c, input-file.c: Deleted some unused code. - - * app.c, as.h: Doc fix. - - * flonum-konst.c, flonum-mult.c: Include ansidecl.h. - - * as.h (xmalloc): Argument is long. - - * xmalloc.c (error): Remove declaration; as.h takes care of it. - - * doc/as.texinfo: Regrouped documentation of some command-line - options. Updated options documentation for m68k. Some minor - wording/punctuation changes. - -Mon Nov 30 11:42:11 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * configure.in: Accept target OS "vms". - - * symbols.c: Merged ANSI and non-ANSI function decls, using - PARAMS macro. - - * xmalloc.c: Just include as.h, don't bother trying to figure out - other header files. - - * strstr.c, strerror.c: Deleted. - * Makefile.in: Deleted references. - - * config/tc-ns32k.c: Don't include header file for string - declarations; leave that to ho-*.h. - -Fri Nov 27 04:11:36 1992 Ken Raeburn (raeburn at cambridge-laptop.cygnus.com) - - * config/coff_gnu.h [TC_I860]: Guesses for reloc type values, - imported from FSF sources. - - * messages.c (strerror): Declare unconditionally. - - * as.h: Delete alloca and register definitions. - - * config/atof-ieee.c (mask): Now const. - - * obstack.c, obstack.h: Deleted. - - * as.h (flag_readonly_data_in_text): New flag. - * as.c (main): Set it for -R. - - * as.h (flag_suppress_warnings): New flag. - * as.c (main): Set it for -W. - * messages.c (as_warn): Check it instead of flagseen['W']. - - * as.h (flag_always_generate_output): New flag. - * as.c (main): Set it for -Z. - - * config/tc-sparc.h: Define NEED_FX_R_TYPE. - * config/tc-a29k.h: Ditto. - * write.h (struct fix): Don't conditionalize fx_r_type field on TC - macros. - - * as.h: Merged ANSI and non-ANSI function decls, using PARAMS - macro. - * bignum.h, expr.h, flonum.h, frags.h, input-file.h, listing.h, - obj.h, output-file.h, read.h, struc-symbol.h, symbols.h, tc.h, - write.h: Likewise. - * read.c: Likewise. - - * xmalloc.c: Conditionalize on HAVE_MALLOC_H, not USG. Fold in - xrealloc from xrealloc.c. - * xrealloc.c: Deleted. - * Makefile.in (REAL_SOURCES, OBJS): Adjusted. - - * configure.in: For host CPU a29k, rs6000, vax, consider using bsd - or vms ho- files. - - * config/ho-sysv.h (setbuffer, HO_USG): Deleted. - - * config/atof-ieee.c (atof_ieee): Exponent field isn't a pointer; - don't initialize it with NULL. - - * config/ho-vax.h (M_VAX): Deleted; was unused. - - * README-vms, config/ho-vms.h, config/obj-vms.c, config/obj-vms.h: - New files imported from FSF version, contributed by Eric Youngdale. - * README-vms-dbg, config/vms: Deleted. - - * ChangeLog, config/ChangeLog: Merged. - - * config/*tahoe*, configure.in: Tahoe support brought in from FSF - version. - - * input-file.c (input_file_open): Eliminate call to setvbuf. - [USG] (setbuffer): Deleted macro. - -Mon Nov 23 11:00:16 1992 Ken Raeburn (raeburn@cygnus.com) - - * all files: Whitespace changes for GNU indentation style, done by - GNU `indent'. Some cleanup still needed, especially of comments. - - * configure.in: No te-386bsd.h file exists; don't try to use it. - - * config/obj-coff.c (obj_coff_endef): Use as_warn, not fprintf. - - * config/tc-m68k.c (md_assemble): Don't complain about 68000 with 68881; - could be doing emulation. - -Thu Nov 19 11:47:19 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - z8000 documentation - * doc/Makefile.in, doc/all.m4, doc/as-all.texinfo, doc/as.texinfo: - all modified. - -Tue Nov 10 09:49:24 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (as.o, obj-format.o): added dependency on subsegs.h. - - * subsegs.h: add extern to segment_info declaration. - - * read.h: added extern declarations for comment_chars, - line_comment_chars, and line_separator_chars. - read.c, app.c: removed definitions of comment_chars, - line_comment_chars, and line_separator_chars. - - * config/tc-m68k.c (m68k_reg_parse): If REGISTER_PREFIX isn't defined, - still accept (but don't require) OPTIONAL_REGISTER_PREFIX before - the register name. - (insert_reg): put REGISTER_PREFIX before register names before - putting them in the symbol table. - * config/tc-m68k.h (OPTIONAL_REGISTER_PREFIX): Define to be "%", if not - M68KCOFF. - - * config/obj-coffbfd.c (fill_section): set STYP_NOLOAD bit for .bss - section. - - * config/atof-ieee.c, config/atof-ns32k.c, config/tc-*.c: made - EXP_CHARS, FLT_CHARS, comment_chars, line_comment_chars and - line_seperator_chars consistently const, and always - initialized them. Included read.h. - -Thu Nov 5 17:55:41 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * config/tc-sparc.c (sparc_ip): Add code to flag error if an absolute - constant will not fit in an immediate field. - (md_apply_fix, RELOC_BASE13 case): Check for relocation overflow. - -Wed Nov 4 07:50:46 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/obj-coff.c (callj_table): Delete global variable. - (obj_emit_relocations): Define it locally here, and only if - TC_I960 is defined. - - * config/tc-m68k.c (m68k_reg_parse): Underscore is part of a symbol name. - (m68k_ip): Don't warn about bignum used as float bit-pattern. - - * config/obj-coff.c: Replaced ANSI and non-ANSI function declarations - with a single set using PARAMS macro. - - * config/tc-i960.c (tc_bout_fix_to_chars): Bit-field fixups want a length - of 2. - - * config/tc-i960.c: Missed a couple of 0->NO_RELOC conversions. - - * config/tc-i960.h (N_BALNAME, N_CALLNAME): Define as char-type values, - so widening works consistently. - -Wed Oct 28 08:52:34 1992 Ken Raeburn (raeburn@cygnus.com) - - * version.c: Put conditional "const" before version_string, not - before dummy function for VMS. Now version 1.91.03. - - * app.c (do_scrub_next_char): Need double-\ before `000' to show - printed rep of null character. - -Fri Oct 23 14:40:38 1992 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-coffbfd.c (write_object_file): check return value of - bfd_close_all_done. - -Tue Oct 20 12:18:08 1992 Ian Lance Taylor (ian@cygnus.com) - - * Support for i386-sysv. - obj-coffbfd.c (do_relocs_for, write_object_file): set segment - addresses to reasonable sizes. New define ZERO_BASED_SEGMENTS can - be used to set them all to zero as was done before. - (fill_section): segment addresses now set in write_object_file. - (fill_section): Don't set STYP_NOLOAD for .bss section. - (fixup_segment): 386 uses strange common symbol format. - tc-i386.c (tc_coff_fix2rtype): use R_DIR32, not R_RELLONG, for - compatibility with SVR3.2 linker. - * configure.in: i386-sysv and i386-sco use coffbfd. - - * app.c (do_scrub_next_char): discard whitespace after a label. - -Sat Oct 10 12:33:45 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: differentiate between SunOS 4 and Solaris2 for Sun4 - hosts, use the sysv configuration for solaris2 - -Mon Oct 5 09:28:57 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - fix i960+non-bfd coff bit rot. - * config/obj-coff.c (c_dot_file_symbol, obj_coff_ln, obj_coff_line): - support for C source listings. (obj_coff_endef): look in the right - part of the symbol for the symbol name - - * config/tc-m68k.c (get_num): make it work for all segments, not just the - first three. - -Mon Oct 5 03:30:36 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) - - * configure.in: recognize i386-*-bsd emulation. - -Thu Oct 1 23:05:12 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * configure.in: use the cpu-vendor-os triple for host and target - -Tue Sep 29 12:22:52 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/obj-coffbfd.c (write_object_file): don't fixup for the z8k - * config/tc-z8k.c: lots of bug fixes - -Tue Sep 29 10:51:55 1992 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-i960.h, config/tc-i960.c: avoid the ANSI - preprocessor addition #elif, since it is not supported by old - compilers. - config/ho-rs6000.h, config/tc-m68k.c: the native RS/6000 - compiler miscompiles a couple of expressions in tc-m68k.c. - -Mon Sep 28 21:18:24 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * read.c (cons): If NO_RELOC is defined, use it. - - * config/tc-i960.c (get_cdisp): Use NO_RELOC, not 0, in call to fix_new. - -Fri Sep 25 18:18:52 1992 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-m68k.h: if M68KCOFF, define DOT_LABEL_PREFIX (to require - local labels to start with a .) and set REGISTER_PREFIX to %. - tc-m68k.c (m68k_reg_parse): accept REGISTER_PREFIX if defined. - -Fri Sep 25 17:53:43 1992 John Gilmore (gnu@cygnus.com) - - * messages.c: Comment changes. - -Fri Sep 25 14:12:58 1992 Ken Raeburn (raeburn@kyriath.cygnus.com) - - * as.h: Test if __STDC__ is defined only, don't test its value. - * messages.c: If __STDC__ is not defined, define NO_STDARG. - -Thu Sep 24 12:42:32 1992 Brendan Kehoe (brendan@rtl.cygnus.com) - - * listing.c (debugging_pseudo): Add stabs and stabn as things to - ignore. - -Tue Sep 22 13:02:07 1992 Sean Eric Fagan (sef@cygnus.com) - - * config/obj-coffbfd.c (do_relocs_for,fill_section): now allocate all - sections starting from zero, rather than making them consecutive. - This makes subsequent reloc calculations easier, esp if the object - format doesn't understand addends. (obj_coff_lcomm): (maybe temporarily) - allocate lcomm in .data rather than in .bss. It seems that some - tools can't cope with a non-zero sized bss before linkage. - -Tue Sep 22 15:10:51 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c: Replace "enum m68k_architecture" with "int" - throughout. That enum no longer means what we thought it meant. - - * config/tc-m68k.c (md_assemble, md_parse_option): Handle new - "-mno-688[58]1" options. - - * config/tc-m68k.c: Added CPU32 support. - -Fri Sep 18 08:02:18 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-m68k.c (m68k_ip): An(disp) is not pc relative. - -Tue Sep 15 17:25:05 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * Makefile.in (as.new): Remove dependence on LOCAL_LOADLIBES. - Change LIBDEPS dependence to LIBS. - -Tue Sep 15 15:32:02 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (install): if $(tooldir) exists, install as in - $(tooldir)/bin. - -Sun Sep 13 20:30:10 1992 Ian Lance Taylor (ian@cygnus.com) - - * Added WARN_SIGNED_OVERFLOW_WORD define to give an error if any - .word is < -32768 or > 32767. The -J flag causes the error to be - ignored. This is to catch over-sized switches generated by gcc on - systems which don't support the broken .word hack. - as.c (main): permit -J if WARN_SIGNED_OVERFLOW_WORD. - write.c (fixup_segment): check for signed .word overflow if - WARN_SIGNED_OVERFLOW_WORD. - - * write.c (fixup_segment): fixed missing parens in expression - checking for byte or word overflow. - - * config/obj-coffbfd.h: define WARN_SIGNED_OVERFLOW_WORD. - obj-coffbfd.c (fixup_segment): check for signed .word overflow if - WARN_SIGNED_OVERFLOW_WORD. - - * config/obj-coffbfd.c (fixup_segment): fixed missing parens in - expression checking for byte or word overflow. - -Fri Sep 11 10:21:04 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - Support for i386 coff - * config/obj-coffbfd.h : added stuff - * config/tc-i386.c (tc_coff_fix2rtype): new function - * config/tc-i386.h : new coff defines - -Thu Sep 10 09:23:15 1992 Ian Lance Taylor (ian@cygnus.com) - - * input-scrub.c (input_scrub_push): call input_file_begin, not - input_scrub_begin. - messages.c (as_perror): print ": " between the passed in error and - the strerror, like perror does. - -Wed Sep 9 11:06:25 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: use gas_target instead of modifying target_cpu. - From Steve Chamberlain: - Makefile.in: Handle m68*-*-coff*. - read.c, read.h: add mult argument to s_space - - * config/tc-m68k.c (m68k_ip, m68k_ip_op, get_num, try_moto_index): merge - Motorola and MIT syntax; gas can now assemble either type of - file. - * config/tc-m68kmote.c, config/tc-m68kmote.h: removed now - superfluous files. - - From Steve Chamberlain: - * config/m68kcoff.mt: for m68k COFF. - * config/obj-coffbfd.c: (fixup_mdeps) added - (size_section) removed bad sanity check - (fill_section) added rs_machine_dependent case - (write_object_file) call fixup_mdeps - (fixup_segment) set fx_subsy to 0. - * config/ obj-coffbfd.h: define WORKING_DOT_WORD (too hard to - support) and handle m68k. - * config/tc-m68k.c, config/tc-m68k.h: added m68k COFF support - and Motorala pseudo ops. - -Tue Sep 8 17:10:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (LIBS): Include opcode library. - -Fri Sep 4 18:20:56 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-m68k.c (get_num, case SEG_BIG): If only small integers - including zero are accepted, pass +0.0. - -Sun Aug 30 21:24:46 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: map "as" through program_transform_name when - installing. - - * doc/Makefile.in: map "as" through program_transform_name when - installing. - -Sat Aug 29 12:11:12 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * Makefile.in (as.new): Depend on LOCAL_LOADLIBES. - -Fri Aug 28 16:25:22 1992 Ian Lance Taylor (ian@cygnus.com) - - * config/obj-bout.h, config/obj-bout.c (obj_header_append, - obj_symbol_to_chars). - * config/tc-i960.c (md_ri_to_chars): Always output bout object - file in little endian byte order (used to use endianness of - host). - -Tue Aug 25 15:50:48 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * config/tc-m68k.c (init_table): Now const. Always include 68851 - data, so that "bc" is available to 68040 cache instructions. - Added "tt0", "tt1", and 68ec030 variants. - (md_assemble): Complain if 68000 (only) and 68881 are specified. - (enum _register): Added TT0, TT1. - (m68k_ip, cases '3' and 't'): Handle new operand type codes. Pass - line number correctly in "internal error" messages. Don't print - architecture-mismatch message for operand errors. - - From Colin Smith (colin@wrs.com): - * config/tc-m68k.c (m68k_ip, case '_'): Use addword twice rather - than install_operand. - -Tue Aug 25 15:13:48 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * listing.c (buffer_line): rewind to the start of include - files, they might be included twice. - - * z8k.c, z8k.h, z8k.mt: z8000 support stuff - -Mon Aug 24 12:45:43 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: defined TARGET_CPU for C code so that it can choose - one element of a family. - - * config/tc-m68k.c: use TARGET_CPU to choose default cpu type. - - * config/te-generic.h: default to LOCAL_LABELS_DOLLAR and LOCAL_LABELS_FB - so that we can assemble hand-written libgcc code. - -Fri Aug 21 14:38:44 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * messages.c (as_warn): Use fputs, not fprintf, with a buffer that - has already been formatted (but may still contain %-characters). - (as_bad): Likewise. - -Wed Aug 19 11:20:59 1992 Ian Lance Taylor (ian@cygnus.com) - - * config/tc-m68k.c, tc-m68kmote.c: the cas2 instruction is supposed to be - written with indirection on the last two operands, which can be - either data or address registers. Added a new operand type 'r' - which accepts either register type. Added '(' to notend stuff in - tc-m68kmote.c to accept (a0):(a2) in cas2 instruction. - -Wed Aug 19 09:25:09 1992 Ken Raeburn (raeburn@cygnus.com) - - * as.h (enum _relax_state): Start off at one, not zero, to better - catch uninitialized-variable errors. - (linkrelax): Declare new variable. - - * messages.c (warning_count, error_count): Default initializer is - sufficient. - - * write.c: Merged some declarations, using PARMS macro. - (text_frag_root, data_frag_root, bss_frag_root, text_last_frag, - data_last_frag): No longer static. - (write_object_file, case rs_align or rs_org): If HANDLE_ALIGN is - defined, call it. Change segments before calling fixup_segment. - (relax_align): If linkrelax, provide extra padding. - - * config/obj-bout.c (obj_emit_relocations): Emit alignment relocs despite - their not having symbols associated. - - * config/tc-i960.c (norelax, instrument_branches): Default initializer is - sufficient. - (linkrelax): Delete variable definition. - (mem_fmt): Call fix_new with NO_RELOC. - (tc_bout_fix_to_chars): Handle alignment relocs. - (i960_handle_align): New function. - * config/tc-i960.h (linkrelax): Delete declaration. - (HANDLE_ALIGN): New macro; calls i960_handle_align. - (NEED_FX_R_TYPE, NO_RELOC): New macros. - -Tue Aug 18 14:59:21 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/sparc.mt: New file. Grab sparc opcode table from bfd - library. - -Tue Aug 18 14:16:38 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: always create installation directories. Removed - MINUS_G, set CFLAGS to default to -g, added FLAGS_TO_PASS, passed - FLAGS_TO_PASS to recursive makes. - - * doc/Makefile.in: always create installation directories. - -Mon Aug 17 15:09:56 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * input-scrub.c (input_scrub_pop, input_scrub_push): memcpy was - being used with args swapped, causing occasional lossage when - refilling buffers after an include file. - -Mon Aug 17 13:18:51 1992 Ken Raeburn (raeburn@cygnus.com) - - * messages.c (as_tsktsk): Use correct ANSI form for stdarg - version. Discard bogus DONTDEF version. - (as_warn, as_bad, as_fatal): Likewise. - -Fri Aug 14 18:31:14 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-m68k.c (m68k_ip): If instruction is invalid for the - selected architecture, print a message saying so and listing what - processors support it, rather than saying "operands mismatch". - -Thu Aug 13 13:53:19 1992 Ken Raeburn (raeburn@cygnus.com) - - * as.h [BROKEN_ASSERT]: If defined, turn off all assertion checks. - - * config/ho-rs6000.h (M_RS6000): Don't define it. - (free): Declare it. - (BROKEN_ASSERT): Define it if not __STDC__. - -Tue Aug 11 12:58:14 1992 Ken Raeburn (raeburn@cygnus.com) - - * sparc.mt: New file. - -Mon Aug 10 14:37:08 1992 Per Bothner (bothner@cygnus.com) - - * config/tc-m68k.c: ".align N" means align to N-byte boundary *only* - if TN_SUN3; otherwise align to 2**N-byte bounary. - -Thu Aug 6 12:10:39 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * read.c (s_fill): make the .fill size clamped error a warn and - fix bug where 0's were always placed. - - * config/tc-h8300.c: if a :8 is seen after an operand, fill top - two bytes of any constant with 0xff: - -Wed Aug 5 12:02:40 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-m68k.c (md_pseudo_table): fix the .align thing - the right way; for just the 68k. Sun 3 .align is nbytes, not ptwo. - -Wed Aug 5 01:54:34 1992 John Gilmore (gnu at cygnus.com) - - * config/tc-m68k.c (try_index): Error if index scaling specified and - assembling for an older CPU than a 68020. - -Sat Aug 1 19:10:13 1992 Ken Raeburn (raeburn@cygnus.com) - - * config/tc-sparc.c (tc_aout_fix_to_chars): If pc-relative, take - fx_offset into account. - -Fri Jul 31 21:53:28 1992 Ken Raeburn (raeburn@cygnus.com) - - * configure.in (mips host): Accept "ultrix" with version number. - - * expr.c (floating_constant): Separate "=-" to avoid confusing - ancient or broken compilers. - - * config/tc-m68k.c (m68k_ip): Mismatch error could also indicate - processor/opcode mismatch, so reword the error message. - (md_assemble): If no CPU has been set (even if FPU/PMMU - characteristics have been), default to 68020. Don't need extra - quotes around error string. - -Fri Jul 31 12:26:34 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * read.c (potable): Revert sac's incorrect change made Jul 13. - Align really is supposed to be ptwo not nbytes. - -Mon Jul 20 02:51:59 1992 D. V. Henkel-Wallace (gumby@cygnus.com) - - * Makefile.in: _Do_ include libiberty. (from sef) - -Fri Jul 17 15:15:28 1992 Ken Raeburn (raeburn@cygnus.com) - - * expr.c (integer_constant): Handle "0f" and "0b" label references - properly. - -Thu Jul 16 08:20:17 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * write.c (fixup_segment): if relaxing, don't do anything. - * config/obj-bout.[ch] : maintain the a_relaxable file header info - * config/tc-i960.c: new option -linkrelax - -Mon Jul 13 14:11:36 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * expr.c (expr): allow SEG_BSS in expressions - * read.c (potable): align should be nbytes, not ptwo! - * write.c (write_object_file): extra glue for new bss attributes - (relax_segment): SEG_BSS is ok now - * config/tc-m68k.c (m68k_ip_op): can now parse more @( modes - -Mon Jul 6 17:09:32 1992 Steve Chamberlain (sac@cygnus.com) - - * config/obj-coffbfd.c (fill_section): mark .lit sections as STYP_LIT - -Mon Jun 1 16:20:22 1992 Michael Tiemann (tiemann@cygnus.com) - - * configure.in: recognize m680x0 as having sun3 emulation mode for - vxworks environment. - - -Tue Jun 30 20:25:54 1992 D. V. Henkel-Wallace (gumby@cygnus.com) - - * Makefile.in: Add program_suffix (parallel to program_prefix) - -Wed Jun 24 10:57:54 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * app.c (process_escape): new function to handle escapes the right - way, (do_scrub_next_char): use new function - * cond.c (s_ifdef): do ifdef/ifndef right - * read.c (s_fill): make the , expressions optional like the doc - says - * config/tc-h8300.[ch]: better warnings - -Tue Jun 9 07:54:54 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * subsegs.c (subsegs_begin): create bss0_frchainP in the same was - as data0_frchainP - - * write.c (write_object_file): various changes to handle data in - the BSS segment in much the same was as stuff in the DATA segment. - - * config/tc-m68k.c (m68kip): Fix typo so that only arch's >=68020 do - pcrel data stuff. (md_estimate_size_before_relax): when relaxing a - 68010 bxx into a bra+6 jmpxx, put the bytes of the jmp opcode into - the right place. (s_bss): Don't put .bss stuff into SEG_DATA, put - it into SEG_BSS - -Thu Jun 4 11:59:13 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * expr.c(expr): allow SEG_REGISTER in expressions. - * read.c(pseudo_set): register expressions can be the source of a - set. - * subsegs.c (subseg_new): Now -R forces all changes to SEG_DATA to - goto SEG_TEXT (if a.out) - * write.c (write_object_file): If a.out don't use the old way for - -R. - * config/obj-a.out (s_sect): complain if the user tries to use a - subsegment with a value which might interfere with out -R hackery. - * config/tc-m68k.c (m68k_reg_parse): lookup names in symbol table - rather than use ugly if tree. (init_regtable): insert register - names into symbol table. - -Tue Jun 2 16:47:09 1992 Steve Chamberlain (sac@cygnus.com) - - * write.c (write_object_file): keep the fix_tail clean, which - fixes a bug in -R where relocations were being lost. - -Mon Jun 1 16:20:22 1992 Michael Tiemann (tiemann@cygnus.com) - - * configure.in: recognize m680x0 as having sun3 emulation mode for - vxworks environment. - -Sun May 31 05:33:00 1992 david d `zoo' zuhn (zoo@cygnus.com) - - * configure.in: recognize m680x0 as an m68k - -Thu May 28 11:22:02 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - - * configure.in: Recognize sparclite as a sparc variant. - - * config/tc-sparc.c: Use new ARCHITECTURES_CONFLICT_P macro. Mention new - -Asparclite flag. - -Tue May 26 16:47:56 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/tc-a29k.c: lint - * listing.c, expr.c: patches from Andrew Smith - -Thu May 14 17:22:48 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * doc/Makefile.in: use m4 rather than gm4. - -Mon May 4 18:56:19 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * config/obj-coffbfd.c: use is a synonym for section, (do_relocs_for): - calc the base of relocs correctly. - * config/tc-a29k.c (parse_operand): allow expressions to be in any section. - -Mon Apr 27 13:13:31 1992 K. Richard Pixley (rich@cygnus.com) - - * as.c, write.c: use -K rather than -k for the broken word warning - option. - -Tue Apr 21 13:35:30 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in: do not print recursion lines. - -Wed Apr 15 21:19:31 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: the tooldir copy of gas goes directly in tooldir. - -Tue Apr 14 14:50:22 1992 Ken Raeburn (Raeburn@Cygnus.COM) - - * write.c (write_object_file): For b.out format, round up section - start addresses to match required alignment. - -Thu Apr 9 05:45:29 1992 Ken Raeburn (Raeburn@Cygnus.COM) - - * Makefile.in (install): Install into $(tooldir)/bin, since that's - where gcc looks for it. - -Tue Apr 7 15:12:15 1992 Sean Eric Fagan (sef@cygnus.com) - - * Makefile.in: Changed some lines to be less confusing for some - makes. - - * input-file.c: Conditionalize on _IOFBF, not VMS. - - * read.c, write.c: Change a series of ifdef/elif to - ifdef/else/ifdef etc. - -Fri Mar 27 12:21:16 1992 K. Richard Pixley (rich@cygnus.com) - - * symbols.c (fb_label_init): fix sizeof to memset. - -Fri Mar 13 15:45:44 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in: install the man page. - - * Makefile.in: pass down MAKEINFO explicitly on info. - - * doc/Makefile.in: use $(MAKEINFO) not makeinfo. - -Fri Mar 13 08:03:03 1992 Steve Chamberlain (sac@thepub.cygnus.com) - - * flonum-const.c: renamed flonum-konst.c to stop dos name - conflict. - -Thu Mar 12 04:42:38 1992 K. Richard Pixley (rich@cygnus.com) - - * config/tc-m68k.h, config/te-sun3.h: moved LOCAL_LABELS_FB - definition from tc-m68k.h to te-sun3.h. - -Wed Mar 11 23:32:42 1992 K. Richard Pixley (rich@cygnus.com) - - * configure.in: vxworks68 gets te-sun3.h. - - * expr.c: remove limitation that local_labels_dollar or - local_labels_fb must be < 10. - - * symbols.c: remove local_labels_dollar, replace with a function - interface for a sparse array. All users adjusted. - - * config/te-sun3.h: add LOCAL_LABELS_DOLLAR. - -Sat Mar 7 00:06:25 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * doc/Makefile.in: commented out line for building as-all.texinfo. - This is temporary. - - * doc/as.texinfo, doc/as-all.texinfo: added menu item hooks. - -Fri Mar 6 21:57:18 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in: added check target. - -Tue Mar 3 15:45:56 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: added tooldir and program_prefix. - -Sun Mar 1 04:43:19 1992 Michael Tiemann (tiemann@cygnus.com) - - * write.{c,h} (fix_new): Make these declarations consistent. - -Sat Feb 29 13:59:10 1992 Michael Tiemann (tiemann@cygnus.com) - - * Makefile.in (strerror.o): Add rule so that broken Sun make can - work in subdirs. - -Wed Feb 26 19:26:28 1992 Steve Chamberlain (sac at thepub.cygnus.com) - - * read.c, obj-coffbfd.c : fix h8300 specific bit rot - - * expr.c (operand): if can't work out what sort of operand it is, - then look through FLT_CHARS for a hint. - -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. - - * doc/Makefile.in, doc/configure.in: removed traces of namesubdir, - -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced - copyrights to '92, changed some from Cygnus to FSF. - -Tue Feb 25 14:17:15 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * expr.c: If an expression is single comma, then return with - SEG_ABSENT rather than an error - since the sparc front end does - really strange things with things like fbge,a - - * as.h: include bfd.h if using many sections - * expr.c: LOCAL_LABELS_FB had been changed to lower case - so - local labels didn't work. - * listing.c (list_symbol_table): don't core dump when there's no - symbol there. - * write.c, write.h: call fix_new with the right number of args on - the H8. - * config/tc-h8300.[ch] : fix bugs reported by HMSI, and make - errors nices - -Sat Feb 22 12:26:28 1992 Steve Chamberlain (sac at rtl.cygnus.com) - - * app.c: MRI compatibility - allow single quote to start a string. - * as.c: fix typo recently introduced. - * as.h : Don't include aout/reloc.h - it's not right for COFF! - * expr.c: Much rewriting, to accommodate MRI syntax for - expressions. Also easier to read now. - * listing.c: Put back defuns - * read.c: modified to accept MRI syntax, put back listing pseudo - ops so that an assembler built with NO_LISTING ignores list ops - rather than pukes. - * write.c, write.h: fixs - only keep a reloc type in a fix if the target - machine is a SPARC or a 29K. - * config/obj-aout.c: added s_sect pseudo op - * config/obj-coffbfd.c: lints, set the filehdr flags right and - fill in the timestamp. - * config/obj-coffbfd.h: Since we don't include aout/reloc.h - anymore, define all the relocs which the tc- bit will use so we - can translate from them to the coff types. - * config/tc-a29k.c: reloc_type isn't ane enum any more - * config/tc-m68k.c: Added NO_RELOC definition. - -Fri Feb 21 06:21:07 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: put header files before C source for TAGS; remove - references to non-existent syscalls.h. - - * read.c, write.c subsegs.c: back out the .bss changes. - - * config/obj-aout.c: do not include stab.gnu.h if NO_LISTING. - - * config/tc-i860.c, a.out.gnu.h: move i860 relocs to a proper place. - - * a.out.h: removed. - -Fri Feb 21 01:08:48 1992 Minh Tran-Le (TRANLE@INTELLICORP.COM) - - * symbols.c (local_label_name): symbols now start with ^A. - - * read.c, subsegs.c, write.c obj-coff.c: added handling of - `.bss` pseudo op for unitialized data. The new gcc (1.37.9x) - generate these sections. .align: will use NOP_OPCODE or 0 - for padding. This is just for being nice to the - disassembler. - - * expr.c (operand): changed to generate local label "\001L0" - starting with a ^A so that it is recognized as a local label. - - * as.c (perform_an_assembly_pass): zero bss_fix_root, too. - - * config/tc-i386.c: tc-i386.c: added handling of the following opcodes: - i/o opcodes - inb, inw, outb and outw. string manipulation with - att syntax - scmp, slod, smov, ssca, ssto. - - * config/obj-coff.c: (for aix386) Moved the symbols .text, .data and .bss - to just after .file . - - In obj_crawl_symbol_chain() where it tries to put the external - symbols apart, with the condition: - (!S_IS_DEFINED(symbolP) && - !S_IS_DEBUG(symbolP) && - !SF_GET_STATICS(symbolP)) - it was moving too many symbols out. So I switch it back to the - condition: - (S_GET_STORAGE_CLASS(symbolP) == C_EXT && !SF_GET_FUNCTION(symbolP)) - - In obj_emit_relocations() added the conditional on KEEP_RELOC_INFO - so that we don't use the F_RELFLG which make the linker complain - that somebody has stripped the relocation info. - - Also, the AIX ld program require that the relocation table - is sorted by r_vaddr like the standard ATT assembler does. - - [he also changed the sizeof(struct ...)'s into the coff - style FOOSZ macros. I'm not sure this is right, but I can't - remember why. xoxorich.] - -Fri Feb 21 01:08:48 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in, configure.in, doc: use the doc. Build it, install - it, clean it, etc. - -Tue Feb 18 02:21:25 1992 K. Richard Pixley (rich at cygnus.com) - - * read.c: white space and comments only. - - * configure.in: use the new atof-ns32.c for ns32k. - - * write.c: comment change only. - - * config/tc-m88k.[hc]: pulled in from hack's unfinished work. These - aren't yet integrated. - - * config/tc-i860.[hc]: blew off the dust. Something must still be done - about conflicting relocation types. - - * config/tc-ns32k.c: Replaced previous tc_aout_fix_to_chars stub with the - real thing. - - * config/tc-i960.c, config/tc-sparc.c: white space and comments only. - - * config/tc-a29k.h: delete duplicate macro definition. - - * new file atof-ns32k.c copied from hack's last unreleased gas. - -Mon Feb 17 07:51:06 1992 K. Richard Pixley (rich at cygnus.com) - - * config/tc-ns32k.c: actually make tc_aout_fix_to_chars work - rather than abort. - - * nearly everything. flush ChangeLog, package as gas-1.92.1. - ChangeLog's prior to this are sketchy at best. I have logs. - They just aren't ChangeLogs. diff --git a/gas/ChangeLog-9697 b/gas/ChangeLog-9697 deleted file mode 100644 index 7ffff3e66..000000000 --- a/gas/ChangeLog-9697 +++ /dev/null @@ -1,5959 +0,0 @@ -Wed Dec 31 12:29:47 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_relax_table): Correct branch ranges. - -Mon Dec 22 13:06:05 1997 Joel Sherrill - - * configure.in (i386*-go32-rtems*): Fix to be the same as - i[3456]86-go32. - * configure: Rebuild. - -Mon Dec 22 12:54:07 1997 Ian Lance Taylor - - * config/tc-mips.c (macro): The 4650 doesn't permit M_LDC1_AB, - M_SDC1_AB, M_L_DOB, M_L_DAB, M_S_DAB, or M_S_DOB. - (mips_ip): Always check for FP_D, not just for instructions that - are not part of the regular ISA. - -Thu Dec 18 16:49:28 1997 Richard Henderson - - * config/tc-d10v.c (build_insn): Make `number' a long for 64-bit hosts. - -Thu Dec 18 16:42:57 1997 Richard Henderson - - * config/tc-alpha.c (cpu_types): 21164pc/pca56 does not have CIX. - -Wed Dec 17 21:23:07 1997 Jeffrey A Law (law@cygnus.com) - - * expr.c (integer_constant 32bit bignum): Mask off bits outside - the range we care about. - -Wed Dec 17 15:29:03 1997 Michael Meissner - - * config/tc-d30v.c (md_shortopts): Add 'n' and 'N' options. - (exec_type_enum): Enumeration giving all of the exec types. - (warn_nops): New static variable to give nop warning level. - ({cur,prev}_mul32_p): New static variable to keep track of whether - the current/previous instruction is a 32-bit multiply. - (Optimizing): Make static. - (NOP{2,_LEFT,_RIGHT}): Macros for word of nops and left/right - nops. - (d30v_insert_operand): Delete declaration of unused function. - (write_2_short): Make exec_type argument enum, not int. - (parallel_ok): Ditto. - (check_range): Delete unused variable(s). - (build_insn): Ditto. - (find_format): Ditto. - (md_apply_fix3): Ditto. - (md_show_usage): Document -n and -N. - (md_parse_option): Parse -n and -N. - (write_1_short): If -n, warn about adding a nop. Use - NOP_{LEFT,RIGHT}. - (write_2_short): Use enumeration values instead of hard coded - integers. Reset exec_type for default operations. For explicit - parallel operations, call parallel_ok to make sure everything is - ok. If writing out a parallel operation, and the previous - instruction was a 32-bit multiply, indicate current instruction - is. - (parallel_ok): Allow add/tx ... to be done in parallel with - another add/tx ... assuming the gpr registers don't overlap. - (md_assemble): Use exec type enumeration values, not hard coded - ints. Check for loads or 16-bit multiplies following in the next - cycle after a 32-bit multiply. Add nops if that is the case. - (do_assemble): Copy prev_mul32_p to cur_mul32_p, and set - cur_mul32_p if current instruction is a 32-bit multiply. - (find_format): Change spacing and layout. - -Tue Dec 16 16:55:45 1997 Fred Fish - - * config/tc-tic80.c (tic80_relax): New static variable. - (md_longopts): Add new OPTION_RELAX and OPTION_NO_RELAX options. - (md_parse_option): Handle new relax options. - (md_show_usage): Document new relax options. - (find_opcode): Don't use short forms of PC relative branches if - tic80_relax is set. - -Tue Dec 16 15:26:03 1997 Michael Meissner - - * config/tc-d30v.c (parallel_ok): Remove non-register bits from - used/set flag fields. Make flag vars unsigned long. Use - FLAG_A{0,1} for accumulators. Allow any 2 insns to be done in - parallel if they use the same conditional flag with reversed - meaning. Allow 2 add/sub insns that set the carry or overflow - flags but do not query them to be done in parallel. Don't allow 2 - word store operations to be done in parallel with ADDppp or - SUBppp. Don't allow loads to be done in parallel with 16 bit - multiplies. - -Tue Dec 16 09:20:43 1997 Nick Clifton - - * config/tc-arm.c: Prevent use of interworking support for - non-COFF targets. - -Mon Dec 15 15:20:32 1997 Nick Clifton - - * doc/all.texi: Add M32R cpu. - - * doc/as.texinfo: Add documentation of m32r processor. - - * doc/c-m32r.texi: New file, documenting m32r specific features. - -Mon Dec 15 10:32:28 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (mips_ip): Correctly insert 'P' operands into - the instruction. - -Fri Dec 12 11:44:20 1997 Fred Fish - - * config/tc-tic80.c (build_insn): Handle instructions that have - long (32 bit) PC relative offsets. Fix places that previously - misused R_MPPCR for 15 bit offsets to use the new R_MPPCR15W type. - (md_apply_fix): Add case to handle long PC relative offsets. - -Fri Dec 12 10:35:01 1997 Nick Clifton - - * doc/c-arm.texi (ARM Options): Document support for new ARM - processor names. - - * config/tc-arm.c (md_parse_option): Add support for new ARM - processor names. - -Thu Dec 11 17:46:50 1997 Richard Henderson - - * config/tc-m68k.c (m68k_ip): Don't overwrite opcode table data. - (insop, m68k_ip): Make `opcode' const so it doesn't happen again. - -Fri Dec 5 11:23:59 1997 Nick Clifton - - * config/tc-v850.c (md_assemble): Fix BFD_RELOC_32 against a - symbol + offset. - - * config/tc-v850.h (ELF_TC_SPECIAL_SECTIONS): Use - SHT_V850_{S|T|Z}COMMON to mark special common sections. - -Tue Dec 2 17:05:13 1997 Nick Clifton - - * config/tc-v850.c: Brought up to date with the branch. - -Mon Dec 1 20:24:18 1997 J"orn Rennecke - - * config/tc-sh.c (SWITCH_TABLE_CONS): Handle (fix)->fx_size == 1. - (SWITCH_TABLE): Handle BFD_RELOC_8. - (md_apply_fix): #ifndef BFD_ASSEMBLER code: Handle fixP->fx_size == 1. - (coff_reloc_map): Add BFD_RELOC_8_PCREL entry. - (sh_coff_reloc_mangle): SWITCH_TABLE case: Handle BFD_RELOC_8. - -Sat Nov 22 16:19:22 1997 Richard Henderson - - * config/tc-alpha.c (range_signed_16, range_signed_32): Work around an - apparent bug in gcc's long long support crossing from x86. - -Sat Nov 22 14:26:09 1997 Nick Clifton - - * config/tc-arm.c: Brought up to date with latest changes on arm - branch. - -Sat Nov 22 15:50:09 1997 Klaus Kaempf - - * config-gas.com: Get version info from configure.in. - - * makefile.vms: include depend.obj in OBJS. - - * config/tc-alpha.c (s_alpha_section): Remove ".lcomm" handling. - - * config/tc-alpha.c (alpha_basereg_clobbered): Remove variable and - all corresponding code. - -Thu Nov 20 15:06:08 1997 Richard Earnshaw - - * config/tc-arm.h (TARGET_FORMAT for generic a.out targets): Allow - run-time endian selection. - -Wed Nov 19 17:44:42 1997 Richard Henderson - - * config/tc-sh.c (parse_reg): Properly quote for fv4. - -Wed Nov 19 23:46:18 1997 Ian Lance Taylor - - * symbols.c (resolve_symbol_value): Add missing breaks in case on - symbol value operator. - -Tue Nov 18 18:45:14 1997 J"orn Rennecke - - * config/tc-d10v.c (parallel_ok, find_opcode): - Split OPERAND_FLAG into OPERAND_FFLAG and OPERAND_CFLAG. - -Sun Nov 16 10:05:07 1997 Fred Fish - - * config/obj-coff.c (fixup_segment): Cast second arg of - md_apply_fix3 call to type "valueT *". - -Thu Nov 13 13:53:10 1997 Andrew Cagney - - * configure.in (emulations): Make FreeBSD an aout / i386bsd - variant. - * configure: Re-generate. - -Thu Nov 13 11:07:14 1997 Gavin Koch - - * config/tc-mips.c (macro_build): Use the membership field - for INSN_MACRO's. - (mips_ip): Same. - -Thu Nov 13 02:04:55 1997 J"orn Rennecke - - * config/tc-d10v.c (find_opcode): For OPCODE_FAKE, add check for - first argument if it's supposed to be a register. - -Tue Nov 11 19:25:05 1997 J"orn Rennecke - - * app.c (do_scrub_chars): If d10v, re-insert a space before - a '#' when in state 10. - -Tue Nov 11 13:33:15 1997 Ian Lance Taylor - - * config/tc-h8300.c: Include "subsegs.h". - (tc_reloc_mangle): Handle references to symbols which are not - being output, so that references to `.' work. - -Mon Nov 10 13:43:33 1997 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Call add_fix when needed for '_' - case. - - * macro.c (sub_actual): If we don't find a parameter for an &, - just substitute &. - -Fri Nov 7 21:29:32 1997 Ken Raeburn - - * config/tc-mips.c (mips_ip): In default case, call as_bad - instead of fprintf, to get "assembler messages:" message output - before instead of after. - -Fri Nov 7 10:36:22 1997 Doug Evans - - * frags.h: Handle multiple inclusion. - -Wed Nov 5 10:51:49 1997 Doug Evans - - Based on a patch from Ian.Dall@dsto.defence.gov.au. - * as.h (struct frag, frag support): Moved from here. - * frags.h: To here. - (struct frag, member tc_frag_data): New member if TC_FRAG_TYPE - is defined. - (struct frag, member fr_cgen): Renamed from fr_targ.cgen. - * cgen.c (cgen_asm_finish_insn): Update. - * config/tc-m32r.c (md_estimate_size_before_relax): Update. - * config/tc-m32r.h (TC_FRAG_INIT): Renamed from md_init_frag. - (md_convert_frag): Ditto. - * config/tc-ns32k.h (TC_FRAG_TYPE): Define. - (frag_opcode_frag,frag_opcode_offset,frag_bsr): Update. - (TC_FRAG_INIT): Update. - -Tue Nov 4 16:35:57 1997 Ian Dall - - * write.c (print_fixup): Use TC_FIX_DATA_PRINT (if defined) to - print out MD fields of fix. - * frags.c (frag_var, frag_variant): Use TC_FRAG_INIT macro (if - defined) to initialize MD fields in frag. - * as.h (struct frag, ns32k support): Rename ns32k to fr_ns32k. - Delete pcrel_adjust. Add fr_opcode_fragP, fr_opcode_offset. - * config/tc-ns32k.h: Add comments. Remove obsolete - BFD_FAST_SECTION_FILL definition, change prototypes for - fix_new_ns32k and fix_new_ns32k_exp to add new arguments - opcode_frag and opcode_offset and remove pcrel_adjust. - (TC_FIX_TYPE): add opcode_fragP and opcode_offset fields. - (TC_FIX_DATA_PRINT): new macro to print out TC_FIX_TYPE. - (TC_FRAG_INIT): new macro to initialize machine dependent field in - frags. - (frag_opcode_frag, frag_opcode_offset, frag_bsr): macros to access - MD fields in frag structure. - (fix_im_disp, fix_bit_fixP, fix_opcode_frag, fix_opcode_offset, - fix_bsr): macros to access MD fields in fix structure. - * config/tc-ns32k.c: Avoid overlength lines. Align comments. Don't - use struct opcode_location as these fields are now in the frag - structure. - (convert_iif): Call frag_more as it is needed instead - of trying to allocate for the whole insn. Avoid call of frag_more - with negative argument. - (md_pcrel_adjust, md_fix_pcrel_adjust, md_apply_fix, - md_estimate_size_before_relax, md_pcrel_from, - tc_aout_fix_to_chars): use accessor macros to get md fields in fix - and frag structures. - (fix_new_ns32k, fix_new_ns32k_exp): add new arguments opcode_frag and - opcode_offset and remove pcrel_adjust. - (convert_iif, cons_fix_new_ns32k): call fix_new_ns32k, - fix_new_ns32k_exp with changed arguments. - -Mon Nov 3 13:30:17 1997 Gavin Koch - - * config/tc-mips.c (md_begin): Reorganize setting of default values so - that mips_cpu depends on TARGET_CPU, and mips_opts.isa depends on - mips_cpu. - (md_parse_option): Remove all code that sets defaults; md_begin - handles all of this now. - -Sun Nov 2 14:46:09 1997 Ian Lance Taylor - - * Makefile.am (STAGESTUFF): Change bin_PROGRAMS to - noinst_PROGRAMS. - (bootstrap, bootstrap2, bootstrap3): Likewise. - * Makefile.in: Rebuild. - - * config/tc-ppc.c (ppc_fix_adjustable): Don't adjust relocs in the - TOC section to be against the csect. - -Fri Oct 31 18:19:55 1997 Ken Raeburn - - * config/tc-mips.c (validate_mips_insn): New function, checks - match versus mask bits, and also verifies that all bits to be - output are actually specified somewhere. - (md_begin): Call it for 32-bit instructions, instead of doing - match/mask check here. In case of failure, print a message, but - check the rest of the opcode table before exiting. - -Thu Oct 30 13:46:20 1997 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Fix thumb ADR pseudo op. Patch - from Tony Thompson at ARM: athompso@arm.com - -Thu Oct 30 11:11:26 1997 Michael Meissner - - * config/tc-d30v.c (build_insn): Allow odd registers for ld2w and - friends. - -Fri Oct 24 15:56:47 1997 Ian Lance Taylor - - * config/tc-ppc.c (md_assemble): When handling @l, always sign - extend if the operand expects a signed value. - - * config/tc-mips.h (LOCAL_LABELS_DOLLAR): Don't define; use - default which is to permit dollar labels. - -Fri Oct 24 11:19:22 1997 Jakub Jelinek - - * config/tc-sparc.c (sparc_memory_model): New variable. - (md_longopts): Add -TSO/-PSO/-RMO options. - (md_parse_options): Handle them. - (sparc_elf_final_processing): For 64 ELF, set required - memory ordering in e_flags. Default to RMO and let the user - override it through command line. - - * config/tc-sparc.h (elf_tc_final_processing): Add. - -Wed Oct 22 17:42:12 1997 Richard Henderson - - * config/tc-sparc.c (v9a_asr_table): New variable. - (sparc_ip): Handle v9a asr's. - Patch from David Miller . - -Wed Oct 22 17:22:59 1997 Richard Henderson - - * config/tc-sparc.h (md_do_align): New macro. - * config/tc-sparc.c (sparc_handle_align): Handle rs_align_code. - Patch from Jakub Jelinek . - -Wed Oct 22 12:51:18 1997 Ian Lance Taylor - - * config/tc-sh.c (sh_small): New variable. - (OPTION_SMALL): Define. - (md_longopts): Add "small". - (md_parse_option): Handle OPTION_SMALL. - (md_show_usage): Mention -small. - * config/tc-sh.h (sh_small): Declare. - (SUB_SEGMENT_ALIGN): Handle sh_small. - * config/obj-coff.h (TARGET_FORMAT): Check sh_small in TC_SH - case. - - * config/tc-mips.c (macro): Correct handling of constant in M_LI_D - case in little endian mode. - -Tue Oct 21 10:20:11 1997 Doug Evans - - * config/tc-sparc.c (md_apply_fix3, cases ..._H44, ..._HIX22): Leave - overflow signalling to linker. - -Mon Oct 20 14:54:06 1997 Klaus K"ampf - - * makefile.vms: Fix for dec c. - - * config-gas.com: Give explanation for dec c setup in error - message. - - * config/tc-alpha.c (s_alpha_comm): Make .comm symbols separate - sections on openvms/alpha. - - * config/obj-evax.c: support .weak pseudo-op - -Mon Oct 20 10:13:32 1997 Doug Evans - - * config/tc-sparc.c (default_arch_size): New static local. - (struct sparc_arch): Rename arch_size to default_arch_size. - New member user_option_p. - (sparc_arch_table): Always include v9, v9a. New entry v9-64. - (init_default_arch): Check whether default arch is valid. - Set default_arch_size in addition to sparc_arch_size. - (OPTION_32,OPTION_64): Define. - (md_longopts): New entries for -32, -64. - (md_parse_option): Handle them. - (md_show_usage): Print them. Ensure init_default_arch called. - * configure.in (sparc64): Set arch to v9-64. - * configure: Regenerated. - -Sun Oct 19 13:50:50 1997 Ian Lance Taylor - - * write.c (subsegs_finish): New function, broken out of - write_object_file. - (write_object_file): Some code moves into subsegs_finish. - * write.c (subsegs_finish): Declare. - * as.c (main): Call subsegs_finish. - - * read.c (s_include): Check for error return from - demand_copy_string. - -Tue Oct 14 20:50:58 1997 Richard Henderson - - * read.c (get_line_sb): Accept any eol marker while scanning macros. - -Tue Oct 14 19:12:45 1997 Richard Henderson - - * config/tc-alpha.h (DIFF_EXPR_OK): Define. - * config/tc-i386.h (DIFF_EXPR_OK): Define. - * config/tc-alpha.c (md_apply_fix): Notice fx_pcrel and substitute - the correct relocation when it exists. - * config/tc-i386.c (md_apply_fix3): Likewise. - - * config/tc-ppc.h: Correct typo in comment. - * config/tc-v850.h: Likewise. - -Fri Oct 10 16:09:35 1997 Andrew Cagney - - * config/tc-d10v.c (parallel_ok): Allow parallel instruction issue - when second instruction is writing to first instructions inputs. - -Mon Oct 13 15:27:17 1997 Richard Henderson - - * ecoff.c (PAGE_SIZE): Double to 8k as a hack to allow some C++ - templated programs to build with -g. - -Fri Oct 10 17:48:29 1997 Nick Clifton - - * config/tc-v850.c (md_relax_table): Add support for relaxing - unconditional branches. This patch is courtesy of Jim Wilson. - (md_convert_frag): Fix relaxing of branches. This patch is - courtesy of Jim Wilson. - (md_assemble): Create different fixups for conditional and - unconditional branches. This patch is courtesy of Jim Wilson. - (md_estimate_size_before_relax): Estimate size of variable part of - fixup based on whether it is for a conditional or an unconditional - branch. This patch is courtesy of Jim Wilson. - (v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss, - v850_zbss, v850_rosdata, v850_rozdata, v850_bss): Add call to - obj_elf_section_change_hook(). - (v850_comm): New function. - (md_pseudo_table): Add new pseudo ops .zcomm, .scomm and .tcomm. - (md_begin): Add bss flag to seg_info of bss sections. - - Add support for .scommon, .tcommon and .zcommon sections. - - * config/tc-v850.h (ELF_TC_SPECIAL_SECTIONS): Add .scommon, - .zcommon, .tbss, .call_table_data and .call_table_text. - -Fri Oct 10 15:01:14 1997 Doug Evans - - * configure.in (sparc): Set DEFAULT_ARCH from correct target. - * configure: Regenerated. - -Fri Oct 10 11:22:45 1997 Martin M. Hunt - - * config/tc-d10v.c: Fixes to make sure the AT_WORD - expression is not confused with -1. - -Fri Oct 10 11:54:50 1997 Andrew Cagney - - * config/tc-d10v.c (parallel_ok): Flag SP as modified for @-sp - operand - OPERAND_ATMINUS. - -Fri Oct 10 00:47:44 1997 Michael Meissner - - * config/tc-d10v.c (parallel_ok): Note that auto increment and - decrement modify the index register. - -Thu Oct 9 15:17:50 1997 Ian Lance Taylor - - From Robin Kirkham : - * config/tc-m68k.c (archs): Add 68306, 68307, 68322, 68356, 68334, - 68336, 68341, 68349. - * doc/c-m68k.texi (M68K-Opts): Add -m68ec000 -m68hc000 -m68hc001 - -m68306, -m68307, -m68322, -m68356, -m68ec020, -m68ec030, - -m68ec040, -m68ec060, -m68330, -m68334, -m68336, -m68341, - -m68349. - - * doc/Makefile.am (CPU_DOCS): Define. - (as.info): Depend upon $(CPU_DOCS). - * doc/Makefile.in: Rebuild. - - * configure.in: Remove AM_PROG_INSTALL; it's called by - AM_INIT_AUTOMAKE. - * configure: Rebuild. - -Thu Oct 9 01:44:36 1997 J"orn Rennecke - - * config/tc-d10v.h (TC_START_LABEL): Don't define. - (tc_frob_label): Define. - -Thu Oct 9 00:07:23 1997 J"orn Rennecke - - * config/tc-d10v.c (write_2_short): Fix bug that wouldn't allow - to pair a branch and link with anything but an exe instruction. - -Wed Oct 8 16:28:53 1997 Richard Henderson - - * config/tc-alpha.c (load_expression): Disable the sym+const .got - optimization to reduce the alignment surprises for gcc. - -Wed Oct 8 16:11:15 1997 Doug Evans - - * config/obj-coff.h (TC_SPARC): Don't define TARGET_FORMAT. - * config/tc-sparc.c (sparc_target_format): Handle coff here. - (sparc_ip): Add %hix,%lox. - (md_apply_fix3): Call as_bad_where, not as_bad. - Add support for BFD_RELOC_SPARC_{HIX22,LOX10}. - (tc_gen_reloc): Add support for BFD_RELOC_SPARC_{HIX22,LOX10}. - -Wed Oct 8 12:33:32 1997 Richard Henderson - - * configure.in: Change alpha-*-* to alpha*-*-*; config.guess now - recognizes alphaev5 etc. - * configure: Rebuild. - -Wed Oct 8 00:04:05 1997 Gavin Koch - - * config/tc-mips.c (md_begin): Replace the TARGET_CPU value - of mipsr3900 with mipstx39. - - * config/tc-mips.c (mips_ip): Don't print the 'opcode requires - -mipsXX message' if the insn isn't an ISA insn. - -Tue Oct 7 12:48:30 1997 Doug Evans - - * config/tc-sparc.h (TARGET_FORMAT support): Moved to tc-sparc.c. - Redefine TARGET_FORMAT to call sparc_target_format. - * config/tc-sparc.c (in_unsigned_range): New function. - (sparc_arch_size): Make static. - (sparc_target_format): New function. - (sparc_ip): Delete variable immediate_max. Rewrite %hi/etc reloc - handling. Add support for %hh,%hm,%lm,%h44,%m44,%l44. - (output_insn): Set `fx_no_overflow'. - (md_apply_fix3): Handle BFD_RELOC_SPARC_{7,H44,M44,L44}. - (tc_gen_reloc): Likewise. - -Mon Oct 6 14:04:50 1997 Nick Clifton - - * config/tc-v850.c (v850_section): Remove. - - * config/obj-elf.c (obj_elf_section): Enhance error message. - -Fri Oct 3 15:40:38 1997 Ian Lance Taylor - - * config/tc-mips.c: Undef OBJ_COPY_SYMBOL_ATTRIBUTES before - including obj-elf.h in OBJ_MAYBE_ELF case. - (mips_target_format): Return NULL after abort to avoid warning. - - * ecoff.c (generate_ecoff_stab): Remove unused static function. - - * expr.c (operator): Accept ==. From Anders Blomdell - . - - * config/atof-ieee.c (gen_to_words): When generating a denormal - number, handle an overflow into the smallest normalized number. - -Mon Sep 29 15:24:52 1997 J"orn Rennecke - - * as.h, input-scrub.c (new_logical_line): New return value. - * read.c (s_app_file): Don't note the same file several times - in a row. - -Thu Sep 25 13:08:02 1997 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Remove ` operand specifier. - -Wed Sep 24 16:54:40 1997 Joel Sherrill - - * configure.in (sh*-*-rtems*): New target, like sh-*-elf*. - * configure: Rebuild. - -Wed Sep 24 11:30:25 1997 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Handle q and v operand specifiers. - - * doc/c-i386.texi (i386-Float): Remove incorrect assertion that - fn* instructions do not insert implicit fwait. This was changed - Jan 29, 1996. - - * config/m68k-parse.y (yylex): Permit an expression to be used for - the scale factor. - - * Makefile.am (EXTRA_as_new_SOURCES): Set to config/m68k-parse.y, - not m68k-parse.y. - * Makefile.in: Rebuild. - - * aclocal.m4: Rebuild with new libtool. - * configure: Rebuild. - -Tue Sep 23 17:48:09 1997 Ian Lance Taylor - - * app.c (do_scrub_chars): Clear mri_state at end of .mri - pseudo-op. - - * config/tc-mips.c (hilo_interlocks): Change from a static - variable to a macro, so that it varies with the variables upon - which it depends. - (gpr_interlocks, cop_interlocks): Likewise. - (md_begin): Don't initialize them. - -Fri Sep 19 17:08:41 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Use strcasecomp instead - of strcmp where appropriate. - -Thu Sep 18 14:11:56 1997 Nick Clifton - - * config/tc-v850.c (md_assemble): Cope with a zero data area - relocation with a constant offset. - (md_assemble): Produce error message when special data area - relocations are used on instructions which do not support them. - (md_assemble): Reset processor mask if defined by command line - switch. - -Thu Sep 18 11:24:01 1997 Doug Evans - - * config/tc-sparc.c: Reorganize file. - (parse_keyword_arg): Allow numbers in reg names. - (SPECIAL_CASE_NONE): New macro. - (md_assemble): Use it. - (lookup_arch,init_default_arch): New functions. - (default_arch,default_init_p,sparc_arch_table): New static locals. - (sparc_arch_size): New static local. - (max_architecture): Initialize in init_default_arch. - (md_parse_options): Call init_default_arch if necessary. - Rewrite -xarch/-A processing. - (md_show_usage): Print -A values from sparc_arch_table. - (md_begin): Call init_default_arch if necessary. - (sparc_md_end): Handle both 32 and 64 bit environments. - * config/tc-sparc.h (TARGET_FORMAT): Likewise. - * acconfig.h (SPARC_V9,SPARC_ARCH64): Delete. - (DEFAULT_ARCH): Add. - * config.in: Regenerate. - * configure.in (sparc): Default DEFAULT_ARCH based on target cpu. - (SPARC_V9,SPARC_ARCH64): Delete. - * configure: Regenerate. - * config/vms-conf.h (SPARC_V9,SPARC_ARCH64): Delete. - -Wed Sep 17 16:54:20 1997 Nick Clifton - - * config/tc-v850.c (v850_reloc_prefix): Recoded to use CHECK_ () - macro. - (handle_tdaoff, handle_zdaoff, handle_sdaoff): New functions. - - * config/tc-v850.c (md_assemble): Corrected typo. - * config/tc-v850.c Add new sections: call_table_data and - call_table_text. - (v850_reloc_prefix): Add support for ctoff() relocation prefix. - (handle_ctoff): New Function. - - * doc/c-v850.texi (V850 Opcodes): Document call table relocations. - -Tue Sep 16 14:18:22 1997 Nick Clifton - - * config/tc-v850.c (v850_reloc_prefix): Add support for a 16 bit - displacement from the tiny data area pointer. - -Mon Sep 15 21:28:09 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (fix_new_hppa): Make declaration match - definition. - -Mon Sep 15 18:33:06 1997 Nick Clifton - - * config/tc-v850.c (processor_mask): New variable. - (set_machine, md_parse_option): Set processor_mask. - (md_assemble): Check that instruction is available to target - processor. - - * config/tc-v850.h (TARGET_PROCESSOR): New constant. - -Mon Sep 15 11:28:04 1997 Ken Raeburn - - Merge in work from Martin Hunt: - - * config/tc-d30v.c (build_insn): For mvfsys and mvtsys, - CR is 0 for PSWL and PSWH. - - * config/tc-d30v.c (do_assemble): Don't accept - illegal condition codes for cmpu instruction. - - * config/tc-d30v.c: Add support for BFD_RELOC_D30V_9_PCREL - used in d*i instructions. - - * config/tc-d30v.c (check_size): New function. Check - relocations for overflows. - (md_pcrel_from_section): Fix relocations between sections. - (md_apply_fix3): Use new relocation types for 15 and 21 - bit relocations in the right container. Needed because - the address of the instruction is not eight-byte aligned - but the relocations must be. - - * config/tc-d30v.c (md_apply_fix3): Check for overflow. - (find_format): If ".s" or ".l" are used, don't try - to compute branch sizes. - - * config/tc-d30v.c (do_assemble): Check for ".s" or - ".l" extensions to opcode names. - (find_format): Generate the correct instructions when - ".s" or ".l" are used. - - * config/tc-d30v.c (build_insn): Check for odd registers - on instructions that require even registers. - - * config/tc-d30v.h (md_start_line_hook): Define. - * config/tc-d30v.c (md_start_line_hook): New hook. - Checks the beginning of each line for a ".". If it - finds one, assume a pseudo-op and flush any unwritten - instructions. - - * config/tc-d30v.c (md_apply_fix3): Fix problem - with determining when fixups were done. - - * config/tc-d30v.c (build_insn): Fix bug where the numeric - part of a symbol (for example, "foo+8") was being written - into the instruction. - (md_pseudo_table): Change .word to be 32 bits and add - .hword as 16 bits. - - * config/tc-d30v.c (parallel_ok): Check to see if first - instruction is a jump. - - * config/tc-d30v.c (parallel_ok): Major code reorganization. - -Wed Sep 10 10:07:08 1997 Nick Clifton - - * config/tc-v850.c (md_assemble): Corrected spelling mistake. - * configure.in (emulations): Add v850 emulation. - -Tue Sep 9 17:14:33 1997 Doug Evans - - * Makefile.am (CPU_TYPES): Add arc. - (TARGET_CPU_CFILES): Add tc-arc.c. - (TARGET_CPU_HFILES): Add tc-arc.h. - (dependencies): Rebuild. - * Makefile.in: Rebuild. - * configure.in: Recognize arc-*-elf*. - * configure: Regenerated. - * config/tc-arc.[ch]: New files. - -Tue Sep 9 10:19:37 1997 Nick Clifton - - * doc/c-v850.texi (V850 Opcodes): Document hi0() reloc prefix. - Correct description of hi() reloc prefix. - - * doc/c-v850.texi (V850 Opcodes): Document new reloc prefix. - * config/tc-v850.c (v850_reloc_prefix): Add hilo() reloc prefix. - * config/tc-v850.c (md_assemble): Add support for BFD_RELOC_32. - - * doc/c-v850.texi: Document new pseudo ops and command line - options. - - * config/tc-v850.c (set_machine): New function. - * config/tc-v850.c (.v850): New pseudo op. - * config/tc-v850.c (.v850e): New pseudo op. - * config/tc-v850.c (.v850ea): New pseudo op. - - -Mon Sep 8 23:08:04 1997 Ian Lance Taylor - - Support -alh and -ald for DWARF 1: - * listing.c (struct list_info_struct): Add debugging field. - (listing_newline): Initialize the debugging field. If ELF, if the - section starts with .debug or .line, set the debugging field in - the listing structure. - (debugging_pseudo): Add list parameter. Change all callers. If - the debugging field is set, consider it to be a debugging pseudo. - If ELF, skip blank lines between debugging lines. - * read.c (emit_expr): If ELF, look for line numbers. - (stringer): If ELF, look for file names. - -Mon Sep 8 12:33:40 1997 Nick Clifton - - * config/tc-v850.c (v850_insert_operand): Only test for overflow - if there is no insert function. - - * config/tc-v850.h (TARGET_MACHINE): New constant. - - * config/tc-v850.c (v850_insert_operand): Add - -mwarn_unsigned_overflow. - (md_begin): Set BFD machine number based on machine variable. - (md_parse_option): Add -mv850, -mv850e and -mv850ea options. - -Mon Sep 8 11:20:46 1997 Ian Lance Taylor - - * as.h: Don't declare alloca if it is a macro. - * macro.c: Likewise. - -Sun Sep 7 00:30:19 1997 Richard Henderson - - * config/tc-alpha.c (md_parse_option): Move m[] out to top level and - rename to cpu_types[]. - (s_alpha_arch): New function. - (md_pseudo_table): Add "arch". - - * config/tc-alpha.c (md_begin): Merge the two loops through the - opcode table. - (s_alpha_proc): Add initial SKIP_WHITESPACE. - (s_alpha_set): Likewise. Use get_symbol_end instead local while loop. - -Sat Sep 6 19:38:12 1997 Fred Fish - - * read.h (s_lcomm_bytes): Add prototype (for real this time). - -Thu Sep 4 12:10:01 1997 Ian Lance Taylor - - * config/obj-elf.c (elf_frob_symbol): Only set BSF_OBJECT for - symbols on Irix. - -Wed Sep 3 11:21:33 1997 Nick Clifton - - * config/tc-v850.c: Remove BFD_RELOC_V850_16_PCREL. - -Tue Sep 2 18:32:30 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_convert_frag): PC relative instructions arex - relative to the next instruction, not the current instruction. - (md_assemble): Similarly. - -Tue Sep 2 15:58:52 1997 Nick Clifton - - * doc/c-v850.texi: Explanations of offsets in SDA/ZDA areas - correcetd. - - * config/tc-v850.c: Add support for SDA/TDA/ZDA sections. - (v850_reloc_prefix): Duplicate code eliminated. Add code to - recognise special instructions. - (md_assemble): Calculation of the size of a fixups corrected. - - * config/tc-v850.h (ELF_TC_SPECIAL_SECTIONS): Add SDA/TDA/ZDA - sections. - -Tue Sep 2 15:40:56 1997 Andrew Cagney - - * config/tc-v850.c (md_assemble): Use opcode->name instead of - opcode->opcode as the sentinal. Zero is a valid opcode. - -Tue Aug 26 16:51:14 1997 Ian Lance Taylor - - * doc/as.texinfo (Machine Dependencies): Add v850 to menu. - * doc/c-v850.texi: Change node name to match other chapter nodes. - -Tue Aug 26 09:46:22 1997 Nick Clifton - - * doc/c-v850.texi (V850 Opcodes): Correct name for tiny data area - pointer. - -Tue Aug 26 12:23:25 1997 Ian Lance Taylor - - * expr.c (integer_constant): If BFD64, don't make a bignum if the - number will fit in 64 bits. - - * config/tc-alpha.c (load_expression): Check explicitly for O_big, - rather than calling abort. - - * as.h: Don't define alloca if __GNUC__. Just declare it. - * macro.c: Copy alloca handling from as.h. - - * config/tc-i386.c (i386_align_code): Correct 16 bit noops. From - Gabriel Paubert . - - * config/tc-i386.c (md_assemble): In JumpByte case, when looking - for a WORD_PREFIX_OPCODE, change it to ADDR_PREFIX_OPCODE if this - is jcxz or a loop instruction. - -Mon Aug 25 16:04:14 1997 Nick Clifton - - * config/tc-v850.c (pre_defined_registers): Add 'hp' as alias for - r2. - (md_begin): Set up machine architecture and type. - -Mon Aug 25 14:25:48 1997 Ian Lance Taylor - - * symbols.c (resolve_symbol_value): Store the value back into the - symbol expression, to handle add or subtract simplification - correctly. Handle O_symbol_rva. Add default case. - - * config/tc-ppc.c (ppc_change_csect): Temporarily lower the - chunksize while creating the new subsection. - * as.c (chunksize): Initialize to zero. - * subsegs.c (subseg_set_rest): Change 5000 to chunksize when - calling obstack_begin. - -Mon Aug 25 11:21:48 1997 Nick Clifton - - * config/tc-v850.c (md_assemble): Restore input_line_pointer upon - exit. - - * config/tc-v850.c (parse_register_list): Support constant - expressions as register lists. - -Mon Aug 25 10:19:34 1997 Nick Clifton - - * doc/c-v850.texi: Change the major node to v850 Machine - Dependencies. - -Fri Aug 22 11:16:14 1997 Nick Clifton - - * doc/as.texinfo: Add inclusion of c-v850.texi - - * doc/c-v850.texi: New file. - - * read.c (is_end_of_line): Make NUL character be considered to be - a line terminator. - -Fri Aug 22 10:45:33 1997 Nick Clifton - - * config/tc-v850.c (parse_register_list): Add support for curly - brace syntax. - (cc_names): Add "e" and "ne" conditions. - -Thu Aug 21 11:00:36 1997 Nick Clifton - - * app.c (do_scrub_chars): Support a double dash as starting a - comment that extends to end of line. - -Thu Aug 21 10:54:27 1997 Nick Clifton - - * config/tc-v850.c (v850_section, v850_bss, v850_offset): New - functions. - (md_pseudo_table): New pseudo ops: .bss, .offset, .section - -Thu Aug 21 00:59:53 1997 Doug Evans - - * config/tc-m32r.c (md_estimate_size_before_relax): Update recorded - insn when changing to a different instruction. - -Wed Aug 20 00:45:20 1997 J"orn Rennecke - - * config/tc-sh.c (parse_reg, get_specific, build_Mytes): Add SH4 - floating point extensions. - (parse_reg): parse sgr and dbr. - -Tue Aug 19 17:07:34 1997 Nick Clifton - - * config/tc-v850.c (system_register_name): Support numbers for - system register IDs. - -Tue Aug 19 08:59:12 1997 Fred Fish - - * read.c (s_lcomm_internal): Renamed from s_lcomm, added arg to - flag when alignment is in bytes instead of power of 2, and code to - use that flag to convert alignment to bytes. - (s_lcomm, s_lcomm_bytes): New helpers that call s_lcomm_internal. - * read.h (s_lcomm_bytes): Add prototype. - * config/obj-coff.c (write_object_file): If ALIGNMENT_IN_S_FLAGS is - defined, write alignment to alignment bits in section header s_flags - rather than the s_align field. - * config/obj-coff.h (ALIGNMENT_IN_S_FLAGS): Define for TC_TIC80. - * config/tc-tic80.c (md_pseudo_table): Use s_lcomm_bytes for bss - pseudo, instead of s_lcomm which wants a power of two for alignment. - -Mon Aug 18 20:42:23 1997 Richard Henderson - - * macro.c (check_macro): use alloca instead of xmalloc to plug leak. - -Mon Aug 18 20:33:06 1997 Richard Henderson - - * as.c (show_usage): Add -am. - * input-scrub.c (input_scrub_include_sb): Don't add leading \n - if we've already got one. - * listing.c (struct list_info_struct): Add line_contents. - (listing_newline): Put unused argument to work: if non-null, save it... - (listing_listing): ... and regurgitate during listing instead of line - from file. - * listing.h (LISTING_MACEXP): New define. - (LISTING_NEWLINE): Argument is NULL. - * read.c (read_a_source_file): If expanding macros, break up input - lines and pass them to listing_newline. - * doc/as.texinfo: Document -ac and -am. - - * cond.c (s_ifc): Add missing demand_empty_rest_of_line. - -Mon Aug 18 11:26:36 1997 Nick Clifton - - * config/tc-v850.c (md_apply_fix3): Add support for new 16 bit PC - relative reloc. - -Mon Aug 18 11:24:21 1997 Nick Clifton - - * config/tc-v850.c: Remove support_v850e flag and command line - option. - - * configure.in (emulations): Add support for v850e target - - * configure (emulations): Add support for v850e target - -Mon Aug 18 11:24:21 1997 Nick Clifton - - * config/tc-v850.c: Remove support_v850ea flag and command line - option. - - * configure.in (emulations): Add support for v850ea target - - * configure (emulations): Add support for v850ea target - -Fri Aug 15 14:00:13 1997 Ian Lance Taylor - - * Makefile.am (check-DEJAGNU): Don't cd into testsuite until after - setting EXPECT and TCL_LIBRARY. - * Makefile.in: Rebuild. - - * as.h (enum debug_info_type): Define. - (debug_type): Declare. - * as.c (debug_type): New global variable. - (show_usage): Add --gstabs. - (parse_args): Handle --gstabs. - * read.c (generate_asm_lineno): Remove. - (read_a_source_file): Output stabs debugging if appropriate. - Change checks of generate_asm_lineno to check debug_type. Only - generate ECOFF debugging if ECOFF_DEBUGGING is defined. - * read.h (generate_asm_lineno): Don't declare. - (stabs_generate_asm_lineno): Declare. - * stabs.c (stabs_generate_asm_lineno): New function. - * ecoff.c (add_file): Use debug_type, not generate_asm_lineno. - Don't turn off debugging. - (add_file): Remove old #if 0 code. - (ecoff_new_file): Set debug_type, not generate_asm_lineno. - (ecoff_directive_end): Don't generate stabs line symbols. - (ecoff_generate_asm_lineno): Don't check stabs_seen. Don't set - generate_asm_lineno. - (line_label_cnt): Remove. - (ecoff_generate_asm_line_stab): Remove. - * ecoff.h (ecoff_generate_asm_line_stab): Don't declare. - * doc/as.texinfo, doc/as.1: Document --gstabs. - -Wed Aug 13 18:58:56 1997 Nick Clifton - - * config/tc-v850.c (md_assemble, md_show_usage, md_parse_option): - Add support for v850ea instructions. - - * config/tc-v850.c (md_assemble, md_show_usage, md_parse_option): - Add support for v850e instructions. - - * config/tc-v850.c (md_assemble): Fix error recovery to reload - text of entire opcode. - -Tue Aug 12 10:27:34 1997 Richard Henderson - - * doc/internals.texi: Document rs_leb128. - -Tue Aug 12 12:17:03 1997 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Give an error message for SIZE_BYTE - in ABSL case, rather than calling abort. - -Mon Aug 11 21:48:00 1997 Richard Henderson - - * as.h (enum _relax_state): Add rs_leb128. - * read.c (potable): Add sleb128 and uleb128. - (sizeof_*leb128, output_*leb128, emit_leb128_expr, s_leb128): New - functions. - * read.h: Update prototypes. - * symbols.c (resolve_symbol_value): Streamline quite a bit. Return - the symbol value, add a second FINALIZE argument that prevents - changes from being comitted. Update all callers. - * write.c (cvt_frag_to_fill, relax_segment): Handle rs_leb128. - * doc/as.texinfo: Document the new pseudos. - -Sun Aug 10 14:51:49 1997 Ian Lance Taylor - - * Makefile.am (MOSTLYCLEANFILES): Add site.bak, site.exp, stage, - stage1, and stage2. - (DISTCLEANFILES): Define. - * doc/Makefile.am (DISTCLEANFILES): Define. - * Makefile.in, doc/Makefile.in: Rebuild. - -Wed Aug 6 00:30:30 1997 Ian Lance Taylor - - * configure.in: Define TARGET_BYTES_BIG_ENDIAN if endian is set. - Don't set targ or gas_target. Define SCO_ELF and - TARGET_SOLARIS_COMMENT when appropriate. Don't substitute for - target_frag. - * Makefile.am: Remove @target_frag@. - (INCLUDES): Remove $(INTERNAL_CFLAGS), $(CROSS), $(HDEFINES), and - $(TDEFINES). - (dep-am): Mark as phony. - * acconfig.h: Add TARGET_BYTES_BIG_ENDIAN, TARGET_SOLARIS_COMMENT, - and SCO_ELF. - * config/arm-big.mt, config/arm-lit.mt: Remove. - * config/mips-big.mt, config/mips-lit.mt: Remove. - * config/ppc-big.mt, config/ppc-lit.mt: Remove. - * config/ppc-sol.mt: Remove. - * config/i386coff.mt, config/m68kcoff.mt: Remove. - * config/m88kcoff.mt: Remove. - * config/sco5.mt: Remove. - * configure, config.in, Makefile.in: Rebuild. - - * Makefile.am ($(srcdir)/config/m68k-parse.h): New target, to - further try to circumvent the .y.h rule. - * Makefile.in: Rebuild. - -Tue Aug 5 12:32:07 1997 Ian Lance Taylor - - * 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, and AC_DECL_YYTEXT. Call AM_MAINTAINER_MODE, - AM_CYGWIN32, and AM_EXEEXT. Don't call CY_CYGWIN32 or CY_EXEEXT. - * config.in: New file, created by autoheader. - * conf.in: Remove. - * acconfig.h: Mention PACKAGE, VERSION, and USING_CGEN. - * stamp-h.in: New file. - * as.c (print_version_id): Change GAS_VERSION to VERSION. - (parse_args): Likewise. - * config/obj-vms.c: (Write_VMS_MHD_Records): Likewise. - * doc/Makefile.am: New file, based on old doc/Makefile.in. - * Makefile.in, doc/Makefile.in: Now built with automake. - * aclocal.m4: Now built with aclocal. - * configure: Rebuild. - - * cond.c (s_else): If not listing false conditionals, turn listing - off in the false branch of the else. - -Mon Aug 4 11:28:35 1997 Ian Lance Taylor - - * config/tc-mips.c (macro): Fix handling of a double load from a - symbol plus an offset. - - * ecoff.c (ecoff_build_symbols): Set fMerge to 0 for an FDR which - has an associated external symbol. - -Sun Aug 3 23:23:59 1997 Richard Henderson - - * config/tc-alpha.c (s_alpha_ucons): New function. - (md_pseudo_table): Add unaligned data pseudos for DWARF. - -Thu Jul 31 15:13:43 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_assemble): Ignore the rest of the current - line if we encounter an error. - - * config/tc-v850.c (md_assemble): Sign extend constants value - for hi and hi0 expressions. - (v850_insert_operand): Enable range checking for generic 16bit - operands. - -Tue Jul 29 14:20:43 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_assemble): Turn on fx_no_overflow for - LO16, HI16 and HI16_S relocs. - -Mon Jul 28 18:41:41 1997 Rob Savoye - - * configure.in: Use CYGWIN and EXEEXT autoconf macro to look for - win32 dependencies. - * configure: Regenerated with autoconf 2.12. - * Makefile.in: Add $(EXEEXT) to all executables. - -Fri Jul 25 10:54:43 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_apply_fix): Improve warnings for out of range - unconditional branches. - (hppa_fix_adjustable): Don't adjust anything with a RR% or LR% - field selector. - -Thu Jul 24 15:21:49 1997 Doug Evans - - * config/tc-sparc.c (md_begin): Cast sparc_opcodes to PTR for hash_insert. - -Thu Jul 24 17:51:29 1997 Ian Lance Taylor - - * macro.c (define_macro): Make sure the index is in range before - checking for '('. - -Thu Jul 24 12:13:19 1997 Fred Fish - - * config/tc-tic80.c (build_insn): Remove "extended" and replace with - "fx" and "fxfrag". Add "ffrag". Change code to initialize and use - the right f/ffrag and fx/fxfrag pairs since instruction may be split - across frags. - -Tue Jul 22 18:38:56 1997 Robert Hoehne - - * config/te-go32.h (USE_ALIGN_PTWO): Define. - * config/tc-i386.c (md_pseudo_table): If USE_ALIGN_PTWO is - defined, use s_align_ptwo for .align. - * configure.in (i386-*-msdosdjgpp*): New target. - (i386-*-go32*): Set em to go32 and targ to coffgo32. - * configure: Rebuild. - -Tue Jul 22 12:41:40 1997 Doug Evans - - * config/tc-sparc.c (last_opcode): New static local. - (md_assemble): Don't issue "FP branch in delay slot" warning if - the delay slot has been annulled. - -Tue Jul 22 13:25:13 1997 Ian Lance Taylor - - * config/tc-m68k.c (md_apply_fix_2): Check for PC relative reloc - code if BFD_ASSEMBLER. - -Mon Jul 21 08:57:17 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (system_registers): Fix ordering of registers. - -Tue Jul 15 16:29:54 1997 Fred Fish - - * config/tc-tic80.c (build_insn): Initialize extended word to zero - when it will be filled in later by relocation information. - -Mon Jul 14 23:10:58 1997 Ian Lance Taylor - - * config/tc-mips.c (macro_build): Restore check of fmt argument. - (mips_ip): Fix ISA checks. - -Mon Jul 14 19:30:55 1997 Fred Fish - - * config/tc-tic80.c (build_insn): Fix endianness problem with - O_big operands. - -Sun Jul 13 20:43:46 1997 Ian Lance Taylor - - * config/tc-mips.c (check_absolute_expr): Change warning to - error. - -Fri Jul 11 10:18:47 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (macro_build): Refine code to check if an - instruction is available on a particular cpu variant. - (mips_ip): Likewise. - -Mon Jul 7 22:53:08 1997 Ian Lance Taylor - - * config/tc-i386.c (tc_i386_fix_adjustable): Change ifndef - OBJ_AOUT to ifdef OBJ_ELF. - (md_apply_fix3): When mangling 32 bit PC relative reloc for - BFD_ASSEMBLER, handle one ELF case for COFF as well, and add a PE - case. - * write.c (fixup_segment): Change special case for i386-coff to - not apply for i386-pe. - * config/obj-coff.c (coff_adjust_section_syms): Only count fixups - which were not done. - (coff_frob_file_after_relocs): Rename from coff_frob_file. - (coff_format_ops): Initialize frob_file_after_relocs field rather - than frob_file field. - * config/obj-coff.h (coff_frob_file): Don't declare. - (coff_frob_file_after_relocs): Declare. - (obj_frob_file): Don't define. - (obj_frob_file_after_relocs): Define. - * configure.in: Set bfd_gas to yes for i386-*-cygwin32. - * configure: Rebuild. - -Wed Jul 2 12:05:00 1997 Ian Lance Taylor - - * config/obj-coff.c (fixup_segment): Never subtract section - address from PC relative reloc which will be fully resolved. - -Tue Jul 1 15:23:07 1997 Jeffrey A Law (law@cygnus.com) - - * ecoff.c (page_type): Renamed from page_t to avoid conflict - with hpux10 header files. - -Mon Jun 30 12:27:28 1997 Ian Lance Taylor - - From Jason Merrill : - * read.c (do_align): If BFD_ASSEMBLER, only use NOP_OPCODE if - SEC_CODE is set. - * config/tc-i386.h (md_maybe_text): Define. - (md_do_align): Use md_maybe_text. - -Fri Jun 27 19:15:27 1997 Michael Meissner - - * config/tc-ppc.h (tc_fix_adjustable): Only check for GOT type - relocations, don't check for symbol being external, weak, etc. - -Mon Jun 16 19:12:51 1997 Geoff Keating - - * config/tc-ppc.h (tc_fix_adjustable): Don't let the assembler - calculate relocations to any external symbol, because we might be - linking a shared object and the symbol might be overriden or moved - (for instance, moved into a static executable's .bss section). - (GLOBAL_OFFSET_TABLE_NAME): Delete. This is an i386 wierdness. - - * config/tc-ppc.h (tc_fix_adjustable): GOT-based relocations can't - be calculated by the assembler. - - * config/tc-ppc.c (md_apply_fix3): Handle @plt or @local branch - whose destination lies in the same file, by ignoring the @plt or - @local and aiming the branch at its destination. - -Mon Jun 16 13:59:18 1997 H.J. Lu - - * symbols.c (copy_symbol_attributes): Copy BSF_OBJECT flag. - * config/obj-elf.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Copy size - expression. - - * config/obj-multi.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Define instead - of obj_copy_symbol_attributes. - -Mon Jun 16 12:45:56 1997 Ian Lance Taylor - - * config/tc-ppc.c (ppc_insert_operand): In 32 bit mode, with a - signed operand, sign extend a 32 bit value to the host size. - - * Makefile.in (CFLAGS): Subsitute from configure script. From - Jeff Makey . - - * config/tc-i386.c (i386_operand): Use alloca rather than a fixed - buffer size to make a copy of the symbol. - - * Makefile.in (OBJS): Put @extra_objects@ on the same line as - macro.o. - -Thu Jun 12 12:16:20 1997 Ian Lance Taylor - - * write.c (write_object_file): In non BFD_ASSEMBLER code, as we - step through the frags calling cvt_frag_to_fill, switch to - SEG_DATA when we reach data_frag_root. - -Tue Jun 10 17:08:34 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Allow an empty register - list for instructions which use register lists. - -Tue Jun 10 11:18:09 1997 H.J. Lu - - * config/tc-arm.c (md_apply_fix3): Make temp unsigned long. - - * config/tc-arm.c (arm_adjust_symtab): Only set storage classes if - OBJ_COFF. - - * config/tc-arm.c: Add prototypes for many static functions. - (struct asm_opcode ): Add prototypes for parms field. - (struct thumb_opcode ): Likewise. - (fp_op2): Remove unused flags parameter. - (output_inst): Make static. - (arm_after_pass_hook): Remove unused ignore parameter. - * config/tc-arm.h (arm_after_pass_hook): Declare. - (arm_start_line_hook): Declare. - (arm_frob_label): Declare. - -Mon Jun 9 12:55:45 1997 H.J. Lu - - * depend.c (wrap_output): new prototype. - -Mon Jun 9 12:52:44 1997 Ian Lance Taylor - - * config/tc-sh.c (md_apply_fix): Check for overflow. - - * config/tc-m68k.c (md_section_align): If a.out and BFD, force - section size to be aligned. - -Fri Jun 6 17:15:55 1997 Ian Lance Taylor - - * config/tc-sh.h (md_cons_align): Define. - (sh_cons_align): Declare. - * config/tc-sh.c (md_pseudo_table): Add .uaword and .ualong. - (sh_no_align_cons): New static variable. - (s_uacons): New static function. - (sh_cons_align): New function. - (sh_handle_align): Warn about misaligned data. - * doc/c-sh.texi: Document .uaword and .ualong. - -Thu Jun 5 15:38:17 1997 Ian Lance Taylor - - * macro.c (macro_expand): In MRI mode, treat single quote as a - separator character when checking for a positional argument. - -Tue Jun 3 16:15:13 1997 Nick Clifton - - * config/tc-arm.c (md_parse_option): Merge in changes from - armT-970328-branch. - - * config/tc-arm.h: Merge in changes from armT-970328-branch. - - * configure.in (emulations): Add Thumb architecture support from - armT-9703-28-branch. - -Mon Jun 2 16:25:07 1997 Nick Clifton - - * doc/all.texi: Add enabling of ARM documentation. - - * doc/as.texinfo: Add ARM documentation from armT-970328-branch. - -Mon Jun 2 11:55:12 1997 Gavin Koch - - * config/tc-mips.c: Added r3900 support. - -Thu May 29 12:58:26 1997 Ben Pfaff - - * as.c: (parse_args) `-t' option requires an argument. - -Wed May 28 15:45:07 1997 Nick Clifton - - * config/tc-arm.c (md_begin): Change call to - coff_arm_bfd_set_private_flags() to a call to - bfd_set_private_flags(). - -Wed May 28 16:17:34 1997 Ian Lance Taylor - - * Makefile.in: Rebuild dependencies. - - * config/tc-i386.c (tc_gen_reloc): Don't try to convert the type - of a BFD_RELOC_RVA reloc. - -Wed May 28 10:48:14 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (tc_fix_adjustable): Reject absolute calls/jumps. - (hppa_force_relocation): Force a relocation for an absolute - call/jump. - -Mon May 26 13:24:25 1997 Ian Lance Taylor - - * doc/as.texinfo: Don't use @value in section names or index - entries; it confuses texinfo.tex. - -Fri May 23 00:09:35 1997 Tom Tromey - - * doc/as.texinfo: Updated for -MD option. - * Makefile.in (CFILES): Added depend.c. - (OBJS): Added depend.o. - * as.h (start_dependencies, register_dependency, - print_dependencies): New declarations. - * depend.c: New file. - * as.c (parse_args): Added -MD option. - (main): Call print_dependencies. - (show_usage): Added help for -MD. - * read.c (s_app_file): Call register_dependency. - (s_include): Call register_dependency when file is found. - (read_a_source_file): Call register_dependency. - -Wed May 21 17:39:28 1997 Ian Lance Taylor - - * config/obj-coff.c (symbol_to_chars): If TE_PE, don't add the - section address to the symbol value. - -Tue May 20 11:23:31 1997 Gavin Koch - - * config/tc-mips.c (macro_build,mips_ip): Move the INSN_ISA field - into the new membership field. - -Thu May 15 10:00:53 1997 Nick Clifton - - * config/tc-arm.c (md_begin): If no cpu type is specified on the - command line then the ARM7 is now chosen by default when setting - the BFD machine and architecture. - -Wed May 14 09:54:53 1997 Nick Clifton - - * config/tc-arm.c (global variables): Added 'uses_apcs_26' flag to - hold APCS selection. - (md_begin): Added code to generate flags to be set into the COFF - header and the calls to the BFD functions to do this. - (md_parse_option, md_show_usage): Added new command line - options -mapcs-32, -mapcs-26, -marmv2, -marmv2a, -marmv3, - -marmv3m, -marmv4, -marmv4t. - - * config/tc-arm.h (LOCAL_LABEL): Removed the definition of this macro - as it is never used. - -Tue May 13 22:26:14 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_convert_frag): Prefix temporary - label name with ".". - * config/tc-mn10300.c (md_convert_frag): Likewise. - -Tue May 13 14:44:39 1997 Ian Lance Taylor - - * config/tc-mips.c (set_at): Check for bignum. - (check_absolute_expr, macro, mips16_macro): Likewise. - -Tue May 13 10:45:56 1997 Fred Fish - - * config/tc-tic80.c (md_apply_fix): Check PC relative relocations - for overflow/underflow, only insert lower 15 bits into instruction. - -Mon May 12 13:33:08 1997 H.J. Lu - - * config/tc-i386.c (pi): Check for RegMMX. - -Thu May 8 11:10:15 1997 Ian Lance Taylor - - * expr.c (expr): When subtracting values in the same frag, - subtract X_add_number rather than adding it. - -Wed May 7 15:39:48 1997 Ian Lance Taylor - - * config/obj-coff.c (write_object_file): Just pass NULL to - md_do_align, not the address of a char holding NOP_OPCODE. - - * config/tc-mips.c (macro): Handle constants for M_LI_D and - M_LI_DD. - (mips_ip): For 'F', 'L', 'f', and 'l', generate a constant rather - than an address if the floating point value looks sufficiently - simple. - -Tue May 6 12:18:09 1997 Ian Lance Taylor - - * config/tc-i386.c (md_section_align): If a.out and BFD, force - section size to be aligned. - -Mon May 5 17:16:55 1997 Ian Lance Taylor - - * cond.c: Include "macro.h". - (struct conditional_frame): Add macro_nest field. - (initialize_cframe): Initialize macro_nest. - (cond_finish_check): Add nest parameter. Change all callers. - (cond_exit_macro): New function. - * as.h (cond_finish_check): Update declaration. - (cond_exit_macro): Declare. - * input-scrub.c (macro_nest): Make globally visible. - (input_scrub_next_buffer): Call cond_finish_check. - * macro.h (macro_nest): Declare. - * read.c (s_mexit): Call cond_exit_macro. - - * config/tc-i386.h (RegMMX): Define. - * config/tc-i386.c (pi): Check for all register types. - (type_names): Add RegMMX. - (md_assemble): Handle RegMMX. - -Wed Apr 30 12:47:00 1997 Manfred Hollstein - - * config/obj-coff.c (c_section_symbol): Clear the LOCAL bit #ifdef - TE_DELTA. - -Tue Apr 29 20:23:10 1997 Jim Wilson - - * config/tc-mips.c (nopic_need_relax): Add new parameter - before_relaxing. Use it when testing ecoff_extern_size. - (load_address, macro, md_estimate_size_before_relax): Fix all - callers. - -Tue Apr 29 19:54:36 1997 Richard Henderson - - * config/obj-elf.c (elf_pseudo_table): Add "subsection". - (obj_elf_subsection): New static function. - -Tue Apr 29 19:52:47 1997 Ian Lance Taylor - - * config/obj-coff.c (coff_header_append): Don't reset string_size - each time through the loop. - -Fri Apr 25 14:17:46 1997 H.J. Lu - - * Makefile.in (DISTSTUFF): Add itbl-parse.h. - -Fri Apr 25 12:03:15 1997 Ian Lance Taylor - - * doc/internals.texi (Porting GAS): Correct documentation for - current configure handling of targ-cpu.h, et. al. - (CPU backend): Document listing macros. - - * listing.c (data_buffer): Set size based on other listing macros, - rather than always using 100. - (data_buffer_size): Remove static variable. - (calc_hex): Make data_buffer_size a local variable. Don't leave - any slop when filling data_buffer. - -Mon Apr 21 15:33:19 1997 Ian Lance Taylor - - * doc/c-mips.texi: Document .set autoextend. - -Sat Apr 19 23:09:25 1997 Niklas Hallqvist - - * configure.in (i386-*-openbsd*, m68k-*-openbsd*, - mips-dec-openbsd*, ppc-*-*bsd*, ns32k-pc532-openbsd*, - sparc-*-openbsd*): New targets. - * configure: Rebuild. - -Sat Apr 19 22:52:03 1997 Jim Wilson - - * config/obj-elf.c (elf_frob_symbol): If TC_MIPS, set BSF_OBJECT - for all undefined symbols. - -Fri Apr 18 13:37:35 1997 Ian Lance Taylor - - * config/tc-ppc.c (ppc_fix_adjustable): Handle zero length csects - correctly. - -Fri Apr 18 11:51:35 1997 Niklas Hallqvist - - * configure.in (alpha*-*-openbsd*): New target. - * configure: Rebuild. - -Thu Apr 17 13:59:47 1997 Per Fogelstrom - - * configure.in (mips-*-openbsd*): New target. - * configure: Rebuild. - -Wed Apr 16 12:31:24 1997 Martin Hunt - - * config/tc-d30v.c (parallel_ok): Fix parallel checking - for instructions using conditional execution. - -Tue Apr 15 18:11:44 1997 Gavin Koch - - * config/tc-mips.c (insn_uses_reg): Correct test for fpr pairs. - -Tue Apr 15 13:04:47 1997 Ian Lance Taylor - - * Makefile.in (srcroot): Remove. - (INSTALL): Set to @INSTALL@. - (INSTALL_XFORM, INSTALL_XFORM1): Remove. - (all, dvi): Don't set srcroot. - (install): Depend upon as.new, gasp.new, and installdirs. Use - $(program_transform_name) directly, rather than using - $(INSTALL_XFORM) and $(INSTALL_XFORM1). - (installdirs): New target. - * doc/Makefile.in (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-as): Run mkinstalldirs. - (install-info-gasp): Likewise. - -Mon Apr 14 11:59:08 1997 Ian Lance Taylor - - * Makefile.in (INSTALL): Change install.sh to install-sh. - - * symbols.c (resolve_symbol_value): Check for division by zero. - - From Thomas Graichen : - * Makefile.in: Always use $(SHELL) when running move-if-change. - * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub. - * configure: Rebuild. - -Thu Apr 10 14:40:00 1997 Doug Evans - - * cgen.c (cgen_parse_operand): Renamed from cgen_asm_parse_operand. - New argument `want'. Update enum cgen_parse_operand_result values. - Initialize if CGEN_PARSE_OPERAND_INIT. - * config/tc-m32r.c (md_begin): Set cgen_parse_operand_fn. - (md_assemble): Call cgen_asm_init_parse. - Update call to m32r_cgen_assemble_insn, call as_bad if assembly failed. - -Wed Apr 9 11:49:41 1997 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Handle #j. - -Tue Apr 8 16:37:57 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_convert_frag): Create fixup at the - right address for call label:32,regs,imm. - -Mon Apr 7 14:58:22 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_subspace_start): If OBJ_ELF, then always return - zero. - * config/tc-hppa.h (tc_frob_symbol): Don't reset the value of the - symbol for OBJ_ELF anymore. - -Mon Apr 7 10:54:59 1997 Doug Evans - - * Makefile.in: Regenerate dependencies. - (TARG_CPU): New variable. - (cgen.o): Depend on cgen.h, $(TARG_CPU)-opc.h. - (.dep1): Delete creating of cgen-opc.h. - (.tcdep): Put proper contents in cgen-opc.h. - * configure.in (m32r): Delete setting of extra_files, extra_links. - (AC_OUTPUT): Create cgen-opc.h. - * configure: Regenerated. - -Sat Apr 5 13:19:12 1997 Klaus Kaempf - - * makefile.vms: Update to build gasp.exe. - -Fri Apr 4 16:10:02 1997 Doug Evans - - * write.c (relax_frag): Make non-static. - * write.h (relax_frag): Add prototype for. - * config/tc-m32r.h (md_do_align): New arg `max'. - * config/tc-m32r.c (m32r_do_align): Likewise. - Update calls to frag_align, frag_align_pattern. - (fill_insn): Update call to m32r_do_align. - (m32r_scomm): Update call to frag_align. - - * config/tc-m32r.[ch]: New files. - * cgen.c: New file. - * Makefile.in (CPU_TYPES): Add m32r. - (TARGET_CPU_CFILES): Add tc-m32r.c. - (TARGET_CPU_HFILES): Add tc-m32r.h. - (DISTCLEAN_HERE): Add cgen-opc.h. - (.dep1,.tcdep): Create empty cgen-opc.h. - (cgen.o): Add dependencies. - (dependencies): Regenerate. - * as.h (struct frag): New member fr_targ. - (fr_pcrel_adjust,fr_bsr): Move into union fr_targ.ns32k. - * conf.in (USING_CGEN): New macro. - * configure.in (m32r-*-*): Add entry for. - Add cgen.o to extra_objects. - * configure: Regenerate. - * frags.c (frag_var): fr_pcrel_adjust renamed to - fr_targ.ns32k.pcrel_adjust. fr_bsr renamed to fr_targ.ns32k.bsr. - (frag_variant): Likewise. - * write.c (relax_frag): Likewise. - * config/tc-ns32k.c (*): Likewise. - -Fri Apr 4 13:26:10 1997 Ian Lance Taylor - - * config/tc-hppa.h (TC_EOL_IN_INSN): Check explicitly for '!', - rather than for any end of line character. - - * config/tc-hppa.c (tc_gen_reloc): If hppa_ren_reloc_type fails, - call abort (i.e., as_abort) rather than crashing. - - * config/tc-mips.c: Protect uses of STO_MIPS16 with an ifdef of - OBJ_ELF, rather than of S_GET_OTHER. - - * Makefile.in (DISTCLEAN_HERE): Add site.exp and site.bak. - -Thu Apr 3 13:16:18 1997 Ian Lance Taylor - - * Makefile.in (VERSION): Set to 2.8.1. - - * Branched binutils 2.8. - -Wed Apr 2 12:24:10 1997 Ian Lance Taylor - - * COPYING: Update FSF address. - - * config/tc-mips.c (mips16_macro): Handle M_DMUL and M_MUL. - -Tue Apr 1 18:29:47 1997 Jim Wilson - - * config/tc-mips.c (md_begin): Don't set interlocks for 4100. - -Tue Apr 1 16:24:28 1997 Klaus Kaempf - - * config-gas.com: Update to handle both vax and alpha. - * makefile.vms: Update to use config-gas. - * conf-a-gas.com: Remove file. - -Tue Apr 1 16:08:21 1997 Ian Lance Taylor - - * Makefile.in: Remove unnecessary itbl-parse.h, ibtl-parse.c, and - itbl-lex.c dependencies. Remove rules for itbl-lex.o, - itbl-parse.o, and itbl-ops.o; just use the normal .c.o rule. - -Tue Apr 1 11:25:56 1997 Michael Meissner - - * config/tc-tic80.c (line_comment_char): Make '#' start comments - at the beginning of a line for compatibility with .S files where - cpp leaves the filename transitions beginning with '#'. - -Tue Apr 1 00:07:30 1997 Ian Lance Taylor - - * config/tc-m68k.c: Only compile tc_coff_symbol_emit_hook and - tc_coff_sizemachdep if OBJ_COFF. - -Mon Mar 31 23:53:44 1997 H.J. Lu - - * config/tc-ppc.c (register_name): Declare. - -Mon Mar 31 16:31:04 1997 Joel Sherrill - - * configure.in (hppa*-*-rtems*): New target, like hppa-*-*elf*. - * configure: Rebuild. - -Mon Mar 31 14:15:19 1997 Ian Lance Taylor - - * config/tc-mips.c (mips_pseudo_table): Add "stabn". - (mips16_mark_labels): New static function. - (append_insn): Call mips16_mark_labels. - (mips_emit_delays): Likewise. - (s_insn): Likewise. Don't call mips_clear_insn_labels. - (s_mips_stab): New static function. - - * configure.in: Use ELF for mips-*-gnu*. - * configure: Rebuild. - -Mon Mar 31 14:01:40 1997 Philippe De Muyter - - * config/tc-m68k.h (TARGET_FORMAT): Set to "coff-m68k-sysv" if - TE_DELTA. - -Fri Mar 28 18:03:19 1997 Alan Modra - - * configure.in: Add AC_ARG_ENABLE for commonbfdlib. If it is set, - set OPCODES_LIB to empty. - * configure: Rebuild. - -Fri Mar 28 15:25:24 1997 H.J. Lu - - * configure.in (sparc-*-linux*aout*, sparc-*-linux*): New - targets. - * configure: Rebuild. - -Fri Mar 28 13:08:33 1997 Ian Lance Taylor - - * itbl-parse.y (yyerror): Make static. Declare. - - From Ralf Baechle : - * configure.in: Set emulations for mips-*-linux*-*. - * configure: Rebuild. - - * config/tc-mips.c (struct mips_set_options): Define. - (mips_opts): New static variable. - (mips_isa): Remove. Now a field in mips_opts. Change all - references. - (mips16, mips16_autoextend, mips_warn_about_macros): Likewise. - (mips_noreorder, mips_nomove, mips_noat, mips_nobopt): Likewise. - (struct mips_option_stack): Define. - (mips_opts_stack): New static variable. - (s_mipsset): Add support for .set push and .set pop. - * doc/c-mips.texi: Document .set push and .set pop. - - * config/obj-elf.c (obj_elf_section_change_hook): New function. - * config/obj-elf.h (obj_elf_section_change_hook): Declare it. - * config/tc-mips.c (s_change_sec): Call it if OBJ_ELF. - -Thu Mar 27 12:23:56 1997 Ian Lance Taylor - - * as.c (parse_args): Update copyright date in version message. - - * Makefile.in (clean-here): Remove dependency files. - - * read.c (s_comm): Check S_IS_COMMON as well as S_IS_DEFINED. - (s_mri_common): Check S_IS_COMMON unconditionally. - * symbols.c (colon): Check S_IS_COMMON as well as S_IS_DEFINED. - * config/tc-alpha.c (s_alpha_comm): Likewise. - * config/tc-mips.c (nopic_need_relax): Likewise. - * config/tc-ppc.c (ppc_elf_lcomm): Likewise. - (ppc_pe_comm): Likewise. - * config/obj-elf.c (obj_elf_common): Likewise. Set segment of - common symbol to bfd_com_section_ptr. - * config/tc-sparc.c (s_common): Likewise. - (tc_gen_reloc): Likewise. - -Thu Mar 27 00:29:46 1997 Martin M. Hunt - - * config/tc-d30v.c (md_apply_fix3): Get the relocs right. - -Wed Mar 26 13:35:15 1997 H.J. Lu - - * config/tc-i386.c (tc_i386_fix_adjustable): Only define if - BFD_ASSEMBLER. - -Wed Mar 26 11:32:51 1997 Ian Lance Taylor - - * input-scrub.c (input_scrub_next_buffer): Handle very long input - lines correctly. - - * listing.c (print_lines): Add lineno parameter. Change all - callers. - (listing_listing): Only call calc_hex for the right line. - (listing_list): Set the new edict based on the current edict, in - order to handle listing commands in macros correctly. - - * config/tc-mips.c (insn_uses_reg): Map register numbers in mips16 - instructions. - - * cond.c (cond_finish_check): New function. - * as.h (cond_finish_check): Declare. - * as.c (main): Call cond_finish_check. - -Tue Mar 25 14:45:54 1997 Martin M. Hunt - - * config/tc-d30v.c (md_assemble): If two instructions - are supposed to be assembled in parallel and the first one is - long, print an error and stop. - (md_apply_fix3): Don't calculate absolute relocs. Just write - them out. - -Mon Mar 24 12:11:18 1997 Ian Lance Taylor - - * config/tc-i386.h (iclrKludge): Define. - * config/tc-i386.c (md_assemble): Handle iclrKludge. - - * config/tc-alpha.h (tc_frob_file_before_adjust): Define if - OBJ_ECOFF. - (alpha_frob_file_before_adjust): Declare if OBJ_ECOFF. - * config/tc-alpha.c (alpha_debug): New static variable. - (md_parse_option): Set alpha_debug if -g is seen. - (alpha_frob_file_before_adjust): New function if OBJ_ECOFF. - -Sun Mar 23 18:03:31 1997 Martin M. Hunt - - * config/tc-d30v.c (build_insn): Enable range-checking code. - (postfix): Stop at space or comma. - (md_assemble): Change error message. - -Sat Mar 22 13:44:28 1997 Ian Lance Taylor - - * Makefile.in: Added automatic dependency building. - * dep-in.sed: New file. - -Fri Mar 21 15:42:37 1997 Ian Lance Taylor - - * config/obj-ieee.c (segment_name): Don't define function if this - is a macro. - - * config/obj-coff.h (DO_STRIP): Don't define. - * config/tc-h8300.h (DO_STRIP): Don't define. - * config/tc-h8500.h (DO_STRIP): Don't define. - * config/tc-w65.h (DO_STRIP): Don't define. - * config/tc-z8k.h (DO_STRIP): Don't define. - - * symbols.c (colon): Call obj_frob_label if it is defined. - * config/obj-vms.h (obj_frob_label): Rename from tc_frob_label. - - * configure.in: Don't set files and links. Don't call - AC_LINK_FILES. Substitute te_file. Create targ-cpu.h, - obj-format.h, targ-env.h, and itbl-cpu.h in AC_OUTPUT. - * configure: Rebuild. - * Makefile.in (TARG_CPU_C): New variable. - (TARG_CPU_O, TARG_CPU_H): New variables. - (OBJ_FORMAT_C, OBJ_FORMAT_O, OBJ_FORMAT_H): New variables. - (TARG_ENV_H, ATOF_TARG_C, ATOF_TARG_O): New variables. - (SOURCES): Rename from REAL_SOURCES. Delete old definition. - (LINKED_SOURCES): Remove. - (HEADERS): Rename from REAL_HEADERS. Delete old definition. - (LINKED_HEADERS): Remove. - (OBJS): Use $(TARG_CPU_O), etc., rather than targ-cpu.o, etc. - ($(OBJS)): Depend upon $(TARG_ENV_H), etc., rather than - targ-cpu.h, etc. - ($(TARG_CPU_O), $(OBJ_FORMAT_O) $(ATOF_TARG_O)): New targets. - (targ-cpu.o, obj-format.o, atof-targ.o): Remove targets. - (itbl-cpu.h): Remove target. - (DISTCLEAN_HERE): Remove targ-cpu.c, obj-format.c, atof-targ.c, - atof-targ.h. - -Thu Mar 20 19:18:58 1997 Ian Lance Taylor - - * doc/as.texinfo (Symbol Names): Don't use obsolete @ctrl macro. - -Thu Mar 20 16:49:14 1997 Andreas Schwab - - * config/tc-m68k.c (mri_chip): Replace calls to get_symbol_end by - open coded loop that does not require the name to start with a - name beginner. - -Thu Mar 20 13:42:01 1997 H.J. Lu - - * frags.c (frag_var): Change offset parameter to offsetT. - (frag_variant): Likewise. - * frags.h (frag_variant, frag_var): Update declarations. - * config/tc-m68k.c (struct m68k_it): Change foff field to - offsetT. - (add_frag): Change off parameter to offsetT. - * Several files: Add casts to calls to frag_var. - - * Makefile.in (m68k-parse.c): Depend upon itbl-parse.c, to - serialize a parallel make. - (itbl-parse.h): Split target out from itbl-parse.c. - -Thu Mar 20 12:48:45 1997 Philippe De Muyter - - * config/m68k-parse.y (motorola_operand): Allow (zdireg,EXPR). - - * config/te-delta.h (COFF_COMMON_ADDEND): Define. - * config/obj-coff.c (fixup_segment): Check COFF_COMMON_ADDEND when - storing the value of a common symbol. - -Wed Mar 19 11:37:57 1997 Philippe De Muyter - - * config/obj-coff.c (glue_symbols): Unused variable symbolP - removed. - (crawl_symbols): Do not modify symbol_rootP and symbol_lastP here; - that is done by symbol_remove and symbol_insert. - - * config/obj-coff.h (S_IS_LOCAL): Return 0 for a debugging - symbol. - -Wed Mar 19 11:06:29 1997 Ian Lance Taylor - - * config/tc-mips.c (load_register): In 32 bit mode, when not - dealing with a 64 bit number, permit the upper 32 bits to be set - even if bit 31 is not set. - -Tue Mar 18 23:30:14 1997 Ian Lance Taylor - - * read.c (potable): Add "equiv". - (s_set): Handle .equiv based on argument. - * doc/as.texinfo (Equiv): New node to document .equiv. - (Err): New node to document .err. - -Tue Mar 18 15:50:13 1997 H.J. Lu - - * Many files: Add function prototypes. - * as.c (show_usage, parse_args): Make static. - * frags.h (frag_alloc): Declare. - * subsegs.c (subseg_set_rest): Don't declare frag_alloc. - * symbols.c (dollar_label_instance): Change return type to long. - * symbols.h (print_symbol_value): Declare. - (print_expr, print_expr_1, print_symbol_value_1): Declare. - * write.c (fix_new_exp): Don't declare make_expr_symbol. - (remove_subsegs, relax_frag): Make static. - * config/atof-vax.c (atof_vax_sizeof): Change letter to int. - (what_kind_of_float): Likewise. - (atof_vax): Make static. Change what_kind to int. - (md_atof): Change what_statement_type to int. - * config/obj-ecoff.h (obj_ecoff_set_ext): Declare. - * config/tc-alpha.c (vax_md_atof): Declare. - (md_atof): Don't declare atof_ieee and vax_md_atof. - * config/tc-i386.c (set_16bit_code_flag): Make static. - * config/tc-i386.h (tc_i386_fix_adjustable): Declare. - * config/tc-m68k.c (add_fix): Change width to int. - (insert_reg): Change regname to const. - (md_atof): Don't declare atof_ieee. - (demand_empty_rest_of_line): Don't declare. - * config/tc-m88k.c (md_atof): Don't declare atof_ieee. - * config/tc-sparc.c (cmp_reg_entry): Change args to const PTR. - (parse_keyword_arg): Change lookup_fn to take const arg. - (md_atof): Don't declare atof_ieee. - * config/tc-sparc.h: Add ifdef for multiple inclusion. - (tc_aout_pre_write_hook): Don't declare. - -Mon Mar 17 11:21:09 1997 Ian Lance Taylor - - * as.h (bfd_alloc_by_size_t): Don't declare. - * Many files: Use xmalloc rather than bfd_alloc_by_size_t. - -Sun Mar 16 13:49:21 1997 Philippe De Muyter - - * symbols.c (symbol_new): Don't call debug_verify_symchain. - (symbol_append): Set sy_next and sy_previous when adding a single - symbol to an empty list. Call debug_verify_symchain. - (verify_symbol_chain): Use assert, not know. - -Sat Mar 15 20:27:12 1997 Fred Fish - - * NEWS: Note BeOS support. - * configure.in: (ppc-*-beos): New target, use coff as object format. - * configure: Regenerate with autoconf. - -Sat Mar 15 19:14:02 1997 Ian Lance Taylor - - * config/tc-mips.c (md_apply_fix): Improve error message for out - of range branch. - - * Makefile.in: Add dependencies on obstack.h where needed. - -Fri Mar 14 15:33:38 1997 Ian Lance Taylor - - * config/tc-mips.c (md_estimate_size_before_relax): Handle the - case of a symbol equated to another symbol when using SVR4_PIC. - - * Makefile.in (TARG_CPU_DEP_sparc): Add opcode/sparc.h. - -Thu Mar 13 11:20:51 1997 Ian Lance Taylor - - * read.c (read_a_source_file): Call LISTING_NEWLINE before - HANDLE_CONDITIONAL_ASSEMBLY when handling an MRI line label. - - * config/obj-elf.c (obj_elf_data): Call md_flush_pending_output - and md_elf_section_change_hook if they are defined. - (obj_elf_text, obj_elf_previous): Likewise. - -Wed Mar 12 11:40:20 1997 Ian Lance Taylor - - * config/obj-multi.h (struct elf_obj_sy): Define if - OBJ_MAYBE_ELF. - (OBJ_SYMFIELD_TYPE): Define as struct elf_obj_sy if - OBJ_MAYBE_ELF. - * config/obj-elf.h (struct elf_obj_sy): Don't define if - OBJ_SYMFIELD_TYPE is defined. - - * doc/as.texinfo (bss): Improve description of .bss section. In - ELF or COFF, you are permitted to switch into the section. - (Comm): Rewrite description of common symbols. - (Lcomm): Mention that some targets permit a third argument. - -Tue Mar 11 01:13:31 1997 Ian Lance Taylor - - * config/tc-ppc.c (ppc_elf_lcomm): Don't call S_CLEAR_EXTERNAL. - - * symbols.c (colon): Change type of local to int. From Alan Modra - . - - * config/tc-m88k.c (m88k_do_align): Don't use a special nop - alignment if a zero fill pattern was explicitly specified. - * config/tc-sh.c (sh_do_align): Likewise. - - * read.c (equals): Always permit register names to be redefined. - - * config/tc-mips.c (mips_fix_adjustable): Permit a reloc against a - mips16 symbol to be adjusted if a symbol is being subtracted from - it. - - From Eric Youngdale : - * config/obj-elf.c (obj_elf_symver): Check for duplicate or - illegal symbol version names. - (elf_frob_symbol): Check for external default versions. - -Sun Mar 9 23:49:12 1997 Ian Lance Taylor - - From Eric Youngdale : - * config/obj-elf.h (struct elf_obj_sy): Define. - (OBJ_SYMFIELD_TYPE): Define to elf_obj_sy struct. Change all - users. - * config/obj-elf.c (obj_elf_symver): Just record the name. - (obj_symbol_new_hook): Initialized versioned_name field. - (elf_frob_symbol): If there is a versioned_name, either rename the - symbol, or add an alias with that name. - -Thu Mar 6 13:55:32 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_relax_table): Define. - (md_convert_frag): Implement. - (md_assemble): Handle relaxable operands/instructions correctly. - (md_estimate_size_before_relax): Implement. - * config/tc-mn10300.h (TC_GENERIC_RELAX_TABLE): Define. - - * config/tc-mn10200.c (md_relax_table): Fix typos. - - * config/tc-mn10300.c (md_assemble): Don't use any MN10300 specific - relocs anymore. Tweak fx_offset for pc-relative relocs. - -Wed Mar 5 15:46:16 1997 Ian Lance Taylor - - * cond.c (s_ifc): Call mri_comment_field and mri_comment_end when - in MRI mode. - -Tue Mar 4 19:34:21 1997 Fred Fish - - * config/tc-tic80.c (md_pseudo_table): Add "sect" and "section" - pseudo-ops. - * config/tc-tic80.c (md_begin): Declare external variable - coff_flags and insert an F_AR32WR bit into it. - -Tue Mar 4 10:01:04 1997 Ian Lance Taylor - - * read.c (equals): Add reassign parameter. Change all callers. - * read.h (equals): Update declaration. - -Sat Mar 1 01:04:04 1997 Ian Lance Taylor - - * config/tc-mips.c (mips16_extended_frag): Don't assume that we - can rely on the frag address to determine whether a frag is - earlier or later. - -Fri Feb 28 14:40:00 1997 Ian Lance Taylor - - * write.h (LOCAL_LABEL): Only define if not BFD_ASSEMBLER. - (S_LOCAL_NAME): Likewise. - (FAKE_LABEL_NAME): Define unconditionally. - * symbols.c (colon): Call bfd_is_local_label, not LOCAL_LABEL, if - BFD_ASSEMBLER. - (S_IS_LOCAL): Call bfd_is_local_label_name, not LOCAL_LABEL. - * config/tc-*.h: Only define LOCAL_LABEL if not BFD_ASSEMBLER. - Don't define FAKE_LABEL_NAME. - * config/te-ic960.h: Likewise. - * config/tc-mips.h (tc_frob_file_before_adjust): Define. - (mips_frob_file_before_adjust): Declare. - * config/tc-mips.c (mips_frob_file_before_adjust): New function. - (mips_local_label): Remove. - - * config/te-sco386.h: Remove; not used. - -Thu Feb 27 15:39:16 1997 Fred Fish - - * config/tc-tic80 (md_pseudo_table): Add align pseudo op to do - byte alignment rather than power-of-two alignment that is the - GAS default. - -Thu Feb 27 13:29:04 1997 Ian Lance Taylor - - * config/tc-m68k.c (md_assemble): Handle a reloc width of 'W'. - - * gasp.c (hash_add_to_string_table): Correct misspelling in error - message, and add newline. - (process_file): Don't process assignments in the label if this is - a equ or assign pseudo-op. - (process_pseudo_op): Swap first argument to do_assign for K_ASSIGN - and K_EQU, to match documentation. - -Thu Feb 27 12:00:03 1997 Michael Meissner - - * config/obj-coff.c (obj_coff_section): Add 'r' section attribute - to denote read-only data sections. - -Thu Feb 27 00:26:33 1997 Ian Lance Taylor - - * config/obj-elf.c (obj_elf_common): Set BSF_OBJECT in flags. - * config/tc-sparc.c (s_common): Likewise, if BFD_ASSEMBLER. - - * expr.c (operand): Simplify 0b handling. Don't treat 0b as a - binary number if the next character is '+' or '-'. - -Wed Feb 26 20:47:12 1997 Fred Fish - - * config/tc-tic80.c (FLT_CHARS): Change from "dD" to "fF". - (find_opcode): Match operands that can be floats. - (build_insn): Handle O_big (float) expressions and build - correct opcode. - -Wed Feb 26 18:19:00 1997 Stan Shebs - - * configure.in (mips*-*-lnews*): New target, also make empty - emulation list for this target. - * configure: Update. - * config/tc-mips.c (ECOFF_LITTLE_FORMAT): Define. - (mips_target_format): Use. - * config/te-lnews.h: New file. - -Wed Feb 26 15:33:46 1997 Fred Fish - - * config/tc-tic80.c (find_opcode, build_insn): Changes to match - operands with :m or :s modifiers and generate the right opcodes - for them. - -Wed Feb 26 11:56:11 1997 Ian Lance Taylor - - * Makefile.in (itbl-parse.c itbl-parse.h): Use $(BISON) and - $(BISONFLAGS), not $(YACC) and $(YACCFLAGS). - -Tue Feb 25 22:02:23 1997 Philippe De Muyter - - * config/tc-m68k.c (instring): Useless local declaration of - crack_operand removed. - * expr.h (expressionS): Changed type of X_op field to operatorT if - __GNUC__. - -Tue Feb 25 13:17:27 1997 Ian Lance Taylor - - Based on patches from Robert Lipe : - * configure.in: Add i386coff and i386elf to emulation list. - * configure: Rebuild. - * as.c (i386coff, i386elf): Declare. - * obj.h (coff_format_ops): Declare. - * config/obj-coff.c (OBJ_HEADER): Define. - (coff_obj_symbol_new_hook): Rename from obj_symbol_new_hook. - (coff_obj_read_begin_hook): Rename from obj_read_begin_hook. - (obj_pseudo_table): Add "version". - (coff_pop_insert): New static function. - (coff_sec_sym_ok_for_reloc): New static function. - (no_func): New static function. - (coff_format_ops): New variable. - * config/obj-coff.h (coff_obj_symbol_new_hook): Declare. - (obj_symbol_new_hook): Define. - (coff_obj_read_begin_hook): Declare. - (obj_read_begin_hook): Define. - * config/tc-i386.h (i386_target_format): Declare. - * config/tc-i386.c: Check OBJ_MAYBE_ELF as well as OBJ_ELF; check - OUTPUT_FLAVOR when appropriate. - (i386_target_format): New function. - * Makefile.in (obj-coff.o): New target. - (e-i386coff.o, e-i386elf.o): New targets. - - From Stephen Williams : - * config/tc-i960.h (TC_SYMFIELD_TYPE): Define if OBJ_COFF. - (_tc_get_bal_of_call): Don't declare. - (tc_get_bal_of_call): Declare as function, don't define as macro. - * config/tc-i960.c (tc_set_bal_of_call): If OBJ_COFF, store balP - in sy_tc field, not x_balntry field. - (tc_get_bal_of_call): Rename from _tc_get_bal_of_call. Change - return type to symbolS *. If OBJ_COFF, retrieve value from sy_tc - field, not x_balntry field. - - * config/obj-elf.c (obj_elf_section): Permit a .note section to - have the SHF_ALLOC attribute. - - * Makefile.in ($(OBJS)): Don't depend upon $(IT_HDRS). - (TARG_CPU_DEP_mips): Depend upon $(srcdir)/itbl-ops.h. - (itbl-lex.o): Depend upon itbl-parse.h. - - * itbl-parse.y (yyerror): Change return type to int. Change to - use old style function declaration. - - * Makefile.in (itbl-lex.o): Remove -Wall. - (itbl-parse.o): Likewise. - - * cond.c (s_ifdef): If we should omit conditionals from listings, - call listing_list. - (s_if, s_ifc, s_endif, s_else, s_ifeqs): Likewise. - * listing.c (list_info_struct): Add EDICT_NOLIST_NEXT. - (listing_listing): Handle EDICT_NOLIST_NEXT. - (listing_list): An argument of 2 means EDICT_NOLIST_NEXT. - * listing.h (LISTING_NOCOND): Define. - (LISTING_SKIP_COND): Define. - * as.c (show_usage): Mention c as a suboption of -a. - (parse_args): Handle c as a suboption of -a. - * doc/as.texinfo: Document -alc. - -Mon Feb 24 23:34:14 1997 Fred Fish - - * config/tc-tic80.c (md_apply_fix): Handle R_ABS type fixups. - -Mon Feb 24 18:27:43 1997 Eric Youngdale - - * doc/as.texinfo: Document .symver. - -Mon Feb 24 15:19:57 1997 Martin M. Hunt - - * config/tc-d10v.c: Change pre_defined_registers to - d10v_predefined_registers and reg_name_cnt to d10v_reg_name_cnt. - -Mon Feb 24 10:40:45 1997 Fred Fish - - * config/obj-coff.c: Fix typo in comment section. - * config/tc-tic80.c (md_pseudo_table): Add entry for bss, which takes - an additional alignment argument. - (find_opcode): Allow O_symbol relocs for any 32 bit field, not just - base relative ones. - (build_insn): Handle O_symbol relocs for any 32 bit field, not just - base relative ones. - -Mon Feb 24 02:23:00 1997 Dawn Perchik - - * Makefile.in: Remove dependancies on itbl-cpu.h. - * as.c: Define stubs for itbl_parse and itbl_init if HAVE_ITBL_CPU - is not defined. - -Mon Feb 24 02:03:00 1997 Dawn Perchik - - * itbl-ops.h: Include as.h. - -Mon Feb 24 01:04:00 1997 Dawn Perchik - - * as.c: Remove -t option. - * configure, configure.in: Move itbl-cpu.h to mips specific configure. - * itbl-ops.h: Include itbl-cpu.h only if HAVE_ITBL_CPU is defined. - * config/tc-mips.h: Define HAVE_ITBL_CPU. - -Sun Feb 23 18:01:00 1997 Dawn Perchik - - * itbl-ops.c: Don't define DEBUG. - -Sun Feb 23 17:49:00 1997 Dawn Perchik - - * Makefile.in: Update itbl-test.c to reflect its new location. - -Sun Feb 23 15:50:00 1997 Dawn Perchik - - * itbl-ops.c: Add test for itbl_have_entries. - * config/tc-mips.c: Remove test for itbl_have_entries. - * config/tc-mips.h: Define tc_init_after_args to mips_init_after_args. - -Sun Feb 23 18:13:19 1997 Ian Lance Taylor - - * Makefile.in (DISTSTUFF): Remove itbl-parse.y, itbl-lex.l, and - itbl-ops.c. Add itbl-parse.c and itbl-lex.c. - (LEX, LEXFLAGS): Define. - * itbl-ops.c (append_insns_as_macros): Remove bogus ASSERT. - -Sat Feb 22 21:25:00 1997 Dawn Perchik - - * itbl-parse.y: Fix indentation mistakes from indent program. - * itbl-lex.l: Fix indentation mistakes from indent program. - * itbl-ops.h: Add include for ansidecl.h. - Add PARAMS around function arguments. - Add declaration for itbl_have_entries. - * itbl-ops.c: Add PARAMS around function arguments. - * Makefile.in: Add itbl build rules. - Add dependancies for itbl files to mips target. - * as.c: Add itbl support. - Add new option "--insttbl" for dynamically extending instruction set. - * as.h: Declare insttbl_file_name; - the name of file defining extensions to the basic instruction set - * configure.in, configure: Add itbl-parse.o, itbl-lex.o, and - itbl-ops.o to extra_objects for mips configuration. - Add include file link from itbl-cpu.h to - config/itbl-${target_cpu_type}.h. - * config/tc-mips.c: Allow copz instructions. - Add notes for future additions to the itbl support. - Add debug macros. - (macro): Call itbl_assemble to assemble itbl instructions. - See if an unknown register is specified in an itbl entry. - -Sat Feb 22 20:53:01 1997 Fred Fish - * doc/internals.texi (CPU backend): Fix typo in md_section_align - description. - * config/tc-tic80.h (NEED_FX_R_TYPE): Define. - * config/tc-tic80.c (find_opcode): Add code to support O_symbol - operands. - (build_insn): Grab a frag early so we can use the address in - fixups. Take one's complement of BITNUM values before insertion - in opcode. Add code to support O_symbol operands. - (md_apply_fix): Replace unimplemented warning with implementation. - (md_pcrel_from): Ditto. - (tc_coff_fix2rtype): Ditto. - -Fri Feb 21 14:34:31 1997 Martin M. Hunt - - * config/tc-d30v.c (parallel_ok): New function. - * config/tc-d30v.h: Define TARGET_BYTES_BIG_ENDIAN. - * config/tc-d10v.c (md_pcrel_from_section): Return 0 if - relocation is in different section. - -Fri Feb 21 10:08:25 1997 Jim Wilson - - * config/tc-mips.c (mips_ip): If configured for an embedded ELF system, - don't set the section alignment to 2**4. - -Fri Feb 21 11:55:03 1997 Ian Lance Taylor - - * config/tc-m68k.c (line_comment_chars): Add '*'. - - * app.c (LEX_IS_TWOCHAR_COMMENT_2ND): Don't define. - (do_scrub_begin): Don't set lex['*']. - (do_scrub_chars): When handling LEX_IS_TWOCHAR_COMMENT_1ST, don't - check for LEX_IS_TWOCHAR_COMMENT_2ND. Instead, just check for - a literal '*'. - - * configure.in: Set em=svr4 for m68k-*-sysv4*. - * configure: Rebuild. - * config/te-svr4.h: New file. - * config/tc-m68k.c (m68k_comment_chars): Only include `#' if - TE_SVR4 or TE_DELTA. - -Thu Feb 20 22:24:39 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_convert_frag): Create a fixup for the - short conditional branch around a long unconditional branch. - -Thu Feb 20 13:56:00 1997 Ian Lance Taylor - - * config/obj-coff.c (obj_coff_ln [both versions]): Call - new_logical_line. - - * config/tc-arm.c (fix_new_arm): Use make_expr_symbol to handle a - complex expression. - - * symbols.c (resolve_symbol_value): If both left and right - operands are undefined, warn about both of them. - -Wed Feb 19 00:53:28 1997 Ian Lance Taylor - - Based on patches from Eric Youngdale : - * config/obj-elf.c (elf_pseudo_table): Add "symver". - (obj_elf_symver): New static function. - * config/obj-elf.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Copy the st_other - field. - - * write.c (relax_segment): Make type and printf format agree. - - * read.c (get_line_sb): Don't end the line on a semicolon inside a - string. - -Tue Feb 18 18:42:51 1997 Martin M. Hunt - - * config/tc-d30v.c, config/tc-d30v.h: New files. - - * configure: Rebuilt. - - * configure.in: Add case for d30v. - -Sun Feb 16 17:47:29 1997 Fred Fish - - * config/tc-alpha.h (md_operand): Define with a null expansion, - like all the other targets. - * doc/internals.texi (CPU backend): Add missing word in - md_flush_pending_output description. Fix typo in md_convert_frag - description. - * config/tc-tic80: Minor comment additions/changes. - -Fri Feb 14 18:09:59 1997 Philippe De Muyter - - * config/tc-m68k.c (LOCAL_LABEL): Macro redefined if TE_DELTA. - (tc_canonicalize_symbol_name): Macro defined if TE_DELTA. - * config/obj-coff.c (obj_coff_def): Use - tc_canonicalize_symbol_name if defined. - (obj_coff_tag, obj_coff_val): Likewise. - * expr.c (operand): Reject '~' as operator if is_name_beginner. - -Fri Feb 14 17:24:48 1997 Ian Lance Taylor - - Based on notes from Peter Eriksson . The target - does not actually work, though: - * configure.in (i386-sequent-bsd*): New target. - * configure: Rebuild. - * config/tc-dynix.h: New file. - * config/tc-i386.h: Define TARGET_FORMAT if TE_DYNIX. - - * read.c (do_align): Add max parameter. Change all callers. - Remove useless static variables. - (s_align): New static function. Do common portion of - s_align_bytes and s_align_ptwo. - (s_align_bytes, s_align_ptwo): Just call s_align. - * frags.c (frag_align): Add max parameter. Change all callers. - (frag_align_pattern): Likewise. - * frags.h (frag_align, frag_align_pattern): Update declarations. - * write.c (relax_segment): Limit alignment change to fr_subtype. - Fix some types to be addressT. - * config/obj-coff.c (size_section): Likewise. - * config/obj-ieee.c (size_section): Likewise. - * config/tc-d10v.h (md_do_align): Add max parameter. - * config/tc-i386.h (md_do_align): Likewise. - * config/tc-m88k.h (md_do_align): Likewise. - * config/tc-m88k.c (m88k_do_align): Likewise. - * config/tc-sh.h (md_do_align): Likewise. - * config/tc-sh.c (sh_do_align): Likewise. - * as.h: Improve comments on rs_align and rs_align_code. - * doc/as.texinfo: Document new alignment arguments. - * doc/internals.texi (Frags): Document use of fr_subtype field for - rs_align and rs_align_code. - -Fri Feb 14 15:56:06 1997 Gavin Koch - - * config/tc-mips.c: Changed opcode parsing. - -Thu Feb 13 20:02:16 1997 Fred Fish - - * config/{tc-alpha.h, tc-d10v.h, tc-generic.h, tc-i960.h, - tc-mn10200.h, tc-mn10300.h, tc-sh.h, tc-vax.h, tc-w65.h}: - Add default definition of zero for TARGET_BYTES_BIG_ENDIAN. - * config/{tc-arm.h, tc-hppa.h, tc-i386.h, tc-mips.h, tc-ns32k.h, - tc-ppc.h, tc-sparc.h}: Move definition of TARGET_BYTES_BIG_ENDIAN - to a location consistent with the rest of the target include files. - * config/tc-i386.c: Remove misleading comment. - * doc/internals.texi (CPU backend): Add description of function - md_undefined_symbol. - * config/tc-tic80.c: Add code to insert predefined symbols into the - symbol table so they can be parsed by the standard expression parser. - Remove custom code that use to parse them. - * config/tc-tic80.h: Move definition of TARGET_BYTES_BIG_ENDIAN - to a location consistent with the rest of the target include files. - -Thu Feb 13 21:44:18 1997 Klaus Kaempf - - * as.h: GNU c provides unlink() function. - - Unify section handling on openVMS/Alpha: - * config/tc-alpha.c(s_alpha_link): Remove. - (s_alpha_section): New function. - Remove case-hacking of symbols - Add .code_address pseudo-op. - (BFD_RELOC_ALPHA_CODEADDR): New relocation. - (s_alpha_code_address): New function. - (alpha_ctors_section, alpha_dtors_section): New sections for C++ - static constructors/destructors. - Add debug code for crash debugs, to be removed when traceback code - is added to object code. - (s_alpha_name): New function for .name pseudo-op. - (alpha_print_token): New function to print token expressions with - alpha specific extensions. - - * makefile.vms: Allow compilation with current gcc snapshot. - -Thu Feb 13 16:29:04 1997 Fred Fish - - * doc/Makefile.in (TEXI2DVI): Set to just name of program. - (DVIPS): Set to dvips. - (ps, as.ps, gasp.ps): New targets. - (internals.info, gasp.dvi, internals.dvi): Set both TEXINPUTS - and MAKEINFO env variables. - (internals.ps): Use DVIPS macro. - (clean): Remove core and backup files. - (distclean): Remove temporary files from building internals. - (clean-dvi): Ditto. - * doc/internals.texi (Frags): Fix typo. - (GAS processing): Ditto. - (CPU backend): Ditto. - * ecoff.c (init_file): Use TARGET_BYTES_BIG_ENDIAN value directly. - * mpw-config.in: Define TARGET_BYTES_BIG_ENDIAN as 1. - * read.c: Remove ugly hack that dealt with config files not - correctly defining TARGET_BYTES_BIG_ENDIAN. - (target_big_endian): Use TARGET_BYTES_BIG_ENDIAN directly. - * config/arm-big.mt: Define TARGET_BYTES_BIG_ENDIAN to 1. - * config/arm-lit.mt: Define TARGET_BYTES_BIG_ENDIAN to 0. - * config/mips-big.mt: Define TARGET_BYTES_BIG_ENDIAN to 1. - * config/mips-lit.mt: Define TARGET_BYTES_BIG_ENDIAN to 0. - * config/ppc-lit.mt: Define TARGET_BYTES_BIG_ENDIAN to 1. - * config/ppc-sol.mt: Replace TARGET_BYTES_LITTLE_ENDIAN - with TARGET_BYTES_BIG_ENDIAN defined to 0. - * config/tc-arm.h: Remove use of TARGET_BYTES_LITTLE_ENDIAN - and simplify. Test value of TARGET_BYTES_BIG_ENDIAN, not just - whether it is defined or not. - * config/tc-mips.h: Remove use of TARGET_BYTES_LITTLE_ENDIAN. - * config/tc-ppc.h: Remove use of TARGET_BYTES_LITTLE_ENDIAN - and simplify. Test value of TARGET_BYTES_BIG_ENDIAN, not just - whether it is defined or not. - * config/tic80.h (TARGET_FORMAT): Define to coff-tic80. - (TARGET_BYTES_BIG_ENDIAN): Define to 0. - -Thu Feb 13 14:40:16 1997 Doug Evans - - * write.c (write_relocs): Correct text in as_fatal error message, - bfd_perform_relocation -> bfd_install_relocation. - -Thu Feb 13 14:48:03 1997 Philippe De Muyter - - * config/tc-m68k.c (LEX_TILDE): Define if TE_DELTA. - * read.c (LEX_TILDE): Define if not defined. - (lex_type): Use LEX_TILDE. - * expr.c (get_symbol_end): Check first char with is_name_beginner, - not is_part_of_name. - -Thu Feb 13 11:40:58 1997 Ian Lance Taylor - - * config/tc-sparc.c (md_show_usage): Add missing backslash at end - of continued line. - - * config/tc-mips.c (mips16_extended_frag): Correct base address - for an extended PC relative instruction. - (md_convert_frag): Likewise. - - * config/tc-mips.c (prev_nop_frag): New static variable. - (prev_nop_frag_holds): New static variable. - (prev_nop_frag_required): New static variable. - (prev_nop_frag_since): New static variable. - (append_insn): If we aren't reordering, and prev_nop_frag is not - NULL, and we don't need any nops, then decrease the size of - prev_nop_frag. Don't insert nops because of instructions in - noreorder sections. Remember whether the previous instructions - where in noreorder sections even when not reordering. - (mips_no_prev_insn): Add preserver parameter. Change all - callers. Refer prev_nop_frag variables when appropriate. - (mips_emit_delays): Set up prev_nop_frag. - (s_mipsset): Clear prev_nop_frag if reordering. - -Wed Feb 12 14:36:29 1997 Ian Lance Taylor - - * config/tc-mips.c (append_insn): Remove useless code which - handled swapping a mips16 jump with a mips16 instruction with a - reloc. - - * config/tc-mips.c (md_parse_option): When debugging, set - mips_optimize to 1, not 0. - - * config/tc-mips.c (mips16_ip): Handle an extend operand. - - * config/tc-mips.c (my_getExpression): In mips16 mode, if it looks - like the expression was based on `.', adjust the value of the - symbol. - - * config/tc-mips.c (append_insn): Warn about an attempt to put an - extended instruction in a delay slot when not reordering. - (md_convert_frag): Warn if an extended instruction appears in a - delay slot. - - * config/tc-mips.c (mips_pseudo_table): Add "insn". - (s_insn): New static function. - * doc/c-mips.texi: Document .insn. - - * config/tc-mips.c (md_begin): Add the general registers to the - symbol table. - (mips16_ip): First parse the expression, and then see whether it - came up with a register, rather than trying to first see whether - we are looking at a register. - -Tue Feb 11 15:13:39 1997 Fred Fish - - * config/tc-tic80.c: Numerous changes and additions to flesh - out functions that were previously just stubs, and fix some - problems found using the new TIc80 testsuite cases. - -Tue Feb 11 15:52:22 1997 Ian Lance Taylor - - * config/tc-mips.c (mips16_ip): Handle %gprel modifier. - (md_apply_fix): Handle BFD_RELOC_MIPS16_GPREL. - - * config/tc-mips.c (append_insn): Output jump instruction as a - pair of 2 byte instructions, rather than as a single 4 byte - instruction. - -Mon Feb 10 22:06:00 1997 Dawn Perchik (dawn@cygnus.com) - - * itbl-ops.c, itbl-lex.l, itbl-parse.y, itbl-ops.h, - config/itbl-mips.h: Add copyright message and fix indentation. - -Mon Feb 10 18:09:00 1997 Dawn Perchik (dawn@cygnus.com) - - * itbl-ops.c: New file. Add support for dynamically read - instruction registers, opcodes and formats. Build internal table - for new instructions and provide callbacks for assembler and - disassembler. - * itbl-lex.l, itbl-parse.y: Lex and yacc parsers for instruction - spec table. - * itbl-ops.h: New file. Header file for itbl support. - * config/itbl-mips.h: New file. Mips specific definitions for - itbl support. - -Fri Feb 7 09:52:34 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_assemble): If a constant operand won't - fit into the constant field of a relaxable operand, then it does - not match. - -Thu Feb 6 20:08:12 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_estimate_size_before_relax): Treat - a jsr target in a different section just like a jsr to - an undefined target. - -Thu Feb 6 16:52:57 1997 Ian Lance Taylor - - * config/tc-mips.c (mips_fix_adjustable): Don't adjust relocations - against any mips16 symbols, not just externally visible ones. - (md_apply_fix): Corresponding change. - -Wed Feb 5 11:11:06 1997 Ian Lance Taylor - - * config/tc-mips.c (mips16_ip): Accept floating point registers in - the operand of the exit instruction. - -Tue Feb 4 14:12:39 1997 Ian Lance Taylor - - * symbols.c (resolve_symbol_value): If we leave an equated symbol - as O_symbol, copy over the segment. - -Mon Feb 3 12:35:54 1997 Ian Lance Taylor - - * config/tc-mips.c (md_apply_fix): If we aren't adjusting this - fixup to be against the section symbol, adjust the value - accordingly. - - * symbols.c (resolve_symbol_value): Don't change X_add_number for - an equated symbol. - * write.c (write_relocs): Avoid looping on equated symbols. - Adjust fx_offset by X_add_number for each symbol. - * config/obj-coff.c (do_relocs_for): Avoid looping on equated - symbols. - (fixup_segment): Add a loop to track down equated symbols and - adjust fx_offset appropriately. - -Fri Jan 31 15:21:02 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_relax_table): Add entries to allow - jmp -> bra relaxing. - (md_convert_frag): Handle jmp->bra relaxing. - (md_assemble): Handle jmp->bra relaxing. - (md_estimate_size_before_relax): Likewise. - -Fri Jan 31 13:15:05 1997 Alan Modra - - * config/tc-i386.c (i386_align_code): Add comments explaining the - nop instructions. - -Fri Jan 31 10:46:14 1997 Ian Lance Taylor - - * config/tc-sparc.c (enforce_aligned_data): New static variable. - (sparc_cons_align): Don't do anything unless enforce_aligned_data - is set. - (md_longopts): Add "enforce-aligned-data". - (md_show_usage): Mention --enforce-aligned-data. - * doc/c-sparc.texi (Sparc-Aligned-Data): New node; document - enforce-aligned-data. - - * config/tc-ppc.c (md_pseudo_table): If OBJ_XCOFF, add "long", - "word", and "short". - (ppc_xcoff_cons): New static function. - - * write.c (relax_segment): Give an error if a .space symbol is - common or undefined. - - * read.c (read_a_source_file): Don't handle mri_pending_align if - the handler is s_globl or s_ignore. - -Thu Jan 30 11:46:59 1997 Fred Fish - - * config/tc-d10v.c (find_opcode): Remove unused variable "numops". - * config/tc-tic80.c: Many additions to previous placeholder file. - * config/tc-tic80.h: Ditto. - -Thu Jan 30 12:28:18 1997 Alan Modra - - * config/tc-i386.c (i386_align_code): Improve the nop patterns. - -Thu Jan 30 12:08:40 1997 Ian Lance Taylor - - * config/tc-mips.c (mips_fix_adjustable): New function. - * config/tc-mips.h (tc_fix_adjustable): Call mips_fix_adjustable. - (mips_fix_adjustable): Declare. - - Ideas from Srinivas Addagarla : - * read.c (read_a_source_file): After doing an mri_pending_align, - adjust the line_label if there is one. - (s_space): Set mri_pending_align if an odd number of bytes were - output. - -Wed Jan 29 15:31:12 1997 Martin M. Hunt - - * config/tc-d10v.h (md_do_align): Add this hook to call - d10v_cleanup() when a ".align" is detected. - - * config/tc-d10v.c (find_opcode): Correctly calculate - branch displacement when .aligns are present. - -Wed Jan 29 09:42:11 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_relax_table): Define. - (md_convert_frag): Implement. - (md_assemble): Handle relaxable operands/instructions correctly. - (md_estimate_size_before_relax): Implement. - * config/tc-mn10200.h (TC_GENERIC_RELAX_TABLE): Define. - -Tue Jan 28 15:27:28 1997 Ian Lance Taylor - - * config/tc-mips.c (append_insn): Give an error for jumps to a - misaligned address. - (md_apply_fix): Make a branch to an odd address an error rather - than a warning. - - * config/tc-mips.c (md_convert_frag): If the user explicitly - requested an extended opcode, pass warn as true to mips16_immed. - - * config/tc-mips.c (mips16_ip): Handle a missing expression like - an explicit 0, so that explicitly extended instructions work - correctly. - -Mon Jan 27 17:41:20 1997 Ian Lance Taylor - - * ecoff.c (ecoff_build_symbols): Don't generate a local ECOFF - symbol for a common symbol. - -Wed Jan 22 10:39:39 1997 Doug Evans - - Patch presumed to have been checked in awhile ago but wasn't. - Mon Nov 25 10:45:14 1996 Doug Evans - * write.c: Delete "ifndef md_relax_frag" around is_dnrange. - (relax_segment, case rs_org): Move code inside braces. Move locals - target,after inside too. - (relax_segment, case rs_machine_dependent): Guts moved to ... - (relax_frag): New function. - Call md_prepare_relax_scan if defined. - -Mon Jan 20 10:56:47 1997 Andreas Schwab - - * config/tc-m68k.c (m68k_ip): Reject pc-relative addresses for the - 'p' operand specifier. - -Mon Jan 20 10:39:36 1997 J.T. Conklin - - * config/tc-m68k.c (HAVE_LONG_BRANCH): New macro, returns true for - m68k family cpus which support long branch addressing modes. - (m68k_ip, md_convert_frag_1, md_estimate_size_before_relax, - md_create_long_jump): Use it. - -Mon Jan 20 12:42:06 1997 Ian Lance Taylor - - * config/tc-mips.c (md_begin): Don't set SEC_ALLOC or SEC_LOAD for - the .reginfo or .MIPS.options section if configured for an - embedded target. - - * config/tc-mips.c (md_begin): Don't set interlocks for - mips_4650. - -Wed Jan 15 13:51:50 1997 Ian Lance Taylor - - * read.c (read_a_source_file): Make sure the symbol ends with - whitespace before checking whether the next character is '='. - -Tue Jan 14 15:07:27 1997 Robert Lipe - - * config/tc-i386.c (sco_id): Moved from here... - * config/obj-elf.c (sco_id): ...to here. Adding the identifier - really is an SCO ELF specific thing, not just a SCO x86 specific - thing. - -Mon Jan 13 22:43:01 1997 Michael Meissner - - * configure.in (tic80-*-*): Don't require 'coff'. - * configure: Regenerate. - -Thu Jan 9 09:08:43 1997 Ian Lance Taylor - - * read.c (emit_expr): Check for overflow of a negative value - correctly. - * write.c (fixup_segment): Likewise. - * config/obj-coff.c (fixup_segment): Likewise. - - * config/tc-m68k.c (struct label_line): Define. - (labels, current_label): New static variables. - (md_assemble): Mark current_label as text, and clear it. - (m68k_frob_label): New function. - (m68k_flush_pending_output): New function. - (m68k_frob_symbol): New function. - * config/tc-m68k.h (tc_frob_label): Define. - (md_flush_pending_output): Define. - (tc_frob_symbol): Don't warn, just call m68k_frob_symbol. - (tc_frob_coff_symbol): Likewise. - - * read.c (read_a_source_file): When defining a macro in MRI mode, - don't add the symbol to the symbol table. - -Tue Jan 7 11:21:42 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (tc_gen_reloc): Handle sym1-sym2 fixups - here since fixup_segment doesn't (linkrelax is set). - * config/tc-mn10200.c (tc_gen_reloc): Likewise. - -Mon Jan 6 15:19:32 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_assemble): Tweak fx_offset for pc-relative - relocs. - -Fri Jan 3 16:47:08 1997 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (struct hppa_fix_struct): Tweak fx_r_field's type - to avoid warnings with the native HP compiler. - (fix_new_hppa): Similarly for the r_type argument. - (pa_build_unwind_subspace, hppa_elf_mark_end_of_function): Enclose - in an #if OBJ_ELF to keep gcc -Wall quiet. - (md_apply_fix): Always initialize "result". - - * config/tc-mn10200.c (md_assemble): Generate relocations. - -Fri Jan 3 18:17:23 1997 Andreas Schwab - - * config/tc-m68k.c (s_even): Adjust the alignment of the current - section. - -Fri Jan 3 17:10:33 1997 Richard Henderson - - * config/obj-elf.c (elf_file_symbol): When using ECOFF debugging, - pass on the new file hook. - - * config/tc-alpha.c (alpha_fix_adjustable): Not quite the same as - !alpha_force_relocation, as local LITERALs can be adjusted to be - relative to the section. - -Fri Jan 3 12:09:24 1997 Ian Lance Taylor - - * config/obj-coff.c (yank_symbols): If tc_frob_coff_symbol is - defined, call it. - * config/tc-m68k.h (tc_frob_symbol): Check whether text label is - aligned to odd boundary. - (tc_frob_coff_symbol): Define. - - * doc/as.texinfo (Set): Change parenthesized @xref to @pxref. - - * macro.c (macro_expand_body): In MRI mode, just copy a single &. - - * config/tc-m68k.c (m68k_ip): Call frag_grow before adding a - PCINDEX frag. From Ronald F. Guilmette . - - * config/tc-m68k.c (m68k_ip): Accept 'B' as a size for an - immediate value. - (md_assemble): If the size is 'B', set fx_signed. - (md_apply_fix_2): Use fx_signed when checking for overflow. - - * write.h (struct fix): Add fx_signed field. - * write.c (fix_new_internal): Initialize fx_no_overflow and - fx_signed fields. - (fixup_segment): Use fx_signed when checking for overflow. - * config/obj-coff.c (fixup_segment): Check fx_no_overflow and - fx_signed when checking for overflow. - -Thu Jan 2 13:37:29 1997 Ian Lance Taylor - - * NOTES, NOTES.config: Removed. These are rarely, if ever, - updated, and all the useful information is in doc/internals.texi. - - Based on patch from Ronald F. Guilmette : - * read.c (read_a_source_file): Check for conditional operators - before doing an MRI pending alignment. - * config/tc-m68k.h (m68k_conditional_pseudoop): Declare. - (tc_conditional_pseudop): Define. - * config/tc-m68k.c (m68k_conditional_pseudop): New function. - * doc/internals.texi (CPU backend): Describe - tc_conditional_pseudoop. - - Based on patch from Ronald F. Guilmette : - * config/tc-m68k.c (m68k_rel32_from_cmdline): New static - variable. - (md_begin): Check m68k_rel32_from_cmdline before setting - m68k_rel32. - (m68k_mri_mode_change): Likewise. - (md_longopts): Add --disp-size-default-16 and - --disp-size-default-32. - (md_parse_option): Handle new options. - (md_show_usage): Mention new options. - * doc/c-m68k.texi (M68K-Opts): Document new options. - - Based on patch from Ronald F. Guilmette : - * config/tc-m68k.c (m68k_index_width_default): New static - variable. - (m68k_ip): Use m68k_index_width_default to set the size of a base - register whose size was not given. - (md_longopts): Add --base-size-default-16 and - --base-size-default-32. - (md_parse_option): Handle new options. - (md_show_usage): Mention new options. - * doc/c-m68k.texi (M68K-Opts): Document new options. - - * doc/c-mips.texi: Mention ISA level 4, and the -mips16 option. - - * configure.in: Recognize mips-*-linux* target. - * configure: Rebuild. - - * config/tc-mips.c (load_register): Rewrite 64 bit handling to - work if valueT is only 32 bits. - - * config/tc-mips.c: Throughout, check target_big_endian rather - than byte_order. - (byte_order): Remove. - (mips_init_after_args): Remove. - * config/tc-mips.h (LITTLE_ENDIAN, BIG_ENDIAN): Don't define. - (mips_init_after_args): Don't declare. - (tc_init_after_args): Don't define. - - * config/tc-mips.h (tc_frob_after_relocs): Define if - OBJ_MAYBE_ELF. - (mips_elf_final_processing): Likewise. - (ELF_TC_SPECIAL_SECTIONS): Likewise. - -Tue Dec 31 15:12:35 1996 Michael Meissner - - * config/tc-v850.c (md_assemble): If this is sst.{h,w} or - sld.{h,w} and the operand is relocatable, adjust the adend by - shifting it right one bit. - -Tue Dec 31 12:56:41 1996 Ian Lance Taylor - - * read.c (read_a_source_file): Check mri_pending_align after - checking for a macro. From Ronald F. Guilmette - . - - * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE. - - * config/tc-sparc.c (md_apply_fix3): Rename from md_apply_fix, and - add segment argument. If OBJ_ELF, treat a relocation against a - symbol in a linkonce section like a relocation against an external - symbol. - * config/tc-sparc.h (MD_APPLY_FIX3): Define. - -Mon Dec 30 11:35:40 1996 Ian Lance Taylor - - * config/tc-mips.c (mips16_macro): Add case for M_ABS. - -Fri Dec 27 22:51:51 1996 Fred Fish - - * NOTES.config (Implementation): as.h #define's "GAS" not "gas", - includes config.h instead of host.h, tc.h instead of tp.h, and - targ-env.h instead of target-environment.h. - Also, obj-format.h includes targ-cpu.h instead of - target-processor.h. - * configure.in (case ${generic_target}): Add tic80-*-coff entry. - * configure: Rebuild with autoconf. - * config/obj-coff.h (coff/tic80.h): Include if TC_TIC80 defined. - (TARGET_FORMAT): Define to "coff-tic80". - * config/tc-tic80.c: New file for TIc80 support. - * config/tc-tic80.h: New file for TIc80 support. - -Fri Dec 27 11:42:29 1996 Ian Lance Taylor - - * doc/as.texinfo (M): Mention explicitly that -M changes macro - handling. - -Thu Dec 19 12:06:08 1996 Ian Lance Taylor - - * write.c (adjust_reloc_syms): If the fixup symbol has been - equated to an undefined symbol, convert the fixup to being against - the target symbol. Remove obsolete code handling a special case - for i386 PIC. - -Wed Dec 18 22:54:39 1996 Stan Shebs - - * mpw-make.sed: Use NewFolderRecursive for installation. - -Wed Dec 18 16:00:42 1996 Martin M. Hunt - - * config/tc-d10v.c (do_assemble): Correct previous bug fix. - -Wed Dec 18 15:27:40 1996 Martin M. Hunt - - * config/tc-d10v.c (md_assemble): Fix bug which caused - second instruction in a line to be case sensitize. - -Wed Dec 18 10:08:46 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (mn10200_insert_operand): Don't - range check operands with MN10200_OPERAND_NOCHECK set. - (check_operand): Likewise. - -Tue Dec 17 10:59:32 1996 Ian Lance Taylor - - * config/tc-mips.c: Undo part of last Friday's alignment changes. - (md_begin): Always align the text section to a four byte - boundary. - (append_insn): Remove call to record_align. - - * config/tc-mips.c (insn_label): Remove. - (struct insn_label_list): Define. - (insn_labels, free_insn_labels): New static variables. - (mips_clear_insn_labels): New static function. - (append_insn): Mark all mips16 text labels, and make them odd. - Handle all labels after emitting a nop, not just one. Call - mips_clear_insn_labels rather than just clearing insn_label. - (mips_emit_delays): Add insns parameter, and use it to decide - whether to mark mips16 labels. Handle all labels, not just one. - Force mips16 labels to be odd. Change all callers. - (mips16_immed): Don't check for an odd branch target. - (md_apply_fix): Don't check mips16 mode for a branch reloc. - (mips16_extended_frag): Ignore the low bit in a branch target. - (md_convert_frag): Likewise. - (mips_no_prev_insn): Call mips_clear_insn_labels rather than just - clearing insn_label. - (mips_align, mips_flush_pending_output, s_cons): Likewise. - (s_float_cons, s_gpword): Likewise. - (s_align): Use insn_labels rather than insn_label. - (s_cons, s_float_cons, s_gpword): Likewise. - (mips_frob_file_after_relocs): New function. - (mips_define_label): Rewrite to add to insn_labels list. - * config/tc-mips.h (tc_frob_file_after_relocs): Define. - * ecoff.c (ecoff_build_symbols): If the size of a function comes - out odd, increment it. - - * config/tc-mips.c (append_insn): Only update prev_insn when not - reordering if place is NULL. - - * config/tc-mips.c (mips16_ip): Check for a missing expression - when using the register indirect addressing mode. - -Mon Dec 16 10:08:46 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (mn10200_insert_operand): Don't - check 24bit operands for overflow. - (check_operand): Likewise. - -Mon Dec 16 11:50:40 1996 Ian Lance Taylor - - * doc/as.texinfo (Section): Document how to use the .section - pseudo-op for COFF and ELF. - -Sun Dec 15 15:26:37 1996 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Fix linkonce check for ELF. - -Sat Dec 14 22:37:27 1996 Ian Lance Taylor - - * config/tc-mips.c (prev_insn_reloc_type): New static variable. - (RELAX_MIPS16_ENCODE): Add dslot and jal_dslot arguments, and - store them. Adjust other RELAX_MIPS16 macros. - (RELAX_MIPS16_DSLOT): Define. - (RELAX_MIPS16_JAL_DSLOT): Define. - (append_insn): Pass new arguments to RELAX_MIPS16_ENCODE. Correct - handling of whether previous instruction has a fixup. Set - prev_insn_reloc_type. - (mips_no_prev_insn): Clear prev_insn_reloc_type. - (mips16_extended_frag): Use the right base address for a PC - relative add or load. - (md_convert_frag): Likewise. If a PC relative add or load is - used, record the alignment for the section. - -Fri Dec 13 13:00:33 1996 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Don't reduce a reloc against a - linkonce section into a reloc against the section symbol. - - * config/tc-mips.c (mips16_macro): Remove nop instructions after - branch instructions. - - * config/tc-mips.c (md_begin): If configured for an embedded ELF - system, don't set the section alignment to 2**4. - (s_change_sec): Likewise. - (append_insn): Call record_alignment for the section. - (md_section_align): Don't align the section size for an embedded - ELF system. - -Thu Dec 12 16:40:47 1996 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Make sure that symbols are - resolved; expression symbols may have been skipped. - * config/obj-coff.c (fixup_segment): Likewise. - -Thu Dec 12 15:18:21 1996 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Move @plt to - BFD_RELOC_24_PLT_PCREL relocation. - (md_apply_fix3): Support BFD_RELOC_24_PLT_PCREL. - -Tue Dec 10 13:51:55 1996 Martin M. Hunt - - * config/tc-d10v.c (write_2_short): Remove code that called - parallel_ok() when the programmer specified parallel instructions. - -Tue Dec 10 12:23:19 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Update to handle endianness - issues correctly. - - * config/tc-mn10200.c (md_assemble): Opcode 0x0 is valid! - * config/tc-mn10300.c (md_assemble): Likewise. - -Tue Dec 10 11:37:14 1996 Ian Lance Taylor - - * config/tc-mips.c (append_insn): Make sure there is enough room - in a frag after a mips16 instruction to switch it with a jump - instruction. - - * config/tc-mips.c (mips16_extended_frag): Give an error for an - attempt to use a non absolute symbol in an extending frag. - -Mon Dec 9 16:48:20 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c: Flesh out assembler support for MN10200. - * config/tc-mn10200.h: Likewise. - -Mon Dec 9 17:09:42 1996 Ian Lance Taylor - - * app.c (do_scrub_chars): At the end of a C comment, pass space to - UNGET rather than PUT. Set old_state before setting state to -2. - - * config/tc-mips.c (mips16_extended_frag): Avoid an infinite loop - when extending because the value is exactly maxtiny + 1. - - * config/tc-mips.c (RELAX_MIPS16_ENCODE): Add small and ext - arguments, and store them. Adjust other RELAX_MIPS16 macros. - (RELAX_MIPS16_USER_SMALL): Define. - (RELAX_MIPS16_USER_EXT): Define. - (mips16_small, mips16_ext): New static variables. - (append_insn): Pass mips16_small and mips16_ext to - RELAX_MIPS16_ENCODE. - (mips16_ip): Set mips16_small and mips16_ext. - (mips16_immed): Don't check mips16_autoextend. - (mips16_extended_frag): Check USER_SMALL and USER_EXT. - - * write.c (write_relocs): Print an error for an out of range - fixup, rather than calling abort. - - * as.c (main): Unlink the output file if there are errors while - generating the fixups. - -Fri Dec 6 18:48:13 1996 Ian Lance Taylor - - * config/tc-mips.c (mips16_extended_frag): Don't call - S_GET_VALUE. - (md_convert_frag): Call resolve_symbol_value before calling - S_GET_VALUE, and don't add in the frag address. - - * config/tc-mips.c (mips16_immed): Add file and line parameters, - and use them when reporting errors. Change all callers. - -Fri Dec 6 15:36:32 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c: Fix various gcc -Wall warnings. - Remove '$' prefixing for registers. - -Fri Dec 6 00:55:48 1996 Martin - - * config/tc-d10v.c (md_assemble): Check to see if prev_seg - is initialized before using it. - (d10v_cleanup): No longer uses its argument, so make it void. - - * config/tc-d10v.h (d10v_cleanup): Change prototype. - -Thu Dec 5 11:03:31 1996 Ian Lance Taylor - - * write.c (fixup_segment): Don't discard the symbol for a PC - relative fixup to an absolute symbol. - -Wed Dec 4 15:42:41 1996 Martin M. Hunt - - * config/tc-d10v.c (md_assemble, d10v_cleanup): Fix bug - with multiple sections. - -Wed Dec 4 13:00:07 1996 Ian Lance Taylor - - * config/tc-mips.c (md_longopts): Rename mips-16 to mips16, and - no-mips-16 to no-mips16. - (s_mipsset): Accept .set mips16 and .set nomips16. - -Wed Dec 4 10:35:33 1996 Michael Meissner - - * config/tc-ppc.c (ppc_elf_suffix): Take expressionS pointer - argument, and check for +/- constant following the suffix, folding - it into the expression. - (ppc_elf_cons): Change ppc_elf_suffix calls. - (md_assemble): Ditto. - (shlib): Replace boolean mrelocatable with enumeration shlib. - (md_parse_option): Discriminate between PIC style shared libraries - and -mrelocatable. - (ppc_elf_validate_fix): Don't report warnings for PIC style shared - libraries. - -Tue Dec 3 23:18:29 1996 Michael Meissner - - * config/tc-ppc.h ({tc,ppc}_comment_chars): Define, so that we can - change the comment characters. - - * config/tc-ppc.c (comment_chars): Delete in favor of - tc_comment_chars. - (ppc_{eabi,solaris}_comment_chars): Eabi and Solaris versions of - comment chars. - (ppc_comment_chars): Select appropriate comment chars by default. - (msolaris): New flag for -m{,no-}solaris. - (md_parse_option): Recognize -K pic. Add support for - -m{,no-}solaris. - (md_show_usage): Update. - (md_begin): Do not set ELF flags if Solaris. - (ppc_elf_suffix): @local sets R_PPC_LOCAL24PC relocation. - (md_apply_fix3): Add support for R_PPC_LOCAL24PC. - -Mon Dec 2 13:48:57 1996 Ian Lance Taylor - - * as.c (main): Correct handling of flag_always_generate_output. - -Sun Dec 1 21:46:05 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (tc_gen_reloc): Get the addend from - fx_offset, not fx_addnumber. - - * config/tc-mn10300.h (tc_fix_adjustable): Don't do any - reloc adjustments. - -Sat Nov 30 17:34:48 1996 Eliot Dresselhaus - - * config/tc-i386.c: Correct misspelling: balenced to balanced. - -Wed Nov 27 13:25:39 1996 Ian Lance Taylor - - * config/tc-mips.c (md_section_align): Check for an alignment of - 4, not an alignment of 16. Corrects August 7 patch. - -Tue Nov 26 10:33:16 1996 Ian Lance Taylor - - * configure, conf.in: Rebuild with autoconf 2.12. - - * config/tc-ppc.c (ppc_elf_lcomm): Don't give an error if no - alignment is specified. - - Add support for mips16 (16 bit MIPS implementation): - * config/tc-mips.c: Extensive additions for mips16 support, not - listed here. - (RELAX_OLD, RELAX_NEW): Use only 7 bits each. - (insn_uses_reg): Change last parameter to an enum. - * config/tc-mips.h (LOCAL_LABELS_DOLLAR): Define as 0. - (md_relax_frag): Define as mips_relax_frag. - (mips_relax_frag): Declare. - (struct mips_cl_insn): Add use_extend and extend fields. - (tc_fix_adjustable): Define. - * config/obj-elf.h (S_GET_OTHER): Define. - (S_SET_OTHER): Define. - -Mon Nov 25 18:02:29 1996 J.T. Conklin - - * config/tc-m68k.c (m68k_ip): Implement cases for new <, >, m, n, - o and p operand specifiers. - -Mon Nov 25 10:45:14 1996 Doug Evans - - * write.c: Delete "ifndef md_relax_frag" around is_dnrange. - (relax_segment, case rs_org): Move code inside braces. Move locals - target,after inside too. - (relax_segment, case rs_machine_dependent): Guts moved to ... - (relax_frag): New function. - Call md_prepare_relax_scan if defined. - * config/tc-m68k.h (md_prepare_relax_scan): Renamed from - M68K_AIM_KLUDGE. - -Mon Nov 25 08:49:36 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (address_registers): Use '$' as register - prefix instead of '%'. - (data_registers, other_registers, md_assemble): Likewise. - - * config/tc-mn10300.c (address_registers): Use '%' prefix for regs. - (data_registers, other_registers, md_assemble): Likewise. - - * config/tc-mn10300.c (md_assemble): Correctly determine the - correct location and type for each relocation. - (md_pcrel_from): Simplify. - -Fri Nov 22 15:42:26 1996 Ian Lance Taylor - - * config/tc-sh.c (md_convert_frag): Improve warning when branch is - converted into branch around branch. - -Thu Nov 21 11:56:11 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.h (DIFF_EXPR_OK): Don't define this. - (tc_fix_adjustable): Don't adjust relocs against weak symbols or - pc-relative relocs. - * config/tc-mn10300.c (md_begin): Set linkrelax. - (md_assemble): Create fixups as needed. - (md_apply_fix3): Gut. It shouldn't ever get called anymore. - -Tue Nov 19 17:48:06 1996 Michael Meissner - - * config/tc-d10v.c (parallel_ok): When automatically converting - serial ops to parallel, do not consider a branch as the first - instruction. - -Tue Nov 19 13:35:22 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Handle MN10300_OPERAND_REG_LIST. - -Mon Nov 18 15:26:55 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (mn10300_insert_operand): Provide prototype - via PARAMS. - (check_operand): Likewise. - -Mon Nov 18 15:22:28 1996 Michael Meissner - - * config/tc-d10v.c (parallel_ok): Branch and link instructions - modify r13. - (write_2_short): Call parallel_ok to check whether two short - instructions the user requested execute in parallel, can be - executed that way. - -Thu Nov 14 11:17:49 1996 Martin M. Hunt - - * config/tc-d10v.c (write_2_short): Fix bug that wouldn't - allow a branch and link in parallel with an exe instruction. - -Fri Nov 8 13:55:03 1996 Martin M. Hunt - - * doc/c-d10v.texi: Add info on @word modifier. - -Wed Nov 6 13:46:07 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (mn10300_insert_operand): MN10300_OPERAND_SPLIT - operands are assumed to be 32bits. Use "bits" field to hold the - number of bits in the main instruction word for MN10300_OPERAND_SPLIT. - (mn10300_check_operand): MN10300_OPERAND_SPLIT operands are assumed - to be 32bits. - - * config/tc-mn10300.c (mn10300_insert_operand): Shift low part - of a MN10300_OPERAND_SPLIT operand by operand->shift. - - * config/tc-mn10300.c (mn10300_insert_operand): Handle - MN10300_OPERAND_SPLIT. - -Tue Nov 5 13:30:40 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Insert operands into - the extension part of the instruction if necessary. - (mn10300_insert_operand): Accept pointer to extension word - argument. Make insn a pointer argument too. Return type - is now void. All callers changed. - -Mon Nov 4 12:53:40 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (mn10300_insert_operand): Handle - repeated register operands. - -Fri Nov 1 10:42:49 1996 Ian Lance Taylor - - * doc/as.texinfo: Added section on reporting bugs. - - * config/tc-alpha.c: Change uses of void * to PTR. Change the - alpha_macro emit field to expect a const argument, and change the - arg field to be const. Fix some spacing to follow the GNU - standard. - -Fri Nov 1 10:32:03 1996 Richard Henderson - - * config/tc-alpha.c (md_parse_option): Add knowledge of 21164pc - (pca56) and 21264 (ev6) cpus. - (md_apply_fix): Private relocation types are now negative. - (alpha_force_relocation): Likewise. - (tc_gen_reloc): Likewise. - (emit_insn): Likewise. - (emit_ldXu): Do the right thing when the hardware can do byte insns. - (emit_stX): Likewise. - (emit_sextX): Likewise. - -Thu Oct 31 16:33:21 1996 Ian Lance Taylor - - * config/obj-coff.c (do_relocs_for): Call resolve_symbol_value on - a symbol found in a reloc. - - * symbols.c (resolve_symbol_value): Improve the error message if - an undefined symbol is used in an expression. - -Wed Oct 30 20:15:35 1996 Ian Lance Taylor - - * doc/internals.texi: Rewrite, and add a lot of documentation. - * doc/Makefile.in (internals.info): New target. - -Wed Oct 30 14:55:57 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.h (tc_fix_adjustable): Don't adjust relocs - against weak symbols. - -Tue Oct 29 12:28:16 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_assemble): Don't lose for relaxable - addresses like .+6. - - * config/tc-v850.c (md_convert_frag): Make sure we insert the - fixup at the right address within the frag. - - * config/tc-v850.c (md_convert_frag): Don't set fragP->fr_fix - to an absolute value, instead increment it as needed. - - * config/tc-v850.h (TC_GENERIC_RELAX_TABLE): Define. - * config/tc-v850.c: Fix some indention problems. - (md_relax_table): Define for D9->D99 branch displacement - relaxing. - (md_convert_frag): Do something useful instead of aborting. - (md_estimate_size_before_relax): Likewise. - (md_assemble): Note if the matching instruction has a relaxable - operand. If it does, allocate frag with frag_var and don't - do any fixups. - -Mon Oct 28 10:48:40 1996 Martin M. Hunt - - * config/tc-d10v.h (md_cleanup): New function. This is needed to - write out any buffered instructions when a ".end" is found. - -Mon Oct 28 10:43:45 1996 Martin M. Hunt - - * read.c (read_a_source_file): New hook md_cleanup(). - -Fri Oct 25 00:01:00 1996 Ian Lance Taylor - - * write.c (fix_new_exp): Use make_expr_symbol to build an - expression symbol for a complex fixup. - -Thu Oct 24 14:31:04 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (v850_reloc_prefix): Several disgusting - hacks to improve parsing of complex hi, lo, zda, etc - expressions. - (md_assemble): Don't demand and eat a trailing ')' after finding - a v850 relocation prefix. Sign extend the constant in a - BFD_RELOC_LO16 expression. Do eat a trailing ')' after a complete - operand. - (parse_cons_expression_v850): Don't eat a trailing ')' after - finding a v850 relocation prefix. - - * config/tc-v850.h (TC_PARSE_CONS_EXPRESSION): Define. - (TC_CONS_FIX_NEW): Likewise. - * config/tc-v850.c (parse_cons_expression_v850): New function. - (cons_fix_new_v850): Likewise. - - * config/tc-v850.h (tc_fix_adjustable): Don't adjust TDA relocs. - -Wed Oct 23 18:20:29 1996 Ian Lance Taylor - - * config/tc-ppc.c (md_apply_fix3): Give a better warning message - for an unknown relocation type. - -Wed Oct 23 16:21:28 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_pseudo_table): Add .word; allocates - 4 bytes of space. - -Tue Oct 22 22:01:25 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_assemble): Handle TDAOFF relocs - differently for movea & sst/sld insns. - -Tue Oct 22 17:09:32 1996 Michael Meissner - - * config/tc-d10v.c (parallel_ok): Don't allow illegal combinations - of instructions. - -Tue Oct 22 11:28:39 1996 Ian Lance Taylor - - * obj.h (struct format_ops): Add frob_file_after_relocs field. - * config/obj-multi.h (obj_frob_file_after_relocs): Define. - * config/obj-ecoff.c (ecoff_format_ops): Initialize new - frob_file_after_relocs field. - * config/obj-elf.c (elf_format_ops): Likewise. - * config/tc-mips.c: Undefine obj_frob_file_after_relocs before - including obj-elf.h. - -Mon Oct 21 11:38:30 1996 Ian Lance Taylor - - * config/tc-mips.c (cons_fix_new_mips): Only treat 8 byte reloc - specially if not ELF. - (md_apply_fix): Handle BFD_RELOC_64. - (tc_gen_reloc): Handle BFD_RELOC_64. - - * config/tc-i386.c (md_apply_fix3): Don't increment value for a PC - relative reloc when BFD_ASSEMBLER and OBJ_AOUT (more ugly gas - reloc hacking). - - * config/obj-aout.h (S_IS_DEFINE): non BFD_ASSEMBLER version: - Don't check S_GET_OTHER. - -Fri Oct 18 14:06:26 1996 Ian Lance Taylor - - * config/tc-mips.c (mips_ip): Accept an odd floating point - register with l.s or s.s. - - * config/obj-aout.c (obj_pseudo_table): Use obj_aout_type for - .type pseudo-op. - (obj_aout_type): New static function. - -Thu Oct 17 17:55:17 1996 Ian Lance Taylor - - * Makefile.in ($(OBJS)): Depend upon libiberty.h. - -Wed Oct 16 11:28:31 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (v850_reloc_prefix): Recognize zdaoff, tdaoff - and sdaoff expressions. - - * write.c (fixup_segment): Don't add symbol value to addend if - TC_V850 and OBJ_ELF. - * config/tc-v850.h (tc_fix_adjustable): Don't adjust any - pc-relative fixups. - - * config/tc-v850.c (md_pcrel_from): Undo yesterday's changes. - (md_pcrel_from_section): Likewise. - * config/tc-v850.h (MD_PCREL_FROM_SECTION): Likewise. - -Tue Oct 15 23:19:00 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_pcrel_from): Delete unused function. - (md_pcrel_from_section): New function. - * config/tc-v850.h (MD_PCREL_FROM_SECTION): Define. - -Mon Oct 14 13:59:12 1996 Ian Lance Taylor - - * config/tc-mips.c (load_register): Add cast to offsetT when using - a constant with &~. - -Mon Oct 14 11:24:28 1996 Richard Henderson - - * config/obj-elf.c (elf_frob_file): Move ECOFF debug processing to ... - (elf_frob_file_after_relocs): ... here. New function. - * config/obj-elf.h (obj_from_file_after_relocs): New macro. - * write.c (write_object_file): Call *frob_after_relocs after the - call to write_relocs. - - * config/tc-alpha.c: Use new BFD_RELOC_ALPHA_ELF_LITERAL reloc. - - * config/tc-alpha.c (load_expression): Don't SET_VALUE on the section - symbol, as this messes up linking. Instead, expand the recursive call - inline and change up the appropriate bits to get the 0x8000 offset - in the reloc addend. - -Thu Oct 10 17:30:31 1996 Ian Lance Taylor - - * config/tc-sparc.h (tc_fix_adjustable): Permit the difference of - two symbols in the same segment to be adjusted. - - * configure.in: Don't get confused by CPU-VENDOR-linux-gnu. - * configure: Rebuild. - -Thu Oct 10 17:22:18 1996 Michael Meissner - - * config/tc-ppc.c (ppc_insert_operand): Change most warnings into - errors. - (ppc_elf_validate_fix): Ditto. - (md_assemble): Ditto. - (ppc_tc): Ditto. - (ppc_pe_section): Ditto. - (ppc_frob_symbol): Ditto. - -Thu Oct 10 12:05:45 1996 Jeffrey A Law (law@cygnus.com) - - * config/mn10300.c (md_assemble): Pass an extra shift count - to mn10300_insert_operand based on the opcode format. - (mn10300_insert_operand): Accept and use extra shift count - parameter. - - * config/tc-mn10300.c (md_assemble): Use FMT_* macros for - formats rather than hard-coded constants. - - * config/tc-mn10300.c (md_assemble): Format D5 instructions - are 7 bytes long. Write out instructions in big-endian format. - -Tue Oct 8 14:56:15 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Tweak further so - that all instructions are parsed correctly. - -Tue Oct 8 13:02:21 1996 Ian Lance Taylor - - * as.h: Include libiberty.h. - (xmalloc, xrealloc): Don't declare. - * as.c: Don't include libiberty.h. - * expr.c, read.c, stabs.c, config/obj-coff.c: Likewise. - * config/tc-mips.c: Likewise. - * messages.c: Likewise. - (xstrerror): Don't declare. - * xmalloc.c: Remove. - -Mon Oct 7 16:53:23 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.h (pre_defined_registers) Remove. - (system_registers, cc_names): Likewise. - (address_registers, data_registers, other_registers): New register - arrays. - (register_name, system_register_name, cc_name): Remove. - (mn10300_reloc_prefix): Likewise. - (data_register_name): New function. - (address_register_name, other_register_name): Likewise. - (md_assemble): Rough cut at parsing operands. Remove lots of - unwanted code. - (md_apply_fix3): Disable for now. - -Mon Oct 7 11:38:34 1996 Andreas Schwab - - * config/tc-m68k.c (select_control_regs): New function, extracted - out of m68k_init_after_args. - (m68k_init_after_args): Use it. - (mri_chip): Use it here as well to update set of allowed control - regs for movec. - -Mon Oct 7 11:24:29 1996 Ian Lance Taylor - - * config/obj-elf.c (elf_begin): New function. - (obj_elf_section): Add the section symbol to the symbol table. - * config/obj-elf.h (obj_begin): Define. - (elf_begin): Declare. - * as.c (perform_an_assembly_pass): Call obj_begin if it is - defined. - -Fri Oct 4 18:37:32 1996 Ian Lance Taylor - - * config/obj-coff.c (fixup_segment): Subtract the section address - from a PC relative reloc if TC_M68K. - -Thu Oct 3 15:15:30 1996 Ian Lance Taylor - - * config/tc-sparc.c (md_pseudo_table): Make .uahalf, .uaword, and - .uaxword available even if not OBJ_ELF. - (md_atof): Remove unused local variable wordP. - -Thu Oct 3 00:16:50 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10x00.c, config/tc-mn10x00.h: New files - for Matsushita MN10x00 support. - * configure.in: Recognize mn10x00-*-* - * configure: Rebuilt. - -Wed Oct 2 15:54:03 1996 Klaus Kaempf - - * config/obj-evax.h: move openvms definitions from here to tc-alpha.c. - * config/tc-alpha.c: add support for vms_case_hack like in vax/vms. - (load_expression): track clobbering of base reg before jmp/jsr. - (s_alpha_file): pass case_hack flags and source filename via - symbol table to bfd. - * config/tc-alpha.h (TC_CONS_FIX_NEW): define - -Tue Oct 1 16:16:01 1996 Joel Sherrill - - * configure.in (mips-*-rtems*): New target, like mips-*-elf*. - * configure: Rebuild. - -Tue Oct 1 12:37:48 1996 Ian Lance Taylor - - * read.c (s_macro): Warn if a macro has the same name as a - pseudo-op. - (s_space): In m68k MRI mode, align to a word boundary. - * macro.c (define_macro): Add namep parameter. Change all - callers. - * macro.h (define_macro): Update declaration. - - * as.c (show_usage): Print bug report address. - (parse_args): Change version printing to match current GNU - standards. - * gasp.c (show_usage): Print bug report address. - (main): Change version printing to match current GNU standards. - - * config/tc-m68k.c (init_table): Correct access control unit - register numbers. From Ken Rose . - - * config/tc-alpha.c: Add some static function prototypes. - (alpha_macros): Move to top of file. Make static. - (alpha_num_macros): Move to top of file. - -Tue Oct 1 09:36:19 1996 Stu Grossman (grossman@critters.cygnus.com) - - * config/tc-v850.h: Define LOCAL_LABEL to recognise _.L_* symbols - generated by DWARF. - -Sat Sep 28 03:38:08 1996 Ian Lance Taylor - - * listing.c (list_symbol_table): Remove bogus code in BFD64 case, - and just call sprintf_vma. - -Thu Sep 26 16:04:11 1996 Ian Lance Taylor - - * expr.c (expr): Change >>= to >> (fix typo). (From meissner). - -Tue Sep 24 19:05:08 1996 Ian Lance Taylor - - * read.c (float_cons): Call md_flush_pending_output if it is - defined. - -Tue Sep 24 12:22:18 1996 Martin M. Hunt - - * config/tc-d10v.c (md_operand): Created. Allows operands to - start with '#'. - * config/tc-d10v.h (md_operand): Undefined. - -Mon Sep 23 12:13:18 1996 Ian Lance Taylor - - * config/tc-m68k.c (add_fix): Treat a width of '3' like 'B'. - (md_assemble): A fixup width of '3' means a 1 byte reloc. - -Thu Sep 19 12:21:24 1996 Ian Lance Taylor - - * config/obj-coff.c (fixup_segment): Don't adjust PC relative - reloc for the i960 for a reloc in the same section. This undoes - one of the two changes made Aug 19. - -Wed Sep 18 12:11:58 1996 Ian Lance Taylor - - * config/obj-coff.c (obj_coff_endef): Both versions: Move C_STAT - symbols to the position of the debugging information. - -Mon Sep 16 11:41:40 1996 Ian Lance Taylor - - * expr.c (expr): Always use unsigned right shifts for >>. - -Thu Sep 12 10:25:45 1996 James G. Smith - - * config/tc-arm.c (md_apply_fix3): Update two thumb instruction - slots when processing BL fixups. - - * config/tc-arm.c (output_inst): Ensure Thumb BL fixup is marked - on the first half of the instruction. - -Wed Sep 11 00:09:35 1996 Ian Lance Taylor - - * ecoff.c (ecoff_stab): Create an expression symbol for a complex - stabs expression, rather than giving an error. - - * ecoff.c (ecoff_new_file): Don't do anything if we are still in - the same file. - -Tue Sep 10 11:45:37 1996 Ian Lance Taylor - - * config/tc-mips.c (append_insn): Fill in the value for a constant - jump, rather than creating a reloc. - -Mon Sep 9 10:57:42 1996 Ian Lance Taylor - - * config/tc-mips.c (append_insn): Don't swap an instruction which - sets a condition code with an instruction which uses a condition - code. - (mips_ip): In cases 'N' and 'M', look for $fccN rather than an - immediate value. - - * config/tc-mips.c (md_begin): Recognize r5000 for cpu. - (mips_ip): Give a better error message if the ISA level is wrong. - (md_parse_option): Recognize -mcpu=[v][r]5000. - -Sat Sep 7 13:25:55 1996 James G. Smith - - * config/tc-mips.c (COUNT_TOP_ZEROES): Added macro to count - leading zeroes. - (load_register): Ensure hi32 bits are not lost during lo32bit - processing. Fix shift offset that was overflowing into the next - instruction field. Add code to generate shorter sequences for - constants with a single contiguous seqeuence of ones. - -Fri Sep 6 17:07:12 1996 Martin M. Hunt - - * config/tc-d10v.c (d10v_dot_word): New function to support - "@word" with the word pseudo-op. - (md_apply_fix3): Cleanup and changes to support correct sizes - for 16 and 18-bit relocs. - -Fri Sep 6 16:00:29 1996 Doug Evans - - * configure.in (sparc-*-aout): Set `em'. - * configure: Regenerated. - * config/te-sparcaout.h: New file. - * config/tc-sparc.h (TARGET_BYTES_BIG_ENDIAN): Define. - Ifdef TE_SPARCOUT define TARGET_FORMAT and SPARC_BIENDIAN. - * config/tc-sparc.c (INSN_BIG_ENDIAN): New macro. - (SPECIAL_CASE_{SETSW,SETX}): Define. - ({NOP,OR,FMOVS,SETHI,SLLX,SRA}_INSN): Define. - (md_begin): Delete setting of `target_big_endian'. - (output_insn): New function. - (md_assemble): Rewrite. Add `setx' support. - (sparc_ip): Handle `0' operand char. Recognize setuw, setsw, setx - special cases. - (md_atof): Add little endian support. - (md_number_to_chars): Likewise. - (md_apply_fix): Likewise. - (md_longopts): Recognize -EL,-EB ifdef SPARC_BIENDIAN. - (md_parse_option): Likewise. - (md_show_usage): Print -EL, -EB ifdef SPARC_BIENDIAN. - -Thu Sep 5 13:40:29 1996 Ian Lance Taylor - - * ecoff.c (ecoff_new_file): New function. - * ecoff.h (ecoff_new_file): Declare. - * config/obj-ecoff.h (obj_app_file): Define. - -Thu Sep 5 13:39:25 1996 Richard Henderson - - * config/tc-alpha.c (load_expression): Bias the .lit8 section - symbol by 32k so that our 16-bit signed offset can address the - entire chunk. Reported by . - -Wed Sep 4 10:23:20 1996 Ian Lance Taylor - - * config/tc-mips.c (load_register): Remove unused variable tmp. - -Wed Sep 4 11:24:29 1996 James G. Smith - - * config/tc-mips.c (load_register): Remove unnecessary code that - was causing the high 32bits of 64bit constants to be lost. - -Tue Sep 3 13:52:56 1996 Martin M. Hunt - - * config/tc-d10v.c: Added changes to support function - pointers and "@word" syntax. - -Tue Sep 3 11:57:18 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c: Remove commented out and #if 0'd code. - (v850_reloc_prefix): Provide prototype. - (postfix, get_reloc, build_insn): Remove prototypes for nonexistant - functions. - (md_begin, md_assemble, md_apply_fix3): Remove unused variables. - (md_assemble): Add default to case statement. - -Sat Aug 31 16:03:00 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_assemble): Compute size of the instrction - from the opcode. - - * config/tc-v850.c (md_apply_fix3): Do simple byte, short and - word fixups too. - -Fri Aug 30 23:50:08 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_apply_fix3): Use little endian get/put - routines to fetch/store the updated instruction from/to memory. - (v850_insert_operand): If the operand has a specialized insert - routine, call it. - -Fri Aug 30 18:35:26 1996 J.T. Conklin - - * config/tc-v850.c (reg_name_search): Align calling convention to - be like identical function found in tc-ppc.c. - (get_reloc): Removed. - (v850_reloc_prefix): New function, parse lo(), hi() and hi0(). - (md_assemble): emit fixups. - (md_pcrel_from): renamed from md_pcrel_from_section, emit proper - displacement. - (md_apply_fix3): handle fixups/relocs. - * config/tc-v850.h (MD_PCREL_FROM_SECTION): Removed definition. - -Fri Aug 30 18:12:00 1996 Ian Lance Taylor - - Add SH ELF support. - * configure.in (sh-*-elf*): New target. - * config/tc-sh.h (TARGET_ARCH): Define. - (WORKING_DOT_WORD): Define. - (TC_COFF_FIX2RTYPE): Only define if OBJ_COFF. - (BFD_ARCH, COFF_MAGIC, TC_COUNT_RELOC): Likewise. - (TC_RELOC_MANGLE, tc_coff_symbol_emit_hook): Likewise. - (DO_NOT_STRIP, NEED_FX_R_TYPE, TC_KEEP_FX_OFFSET): Likewise. - (TC_COFF_SIZEMACHDEP, tc_frob_file): Likewise. - (SUB_SEGMENT_ALIGN): Likewise. - (RELOC_32): Don't define. - (tc_frob_file_before_adjust): Define if BFD_ASSEMBLER. - (target_big_endian): Declare if OBJ_ELF. - (TARGET_FORMAT): Define if OBJ_ELF. - * config/tc-sh.c: Use BFD reloc codes instead of SH COFF reloc - numbers throughout. - (tc_crawl_symbol_chain): Only define if OBJ_COFF. - (tc_headers_hook, tc_coff_sizemachdep): Likewise. - (struct sh_count_relocs): Define. - (sh_count_relocs): New static function, broken out of - sh_frob_file. Add BFD_ASSEMBLER code. - (sh_frob_section): Likewise. - (sh_frob_file): Call sh_frob_section. - (md_convert_frag): If BFD_ASSEMBLER, change type of headers, and - call section_symbol rather than seg_info (seg)->dot. - (md_section_align): Add OBJ_ELF version. - (SWITCH_TABLE_CONS): Define. - (SWITCH_TABLE): Use SWITCH_TABLE_CONS. - (md_apply_fix): Change parameter types if BFD_ASSEMBLER. Only - handle fx_r_type == 0 if not BFD_ASSEMBLER. Return 0 if - BFD_ASSEMBLER. - (struct reloc_map): Define if not BFD_ASSEMBLER. - (coff_reloc_map): Likewise. - (sh_coff_reloc_mangle): Use coff_reloc_map to convert fx_r_type. - (tc_gen_reloc): New function if BFD_ASSEMBLER. - * write.c (write_relocs): Ifdef out fx_where test which triggers - inappropriately for SH ELF. - (write_object_file): Call tc_frob_file_before_adjust and - obj_frob_file_before_adjust if they are defined. - - * write.c (write_object_file): Use BFD_RELOC_16, not - BFD_RELOC_NONE, when calling fix_new_exp for a broken word. - - * read.c (emit_expr): Fix conversion of byte count to BFD reloc - code. - -Fri Aug 30 14:47:38 1996 Martin M. Hunt - - * config/tc-d10v.c (find_opcode): Fix problem with calculating - branch sizes in across sections. - -Fri Aug 30 00:44:13 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-850.c (md_assemble): Handle hi() correctly. Handle - hi0() too. - -Wed Aug 28 23:11:08 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_begin): Deal with end of opcode - table marker. - -Wed Aug 28 19:20:04 1996 Martin M. Hunt - - * config/tc-d10v.c (find_opcode): Fix a bug which could generate - the wrong opcode for cases like st2w where there are many forms - of the same instruction. - -Tue Aug 27 13:53:22 1996 Ian Lance Taylor - - * expr.c (operand): If md_parse_name is defined, call it before - calling symbol_find_or_make. - * config/tc-ppc.h (md_parse_name): Define. - (ppc_parse_name): Declare. - * config/tc-ppc.c (reg_name_search): Add regs and regcount - parameters. - (register_name): Update call to reg_name_search. - (cr_operand): New static variable. - (cr_names): New static const array. - (ppc_parse_name): New function. - (md_assemble): If PPC_OPERAND_CR is set in the operand flags, set - cr_operand before calling expression. - -Tue Aug 27 09:05:50 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (tc_gen_reloc): Add new argument to - hppa_gen_reloc_type call. - -Mon Aug 26 18:24:51 1996 Martin M. Hunt - - * config/tc-d10v.c: Fixed ".word". Fixed problem with range checking - on addresses. Improved error messages. - * doc/c-d10v.texi: Added docs for register pairs. - -Mon Aug 26 13:39:27 1996 Martin M. Hunt - - * config/tc-d10v.c (parallel_ok): Fix bug in parallel - checking code. - -Mon Aug 26 14:38:22 1996 Ian Lance Taylor - - * ecoff.c (init_file): Initialize fMerge to 1. - (add_file): Restore old file merging code, but only merge files if - fMerge is set. - (ecoff_directive_loc): Clear fMerge field of current file. - (ecoff_generate_asm_lineno): Likewise. - -Fri Aug 23 11:40:47 1996 Martin M. Hunt - - * doc/c-d10v.texi: Fix typo. - -Fri Aug 23 10:41:32 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-v850.c (md_assemble): Correct bit masking for - hi and lo expressions. - - * config/tc-v850.c (md_assemble): Rough cut at demanding - "ep" or "r30" in sst and sld instructions. - (md_apply_fix3): Don't abort. Just warn that we don't - have relocs yet. - - * config/tc-v850.c (CC_NAME_CNT): Define. - (cc_name): New function. - (md_assemble): Handle V850_OPERAND_CC correctly. - - * config/tc-v850.c (md_assemble): Don't forget to initialize - "insn"! - - * config/tc-v850.c (reg_name_search): Generalize to search - any given register table. - (register_name): Pass appropriate table and size to reg_name_search. - (system_register_name): New function. - (SYSREG_NAME_CNT): Define. - (md_assemble): Handle operands which are system registers. - - * config/tc-v850.c (md_assemble): If we find a register, but the - opcode doesn't want a register, then we don't have a match. - (md_assemble): Get size of the instruction from the opcode table. - -Thu Aug 22 10:20:30 1996 Ian Lance Taylor - - * configure.in: Set and substitute HLDENV. - * configure: Rebuild. - * Makefile.in (HLDENV): New variable. - (as.new): Use $(HLDENV). - - * ecoff.c (ecoff_directive_endef): Avoid a division by zero error - if an array dimension is not known. - -Thu Aug 22 10:50:00 1996 Martin M. Hunt - - * config/tc-d10v.c: Fix a reloc bug caused by my last change. - * doc/c-d10v.texi: Cleanup. - -Tue Aug 20 15:15:16 1996 J.T. Conklin - - * config/tc-v850.c: New file. - * config/tc-v850.h: New file. - * configure (v850-*-elf): New target. - * configure.in (v850-*-elf): New target. - -Wed Aug 21 15:50:54 1996 Martin M. Hunt - - * doc/c-d10v.texi: New file. - * doc/all.texi: Added D10V stuff. - * doc/as.texinfo: Added D10V stuff. - -Tue Aug 20 14:10:02 1996 Martin M. Hunt - - * config/tc-d10v.c: All references to defined symbols should - now use the optimal instruction. .float and .double now work. - -Mon Aug 19 14:41:36 1996 Ian Lance Taylor - - * config/obj-coff.c (fixup_segment): Adjust PC relative reloc by - section address for the i960 as is done for the i386. - -Thu Aug 15 16:37:59 1996 Stan Shebs - - * mpw-config.in: Add wildcards for config matching, add mips-*-* - case, forward-include bfd/elf-bfd.h. - -Thu Aug 15 13:24:30 1996 Martin M. Hunt - - * config/tc-d10v.c: Add additional information to the opcode - table to help determinine which instructions can be done - in parallel. - -Thu Aug 15 17:01:31 1996 James G. Smith - - * config/tc-arm.c: Major changes to add Thumb support, with lots - of change input from . - Reverted to INSN_SIZE macro, rather than insn_size variable. - (insns): Added ARM "bx" instruction support. - (tinsns): Added Thumb instruction definition structure. - (arm_tops_hsh): Added hash structure for Thumb opcodes. - (md_pseudo_table): Added ".arm", ".thumb" and ".code" pseudo-ops. - (opcode_select,s_arm,s_thumb,s_code): Added. - (decode_shift): Allow upper-case RRX. - (do_ldst): Simpler halfword support. - (do_ldmstm): Improved. - (reg_list, do_bx, thumb_reg, thumb_add_sub, thumb_shift, - thumb_mov_compare, thumb_load_store, do_t_arit, do_t_add, - do_t_asr, do_t_branch, do_t_bx, do_t_compare, do_t_ldmstm, - do_t_ldrb, do_t_ldrh, do_t_lds, do_t_lsl, do_t_lsr, do_t_mov, - do_t_push_pop, do_t_str, do_t_strb, do_t_strh, do_t_sub, do_t_swi, - do_t_adr): Added. - (md_apply_fix3): Add support for BFD_RELOC_ARM_THUMB_* relocations. - (md_parse_option): Add support for -mthumb. - (md_show_usage): Updated to reflect new command line option. - (arm_data_in_code, arm_canonicalize_symbol_name): Added. - * config/tc-arm.h: Provide TC_FIX_TYPE to allow private ARM - fragment information to be held. - -Thu Aug 15 16:12:00 1996 Richard Earnshaw (rearnsha@armltd.co.uk) - - * config/tc-arm.c (md_apply_fix3): Also set fixP->fx_done if fx_addsy is - non-null, but is a constant. - (fix_new_arm): Call make_expr_symbol to make the expression symbol - so that error reporting will work correctly. - -Wed Aug 14 10:37:21 1996 Ian Lance Taylor - - * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust relocs - against weak symbols. - -Tue Aug 13 17:39:24 1996 Ian Lance Taylor - - * config/tc-ppc.h (TC_FORCE_RELOCTION): Define if OBJ_XCOFF. - (ppc_force_relocation): Declare if OBJ_XCOFF. - * config/tc-ppc.c (ppc_force_relocation): New function if - OBJ_XCOFF. - -Mon Aug 12 16:49:43 1996 Ian Lance Taylor - - * config/tc-mips.h (BYTE_ORDER): Don't define. No longer used. - -Fri Aug 9 17:48:28 1996 Martin M. Hunt - - * config/tc-d10v.c: Fix problem with relocs. - -Fri Aug 9 14:16:14 1996 Ian Lance Taylor - - * config/tc-sh.c (sh_do_align): If not BFD_ASSEMBLER, always align - with nops if not in data_section or bss_section. - -Thu Aug 8 12:32:56 1996 Klaus Kaempf - - Add support for openVMS/Alpha. - * as.h (PRINTF_LIKE): Don't define if VMS, for now. - * config/obj-evax.c: New file. - * config/obj-evax.h: New file. - * config/tc-alpha.c: Add support for EVAX format if OBJ_EVAX is - defined. - * config/tc-alpha.h: Add support for EVAX format if OBJ_EVAX is - defined. Add case for bfd_target_evax_flavour. - * config/vms-a-conf.h: New file. - * conf-a-gas.com: New file. - * configure.in: Add target alpha-*-*vms*. - * configure: Rebuild. - * makefile.vms: New file. - * read.c (s_lcomm): Align bss_seg on 8 byte boundary if OBJ_EVAX. - Don't call ffs on openVMS/Alpha. - -Wed Aug 7 14:19:03 1996 Philippe De Muyter - - * configure.in: Make GAS_CHECK_DECL_NEEDED include or - if they exist. Call GAS_CHECK_DECL_NEEDED on strstr - and sbrk. - * acconfig.h (NEED_DECLARATION_STRSTR): New macro. - (NEED_DECLARATION_SBRK): New macro. - * configure, conf.in: Rebuild. - * as.h: Only include if HAVE_STRINGS_H. - (strstr): Declare if NEED_DECLARATION_STRSTR. - * as.c: If HAVE_SBRK and NEED_DECLARATION_SBRK, declare sbrk. - -Wed Aug 7 11:50:26 1996 Ian Lance Taylor - - * symbols.c (resolve_symbol_value): Handle addition or subtraction - by a constant before entering the main switch. Reject attempts to - apply an arithmetic function to non-absolute symbols, except for - the special case of subtraction of two symbols in the same - section. - - * config/tc-mips.c (md_section_align): Do align if OBJ_ELF, but - not to more than a 16 byte boundary. - - * config/tc-i386.c (tc_gen_reloc): Accept all relocs; remove - #ifndef OBJ_ELF lines. From Eric Valette . - (tc_gen_reloc): If out of memory call as_fatal rather than - assert. If no howto found, call as_bad_where rather than - as_fatal. Change the error message slightly. Set howto to a - non-NULL value in order to keep going. - -Tue Aug 6 12:58:03 1996 Martin M. Hunt - - * config/tc-d10v.c: Added code to support 32-bit fixups for stabs. - -Tue Aug 6 11:15:26 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (get_specific): New operand "size" derived - from ".b", ".w" and ".l" extensions. All callers changed. If - the base instruction has no operands, then use the size to - determine which specific instruction to use. - -Mon Aug 5 14:21:10 1996 Ian Lance Taylor - - * config/tc-i960.c (mem_fmt): Call parse_expr before emit. - -Fri Aug 2 11:23:31 1996 Ian Lance Taylor - - * config/tc-mips.c (md_section_align): Don't change addr if - OBJ_ELF. - -Thu Aug 1 23:51:52 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c: Revert yesterday's changes. - -Wed Jul 31 14:46:11 1996 Martin M. Hunt - - * config/tc-d10v.c: Disable range checking on 16-bit values. - -Wed Jul 31 16:27:19 1996 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Set ok_arch for every instruction, - not just the ones that don't match. - -Wed Jul 31 11:45:15 1996 Martin M. Hunt - - * config/tc-d10v.c: Fixed bugs in short relocs and range checking. - -Wed Jul 31 15:41:42 1996 James G. Smith - - * config/tc-arm.c: Changed INSN_SIZE to variable insn_size, as - pre-cursor to adding Thumb support. Also added cpu_variant flag - information to each of the asm_flg structures. - (md_parse_option): Updated ARM7 parsing to allow 't' for - thumb/halfword support, aswell as 'm' for long multiply. - (md_show_usage): Updated help message. - (md_assemble): Check that instruction flags are applicated to the - current cpu variant. - (md_apply_fix3, tc_gen_reloc): Add BFD_RELOC_ARM_OFFSET_IMM8 and - BFD_RELOC_ARM_HWLITERAL relocation support for new halfword and - signextension instructions. - (do_ldst): Generate halfword and signextension variants if - mnemonic flags match. - (ldst_extend): Do not allow shifts in the offset field of halfword - or signextension instructions. - (validate_offset_imm): Provide check on halfword and signextension - immediate range. - (add_to_lit_pool): Merge identical literal pool values. - -Tue Jul 30 14:28:23 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (selector_table): Add 'E' selector. - (cons_fix_new_hppa): Don't coke on e_esel. - (tc_gen_reloc, SOM version): Handle R_COMP2 when used - to help generate exception handling tables. - (md_apply_fix): Don't try to apply fixups with an e_esel - selector. - (hppa_fix_adjustable): Fixups with e_esel selectors - are not adjustable. - -Tue Jul 30 15:51:41 1996 Ian Lance Taylor - - * config/tc-sparc.c (md_pseudo_table): Add 2byte, 4byte, and 8byte - pseudo-ops. - -Fri Jul 26 11:43:03 1996 Martin M. Hunt - - * config/tc-d10v.c: Added lots of error checking. Added hacks - to support accumulator shifts. - -Fri Jul 26 11:56:08 1996 Ian Lance Taylor - - * symbols.c (S_SET_EXTERNAL): Let .weak override. - (S_CLEAR_EXTERNAL): Likewise. - (S_SET_WEAK): Remove error; just let .weak override. - -Thu Jul 25 15:22:51 1996 Martin M. Hunt - - * config/tc-d10v.c (md_assemble): Now handles multiline - instructions. - -Thu Jul 25 12:03:33 1996 Martin M. Hunt - - * config/tc-d10v.c: Fix packaging bug. Added range checking. - Added kludge for divs instruction. Fixed minor problem with - multiple text sections. - * config/tc-d10v.h (d10v_cleanup): Change prototype. - -Tue Jul 23 10:49:36 1996 Martin M. Hunt - - * config/tc-d10v.c (md_apply_fix3): Fix all instruction - addresses to be right-shifted by 2. - -Mon Jul 22 11:32:36 1996 Martin M. Hunt - - * config/tc-d10v.c: Many changes to get relocs working. - (register_name): No longer creates a symbol for register names. - (pre_defined_registers): moved to opcodes/d10v-opc.c. - (d10v_insert_operand): Now works correctly for either container. - * config/tc-d10v.h (d10v_cleanup): Declare. - -Mon Jul 22 14:01:33 1996 Ian Lance Taylor - - * config/tc-mips.c (tc_gen_reloc): BFD_RELOC_PCREL_HI16_S and - BFD_RELOC_PCREL_LO16 are expected to be PC relative. - -Mon Jul 22 12:46:55 1996 Richard Henderson - - * config/tc-alpha.c: Patches to track current minimum alignment to reduce - the number of fragments created with frag_align. - (alpha_current_align): New static variable. - (s_alpha_text): Reset alignment to 0. - (s_alpha_data, s_alpha_rdata, s_alpha_sdata): Likewise. - (s_alpha_stringer, s_alpha_space): New functions. - (s_alpha_cons, alpha_flush_pending_output): Remove functions. - (alpha_cons_align): New function to replace both of them. - (emit_insn): Only align if alpha_current_align is less than 2; - reset alpha_current_align to 2. - (s_alpha_gprel32): Likewise. - (s_alpha_section): New function. Basically duplicate the other - alpha section change hooks. Only define for ELF. - (s_alpha_float_cons): Simplify alignment handling. - (md_pseudo_table): Only define "rdata" and "sdata" if OBJ_ECOFF. - If OBJ_ELF, define "section", "section.s", "sect", and "sect.s". - Don't define the s_alpha_cons pseudo-ops. Do define - s_alpha_stringer and s_alpha_space pseudo-ops. - (alpha_align): Skip if less than current default alignment. Set - default alignment. - * config/tc-alpha.h (md_flush_pending_output): Remove. - (md_cons_align): Add. - - * config/tc-alpha.c: Add oodles of function description comments. - (md_bignum_to_chars): Remove; there are no callers. - (md_show_usage): Mention some more variants. - -Thu Jul 18 15:54:54 1996 Ian Lance Taylor - - From Andrew Gierth : - * configure.in (sparc-*-sysv4*): New target. - * configure: Rebuild. - - * config/tc-sparc.c (md_pseudo_table): Change uahalf, uaword, and - uaxword to use s_uacons. - (sparc_no_align_cons): New static variable. - (s_uacons): New static function. - (sparc_cons_align): If sparc_no_align_cons is set, just clear it - and return. - - * config/tc-sparc.c (s_common): Remove unused label allocate_bss. - - * configure.in: Add mips-*-irix6* target. Handle Irix 6 like Irix - 5 with regard to shared libraries. - * configure: Rebuild. - - * config/tc-m68k.c (m68k_ip): Use the correct length when - allocating space for the unsupported architecture error message. - -Thu Jul 18 12:57:10 1996 Michael Meissner - - * configure.in (d10v-*-*): Allow d10v-*-*, don't require d10v-*-elf*. - -Wed Jul 17 14:25:13 1996 Martin M. Hunt - - * config/tc-d10v.c: New file. - * config/tc-d10v.h: New file. - * configure (d10v-*-elf): New target. - * configure.in (d10v-*-elf): New target. - -Fri Jul 12 20:54:19 1996 Michael Meissner - - * config/tc-ppc.c (md_parse_option): Recognize -K PIC. - -Wed Jul 10 12:39:08 1996 Richard Henderson - - * config/tc-alpha.c (alpha_align): Change fill parameter - to a pointer. Take NULL as 0 or nop depending on section. Change - all callers. - (s_alpha_align): Rename local variables. - - * doc/as.texinfo (.align): Document action of omitted - fill parameter. - -Wed Jul 10 00:23:30 1996 Ian Lance Taylor - - * config/tc-ppc.c (md_apply_fix3): Give a useful error message - when an unsupported PC relative reloc is seen, rather than calling - abort. - - * app.c (do_scrub_chars): Remove not_cpp_line local variable. - Instead, check state when '#' comment is seen. - -Mon Jul 8 14:11:49 1996 Ian Lance Taylor - - * config/tc-mips.c (mips_regmask_frag): Only define if OBJ_ELF or - OBJ_MAYBE_ELF. - (tc_gen_reloc): If fixup was changed to be PC relative, change - reloc type accordingly. Use name of reloc in error message. - - * as.h: Don't define const or volatile. - * flonum.h: Don't define const. - - * config/tc-m68k.c (tc_gen_reloc): Change the code appropriately - if fx_pcrel is set. Correct setting the addend case in the - OBJ_ELF case (from Andreas Schwab - ). - (md_show_usage): Correct -mfc5200 to -m5200. - -Fri Jul 5 10:32:58 1996 J.T. Conklin - - * doc/c-m68k.texi: Document -m5200 flag. - * doc/as.texinfo: Likewise. - - * config/tc-m68k.c (m68k_ip): The coldfire does not support 8x - scale factor. - -Fri Jul 5 11:07:24 1996 Ian Lance Taylor - - * symbols.c (S_SET_EXTERNAL): Change as_warn to as_bad. - (S_CLEAR_EXTERNAL, S_SET_WEAK): Likewise. - -Thu Jul 4 11:59:46 1996 Ian Lance Taylor - - * Makefile.in (VERSION): Set to cygnus-2.7.1. - - * Released binutils 2.7. - -Thu Jul 4 10:11:33 1996 James G. Smith - - * config/tc-mips.c (mips_ip): Only perform range check when - dealing with O_constant expressions. - -Wed Jul 3 15:02:21 1996 J.T. Conklin - - * m68k-parse.h (m68k_register): Add new coldfile control - registers. - - * config/tc-m68k.c (mcf5200_control_regs): New variable, - array of control registers for the coldfire. - (cpu_of_arch): Added mcf5200. - (archs): Added mcf5200. - (init_table): Add new control registers. - (m68k_ip): Added support for new control registers. - (m68k_init_after_args): Likewise. - - * config/tc-m68k.c (md_show_usage): Add -m5200 to usage text. - -Wed Jul 3 16:05:50 1996 Ian Lance Taylor - - * read.h (is_it_end_of_statement): Declare. - * read.c (is_it_end_of_statement): Remove declaration. - - * config/tc-ppc.c (ppc_elf_suffix): Correct parenthesization of || - within &&. - (md_assemble): Fix handling of @l with an unsigned constant. Add - default case to reloc switch. - - * config/tc-i386.h (AOUT_MACHTYPE): Define as 0 if TE_386BSD. - - Based on patches from Tom Quiggle : - * ecoff.c (last_lineno): New static variable. - (add_procedure): Set last_lineno. - (ecoff_directive_loc): Likewise. - (ecoff_generate_asm_lineno): Likewise. - (ecoff_fix_loc): New function. - * ecoff.h (ecoff_fix_loc): Declare. - * config/tc-mips.c (append_insn): When inserting nops, and using - ECOFF debugging, call ecoff_fix_loc. - -Tue Jul 2 23:02:12 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (build_bytes): If an operand type is - marked as SRC_IN_DST retrieve it from the "destination" op. - -Sat Jun 29 13:38:31 1996 Ian Lance Taylor - - * configure.in (arm-*-riscix*): Set emulation to riscix. - * configure: Rebuild. - * config/te-riscix.h: New file to define TE_RISCIX. - - * config/tc-sh.h (SUB_SEGMENT_ALIGN): Define. - -Fri Jun 28 15:14:31 1996 Ian Lance Taylor - - * Makefile.in (config.status): Just run config.status as other - tools do. - -Fri Jun 28 11:09:38 1996 Stan Shebs - - * mpw-config.in (TARGET_OS): Add definition to conf. - -Thu Jun 27 20:39:40 1996 James G. Smith - - * config/tc-mips.c (append_insn): Parenthesize - cop_interlocks expressions. - -Thu Jun 27 12:18:26 1996 Ian Lance Taylor - - * listing.c (listing_print): Close the listing file if it is not - stdout. Close the other files opened for the listing. - - * config/tc-sparc.h (md_cons_align): Define. - (sparc_cons_align): Declare. - (HANDLE_ALIGN): Define. - (sparc_handle_align): Declare. - * config/tc-sparc.c (sparc_cons_align): New function. - (sparc_handle_align): New function. - * read.c (cons_worker): Call md_cons_align if it is defined. - - * as.h (struct frag): Add fr_file and fr_line fields. - * frags.c (frag_new): Set fr_file and fr_line. - (frag_var): Likewise. - (frag_variant): Likewise. - - * as.h (struct frag): Remove unused align_mask and align_offset - fields. - - * listing.c (calc_hex): Offset by fr_fix when examining fr_var. - From . - -Wed Jun 26 13:21:34 1996 Ian Lance Taylor - - * configure.in (mips-*-osf*): New target. - * configure: Rebuild. - - * config/tc-m68k.c: Add 68ec060 as a synonym for 68060. - -Wed Jun 26 16:23:08 1996 James G. Smith - - * config/tc-mips.c: Added cop_interlocks, to avoid NOP insertion - between co-processor comparisons and branches for the VR4300. - -Mon Jun 24 18:02:50 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. - * doc/Makefile.in (bindir, libdir, datadir, mandir, infodir, - includedir): Use autoconf set values. - (docdir): Removed. - -Mon Jun 24 11:58:14 1996 Ian Lance Taylor - - * listing.c (listing_eject): Don't do anything if listing is 0. - (listing_list): Likewise. - (listing_source_line): Likewise. - (listing_title): Don't save title if listing is 0. - (listing_source_file): Check listing rather than listing_tail. - - * configure.in: On alpha*-*-osf*, link against libbfd.a if not - using shared libraries. - * configure: Rebuild. - -Fri Jun 21 18:22:23 1996 Ian Lance Taylor - - * config/tc-mips.c (mips_ip): In case 'i'/'j', don't require an - absolute expression if a relocation type was specified. - -Fri Jun 21 17:40:16 1996 Joel Sherrill - - * configure.in: Add support for *-*-rtems* configurations. - * configure: Rebuild. - -Fri Jun 21 16:01:18 1996 Richard Henderson - - * configure.in: Add alpha-*-linuxecoff* target. Use elf for - alpha-*-linux* target. Force bfd_gas for alpha-*. Require - opcodes library for alpha. - * configure: Rebuild with autoconf 2.10. - * config/tc-alpha.c: Substantial rewrite to add ELF support and - use new opcode table. - * config/tc-alpha.h (md_undefined_symbol): Don't define. - (LOCAL_LABEL): Define differently if OBJ_ELF. - (FAKE_LABEL_NAME): Define if OBJ_ELF. - * config/alpha-opcode.h: Remove. - * config/obj-elf.h: If TC_ALPHA, define ECOFF_DEBUGGING. - * Makefile.in (TARG_CPU_DEP_alpha): Depend upon - include/opcode/alpha.h rather than config/alpha-opcode.h. - -Thu Jun 20 19:10:28 1996 Ian Lance Taylor - - * config/obj-aout.c (obj_emit_relocations): Give an error if the - relocation symbol was not resolved. - * config/obj-coff.c (do_relocs_for): Likewise. - - * write.c (adjust_reloc_syms): Refetch the symbol section after - calling S_GET_VALUE, since it may have changed. - - * expr.c (struct expr_symbol_line): Define. - (expr_symbol_lines): New static variable. - (make_expr_symbol): Add entry to expr_symbol_lines. - (expr_symbol_where): New function. - * expr.h: Use extern on function declarations. - (expr_symbol_where): Declare. - * symbols.c (resolve_symbol_value): Try to use expr_symbol_where - rather than printing the meaningless name of an expression - symbol. - -Thu Jun 20 15:57:41 1996 Ken Raeburn - - * config/tc-i386.c (md_number_to_chars): Deleted. - * config/tc-i386.h (md_number_to_chars): New macro. - - * config/tc-alpha.c (build_operate_n, build_mem): Moved earlier in - the file. - (load_symbol_address, load_expression): Use build_mem. - (build_operate): New function. - (emit_addq_r): Use it. - - Wed Mar 13 22:14:14 1996 Pat Rankin - - * symbols.c (colon): #if VMS, use S_SET_OTHER to store `const_flag'. - - Tue Mar 5 14:31:45 1996 Pat Rankin - - * config/tc-vax.h (NOP_OPCODE): Define. - - Sun Feb 4 21:01:03 1996 Pat Rankin - - * config/obj-vms.h (S_IS_COMMON): Define. - (S_IS_LOCAL): Check for \002 as well as \001. - (LONGWORD_ALIGNMENT): New macro. - (SUB_SEGMENT_ALIGN): Use it. - - Fri Jan 26 17:44:09 1996 Pat Rankin - - * config/vms-conf.h: Reconcile with conf.in. - -Wed Jun 19 11:31:50 1996 Ian Lance Taylor - - * write.c (is_dnrange): Only define if TC_GENERIC_RELAX_TABLE is - defined. - - * doc/as.texinfo: Document that any number of hex digits can - follow \x. - - * as.c (struct defsym_list): Define. - (defsyms): New static variable. - (parse_args): Just put --defsym arguments on defsyms list, rather - than defining them. - (main): Define defsyms after output file is created. - - * config/tc-m68k.c (m68k_ip): Reject PRE and POST indexing mode on - cpu32. From Eric Norum . - - * config/tc-mips.c (mips_ip): In cases 'I', 'i', and 'j', set - insn_error rather than calling check_absolute_expr. - - * as.c (emulation_name): Remove unused static variable. - (default_emul_bfd_name): Add return NULL to avoid warning. - * ecoff.c (ecoff_stab): Remove unused variables name and - name_end. - * frags.c (frag_new): Remove unused variable tmp. - * hash.c (hash_grow): Parenthesize + within <<. - (hash_print_statistics): Use %lu, not %d, to print unsigned - long variables. - * messages.c: Include "libiberty.h". - (fprint_value): Add cast to avoid printf warning. - (sprint_value): Likewise. - * read.c: Include "ecoff.h". - (emit_expr): Add casts to avoid printf warnings. - * read.h: Use extern for function declarations. - (pop_insert): Declare. - * stabs.c: Include "ecoff.h". - * subsegs.c (subseg_set_rest): Remove unused variables tmp, - former_last_fragP, and new_fragP. - * subsegs.h (subsegs_print_statistics): Declare. - * symbols.c (debug_verify_symchain): Change macro to discard - arguments. - * write.c (dump_section_relocs): Likewise. - * write.h: Use extern for function declarations. - (write_print_statistics): Declare. - * config/e-mipsecoff.c (mipsecoff_bfd_name): Return NULL to avoid - warning. - * config/e-mipself.c (mipself_bfd_name): Likewise. - * config/obj-elf.h (elf_ecoff_set_ext): Declare. - - * config/tc-sparc.h (TC_RELOC_RTSYM_LOC_FIXUP): If OBJ_ELF, always - emit relocations against external symbols. - - * config/tc-alpha.c (tc_gen_reloc): Output a sensible error - message if bfd_reloc_type_lookup fails, rather than calling - assert. - - * config/tc-alpha.c (alpha_force_relocation): Add - BFD_RELOC_12_PCREL to switch. - -Tue Jun 18 20:29:57 1996 Doug Evans - - * config/tc-i386.h (LOCAL_LABEL,FAKE_LABEL_NAME): Use defaults for - TE_PE (Lfoo, not .Lfoo). - -Tue Jun 18 17:13:33 1996 Ian Lance Taylor - - * read.c (s_fill): Don't warn about a zero repeat count. - - * config/tc-mips.c (mips_ip): Don't warn about using AT as a - coprocessor register. - - * config/tc-i386.c (md_assemble): When checking the size of a - register to set the size of an instruction, do a bitwise and with - Reg8 and Reg16 rather than requiring the type to be exactly Reg8 - or Reg16. - -Tue Jun 18 13:19:51 1996 Jeffrey A. Law - - * config/tc-h8300.c (parse_reg): Tweak error messages. - (build_bytes): Likewise. - (skip_colonthing): Handle :32 suffix. - (get_specific): Promote L_24 to L_32 if it makes a match. - Don't always promote L_8 to L_16. - (do_a_fix_imm): Clean up L_32 and L_24 handling. - - * config/tc-h8300.c (Smode): New variable. - (h8300hmode): Turn off Hmode. - (h8300smode): New function. Turn on Smode and Hmode. - (md_pseudo_table): New ".h8300s" pseudo-op. - (parse_reg): Handle "exr" register. - (get_operand): Handle bizarre syntax for "stm.l" and "ldm.l". - Handle "mach" and "machl" operands for ldmac. - (get_specific): Handle "stm.l" and "ldm.l". - (build_bytes): Handle "stm.l" and "ldm.l"; handle MACREG operands. - * config/tc-h8300.h (COFF_MAGIC): Handle H8/S magic number. - (Smode): Declare. - -Mon Jun 17 15:50:53 1996 J.T. Conklin - - * doc/as.texinfo: Reorder chapter of machine dependent options so - that it is sorted by chip name. - - * doc/as.texinfo: Use consistant spelling of Vax. - * doc/c-vax.texi: Likewise. - -Mon Jun 17 11:26:56 1996 Jeffrey A. Law - - * config/tc-hppa.c (md_pseudo_table): Add ".begin_try" and ".end_try" - pseudo ops. - (tc_gen_reloc, SOM version): Handle R_BEGIN_TRY and R_END_TRY. - (md_apply_fix): Likewise. - (pa_try): New function. - (hppa_force_relocation): Force relocs for BEGIN_TRY and END_TRY. - -Sun Jun 16 22:57:47 1996 Jeffrey A. Law - - * config/tc-hppa.c (md_pseudo_table): Add ".level" pseudo op. - (pa_level): New function. - -Fri Jun 14 20:06:44 1996 Ian Lance Taylor - - * listing.c (listing_newline): Don't do anything if listing is 0. - -Thu Jun 13 17:50:54 1996 Ian Lance Taylor - - * subsegs.c (section_symbol): If symbol_table_frozen is set, call - symbol_create, not symbol_new. - -Wed Jun 12 14:10:44 1996 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Don't set sy_used_in_reloc for an - absolute symbol unless TC_FORCE_RELOCATION returns true. - - * config/obj-coff.c (previous_file_symbol): Remove BFD_ASSEMBLER - version. - (c_dot_file_symbol): BFD_ASSEMBLER version: Don't set the value of - the symbol to a pointer. Don't set previous_file_symbol. - Simplify symbol list rearrangement. - (coff_frob_symbol): Don't do anything with C_FILE symbols. - (coff_adjust_symtab): Don't check previous_file_symbol. - -Mon Jun 10 14:52:29 1996 Michael Meissner - - * config/tc-ppc.c (ppc_elf_lcomm): New function for .lcomm - directive. - (md_pseudo_table): Add ppc_elf_lcomm. - -Mon Jun 10 11:45:51 1996 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Accept ABSL for 'O', so that `bfextu - d0{24:1},d0' works without an immediate prefix on the bit numbers. - (md_begin): Add digits to alt_notend_table. - (md_parse_option): Make s a const pointer. - - * config/tc-sparc.c (md_pseudo_table): Add "empty". - (s_empty): New static function. - - * config/obj-coff.c (struct filename_list): Only define if not - BFD_ASSEMBLER. - (filename_list_head, filename_list_tail): Likewise. - (c_section_symbol): Remove unused BFD_ASSEMBLER version. - (obj_coff_endef, BFD_ASSEMBLER version): Don't set the debugging - flag for C_MOS, C_MOE, C_MOU, or C_EOS symbols, since they should - have a section of N_ABS rather than N_DEBUG. If we do a merge, - remove the new symbol from the list. - (obj_coff_endef, both versions): Call tag_insert even if there is - an old symbol with the same name, if the old symbol does not - happen to be a tag. - (coff_frob_symbol): Check SF_GET_TAG, C_EOF, and C_FILE outside of - the SF_GET_DEBUG condition. Don't call SA_SET_SYM_ENDNDX with a - symbol that will be moved to the end of the symbol list. - (coff_adjust_section_syms): Always call section_symbol for .text, - .data, and .bss. - (coff_frob_section): Likewise. Also, remove unused variable - strname. - - * config/tc-ns32k.c (convert_iif): Call frag_grow rather than - manipulating frags directly. - (md_number_to_field): Adjust mem_ptr correctly if ENDIAN is - defined. - - * app.c (do_scrub_chars): If '/' is LINE_COMMENT_START, check - whether the next character is '*' before checking whether we are - at the start of a line. Permit LINE_COMMENT_START to start a - comment in state 1 (seen some whitespace) as well, to match the - documentation. - - * gasp.c (do_align): Permit a fill value for .align. - -Wed Jun 5 17:09:26 1996 Ian Lance Taylor - - * read.c (next_char_of_string): Warn if a newline is seen in the - middle of a string. Call bump_line_counters when appropriate. - -Wed Jun 5 17:08:36 1996 Richard Henderson - - * symbols.c (colon): Use LOCAL_LABEL. - -Tue Jun 4 10:55:16 1996 Tom Tromey - - * Makefile.in (install): Don't check to see if tooldir exists. - Make $(tooldir) and $(tooldir)/bin. - -Tue Jun 4 10:14:53 1996 Michael Meissner - - * config/ppc-sol.mt (TDEFINES): Don't turn on -mregnames by - default. - -Mon Jun 3 11:34:41 1996 Ian Lance Taylor - - * config/tc-mips.c (mips_ip): Don't call as_warn if we are setting - insn_error. Don't put the string "ERROR" in insn_error. Set - insn_error rather than calling as_warn for an unsupported opcode. - -Sat Jun 1 21:51:55 1996 Ian Lance Taylor - - * config/tc-mips.c (md_parse_option): Check for a 64 bit format - before permitting -64. - * output-file.c (output_file_create): Remove duplicate - bfd_perror. - -Fri May 31 01:08:06 1996 Ian Lance Taylor - - * config/tc-mips.c (md_begin): If -64, create a .MIPS.options - section rather than a .reginfo section. - (mips_elf_final_processing): If -64, write out 64 bit RegInfo - information. - - * config/tc-mips.c (load_register): If mips_isa < 3, permit a 32 - bit value with the high bit set. - -Thu May 30 19:00:19 1996 Ian Lance Taylor - - * read.c (s_lcomm): Set section flags for .sbss section. - - * config/tc-mips.c (mips_64): New static variable. - (mips_target_format): If mips_64, return elf64 targets rather than - elf32 ones. - (md_longopts): Add "32" and "64". - (md_parse_option): Handle -32 and -64. - (md_show_usage): Mention -32 and -64. - (cons_fix_new_mips): If mips_64, don't convert an 8 byte reloc to - a 4 byte one. - -Thu May 30 10:36:19 1996 Michael Meissner - - * config/tc-ppc.c (comment_chars): Make '!' a comment character - for Solaris compatibility. - - * stabs.c (s_stab_generic): Under PowerPC Solaris, convert a - .stabd with 4 arguments into a .stabn. - -Wed May 29 16:43:16 1996 Ian Lance Taylor - - * config/tc-mips.c (macro): When passing X_add_number to - macro_build, cast it to int first. - -Tue May 28 13:29:39 1996 Ian Lance Taylor - - * config/tc-z8k.c (md_apply_fix): Handle fx_r_type of 0, as - created by emit_expr. - - * symbols.c (symbol_create): If bfd_make_empty_symbol fails, call - as_perror rather than assert. - -Fri May 24 18:24:11 1996 Ian Lance Taylor - - * config/tc-mips.c (mips_ip): Mark sections created to hold - floating point information as read only. - -Fri May 24 12:07:54 1996 David Edelsohn - - * config/tc-ppc.c (ppc_set_cpu): Change defaults to match AIX. - -Thu May 23 17:34:24 1996 Michael Meissner - - * read.c (potable): Add .skip as a synonym for .space. - - * stabs.c (s_stab_generic): For PowerPC ELF, allow .stabd to take - 4 arguments, providing the 4th argument is 0, to allow - compatibility with the Solaris assembler. - -Thu May 16 15:51:48 1996 Ian Lance Taylor - - * config/tc-sh.h (struct sh_segment_info_type): Define. - (TC_SEGMENT_INFO_TYPE): Define. - (sh_frob_label): Declare. - (tc_frob_label): Define. - (sh_flush_pending_output): Declare. - (md_flush_pending_output): Define. - * config/tc-sh.c (md_assemble): If relaxing, emit a R_SH_CODE - reloc before the instruction if necessary. - (sh_frob_label): New function. - (sh_flush_pending_output): New function. - (sh_coff_frob_file): Ignore ALIGN, CODE, DATA, and LABEL relocs - when looking for the reloc for the target of .uses. - (md_convert_frag): Fix printf format (%0xlx to 0x%lx). - (sh_force_relocation): Force CODE, DATA, and LABEL relocs to be - emitted. - (md_apply_fix): Ignore CODE, DATA, and LABEL relocs. - (sh_coff_reloc_mangle): Force CODE, DATA, and LABEL relocs to use - the absolute symbol. - - * subsegs.h (segment_info_type): Add tc_segment_info_data field if - TC_SEGMENT_INFO_TYPE is defined. - -Wed May 15 12:23:53 1996 Ian Lance Taylor - - * config/tc-i386.c (md_assemble): Make sure the opcode suffix - matches the register size. - -Wed May 15 08:33:37 1996 Jeffrey A Law (law@cygnus.com) - - * config/obj-coff.c (count_entries_in_chain): Ignore Fixups with - fx_done set. - (do_relocs_for): Likewise. - (fixup_segment): Don't just quit if linkrelax is set. Try to - apply non pc-relative sym1-sym2 fixups, even if linkrelax is - nonzero. - -Fri May 10 14:16:59 1996 Michael Meissner - - * config/tc-ppc.c (ppc_elf_validate_fix): Allow GOT and section - relative relocations with -mrelocatable. Also allow unfixed - relocs in .ex_shared. - -Tue May 7 11:24:10 1996 Ian Lance Taylor - - * config/obj-coff.c (yank_symbols): Check that FNAME_OFFSET is - non-zero before assuming this is a long file name. - (w_strings): Likewise. - (c_dot_file_symbol): Set FNAME_OFFSET to 1 for a long file name. - - * config/obj-coff.c (w_strings): Move declaration of i inside - #ifdef block which uses it. - -Tue May 7 00:49:58 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (do_a_fix_imm): Rename last argument to - "relaxmode". Output relocs which identify various relaxing - possibilities for mov.[bwl] instructions. - (build_bytes): Pass in a relaxing mode to do_a_fix_imm. - -Mon May 6 15:26:28 1996 Doug Evans - - * config/tc-arm.h (TC_HANDLES_FX_DONE): Define. - (MD_APPLY_FIX3): Define. - * config/tc-arm.c (my_get_expression): Only watch for bad segments - if OBJ_AOUT. - (md_apply_fix3): Renamed from md_apply_fix. - If pcrel reloc and symbol is in different section, undo effects - of md_pcrel_from. - -Sat May 4 12:49:35 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (hppa_fix_adjustable): Don't adjust - any reloc with an LR% or RR% field selector for SOM. - -Sat May 4 11:26:19 1996 Ian Lance Taylor - - * Makefile.in: Add subsegs.h to appropriate TARG_CPU_DEP_* - variables. - -Fri May 3 17:58:31 1996 Ian Lance Taylor - - * config/obj-coff.c (coff_frob_symbol): Don't merge a symbol with - SF_GET_STATICS set. - (yank_symbols): Likewise. - -Wed May 1 13:38:17 1996 Ian Lance Taylor - - * subsegs.h (segment_info_type): If MANY_SEGMENTS and not - BFD_ASSEMBLER, add name field. - * config/obj-coff.c: Include "libiberty.h". - (coff_header_append): Handle long section names. - (crawl_symbols): Just use the name field for the symbol name, - without worrying about null byte termination. - (w_strings): Handle long section names. - (write_object_file): Likewise. Also, use the name field, rather - than scnhdr.s_name. - (obj_coff_add_segment): Permit long section names. - (obj_coff_init_stab_section): Use the name field, rather than - scnhdr.s_name. - (adjust_stab_section): Likewise. - * config/te-pe.h (COFF_LONG_SECTION_NAMES): Define. - - * config/tc-i960.c (brtab_emit): Don't set fx_im_disp field. - (mem_fmt): Likewise. - (md_apply_fix): Don't check fx_im_disp field. - -Thu Apr 25 11:39:51 1996 Ian Lance Taylor - - * configure.in: Add * after sparc*-*-vxworks. - * configure: Rebuild. - - * app.c (do_scrub_begin): If tc_comment_chars is not defined, - define it to comment_chars. Use tc_comment_chars rather than - comment_chars. - (do_scrub_chars): Use tc_comment_chars rather than comment_chars. - * config/tc-m68k.h (tc_comment_chars): Define. - (m68k_comment_chars): Declare. - * config/tc-m68k.c (m68k_comment_chars): Rename from - comment_chars. Change into a pointer rather than an array. - (md_longopts): Add "bitwise-or". - (md_parse_option): Handle OPTION_BITWISE_OR. - (md_show_usage): Mention --bitwise-or. - * doc/c-m68k.texi: Document --bitwise-or. - -Wed Apr 24 11:28:38 1996 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Prevent attempts to use long offsets - in 68000 mode. - - * config/obj-coff.c (obj_coff_section): BFD_ASSEMBLER version: - call demand_empty_rest_of_line. Non BFD_ASSEMBLER version: - correct handling of input line pointer, and call - demand_empty_rest_of_line. - -Mon Apr 22 18:02:37 1996 Doug Evans - - * config/tc-sparc.c (in_bitfield_range): New static function. - (sparc_ip): New cases X,Y. Use SPARC_OPCODE_ARCH_V9_P. - (md_apply_fix, cases BFD_RELOC_32_PCREL_S2, - BFD_RELOC_SPARC_{WDISP16,WDISP19}): Fix undefined code. - (md_apply_fix): New cases BFD_RELOC_SPARC_[56]. - (tc_gen_reloc): New cases BFD_RELOC_SPARC_[56]. - -Thu Apr 18 18:58:33 1996 Ian Lance Taylor - - * config/obj-coff.c: BFD_ASSEMBLER: - (coff_last_bf): New static variable. - (coff_frob_symbol): Set endndx of a .bf symbol. - Non BFD_ASSEMBLER: - (obj_coff_endef): Call SF_SET_PROCESS on a .bf symbol. - (last_bfP): New static variable. - (yank_symbols): Set endndx of a .bf symbol. - -Thu Apr 18 11:53:58 1996 Michael Meissner - - * config/tc-ppc.c (md_parse_option): Add support for Solaris's -le - and -s options. Add -be for good measure. - -Wed Apr 17 12:31:01 1996 Ian Lance Taylor - - * read.c (s_space): Support non-constant fill value. Handle fill - value correctly for a size other than 1. - -Tue Apr 16 15:17:40 1996 Doug Evans - - * config/tc-arm.c (my_get_float_expression): Update call to - gen_to_words, X_PRECISION changed from 6 to 5. - -Tue Apr 16 10:25:42 1996 Michael Meissner - - * config/tc-ppc.c (register_name,reg_name_search): Move register - name lookup from PE specific code to all targets. Add support for - -mregnames/-mno-regnames to control whether register names are - expanded or not. - (md_assemble): Call register_name for all platforms. - (md_parse_option): Add support for -mregnames/-mno-regnames. - - * configure.in (powerpcle*-*-solaris): Add support. - (powerpc*-*-linux): Ditto. - * configure: Regenerate. - - * config/ppc-sol.mt: New config file for PowerPC Solaris. - -Mon Apr 15 12:26:33 1996 Ian Lance Taylor - - * config/tc-mips.c (mips_frob_file): Permit multiple %hi relocs to - be associated with a single %lo reloc. - - * config/tc-mips.c (load_address): Cast X_add_number to valueT - before comparing against MAX_GPREL_OFFSET, so that negative - numbers are handled correctly. - (macro): Likewise. - -Thu Apr 11 12:39:02 1996 Ian Lance Taylor - - * config/tc-sparc.c (last_insn): New static variable. - (md_assemble): Warn about putting floating point branches in a - delay slot. If architecture is less than v9, insert NOP - instructions between floating point instructions and floating - point branches. (The SunOS assembler does both these operations.) - Save the last instruction opcode. - (sparc_ip): Add pinsn parameter. Change caller. - - * config/tc-m68k.c (md_estimate_size_before_relax): Correct check - for byte jump to next instruction to skip empty frags. - -Wed Apr 10 16:48:12 1996 Ian Lance Taylor - - * config/tc-alpha.c (alpha_ip): If we are going to call emit_add64 - for addq with a 16 bit signed value, just emit a lda instruction - instead. - -Wed Apr 10 14:34:49 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (do_a_fix_imm): Don't cut off high bits - of a 32bit operand. - -Mon Apr 8 14:42:53 1996 Ian Lance Taylor - - * configure.in: Permit --enable-shared to specify a list of - directories. - * configure: Rebuild. - -Fri Apr 5 17:01:35 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (get_specific): Remove some #if 0 code. - (build_bytes): Remove all ABSMOV related code; it's unnecessary. - -Fri Apr 5 15:13:10 1996 Andreas Schwab - - * config/atof-ieee.c: Fix handling of denormalized extended - precision numbers and overflow/underflow detection. - (MAX_PRECISION, X_PRECISION, P_PRECISION): Changed from 6 to 5, to - not include the 16 bit gap in the m68k extended precision format. - -Fri Apr 5 14:29:23 1996 Ian Lance Taylor - - * configure.in: Add i386-*-freebsdelf* target; from John Polstra - . - * configure: Rebuild. - -Fri Apr 5 18:39:28 1996 James G. Smith - - * config/tc-mips.c: Allow non-zero offsets from .sdata symbols to - be accessed using the $gp register. - * config/tc-mips.h (MAX_GPREL_OFFSET): Added. - -Wed Apr 3 10:56:14 1996 Doug Evans - - * config/tc-sparc.c (sparc_md_end): Set bfd machine number to - bfd_mach_sparc_sparclet if current_architecture is sparclet. - -Mon Apr 1 16:55:44 1996 Ian Lance Taylor - - * read.c (get_line_sb): Bump line counters based on - input_line_pointer[-1], not *input_line_pointer. Don't bother to - call LISTING_NEWLINE. - (s_macro): Don't call demand_empty_rest_of_line. - * app.c (do_scrub_chars): When handling C style comments, unget - ch2 rather than ch. - -Fri Mar 29 16:15:06 1996 Ian Lance Taylor - - * read.h (enum linkonce_type): Define. - (s_linkonce): Declare. - * read.c (potable): Add "linkonce". - (s_linkonce): New function. - * subsegs.h (segment_info_type): Add linkonce field to - MANY_SEGMENTS && ! BFD_ASSEMBLER section. - * config/obj-coff.h (obj_handle_link_once): Define if TE_PE. - (obj_coff_pe_handle_link_once): Declare if TE_PE. - * config/obj-coff.c: If TE_PE and not BFD_ASSEMBLER, #include - "coff/pe.h". - (obj_coff_pe_handle_link_once): New function, defined if TE_PE. - (c_section_symbol): If TE_PE, set the x_comdat field in the aux - entry based on the linkonce field in segment_info. - * doc/as.texinfo: Document .linkonce. - -Fri Mar 29 11:31:27 1996 J.T. Conklin (jtc@lisa.cygnus.com) - - * doc/as.1: Changed to be recognized by catman -w on Solaris. - -Thu Mar 28 15:27:47 1996 Ian Lance Taylor - - * stabs.c (s_stab_generic): Call the listing functions before - doing the rest of the processing, which may involve freeing the - string. Pass string, not string + stroff, to OBJ_PROCESS_STAB in - SEPARATE_STAB_SECTIONS case. - - * config/tc-hppa.c: Remove nested comment. - (tc_gen_reloc): Move label done inside the ifdef in which it is - used. - (md_apply_fix): Pass pointers to correct types to libhppa.h - functions. Always return a value. - - * config/tc-mips.h (tc_frob_file): Define. - (mips_frob_file): Declare. - * config/tc-mips.c (struct mips_hi_fixup): Define. - (mips_hi_fixup_list): New static variable. - (imm_unmatched_hi): New static variable. - (md_assemble): Clear imm_reloc, imm_unmatched_hi, and - offset_reloc. Pass imm_unmatched_hi to append_insn. - (append_insn): Add unmatched_hi parameter. If it is set, add the - new fixup to mips_hi_fixup_list. Change all callers. - (mips_ip): Set imm_unmatched_hi when appropriate. - (mips_frob_file): New function. - -Thu Mar 28 11:47:59 1996 Doug Evans - - * configure.in (sparc-*-solaris2*): Renamed from sparc*-*-solaris2*. - * configure: Regenerated. - -Tue Mar 26 18:19:12 1996 Ian Lance Taylor - - * as.c (main): Call bfd_set_error_program_name. - -Fri Mar 22 11:13:00 1996 Ian Lance Taylor - - * as.h (strdup): Don't declare. - * stabs.c: Include libiberty.h - (get_stab_string_offset): Use xstrdup rather than strdup. - (s_stab_generic): Likewise. - * as.c (parse_args): Likewise. - * read.c (s_mri_sect): Likewise. - - * gasp.c (change_base): Recognize \(...) construct documented to - pass through enclosed characters literally through to the output. - (process_assigns): Likewise. Also, be more careful to avoid - looking past the end of the buffer. - -Thu Mar 21 13:18:43 1996 Ian Lance Taylor - - * config/tc-i386.c (md_parse_option): If OBJ_ELF, ignore -k for - FreeBSD compatibility. From John Polstra . - -Wed Mar 20 18:13:32 1996 Andreas Schwab - - * doc/as.texinfo, doc/c-i960.texi: Fix typos. - -Wed Mar 20 17:05:16 1996 David Mosberger-Tang - - * config/alpha-opcode.h: Added cvtst instruction. - -Mon Mar 18 13:12:46 1996 Ian Lance Taylor - - * ecoff.c (ecoff_stab): Don't try to make a symbol out of the stab - string. Extract the addend from the result of expression. - -Fri Mar 15 17:10:43 1996 Ian Lance Taylor - - * app.c (do_scrub_chars): If whitespace is seen in state 11, and - LABELS_WITHOUT_COLONS is not defined, and we are not in m68k MRI - mode, change the state to 3 rather than 1. - -Thu Mar 14 18:18:25 1996 Ian Lance Taylor - - * config/obj-coff.h (C_REGISTER_SECTION): Change from 20 to 50, to - correspond to 11 March change. - -Thu Mar 14 15:27:10 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (build_bytes, MEMIND case): Generate - an R_MEM_INDIRECT reloc rather than R_RELBYTE. - -Tue Mar 12 12:21:10 1996 Ian Lance Taylor - - * configure: Rebuild with autoconf 2.8. - -Mon Mar 11 18:57:12 1996 Ian Lance Taylor - - * config/atof-ieee.c (gen_to_words): Improve handling of - X_PRECISION numbers. Based on patches from Andreas Schwab - . - -Mon Mar 11 09:59:53 1996 Steve Chamberlain - - * as.h (SEG_NORMAL, SEG_LIST): Bump segment limit from 10 to 40. - (SEG_LAST): New. - * subsegs.c (MANY_SEGMENTS): Increase segment limit. - * config/obj-coff.c (seg_N_TYPE, seg_info_off_by_4): Likewise. - (do_relocs_for, w_symbols, obj_coff_add_segment, do_linenos_for, - crawl_symbols, coff_header_append): Loop to SEG_LAST rather than - SEG_E9. - -Thu Mar 7 15:17:39 1996 Doug Evans - - * config/tc-sparc.c (sparc_ip): Handle operand char 'O' (neg reg). - -Thu Mar 7 09:19:15 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (SUBSEG_MILLI): Define. - (pa_def_subspaces): Add $MILLICODE$. - (pa_spaces_begin): Set section flags for $MILLICODE$. - -Wed Mar 6 14:11:30 1996 Ian Lance Taylor - - * config/obj-elf.c (obj_elf_section): Only SEC_LOAD if the type is - not SHT_NOBITS. Don't tamper with flags based on type if a - special section was found (revert Feb 29 change). - - * config/tc-sh.c (sh_do_align): Only align using the nop pattern - if aligning to a longword boundary or greater. - -Tue Mar 5 15:10:43 1996 Jim Wilson - - * config/tc-sh.c (sh_do_align): Pass 1 not 2 to frag_align. - -Mon Mar 4 20:50:57 1996 Steve Chamberlain - - * configure.in (i386-*-cygwin32): Don't use bfd_gas. - * configure: Regenerated. - -Mon Mar 4 10:13:06 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c: Add default definitions for R_N0SEL and - R_N1SEL since they're not defined for old versions of hpux. - - * config/tc-hppa.c (tc_gen_reloc): Fix typo in R_COMP2 code. - Set "sym_ptr_ptr" and "addend" fields to dummy values for - R_N0SEL and R_N1SEL. - -Fri Mar 1 10:20:52 1996 Andreas Schwab - - * flonum-konst.c: Add two more constants for 1e+-2048 and - 1e+-4096, and correct the other constants. - - * symbols.c (resolve_symbol_value): Handle O_logical_not. - -Thu Feb 29 13:58:35 1996 Michael Meissner - - * config/obj-elf.c (obj_elf_section): Allow predefined section - types to set the nobits type. Avoid a shadowed declaration. - -Wed Feb 28 15:38:56 1996 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (hppa_fix_adjustable): For SOM, don't - reduce relocs using e_nlrsel field selectors. - - * write.c (fix_new_exp): Don't use #elif. Some compilers - don't handle it. - - * config/tc-hppa.c (selector_table): Add "n", "nl", and "nlr" to - the selector table. - (pa_chk_field_selector): Handle new field selectors for SOM. - -Tue Feb 27 14:42:27 1996 Andreas Schwab - - * configure.in (m68k-*-linux*aout*, m68k-*-linux*): New targets. - * configure: Rebuild. - * config/te-linux.h (LOCAL_LABELS_FB): Define. - * config/tc-m68k.h (TARGET_FORMAT) [TE_LINUX]: Define to - "a.out-m68k-linux". - * config/tc-m68k.c (comment_chars): Don't include '#' if TE_LINUX - is defined. - -Mon Feb 26 18:58:58 1996 Stan Shebs - - * mpw-make.sed: Update to handle shared library support. - -Mon Feb 26 10:34:10 1996 Doug Evans - - * config/tc-sparc.c (sparc_ip): Print all architectures that support - the insn on mismatch. - -Fri Feb 23 21:44:39 1996 Rob Savoye - - * configure.in: Add support for a29-coff. - * configure: Rebuild. - -Thu Feb 22 16:39:43 1996 Ian Lance Taylor - - * config/tc-sh.c (sh_coff_frob_file): Don't consider the address - of the section when looking for the R_SH_USES fixup, because the - frag addresses have not yet been adjusted. - - * gdbinit.in: Set a breakpoint on as_warn_where. - - * config/tc-mips.c (macro): Add missing arguments to macro_build - omitted in last change. From Jim Wilson . - -Wed Feb 21 17:00:32 1996 Ian Lance Taylor - - * config/tc-h8300.c (tc_reloc_mangle): Change reloc based on size - if it is TC_CONS_RELOC. Set a size of 4 to R_RELLONG. - -Wed Feb 21 09:25:39 1996 Doug Evans - - * config/tc-sparc.c (sparc_ip): Recognize %asr0 for v8. - -Tue Feb 20 21:48:03 1996 Doug Evans - - * config/tc-sparc.c (parse_keyword_arg): Accept leading '%'. - (sparc_ip): Accept %asr[1..31] for v8 and %asr[%16..31] for v9. - Recognize [uU] format args as sparclet cpregs. - -Tue Feb 20 22:25:55 1996 Ian Lance Taylor - - * config/tc-sh.c (sh_handle_align): Don't emit R_SH_ALIGN relocs - in bss_section. - -Mon Feb 19 14:16:24 1996 Ian Lance Taylor - - * config/tc-sparc.h (TC_RELOC_RTSYM_LOC_FIXUP): Check S_IS_WEAK as - well as S_IS_EXTERNAL. - (tc_fix_adjustable): Likewise. - * config/tc-sparc.c (md_apply_fix): In OBJ_ELF case, check for - S_IS_WEAK as well as S_IS_EXTERNAL when deciding whether to return - early. - (tc_gen_reloc): Check S_IS_WEAK as wel as S_IS_EXTERNAL when - deciding whether to convert BFD_RELOC_32_PCREL_S2 if PIC. - -Mon Feb 19 02:15:57 1996 Doug Evans - - * config/tc-sparc.c (max_architecture): Change to sparclite for - 32 bit arch. - (default_compatible): Delete. - (sparc_ffs): New function. - (md_begin): Only call SPARC_OPCODE_CONFLICT_P once. - (sparc_ip): Rewrite architecture match and bump logic. - -Sun Feb 18 15:03:50 1996 Ian Lance Taylor - - * configure.in: Check for 'do not mix' from native linker before - trying to use -rpath. - * configure: Rebuild. - -Fri Feb 16 16:53:31 1996 Ian Lance Taylor - - * config/obj-coff.h (SF_ADJ_LNNOPTR): Define (non BFD_ASSEMBLER). - (SF_GET_ADJ_LNNOPTR): Define (non BFD_ASSEMBLER). - (SF_SET_ADJ_LNNOPTR): Define (non BFD_ASSEMBLER). - * config/obj-coff.c (obj_coff_endef): Set ADJ_LNNOPTR when LNNOPTR - is set. - (w_symbols): If ADJ_LNNOPTR is set, add the section lnnoptr field - to the symbol lnnoptr field, to get the correct file offset. - -Thu Feb 15 14:48:38 1996 Michael Meissner - - * config/obj-elf.c (elf_frob_symbol): On the PowerPC, force all - symbols that are not function, file, or section symbols to be - object types. - -Thu Feb 15 11:20:18 1996 Ian Lance Taylor - - * configure: Set and substitute RPATH_ENVVAR. - * configure: Rebuild. - * Makefile.in (RPATH_ENVVAR): New variable. - (check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH. - - * configure.in: Accept i686. From H.J. Lu : i386 - doesn't need opcodes. If configuring shared, opcodes needs bfd. - * configure: Rebuild. - -Wed Feb 14 16:33:12 1996 Martin Anantharaman - - * read.c (s_mri_sect): Don't return '\0' in type. Set all - appropriate flags in BFD section. - - * configure.in (m68k-*-psos*): New target. - * configure: Rebuild. - * config/te-psos.h: New file. - * config/tc-m68k.c (comment_chars): Don't include '#' if TE_PSOS - is defined. - -Wed Feb 14 13:43:24 1996 Ian Lance Taylor - - From Alan Modra : - * configure.in: Remove duplicate setting of cpu_type. Check - whether opcodes library is required for on all targets, not just - primary one. - * configure: Rebuild. - - * config/tc-mips.c (mips_big_got): New static variable. - (s_extern): Don't declare. - (reg_needs_delay): New static function. - (macro_build): Permit GOT/CALL_HI/LO relocs. - (macro_build_lui): If place is not NULL, use the number in the - expression. - (load_address): Handle mips_big_got case. - (macro): Handle mips_big_got for M_LA_AB, M_JAL_A, and load and - store macros. - (OPTION_XGOT): Define. - (md_longopts): Add "xgot" if OBJ_ELF. - (md_parse_option): Handle -xgot. - (md_show_usage): Mention -xgot. - (md_apply_fix): Permit GOT/CALL_HI/LO relocs. - (tc_gen_reloc): Handle GOT/CALL_HI/LO relocs. - -Wed Feb 14 11:22:27 1996 Andreas Schwab - - * config/tc-m68k.c (m68k_ip) [operand kind '#']: When fixing - the byte relocation, point it to the low byte of the word. - -Tue Feb 13 15:31:18 1996 Ian Lance Taylor - - * configure.in: Set HDLFLAGS for *-*-hpux with --enable-shared. - * configure: Rebuild. - -Mon Feb 12 15:53:46 1996 Doug Evans - - * configure.in: Recognize any sparc* cpu. - * configure: Regenerated. - -Mon Feb 12 15:41:21 1996 Ian Lance Taylor - - * read.c (potable): Add "mri" and ".mri". - (s_mri): New function. - * read.h (s_mri): Declare. - * app.c (scrub_m68k_mri): New static variable. - (mri_pseudo): New static variable. - (do_scrub_begin): Add m68k_mri parameter. Use it rather than - flag_m68k_mri. Initialize scrub_m68k_mri. - (mri_state, mri_last_ch): New static variables. - (struct app_save): Add scrub_m68k_mri, mri_state, and mri_last_ch - fields. - (app_push): Save new fields. - (app_pop): Restore new fields. - (do_scrub_chars): Check scrub_m68k_mri rather than flag_mri_mri. - If TC_M68K, use a trivial state machine to look for occurrences of - the .mri pseudo-op, and change the mode appropriately. - * as.h (do_scrub_begin): Update prototype. - * input-scrub.c (input_scrub_begin): Pass flag_m68k_mri to - do_scrub_begin. - * config/tc-m68k.c (reg_prefix_optional_seen): New static - variable. - (m68k_mri_mode_change): New function. - (md_parse_option): Set reg_prefix_optional_seen. - * config/tc-m68k.h (m68k_mri_mode_change): Declare. - (MRI_MODE_CHANGE): Define. - * doc/as.texinfo: Document .mri pseudo-op. - - * app.c (do_scrub_chars): In MRI mode, don't treat '#' as a - comment character. - -Mon Feb 12 15:16:29 1996 Andreas Schwab - - Support for OBJ_ELF on m68k, mostly inside #ifdef OBJ_ELF: - * config/m68k-parse.h (enum pic_relocation): Define. - (struct m68k_exp): Add pic_reloc field. - * config/tc-m68k.h (TC_RELOC_RTSYM_LOC_FIXUP): Define. - (tc_fix_adjustable): Define to call tc_m68k_fix_adjustable. - (NO_RELOC): Define to BFD_RELOC_NONE if BFD_ASSEMBLER, to zero - otherwise. - * config/tc-m68k.c: Delete definition of NO_RELOC. - (struct m68k_it): Add pic_reloc field. - (add_fix): Copy over pic_reloc field. - (md_pseudo_table): Interpret .align parameter as byte count. - (mote_pseudo_table): Likewise. - (tc_m68k_fix_adjustable): New function. - (get_reloc_code): New function. - (md_assemble): Use it as last argument to fix_new_exp. - (md_apply_fix_2): For a relocation against a symbol don't put the - addend into the data. - (tc_gen_reloc): Different addend computation for OBJ_ELF. - (m68k_ip): Don't relax an operand that requires pic relocation. - (md_begin): Align .text, .data and .bss on 4 byte boundary by - default. - * write.c (fixup_segment): Don't add symbol value to addend if - TC_M68K and OBJ_ELF. - * config/m68k-parse.y (yylex): Handle @PLTPC, etc. - (motorola_operand): Add rule for `(zapc, EXPR)'. - -Mon Feb 12 10:07:33 1996 David Mosberger-Tang - - * ecoff.c (ecoff_directive_weakext): Fixed so that whitespace - *really* is permissible before the comma. - -Mon Feb 12 00:12:13 1996 Ian Lance Taylor - - * config/tc-sh.c (sh_do_align): Align to a 2 byte boundary before - inserting nop instructions. - -Fri Feb 9 10:54:19 1996 Ian Lance Taylor - - * config/te-aux.h: Change include of aux.h to aux-coff.h. - -Thu Feb 8 20:02:58 1996 Ian Lance Taylor - - * config/tc-i960.c (tc_coff_symbol_emit_hook): Correct storage - class setting for a CALLNAME symbol in COFF. - - * read.c (potable): Pass negative numbers for new .balign[wl] and - .p2align[wl] pseudo-ops. - (s_align_bytes): Treat a negative argument as specifying the fill - length. - (s_align_ptwo): Likewise. - -Wed Feb 7 14:12:03 1996 Ian Lance Taylor - - * read.c (potable): Add balignw, balignl, p2alignw, and p2alignl. - (do_align): Take new len parameter. Change all callers. Pass it - to md_do_align. - (s_align_bytes): Arg now indicates the length of the fill pattern. - (s_align_ptwo): Likewise. - * config/obj-coff.c (write_object_file): Pass length to - md_do_align. - * config/tc-i386.h (md_do_align): Take new len parameter. - * config/tc-m88k.h (md_do_align): Likewise. - * config/tc-m88k.c (m88k_do_align): Likewise. - * config/tc-sh.h (md_do_align): Likewise. - * config/tc-sh.c (sh_do_align): Likewise. - * doc/as.texinfo: Document new pseudo-ops. - - * config/obj-coff.c (fixup_mdeps): Divide offset by fr_var, as is - done in cvt_frag_to_fill. - - * config/tc-sh.h (sh_do_align): Declare. - (md_do_align): Define. - * config/tc-sh.c (sh_do_align): New function. - - * ecoff.c (ecoff_build_lineno): Don't try to store the address - difference if the next address is before the current one. - - * config/tc-m68k.c (struct m68k_cpu): Add alias field. - (archs): Initialize new field. - (m68k_ip): Don't list alias names when listing CPUs which support - an instruction. - - * as.c (main): Call parse_args before read_begin. - * app.c (do_scrub_chars): If flag_m68k_mri, don't put a dot in - front of generated pseudo-ops. - * read.c (potable): Ignore "name". - (s_app_file): Permit a single quote after the string, since one - may appear in m68k MRI mode. - - * configure.in: Check for --enable-shared. If linking against - shared BFD and opcodes, fix library name on SunOS, and try to set - -rpath reasonably. - * configure: Rebuild. - -Tue Feb 6 15:16:17 1996 Ian Lance Taylor - - * as.h (flag_m68k_mri): Declare. - * as.c (parse_args): If TC_M68K, set flag_m68k_mri for -M. - * Many files: For MRI syntax that is specific to the m68k MRI - assembler, check flag_m68k_mri rather than flag_mri or - MRI_MODE_NEEDS_PSEUDO_DOT. - -Mon Feb 5 16:29:11 1996 Ian Lance Taylor - - * config/tc-i960.c (ARCH_HX): Define. - (arch_tab): Add HX. - (targ_has_sfr): Handle ARCH_HX. - (targ_has_iclass): Handle ARCH_HX. - (tc_coff_fix2rtype): Add return 0 to avoid warning. - (tc_headers_hook): If the architecture was specified explicitly, - use it when setting the flags. Set the extern variable coff_flags - rather than headers->filehdr.f_flags, since the latter is set - unconditionally in obj-coff.c. - (i960_handle_align): Remove unused variable fixp. - - Support for building bfd and opcodes as shared libraries, based on - patches from Alan Modra : - * configure.in: Set OPCODES and BFD to search directories. - Substitute OPCODES_DEP and BFDDEP. On SunOS, set HLDFLAGS. - * configure: Rebuild. - * Makefile.in (LDFLAGS, HLDFLAGS): New variables. - (LIBDEPS): New variable. - (as.new0: Depend upon $(LIBDEPS) rather than $(LIBS). Use - $(HLDFLAGS) in link. - (check): Set LD_LIBRARY_PATH in the environment. - -Fri Feb 2 17:41:53 1996 Michael Meissner - - * config/tc-ppc.h (ELF_TC_SPECIAL_SECTIONS): Make .sdata2, .sbss2, - .PPC.EMB.sdata0, and .PPC.EMB.sbss0 sections all default to - read-only, not read/write. - -Fri Feb 2 14:09:25 1996 Alan Modra - - * Makefile.in (INSTALL_XFORM): Remove -e. - -Fri Feb 2 12:32:15 1996 Ian Lance Taylor - - * write.c (write_relocs): Use S_IS_DEFINED and S_IS_COMMON rather - than comparing S_GET_SEGMENT to undefined_section. - (write_object_file): Skip symbols which were equated to an - undefined or common symbol. - * symbols.c (resolve_symbol_value): Use S_IS_DEFINED and - S_IS_COMMON rather than comparing S_GET_SEGMENT to - undefined_section. - (S_GET_VALUE): Likewise. Avoid recursion problems if S_IS_DEFINED - or S_IS_COMMON call S_GET_VALUE. - * config/obj-aout.h (S_IS_COMMON): Define if not BFD_ASSEMBLER. - * config/obj-aout.c (obj_emit_relocations): If a reloc is equated - to an undefined or common symbol, convert the reloc to be against - the target symbol. - (obj_crawl_symbol_chain): Skip symbols which were equated to an - undefined or common symbol. - * config/obj-bout.h (S_IS_COMMON): Define if not BFD_ASSEMBLER. - * config/obj-bout.c (obj_emit_relocations): If a reloc is equated - to an undefined or common symbol, convert the reloc to be against - the target symbol. - (obj_crawl_symbol_chain): Skip symbols which were equated to an - undefined or common symbol. - * config/obj-coff.c (do_relocs_for): Use S_IS_DEFINED and - S_IS_COMMON rather than comparing S_GET_SEGMENT to - undefined_section. - (yank_symbols): Skip symbols which were equated to an undefined or - common symbol. - -Thu Feb 1 15:34:32 1996 Ian Lance Taylor - - * config/obj-aout.h (S_IS_LOCAL): Check for \002 as well as \001. - * config/obj-bout.h (S_IS_LOCAL): Likewise. - - * configure.in: Make sure we only add m68k-parse.o to - ${extra_objects} once, no matter how many m68k targets have been - enabled. - * configure: Rebuild. - -Wed Jan 31 18:31:46 1996 Steve Chamberlain - - * configure.in (i386-*-cygwin32, ppc-*-cygwin32): New. - * configure: Rebuild. - -Wed Jan 31 14:03:17 1996 Richard Henderson - - * config/tc-m68k.c (md_pseudo_table): Add "extend" and "ldouble". - * doc/c-m68k.texi: Document .extend and .ldouble. - - * configure.in (m68*-apple-aux*): New target. - * config/te-aux.h: New file. - * config/obj-coff.c (compare_external_relocs): New static function - if TE_AUX. - (do_relocs_for): Sort relocs if TE_AUX. - (fixup_segment): If TE_AUX, store common symbol value in segment. - * config/tc-m68k.h (TARGET_FORMAT): Define if TE_AUX. - -Wed Jan 31 12:24:58 1996 Ian Lance Taylor - - * config/obj-coff.h (S_IS_LOCAL): Check for \002 as well as \001. - - * config/tc-mips.c (s_mips_globl): Set BSF_OBJECT if it is not - BSF_FUNCTION. - (s_cpload): Set BSF_OBJECT for _gp_disp symbol. - * read.c (s_lcomm): If S_SET_SIZE is defined, set the size of the - symbol. - * ecoff.c (add_procedure): Set the BSF_FUNCTION flag. - (ecoff_build_symbols): If S_SET_SIZE is defined, set the size of - an undefined symbol and the size of a function symbol. - * config/obj-elf.c (elf_frob_symbol): If TC_MIPS, set BSF_OBJECT - for all common symbols. - -Tue Jan 30 12:35:24 1996 Ken Raeburn - - * config/tc-i960.c (parse_memop): In MRI mode, don't use implicit - scaling of index. - - * expr.c (operand): Accept 0x hex constants in MRI mode if not on - m68k. - -Mon Jan 29 12:21:30 1996 Ian Lance Taylor - - * config/obj-elf.c (obj_elf_type): Set BSF_OBJECT flag for a type - of object. From Ronald F. Guilmette . - - * ecoff.c (localsym_t): Add addend field. - (add_ecoff_symbol): Add addend argument. Change all callers. - (coff_sym_value): Make static. - (coff_sym_addend): New static variable. - (ecoff_directive_def): Initialize coff_sym_addend. - (ecoff_directive_val): Accept symbol + constant. - (ecoff_directive_endef): Pass coff_sym_addend to add_ecoff_symbol. - (ecoff_build_symbols): Include the addend in the symbol value. - -Fri Jan 26 19:28:52 1996 Kim Knuttila - - * config/tc-ppc.c (md_assemble): Ignore overflow on - BFD_RELOC_16_GOTOFF and BFD_RELOC_PPC_TOC16. - -Fri Jan 26 16:14:17 1996 Michael Meissner - - * config/tc-ppc.c (md_apply_fix3): SDA21 relocations are now 4 - bytes in size, so offset appropriately in big endian mode when - writing the bottom 2 bytes. - -Thu Jan 25 20:26:23 1996 Doug Evans - - * config/tc-sparc.c (default_compatible): New static local. - (md_begin): Initialize it. Rewrite warn_on_bump handling. - (sparc_ip): If no architecture or -bump specified, don't mark as - mismatched those in default_compatible. - -Thu Jan 25 12:21:53 1996 Ian Lance Taylor - - SCO ELF support from Robert Lipe : - * configure.in (i386-*-sco*elf*): Use fmt elf, targ sco5. - * configure: Rebuild. - * config/sco5.mt: New file; set TDEFINES to -DSCO_ELF. - * config/tc-i386.c (sco_id): New function, if SCO_ELF. - * config/tc-i386.h (tc_init_after_args): Define if SCO_ELF. - (sco_id): Declare if SCO_ELF. - -Thu Jan 25 03:10:53 1996 Doug Evans - - * config/tc-sparc.c (initial_architecture,can_bump_v9_p): Deleted. - ({max,warn_after}_architecture): New static locals. - (md_begin): Replace NUMOPCODES with sparc_num_opcodes. - If both architecture and -bump requested, set max_architecture to max. - (sparc_md_end): Simplify. - (sparc_ip): Replace references to can_bump_v9_p with max_architecture. - Rewrite code to bump architecture and check for conflicts. - (md_longopts): Recognize -xarch={v8plus,v8plusa} for compatibility - with Solaris assembler. - (md_parse_option): Likewise. Call sparc_opcode_lookup_arch. - (md_show_usage): Update. - -Wed Jan 24 22:11:03 1996 Doug Evans - - * Makefile.in (RUNTEST): Fix reference to $${srcdir}. - -Mon Jan 22 09:21:36 1996 Doug Evans - - * config/tc-sparc.h (TARGET_FORMAT): Use #ifdef SPARC_ARCH64 instead of - #ifdef sparcv9 when choosing value. - (ENV64): Delete. - (md_end): Define. - (sparc_md_end): Declare. - * config/tc-sparc.c (SPARC_V9): Renamed from sparcv9. - (initial_architecture): New static local. - (can_bump_v9_p): Likewise. - (NO_V9): Delete all occurrences. - (sparc_md_end): New function. - (sparc_ip): New local v9_arg_p. Rework fp reg number test. - Don't bump architecture to v9 unless can_bump_v9_p set. - (md_parse_option): -A passed, set can_bump_v9_p accordingly. - * configure.in (sparc64 target cpu): Don't set obj_format here. - (SPARC_V9): Renamed from sparcv9. - (sparc64-*-elf*): Define SPARC_ARCH64. - * configure: Regenerated. - * acconfig.h (SPARC_V9): Renamed from sparcv9. - (SPARC_ARCH64): Add. - * conf.in: Regenerated. - * config/vmsconf.h: Update. - -Mon Jan 22 17:24:47 1996 James G. Smith - - * config/tc-mips.c (load_register): Optimise "dli" loads. - (md_show_usage): add "-mcpu=vr4100" to help text. - -Mon Jan 22 11:53:00 1996 Ian Lance Taylor - - * symbols.c (resolve_symbol_value): If a symbol is equated to an - undefined symbol, preserve the X_op of O_symbol. - (S_GET_VALUE): Fix check to permit this case. - * write.c (write_relocs): If a reloc is against an undefined - symbol equated to another symbol, change the reloc to be against - the latter symbol. - * config/obj-coff.c (do_relocs_for): Likewise. - - * config/tc-ppc.c (ppc_csect): An unnamed csect is storage class - XMC_PR. - -Mon Jan 22 10:59:48 1996 Michael Meissner - - * config/obj-elf.c (elf/ppc.h): Include elf/ppc.h if target - computer is PowerPC. - - * config/tc-ppc.c (md_apply_fix3): Add more embedded relocations. - - * config/tc-ppc.h (ELF_TC_SPECIAL_SECTIONS): Add sections - mentioned in the eabi. - -Thu Jan 18 17:58:19 1996 Kim Knuttila - - * config/tc-ppc.c (ppc_reldata): Changed alignement on reldata_section - * config/tc-ppc.c (ppc_pdata): Changed the alignment on pdata_section - -Mon Jan 15 17:43:42 1996 Michael Meissner - - * config/tc-ppc.c (mapping): Add more relocation suffixes. - -Sun Jan 14 21:29:36 1996 Michael Meissner - - * config/tc-ppc.c (ppc_elf_validate_fix): Allow .gcc_except_table - as a section it is ok to have unadorned -mrelocatable pointers in. - -Sat Jan 13 11:09:08 1996 Michael Meissner - - * config/tc-ppc.c (ppc_section*): Wrap these functions inside - #ifdef OBJ_ELF. - -Fri Jan 12 15:32:07 1996 Michael Meissner - - * config/obj-elf.c (obj_elf_section): Add hooks so machine - dependent section attributes can be handled. - - * config/tc-ppc.h: (md_elf_section_{letter,type,word,flags}): New - macros to add support for exclude section flag and ordered section - type. - - * config/tc-ppc.c (ppc_elf_section_{letter,type,word,flags}): New - functions to add support for exclude section flag and ordered - section type. - -Fri Jan 12 12:04:00 1996 Ian Lance Taylor - - * subsegs.c (section_symbol): Don't try to look up the section - symbol in the hash table. It should be possible to have a symbol - with the same name as a section, but no connection to it. - - * read.c (cons_worker): Only call mri_comment_end from flag_mri. - From James Carlson . - - * expr.c (operand): Skip whitespace after a close parenthesis. - From James Carlson . - -Tue Jan 2 12:43:23 1996 Jim Wilson - - * config/tc-sh.c (md_apply_fix): Call as_bad_where instead of - as_warn_where for relocation overflow. - (parse_reg): Accept register name only if next character is - not alphanumeric. - -For older changes see ChangeLog-9295 diff --git a/gas/ChangeLog-9899 b/gas/ChangeLog-9899 deleted file mode 100644 index c2e4d897a..000000000 --- a/gas/ChangeLog-9899 +++ /dev/null @@ -1,4860 +0,0 @@ -1999-12-27 Alan Modra - - * config/tc-i386.c (MATCH): Relax JumpAbsolute check. Emit a - warning for absolute jump/call without `*' in non-intel mode. No - need to set i.types[0] JumpAbsolute in intel mode. - -1999-12-22 Philip Blundell - - * config/tc-arm.c (arm_s_text): If OBJ_ELF, call the appropriate - hook function when changing sections. - (arm_s_data): Likewise. - -1999-12-14 Nick Clifton - - * config/tc-arm.c (md_parse_option): Add support for -marm720 - command line switch. - -Tue Nov 30 22:59:00 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_pseudo_table): Add ".am33" pseudo-op. - (r_registers, xr_registers): Define. - (r_register_name, xr_register_name): New functions. - (md_assemble): Handle new am33 operand types and instruction - formats. - (mn10300_insert_operand, check_operand): Likewise. - -1999-11-29 Nick Clifton - - * config/tc-arm.c (thumb_mode): Turn into a tristate variable. - (s_force_thumb): Set thumb_mode to 2. - (md_assemble): Do not complain about thumb instructions on a - non-thumb target if thumb_mode is set to 2. - -1999-11-28 Michael Meissner - - * config/tc-alpha.c (toplevel): Include struc-symbol.h. - (alpha_macro_arg): Add MACRO_{LITERAL,BASE,BYTOFF,JSR} cases. - (O_...): Add new machine dependent expressions if we are handling - explicit relocations. - (alpha_reloc_op): New static table holding the explicit relocation - information. - (alpha_literal_hash): New static to hold the hash table for - explicit relocations. - (alpha_macros): Add support for explicit relocations. - (md_begin): If explicit relocations, initialize hash table. - (md_assemble): Don't print a second error if tokenize_arguments - already printed an error message. - (md_apply_fix): Add support for explicit relocations. - (alpha_force_relocation): Ditto. - (alpha_fix_adjustable): Ditto. - (alpha_adjust_symtab): New function to support explicit - relocations. - (alpha_adjust_symtab_relocs): Ditto. - (debug_exp): Debug stub compiled if DEBUG_ALPHA is defined. - (tokenize_arguments): Add debug code if DEBUG_ALPHA is defined. - Add support for explicit relocations. Return -2 if an error - message was already printed. - (find_macro_match): Add support for explicit relocations. Comment - each of the cases. - (emit_insn): Add support for explicit relocations. - (assemble_tokens): Ditto. - (emit_ldgp): Ditto. - (load_expression): Ditto. - (emit_lda): Ditto. - (emit_ldah): Ditto. - (emit_ir_load): Ditto. - (emit_loadstore): Ditto. - (emit_ldXu): Ditto. - (emit_ldil): Ditto. - (emit_sextX): Ditto. - (emit_division): Ditto. - (emit_jsrjmp): Ditto. - (emit_retjcr): Ditto. - - * config/tc-alpha.h (RELOC_OP_P): Enable explicit relocations if - ELF object format. - (tc_adjust_symtab): If explicit relocations, call the function - alpha_adjust_symtab. - (TC_FIX_TYPE): Add fields to be able to move explicit lituse - relocations next to the literal relocation they reference. - (TC_INIT_FIX_DATA): Initialize the new fields. - (TC_FIX_DATA_PRINT): Print the new fields if DEBUG5 is defined. - -Wed Nov 24 20:27:58 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Handle PA2.0 unit completers. Handle - 'B' operand for PA2.0 bb instruction. - -1999-11-18 Nick Clifton - - * config/tc-mcore.h (TC_FORCE_RELOCATION): Define for Mcore-pe - target. - - * config/tc-mcore.c (tc_gen_reloc): Support generation of RVA - relocs. - (mcore_force_relocation): Force relocations to be generated for - RVA relocs. - -1999-11-16 Alan Modra - - * config/tc-i386.c (i386_immediate): Disallow O_big immediates. - (i386_displacement): Disallow O_big displacements. - -Mon Nov 15 20:12:43 1999 Donald Lindsay - - * config/tc-arm.c (do_mia,do_mar,do_mra,do_pld,do_ldrl,do_co_reg): - Small improvements in error checking. - (md_assemble): Support for unconditional ARM instructions. - (md_parse_option): Support for -m[arm]v5e flag. - -1999-11-12 Nick Clifton - - * macro.c (buffer_and_nest): Do not check beyond the end of the - buffer. - -1999-11-11 Nick Clifton - - * macro.c (buffer_and_nest): Look for seperator after TO and - FROM tokens. - -1999-11-08 Andrew Haley - - * app.c (do_scrub_chars): When in State 10, treat backslash - characters in the same way as as symbol characters. - -1999-11-07 Richard Henderson - - * config/tc-alpha.c (alpha_align): Check, don't assert, that - the previous label was in the current section before playing - with auto-alignment. - -1999-11-06 Nick Clifton - - * config/tc-v850.c (v850_force_relocation): Force relocation - for weak symbols. - (v850_pcrel_from_selection): Do not compute a pcrel offset if - the symbol is weak. - -1999-11-05 Michael Meissner - - * expr.h (operatorT): Increase machine dependent operators to 16. - * expr.c (op_rank): Ditto. - -1999-11-03 Ian Lance Taylor - - * read.c (pseudo_set): Reject attempts to set the value of a - section symbol. - - * config/obj-elf.c (obj_elf_ident): Call md_flush_pending_output - if it is defined. - - * config/obj-elf.c (elf_set_index): Add ATTRIBUTE_UNUSED. - - * config/obj-elf.c (elf_frob_file_after_relocs): Don't pass NULL - to bfd_set_section_contents. - -1999-11-03 Nick Clifton - - * config/tc-mcore.h (TARGET_BYTES_BIG_ENDIAN): Change to false. - -1999-11-01 Gavin Romig-Koch - - * config/tc-mips.c (macro_build): Use OPCODE_IS_MEMBER. - (mips_ip): Use OPCODE_IS_MEMBER. - -Wed Oct 27 16:50:44 1999 Don Lindsay - - * config/tc-arm.c (reg_required_here): Improve comments. - - * config/tc-arm.c (thumb_opcode): Add "variants" field. - (tinsns): Initialize variants field. - - * config/tc-arm.c (bad_args, bad_pc): Renamed to BAD_ARGS and - BAD_PC respectively. - -1999-10-27 Scott Bambrough - - * config/tc-arm.c (reloc_map[]): Fix compiler warning. - * config/tc-arm.h: Fix compile time warnings. - -Mon Oct 18 18:11:10 MDT 1999 Diego Novillo - - * config/tc-d10v.c (find_opcode): Allow ATSIGN to match - expressions of the form @abs16, @(abs16) and @(abs16 + imm). - -1999-10-21 Gavin Romig-Koch - - * config/tc-mips.c (ISA_HAS_COPROC_DELAYS) : New. - (ISA_HAS_64_BIT_REGS) New. - (gpr_interlocks,md_begin,reg_needs_delay,append_insn, - mips_emit_delays,macro_build,load_register,load_addresss, - macro,macro2,mips_ip,s_cprestore,s_cpadd): Simplify - and/or use new ISA_xxx macros in expressions involving - ISA, particularly mips_opts.isa. - -1999-10-18 Michael Meissner - - * expr.h (operatorT): Add machine dependent operators md1..md8. - (expressionS): Make X_op 8 bits instead of 7. Add a X_md field - for the machine dependent operators to use. - - * expr.c (op_rank): Add machine dependent operators. - - * config/tc-alpha.c (O_pregister): Define as a machine dependent - operator. - (O_cpregister): Ditto. - (md_begin): Change X_op test that field is wide enough to use - O_max instead of O_alpha_max. - (cpu_types): Fill in missing initializer. - (alpha_num_macros): Make unsigned. - (md_assemble): Make opnamelen be size_t. - (md_apply_fix): Cast alpha_num_operands to int before testing. - (alpha_force_relocation): Ditto. - (alpha_fix_adjustable): Ditto. - (alpha_fix_adjustable): Mark unused arguments ATTRIBUTE_UNUSED. - (tc_gen_reloc): Ditto. - (tc_get_register): Ditto. - (emit_ldgp): Ditto. - (emit_lda): Ditto. - (emit_ldah): Ditto. - (emit_ldil): Ditto. - (s_alpha_ent): Ditto. - (s_alpha_end): Ditto. - (s_alpha_frame): Ditto. - (s_alpha_prologue): Ditto. - (s_alpha_file): Ditto. - (s_alpha_gprel32): Ditto. - (s_alpha_proc): Ditto. - (s_alpha_set): Ditto. - (s_alpha_base): Ditto. - (s_alpha_align): Ditto. - (s_alpha_arch): Ditto. - (alpha_align): Ditto. - (assemble_insn): Suppress unused variable warning. - (emit_insn): Ditto. - (assemble_insn): Don't assume X_op and X_unsigned are in a given - order in the structure. - (s_alpha_coff_wrapper): Avoid int/unsigned comparison. - -Sun Oct 17 17:15:58 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_apply_fix): Make "fmt" an int. - -1999-10-12 Alan Modra - - * config/tc-i386.c (i386_index_check): Correct #endif location. - -Mon Oct 11 14:02:40 1999 Geoffrey Keating - - * as.c (show_usage): Document new options. - (parse_args): Add --no-warn, --warn, --fatal-warnings, - which become 'W', OPTION_WARN, and OPTION_WARN_FATAL. - (parse_args): Parse the new options. - (main): If there were warnings, and --fatal-warnings - was specified, print an error. - * as.h: New variable, flag_fatal_warnings, for new option. - -Sun Oct 10 01:47:23 1999 Jerry Quinn - - * config/tc-hppa.c (pa_ip): Add new codes 'cc', 'cd', 'cC', 'co', - '@'. Change autoincrement completers to fall through to cache control - completers. - - * config/tc-hppa.c (pa_ip): Remove unused args. Add code to '?W' - arg. - (pa_parse_addb_64_cmpltr): New function. - - * config/tc-hppa.c (pa_ip): Change error message. - (pa_ip,pa_parse_cmpb_64_cmpltr,pa_parse_cmpib_64_cmpltr) Fix '?N' and - '?Q' args to allow falling through. - - * config/tc-hppa.c (pa_ip): Implement conditional codes "?N", "?Q". - Remove unused conditional codes. - (pa_parse_cmpb_64_cmpltr,pa_parse_cmpib_64_cmpltr): New. - -Thu Oct 7 00:23:53 MDT 1999 Diego Novillo - - * config/tc-d30v.c (CHAR_BIT): Define. - (check_range): Fix bit operations to support integers bigger than - 32 bits. - -Thu Oct 7 00:11:50 MDT 1999 Diego Novillo - - * config/tc-d10v.c (check_range): Check range for RESTRICTED_NUM3 - operands. - -Mon Oct 4 17:24:23 1999 Nick Clifton - Doug Evans - - Add support for m32rx. - * config/tc-m32r.c (enable_m32rx): New static global. - (enable_special,warn_explicit_parallel_conflicts,optimize): Ditto. - (allow_m32rx): New function. - (M32R_SHORTOPTS): Add `O'. - (md_longopts): Add --m32rx plus several warning options. - (md_parse_option): Handle new options. - (md_show_usage): Print them. - (md_begin): Enable m32rx. - (OPERAND_IS_COND_BIT): New macro. - (first_writes_to_seconds_operands): New function. - (writes_to_pc,can_make_parallel,make_parallel): New functions. - (target_make_parallel,assemble_two_insns): New functions. - (md_assemble): Recognize "insn1 -> insn2" and "insn1 || insn2". - If optimizing and m32rx, try to make consecutive insns parallel. - -Tue Sep 28 14:06:44 1999 Geoffrey Keating - - * config/tc-mips.c (nopic_need_relax): Allow for the - .sdata.foo sections generated by -fdata-sections, - and for the .gnu.linkonce.s sections generated by C++. - -Thu Sep 23 07:13:45 1999 Jerry Quinn - - * config/tc-hppa.c (pa_ip): Replace 'B', 'M', 'l' and 'g' handling - with cleaner code using completer prefixes. Add 'Y'. - - * config/tc-hppa.c (pa_ip): Add parens to silence compiler. - -Wed Sep 22 09:37:19 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Avoid ANSI specific initialization. - (pa_ip, case 'm'): Failure to get a CBIT specifier just means the - insn does not match and we should try the next insn in the table. - -1999-09-22 Nick Clifton - - * config/tc-arm.c (MULTI_SET_PSR): Rename to LDM_TYPE_2_OR_3. - -Mon Sep 20 04:01:41 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Fix thinkos in recent cleanup - of PA2.0 support. - -1999-09-19 Alexandre Oliva - - * config/tc-i386.c (md_shortopts): Check OBJ_MAYBE_ELF as well as - OBJ_ELF. If ELF, add "sq". - (md_parse_option): If ELF, ignore -s and -q. - (md_show_usage): Mention ELF options. - -Sun Sep 19 10:43:31 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Handle 'J', 'K' and 'cc' - operands. - - * config/tc-hppa.c (pa_ip): Handle "fe", and 'cJ'. - - * config/tc-hppa.c (pa_ip): Handle 'd', '#' and 'cq'. - - * config/tc-hppa.c (struct pa_it): New field "trunc". - (pa_ip): Handle 'h', 'm', '=', '{', and '_' operands. - (pa_parse_ftest_gfx_completer): New function - (pa_parse_fp_cnv_format): New function. - - * config/tc-hppa.c (pa_ip): Handle 'X' operand. - (md_apply_fix): Handle 22bit pc-rel branches. - - * config/tc-hppa.c (pa_ip): Handle 'B' operand. - - * config/tc-hppa.c (pa_ip): Handle 'L' and 'M' operands. - - * config/tc-hppa.c (pa_ip): Handle 'l' operand. - - * config/tc-hppa.c (pa_ip): Handle 'g' operand. - -Sat Sep 18 12:13:28 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_assemble): Fix dwarf2 line handling. - (pa_ip): Handle 'fX'. - -Fri Sep 17 11:57:34 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_build_unwind_subspace): Do not build - unwinds unless the function is in the text space. - (pa_type_args): Set BSF_FUNCTION for an exproted data symbol. - -Wed Sep 15 05:14:32 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Move dwarf2 stuff from here. - (md_assemble): To here. Tweak address generation. - - * config/tc-hppa.c: Include dwarf2dbg.h if OBJ_ELF. Declare - debug_line. - (md_pseudo_table): Add .file and .line pseudo-ops for OBJ_ELF. - (md_assemble): Call dwarf2_where for OBJ_ELF. - (pa_ip): Call dwarf2_gen_line_info for OBJ_ELF. - (pa_end_of_source): New function. - * config/tc-hppa.h (md_end): Define for OBJ_ELF. - -1999-09-14 Michael Meissner - - * 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-14 Donn Terry - - * config/te-interix.h (GLOBAL_OFFSET_TABLE_NAME): Define. - -1999-09-13 Alan Modra - - * config/tc-i386.c (md_assemble): Handle "jmp/call constant" as a - pc-relative jmp/call to an absolute symbol. - (md_apply_fix3): When OBJ_ELF, don't add the values in twice for - absolute section symbols. - - * config/tc-i386.c (md_assemble): Correct frag_var size. Tidy - jump handling code and comments. - -1999-09-12 Ian Lance Taylor - - * config/tc-i386.c (md_apply_fix3): Add horrible adjustments to - the value if TE_PE and a global defined symbol. - -1999-09-11 Ian Lance Taylor - - * write.c (dump_section_relocs): Call print_symbol_value_1 to - print the symbol, rather than printing it here. - -1999-09-11 Donn Terry - - * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust - BFD_RELOC_RVA relocations. - - * config/tc-i386.c (md_undefined_symbol): Compare the name against - the macro GLOBAL_OFFSET_TABLE_NAME, rather than assuming that it - starts with "_G". - - * write.c (write_relocs): Call SET_SECTION_RELOCS if it is - defined. - * config/obj-coff.h (SET_SECTION_RELOCS): Define. - * doc/internals.texi (Object format backend): Document - SET_SECTION_RELOCS. - - * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust - relocations against global symbols if TE_PE. - - * config/obj-coff.c (obj_coff_ident): Add BFD_ASSEMBLER version. - (obj_pseudo_table): Always handle ".ident" with obj-coff_ident. - - * config/obj-coff.c (coff_frob_symbol): Prohibit weak common - symbols. - - * config/obj-coff.c (obj_coff_endef): Don't merge labels, or - symbols which do not have a constant value, or tags with - non-tags. Remove the symbol from the list before adding it at the - end. - - * config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Handle .ef - C_FCN symbol differently if TE_PE. - (obj_coff_line) [BFD_ASSEMBLER]: Always use the line number which - appears in the pseudo-op, rather coff_line_base which is only set - for a .bf symbol. - - * config/obj-coff.c (obj_coff_loc): New static function. - (obj_pseudo_table): Add "loc". - - * config/obj-coff.c (add_lineno): Check that the line number is - positive. - - * config/atof-ieee.c (atof_ieee): Change what_kind to int. - * config/atof-vax.c (flonum_gen2vax): Change format_letter to - int. - (md_atof): Return NULL rather than 0. - * config/tc-i386.c (md_atof): Change type to int. - * expr.c (expr): Change first parameter to int. - * config/obj-coff.c: Add declarations for static functions. - (coff_frob_symbol): Use SYM_AUXENT. - * config/tc-i386.h (flag_16bit_code): Don't declare. - - * config/obj-coff.c (obj_coff_section): Default to setting - SEC_LOAD. Don't set SEC_DATA for 'w' modifier. - - * write.c (adjust_reloc_syms): Print adjusted fixup. - - * expr.c (integer_constant): Correct too_many_digits calculation - in base 10 case. - -1999-09-09 Andreas Schwab - - * doc/c-arm.texi: Fix arguments of @var to not contain - punctuation. - -1999-09-08 Philip Blundell - - * config/tc-arm.c (s_thumb_set): Only support interworking for ELF - and COFF targets. - (md_parse_option): Only support -k flag for ELF and COFF targets. - -Tue Sep 7 13:28:59 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Put strict register checks before - call to pa_parse_number. - - * config/tc-hppa.c (pa_ip): Support 'Z' argument. - -1999-09-06 Ian Lance Taylor - - * config/obj-coff.c: Add ATTRIBUTE_UNUSED as needed for - BFD_ASSEMBLER code. - -1999-09-06 Donn Terry - - * as.c (perform_an_assembly_pass): Set SEC_DATA for data_section. - -Mon Sep 6 04:26:56 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Get strict/non-strict mode from the - candidate instruction. Require registers for register arguments - when in strict mode. Require assemble-time constants for - constants when in strict mode. - (pa_get_absolute_expression): Require a constant when in strict - mode. - -1999-09-06 Nick Clifton - - * config/tc-m32r.c (md_longopts): Fix value for -Wnuh. - -1999-09-04 Steve Chamberlain - - * config/tc-pj.c: New file, supports picoJava in ELF. - * config/tc-pj.h: Ditto. - * configure.in (pjl*, pj*): New targets. - * Makefile.am: Rebuild dependencies. - (CPU_TYPES): Add pj. - (TARGET_CPU_CFILES): Add config/tc-pj.c. - (TARGET_CPU_HFILES): Add config/tc-pj.h. - * doc/c-pj.texi: New file. - * doc/as.texinfo: Add some PJ specifics. - * doc/all.texi: Add PJ to the list of all architectures, sort them - all alphabetically. - * doc/Makefile.in (CPU_DOCS): Add c-pj.texi. - * configure, Makefile.in, doc/Makefile.in: Rebuild. - -1999-09-02 Alan Modra - - * config/obj-multi.h: Include obj-elf.h if OBJ_MAYBE_ELF. Reformat. - (obj_frob_file): Test for null pointer. - (OBJ_COPY_SYMBOL_ATTRIBUTES): Here too. - (OBJ_PROCESS_STAB): And here. - (elf_obj_sy): Remove - - * config/obj-elf.h: #ifndef everything defined in obj-multi.h, - except OBJ_PROCESS_STAB, which we #undef for ecoff. - (elf_obj_sy): Remove #ifndef OBJ_SYMFIELD_TYPE. - - * config/obj-coff.c (no_func): Remove. - (coff_format_ops): Change occurrences of no_func to 0, as we test - for 0 in obj-multi.h. - - * configure.in: Enable bfd for i386-coff when primary target is - bfd. Enable i386 elf,coff emulation support. Don't set - USE_EMULATIONS=1 or te_file=multi unless there is more than one - emulation to support. - *configure: Regenerate. - -1999-09-02 Nick Clifton - - * config/tc-mcore.c (mcore_s_section): Do not dump literals if a - .section .line directive is encountered. - -1999-09-01 Nick Clifton - - * config/tc-arm.c (md_section_align): Do not align sections in ELF - format. - - * as.c (show_usage): Add --gdwarf2 to list of options displayed. - * as.texinfo: Document --gdwarf2 command line option. - Add additional documentation of ARM command line switches. - -1999-08-30 Alan Modra - - * config/tc-i386.c (i386_intel_memory_operand): Combine - i386_is_reg and parse_register calls. Remove END_STRING_AND_SAVE - and RESTORE_END_STRING around parse_register calls. - (i386_operand): Here too. - (i386_is_reg): Remove. - (parse_register): Move as_bad calls from within this function to - callers. - -1999-08-29 Alan Modra - - Based on a patch from H.J. Lu - * config/tc-i386.c (parse_register): Handle FP regs specially. - (md_begin): Remove '(' and ')' from register_chars. - -1999-08-29 Doug Evans - - * config/tc-m32r.c (md_parse_option): Delete unrecognized option - error message (done elsewhere). - -Sat Aug 28 01:23:11 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Do not allow '*' in 32bit completers. - -Sat Aug 28 00:26:26 1999 Jerry Quinn - - * config/tc-hppa.c (pa_ip): Replace 'f' by 'v'. Prefix float register - args by 'f'. - - * config/tc-hppa.c (pa_ip): Add args q, %, and |. - - * config/tc-hppa.c (pa_ip): Absorb white space in instructions - between args. - Add new completers. Fix bug in 64 bit condition handling. - - * config/tc-hppa.c (pa_ip): Add completer codes 'a', 'ch', 'cH', - 'cS', and 'c*'. - - * config/tc-hppa.c (pa_ip): Place completers behind prefix 'c'. - - * config/tc-hppa.c (pa_ip): Add cases for '.', '~'. '$'. and '!' - - * config/tc-hppa.c (pa_ip): Add case for 'I'. - -1999-08-27 Jim Wilson - - * dwarf2dbg.c (MAX_SPECIAL_ADDR_DELTA): Correct typo in comment. - (struct ls): Add frag field. Initialize it to zero. - (out_end_sequence): New local text_frag. Set it while in text section. - Replace address check with frag check. Set ls.frag to text_frag if - out_set_addr called. - (dwarf2_gen_line_info): Add explanatory comment. New local saved_frag. - Set it before switching sections. Replace address check with frag - check. Set ls.frag to saved_frag if out_set_addr called. - -1999-08-26 David Mosberger - - * dwarf2dbg.c (out_end_sequence): If address changed, directly - output "advance_pc" opcode instead of calling gen_addr_line(). - The latter has the undesired side-effect of creating a new row - in the debug line info matrix. - -1999-08-26 Jim Wilson - - * dwarf2dbg.c (out_end_sequence): Correct comments. Set last to - ls.last_filename if last is less than zero. Set ls.last_filename - when allocating new entry. - (dwarf2_gen_line_info): Save seg and subseg info before subseg_new - call. - -1999-08-20 Alan Modra - - * config/tc-i386.c (i386_index_check): Fix the displacement size - when INFER_ADDR_PREFIX. - -1999-08-18 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): If an offset is invalid, - display its value. - -1999-08-17 Ian Lance Taylor - - * config/tc-ppc.c (md_assemble): Trim @ha constant to 16 bits, to - handle 0xffffNNNN constants correctly. - -1999-08-16 Nick Clifton - - * config/tc-arm.c (do_ldst): Look for register conflicts on stores - as well as loads. - -1999-08-13 Nick Clifton - - * config/tc-arm.c (validate_offset_imm): Work on unsigned values. - (md_apply_fix3): Always pass positive values to - validate_offset_imm. - -1999-08-12 Nick Clifton - - * config/tc-arm.c (skip_whitespace): New macro. - Formatting tidy ups. - - (md_apply_fix3): Store relocation offset in addend for ELF based - relocs. - (arm_force_relocation): Always generate relocs for Thumb function - calls. - -1999-08-11 Alan Modra - - * config/tc-i386.c (md_assemble): Remove dead code. intel_syntax - LONG_DOUBLE_MNEM_SUFFIX floating point is done in opcode/i386.h - -Tue Aug 10 12:58:31 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_build_unwind_subspace): Use sane section - flags for the unwind subspace. - - * config/tc-hppa.c (UNWIND_SECTION_NAME): Define for ELF. - (pa_build_unwind_subspace): Remove #if 0 wrapper. Select a - suitable relocation based on the size of the target's pointer. - Always Use subsegment zero for the unwinders. - (pa_level): Handle "2.0w". - -Mon Aug 9 20:02:22 1999 J"orn Rennecke - - * config/tc-d30v.c (write_2_short): Don't group repeat instructions - with the following instruction unless this was specified. - -1999-08-09 Ian Lance Taylor - - * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 for - certain sections, to match BFD changes. - -1999-08-08 Mumit Khan - - * Makefile.am (noinst_SCRIPTS): Change .gdbinit to $(GDBINIT). - (EXTRA_SCRIPTS): Define to keep automake happy. - * Makefile.in: Rebuild. - -1999-08-08 Ian Lance Taylor - - * Makefile.am: Rename .dep* files to DEP*. - (MKDEP): Rename from DEP. Change all uses. Use $${srcdir} rather - than $(srcdir). Rename TCDEP targets to DEPTC. Rename OBJDEP - targets to DEPOBJ. - * Makefile.in: Rebuild. - -1999-08-08 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Allow assembly of %lo()+%reg. - -1999-08-08 Ian Lance Taylor - - * Makefile.am: Change all uses of itbl-test-ops to itbl-tops to - avoid problems on DOS filesystems. - * Makefile.in: Rebuild. - - * doc/as.texinfo (Section): Document 's' flag for COFF version. - -1999-08-08 Mumit Khan - - * config/obj-coff.c (obj_coff_section): Handle 's' (shared) - section flag. - -1999-08-08 Ian Lance Taylor - - * configure.in: Define and substitute GDBINIT. Change AC_OUTPUT - line to create ${GDBINIT} rather than .gdbinit. - * configure, Makefile.in, doc/Makefile.in: Rebuild. - -Fri Aug 6 12:12:44 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip, case '?'): Add missing break. - -Fri Aug 6 09:46:35 1999 Jerry Quinn - - * config/tc-hppa.c (pa_ip): Add 64 bit condition completers. - -1999-08-06 Jakub Jelinek - - * config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local - non-adjustable symbols. - -Thu Aug 5 16:52:51 1999 Jerry Quinn - - * config/tc-hppa.c (pa_ip): Change condition args to have '?' prefix. - -Thu Aug 5 23:05:56 1999 J"orn Rennecke - - * config/tc-sh.c (md_assemble): Call as_bad when there are excess - operands. - -1999-08-05 Donn Terry - - * config/te-interix.h: New file. - * configure.in (i386-*-interix*): New target. - * configure: Rebuild. - -Wed Aug 4 13:12:17 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_chk_field_selector): Allow 3 byte - selectors for ELF too. - (selector_table): Add "ltp" and "rtp" selectors. - -1999-08-04 Alan Modra - - * config/tc-i386.c (i386_operand): No need to change - operand_string pointer in segment reg case before goto - do_memory_reference. Initialise displacement_string_start and - displacement_string_end after do_memory_reference label. - (i386_index_check): Add operand_string param, and print error - message on failure here. - (i386_intel_memory_operand): Instead of here. - (i386_operand): And here. - (INFER_ADDR_PREFIX): Enable. - - * doc/c-i386.texi (i386-16bit): Document .code16gcc. - - * config/tc-i386.h (DefaultSize): Define. Renumber following - opcode_modifier defines. - - From Etienne Lorrain - * config/tc-i386.c (stackop_size): New variable. - (set_16bit_code_flag): Clear it here. - (set_16bit_gcc_code_flag): New function. - (md_pseudo_table): Add "code16gcc" entry. - (md_assemble): Set i.suffix for insns with DefaultSize modifier. - -1999-08-03 Ian Lance Taylor - - * config/obj-coff.c (coff_frob_symbol): Always update set_end with - next_set_end even if the end symbol is being discarded. - - * gasp.c: Add ATTRIBUTE_UNUSED as needed for non-BFD_ASSEMBLER. - * output-file.c, symbols.c, config/tc-i386.c: Likewise. - * config/obj-coff.c: Likewise. - (seg_info_type): Remove. - (seg_info_off_by_4): Change to array of segT. - (s_get_segment): Adjust accordingly. - (obj_pseudo_table): Fully initialize sentinel entry. - - * config/tc-mips.c (append_insn): Correct INSN_SYNC test. From - Ralf Baechle . - -1999-08-03 Etienne Lorrain - - * config/tc-i386.c (f16_3): New. Fixes 16 bit 3 byte nop. - -1999-08-03 Alan Modra - - * config/tc-i386.c: Indentation and white space changes. - (i386_index_check): New function. Add INFER_ADDR_PREFIX code, but - don't enable it by default. - (i386_intel_operand): Remove redundant prototype. - Move check on number of memory operands, and i.mem_operands++ - (i386_intel_memory_operand): To here. - Remove i386_immediate code from here. Remove special case code - for input and output using (%dx). Remove base/index checks and - call i386_index_check instead. Save initial operand_string - argument for error message. - (i386_operand): Remove redundant prototype. Move base/index - checks to i386_index_check. - (i386_displacement): Move intel mode check for non-zero - i.disp_operand - (i386_intel_memory_operand): To here. - -1999-07-30 Jakub Jelinek - - * config/tc-sparc.c (md_longopts): Add --no-undeclared-regs option. - (sparc_ip): Warn if %g2 or %g3 register is used and not covered - by .register pseudo-op if -64 and --no-undeclared-regs. - (s_register, sparc_adjust_symtab): New functions. - * config/tc-sparc.h (tc_adjust_symtab, sparc_adjust_symtab): - Declare sparc_adjust_symtab as tc_adjust_symtab. - * doc/c-sparc.texi: Add description of #ignore special literal - for .register pseudo-op. - -1999-07-30 Catherine Moore - - * config/tc-arm.c (tc_gen_reloc): Record the vtable entry in - the relocation's section offset. - -1999-07-29 Alan Modra - - * write.c (fixup_segment): Fix generic error check overflow test. - - * config/tc-i386.c (pe): Change %d to %ld, %x to %lx, and cast - X_add_number to long. - -Wed Jul 28 02:04:24 1999 "Jerry Quinn" - - * config/tc-hppa.c (pa_ip): Add 'J' and 'K' code - processing. - -1999-07-27 Ian Lance Taylor - - * config/tc-sparc.h (tc_fix_adjustable): Don't adjust GOT, PLT, or - VTABLE relocations. - -1999-07-21 Mark Elbrecht - - * config/te-go32.h (COFF_LONG_SECTION_NAMES): Define. - - * configure.bat: Remove; obsolete. - * config/go32.cfg: Likewise. - -1999-07-21 Brad M. Garcia - - * configure.in (i386-*-vxworks*): New target. - * configure: Rebuild. - -1999-07-16 Jakub Jelinek - - * doc/c-sparc.texi: Document .register and .nword pseudo-ops. - -1999-07-16 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Allow OLO10 relocations - on -64 and not pic. - (output_insn): Put OLO10's secondary addend into tc_fix_data. - (md_apply_fix3): Handle BFD_RELOC_SPARC_OLO10. - (tc_gen_reloc): Return two relocs for OLO10, LO10 and SPARC13. - * config/tc-sparc.h (RELOC_EXPANSION_POSSIBLE, - MAX_RELOC_EXPANSION): Define. - (TC_FIX_TYPE, TC_INIT_FIX_DATA, TC_FIX_DATA_PRINT): Likewise. - -1999-07-16 Alan Modra - - * config/tc-i386.c (intel_float_operand): Add prototype, make static. - (md_assemble): Localize *exp variable to if (fake_zero_displacement) - block. Print a warning if an 8-bit or 16-bit constant - displacement or immediate is truncated on output. - (i386_immediate): Ensure Imm16 is always legal for a 16-bit mode - immediate. - (i386_operand): Disallow immediate jump absolute operand. - -1999-07-15 Ian Lance Taylor - - * configure.in: Bump version number to 2.9.5. - * configure: Rebuild. - - * dwarf2dbg.c (dwarf2_gen_line_info): Don't assume that long long - or %llx work. - -Thu Jul 15 02:45:30 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_pseudo_table): Add ".dword" pseudo-op. - (cons_fix_new_hppa): Derive size of fixup from size of the object. - -1999-07-14 Philip Blundell - - * symbols.c (dollar_label_name): Prepend LOCAL_LABEL_PREFIX if it - is defined. - * config/tc-arm.h (LOCAL_LABEL_PREFIX): Define to '.' for ELF. - - * config/tc-arm.c (md_begin): Set F_SOFTFLOAT in the output file - if -mno-fpu was given. - (tc_gen_reloc): Fix typo. Delete bogus code related to GOTPC - relocs. - (cons_fix_new_arm): Remove misleading comments. - -1999-07-14 Ian Lance Taylor - - * write.c (cvt_frag_to_fill): Use frag file and line in rs_org - error message. - (relax_segment): Likewise. After giving a rs_org error, convert - the frag to rs_align to avoid cascading errors. - -1999-07-12 Andreas Schwab - - * config/tc-m68k.c: Add some ATTRIBUTE_UNUSED. - -1999-07-11 Ian Lance Taylor - - * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED - as appropriate. Fill in structure initializations. Add variable - initializations. Add casts. - * dwarf2dbg.c (print_stats): Change i to size_t. - * listing.c (listing_listing): Change list_line to unsigned int. - -1999-07-10 Ian Lance Taylor - - * config/tc-ppc.h (tc_fix_adjustable) [OBJ_ELF]: Call S_IS_LOCAL - rather than checking for \001 and \002 in symbol name. - * config/tc-sparc.h (tc_fix_adjustable) [OBJ_ELF]: Likewise. - -Thu Jul 8 12:32:23 1999 John David Anglin - - * configure.in (hppa*-linux-gnu*): New target. - * configure: Rebuilt. - -1999-07-08 Nick Clifton - - * doc/c-arm.texi (ARM Directives): Document .thumb_set directive. - -1999-07-07 Nick Clifton - - * config/tc-v850.c (v850_comm): Use symbol_get_obj() rather than - accessing symbolP directly. - -Tue Jul 6 10:41:42 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.h (tc_frob_symbol): Always punt "$global$" symbol - for ELF. - -1999-07-05 Nick Clifton - - * config/tc-arm.c (ARM_EXT_V5): Define. - (ARM_ARCH_V5, ARM_ARCH_V5T): Define. - (md_begin): Detect ARM v5 architectures. - (md_parse_option): Accept arm v5 specification. - (md_show_usage): Documment -marmv5 switch. - - * doc/c-arm.texi: Document -marmv5 command line option. - - * config/tc-arm.c (do_adrl): New function. Implement ADRL pseudo - op. - (validate_immediate_twopart): New function. Determine if a - constant can be computed by two ADD instructions. - (output_inst): Remove its command line parameter - it was never - used. - (md_apply_fix3): Support BFD_RELOC_ARM_ADRL_IMMEDIATE, used to - implememt the ADRL pseudo op. - (tc_gen_reloc): Generate a suitable error message if an ADRL - instruction tries to generate a real reloc. - - * doc/c-arm.texi: Document NOP, ADR and ADRL pseudo ops. - -Thu Jul 1 15:33:10 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip): Convert the opcode and all completers - into lower case. - -1999-06-27 H.J. Lu - - * subsegs.c (subseg_text_p): Use 1/0 instead of true/false for - non BFD_ASSEMBLER case. - -1999-06-26 Mumit Khan - - * config/obj-coff.c (obj_coff_section): Mark writable sections as - data. - -1999-06-26 David Mosberger - - * dwarf2dbg.c (dwarf2_gen_line_info): Don't call - out_end_sequence() when the address decreases due to a new frag. - (gen_dir_list): Set ls.file[i].dir to j + 1 (not j) because file - numbering starts with 1. - -1999-06-23 Nick Clifton - - * config/tc-mcore.c (md_pseudo_table): Add .comm for ELF and allow - .section for COFF. - (mcore_s_text): Call obj_elf_text for ELF target. - (mcore_s_data): Call obj_elf_data for ELF target. - (mcore_s_section): No longer ELF specific. Call obj_coff_section - for COFF target. - (mcore_s_bss): New function: Dump literal table before changing - sections. - (mcore_s_comm): New function: Dump literal table before changing - sections. - - * config/obj-elf.c (obj_elf_common, obj_elf_data, obj_elf_text): - No longer static functions. - * config/obj-elf.h (obj_elf_common, obj_elf_data, obj_elf_text): - Provide prototypes for these functions. - -1999-06-22 Ian Lance Taylor - - * subsegs.c (subseg_text_p): Rewrite non BFD_ASSEMBLER case to use - a list of names, to try obj_segment_name, and to try abbreviated - names when using COFF without long section names. - - * config/tc-alpha.c: More use of symbol accessor functions. - * config/tc-arc.c: Likewise. - * config/tc-d30v.c: Likewise. - * config/tc-fr30.c: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-mcore.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-v850.c: Likewise. - - * config/tc-arc.c (get_arc_exp_reloc_type): Change uses of - sy_value with appropriate accessor functions. - * config/tc-arm.c (md_apply_fix3): Likewise. - * config/tc-d10v.c (AT_WORD_P): Likewise. - * config/tc-v850.c (reg_name_search): Likewise. - - * config/obj-ecoff.c (obj_ecoff_set_ext): Change uses of bsym to - use symbol_get_bfdsym instead. - * config/tc-ppc.c (md_assemble): Likewise. - * config/tc-v850.c (v850_comm): Likewise. - -1999-06-22 Jonathan Larmour - - * config/tc-arc.c (tc_gen_reloc): Use symbol_get_bfdsym to get at - the symbol, rather than accessing the bsym member. - * config/tc-d10v.c (tc_gen_reloc): Likewise. - * config/tc-d30v.c (tc_gen_reloc): Likewise. - * config/tc-mcore.c (tc_gen_reloc): Likewise. - * config/tc-mn10200.c (tc_gen_reloc): Likewise. - * config/tc-mn10300.c (tc_gen_reloc): Likewise. - * config/tc-ns32k.c (tc_gen_reloc): Likewise. - * config/tc-tic30.c (tc_gen_reloc): Likewise. - * config/tc-v850.c (tc_gen_reloc): Likewise. - -Mon Jun 21 16:45:19 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type. - (hppa_gen_reloc_type): Conditionalize on BFD64. - (tc_gen_reloc): Re-enable ELF relocations. - * config/tc-hppa.h (TARGET_FORMAT): Handle elf64-hppa format. - -1999-06-21 Ian Lance Taylor - - * config/tc-arm.c (ldst_extend): Add parentheses to avoid - warning. - (do_ldst): Move assignment out of if condition. - (md_apply_fix3): Add casts to avoid printf format warnings. Add - parentheses to avoid warning. - -1999-06-21 Nick Clifton - - * config/tc-arm.c (arm_adjust_symtab): Use symbol_get_bfdsym() - macro to get at the BFD symbol associated with a GAS symbol. - -1999-06-19 Ian Lance Taylor - - * config/tc-ppc.c: Update for symbol handling changes. - * config/obj-coff.c: Likewise. - -Fri Jun 18 14:34:18 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c: General cleanups of ELF support. No more spaces - and subspaces for ELF. - (GDB_DEBUG_SPACE_NAME): Delete definition for ELF. - (GDB_STRINGS_SUBSPACE_NAME): Likewise. - (GDB_SYMBOLS_SUBSPACE_NAME): Likewise - (UNWIND_SECTION_NAME): Likewise. - (space/subspace related structures): Conditionalize definitions - on OBJ_SOM. - (space/subspace directives and support routines): Conditionalize - definitions and references/uses on OBJ_SOM. - (label_symbol_struct): For ELF, track the symbol's segment. For - SOM track its space. - (pa_define_label, pa_undefine_label, pa_get_label): Corresponding - changes. - (USE_ALIASES): Kill for both SOM & ELF. - (pa_def_subspaces, pa_def_spaces): Corresponding changes. - (pa_space, pa_subspace): Corresponding changes. - (pa_spaces_begin): Corresponding chagnes. - (md_begin): Do not muck around with space/subspace stuff for - OBJ_ELF. - (md_apply_fix): Temporarily disable argument relocation stuff - for OBJ_ELF. - (tc_gen_reloc): Temporarily disable relocation generation for - OBJ_ELF - (pa_build_unwind_subspace): Similarly. - -1999-06-16 Nick Clifton - - * config/tc-arm.c (thumb_set): New pseudo op. - (text, data, section): Override these pseudo ops with ARM - specific versions. - (s_thumb_set): New function: Perform the same as a .set pseudo - op, but also mark the alias'ed symbol as being a Thumb - function. - (arm_s_text): New function: Perform the same as the .text - pseudo op, but dump the literal pool before changing - sections. - (arm_s_data): New function: Perform the same as the .data - pseudo op, but dump the literal pool before changing - sections. - (arm_s_section): New function: Perform the same as the - .section pseudo op, but dump the literal pool before changing - sections. - (arm_cleanup): Do not reset the current section before dumping - the literal pool. - -1999-06-17 Nick Clifton - - * config/tc-m32r.c (md_longopts): Fix OPTION_WARN_UNMATCHED and - OPTION_NO_WARN_UNMATCHED entries. - (md_parse_option): Generate a warning message if an unrecognised - option is encountered. - - * config/tc-d10v.c (do_not_ignore_hash): New variable. - (get_operands): When parsing an expression after an '@' symbol - has been detected, do not ignore '#' symbols. - (md_operand): Only ignore '#' symbols if do_not_ignore_hash is - false. - -1999-06-13 Ian Lance Taylor - - From K. Richard Pixley : - * configure.in (ppc-*-vxworks*): New target. - * configure: Rebuild. - -1999-06-12 Philip Blundell - - * config/tc-arm.c (tc_gen_reloc): Fix handling of GOTPC relocs. - -1999-06-13 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Rather than never reducing reloc - which refer to symbols in linkonce sections, permit reducing the - relocs if the symbol is local. - -1999-06-12 Ian Lance Taylor - - * subsegs.c (subseg_text_p): New function. - * as.h (subseg_text_p): Declare. - * read.c (do_align): Use subseg_text_p to set the default fill. - * write.c (subsegs_finish): Likewise. - * config/obj-coff.c (write_object_file): Likewise. - * config/tc-i386.h (md_maybe_text): Don't define. - (md_do_align): Use subseg_text_p to set the default fill. - * config/tc-m32r.c (m32r_do_align): Likewise. - * config/tc-sh.c (sh_do_align): Likewise. - * config/tc-sparc.h (md_do_align): Likewise. - -1999-06-12 David O'Brien - - * configure.in: (i[3456]86-*-freebsd*): Now defaults to ELF. - * configure: Rebuild. - -1999-06-12 Ian Lance Taylor - - * dwarf2dbg.c: Include elf/dwarf2.h with "", not <>. - * Makefile.am: Rebuild dependencies. - * Makefile.in: Rebuild. - - * config/tc-i386.c (i386_immediate): Remove unused label - seg_unimplemented. - - * struc-symbol.h: Put local_symbol code in ifdef BFD_ASSEMBLER. - * symbols.c: Likewise. - * config/obj-aout.c (obj_crawl_symbol_chain): Refer directly to - sy_next field when taking address, rather than symbol_next. - - * dwarf2dbg.c: Change bfd_vma to addressT and bfd_signed_vma to - offsetT. - (out_set_addr): Don't use BYTES_PER_ADDRESS. Instead, get the - value from the output file architecture. - (dwarf2_gen_line_info): Ifdef BFD_ASSEMBLER specific code. - * dwarf2dbg.h: Change bfd_vma to addressT. - -1999-06-11 Ian Lance Taylor - - * dwarf2dbg.h: Use PARAMS in function declarations. - -1999-06-11 Martin Dorey - - * write.c (fixup_segment): Don't add symbol value for i960 ELF. - * config/tc-i960.c (s_leafproc): Don't call tc_set_bal_of_cal if - OBJ_ELF. - (md_apply_fix): Simplify BFD_ASSEMBLER handling. - -1999-06-11 Ian Lance Taylor - - * config/tc-i386.c (md_apply_fix3): Add default case to switch. - - * config/tc-sparc.c (md_pseudo_table): Remove pushsection and - popsection. - - * config/tc-sparc.c (sparc_ip): Add default case to reloc switch. - - * read.c (read_a_source_file): Only declare inescape if - QUOTES_IN_INSN. - - * itbl-ops.c (itbl_disassemble): Change sprintf format strings to - match parameters. - (find_entry_byval): Add parens to avoid warning. - - * as.c: If HAVE_ITBL_CPU, include "itbl-ops.h". - - * symbols.c (resolve_symbol_value): Don't permit subtraction of - undefined symbols. - -1999-06-10 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Don't use side-effect expression - with isoctal. - - * config/tc-sparc.c (synthetize_setuw, synthetize_setsw, - synthetize_setx): New functions. - (md_assemble): Broken the special cases into the above - functions. Make compiler happy if sizeof(bfd_vma)==4. - Fix sethi generated from set/setuw. If instructions have a relloc, - always clear the fields to be relocated in the opcode. - (sparc_ip): Remove special_case global variable. - -1999-06-10 Ian Lance Taylor - - Based on patches from John W. Woznack : - * itbl-ops.c (itbl_get_reg_val): Add pval parameter. Return - indication of success rather than a value. - (itbl_get_val): Likewise. - (itbl_get_field): Use strcspn. Change delimiters to include - parens. - * itbl-ops.h (itbl_get_reg_val): Update declaration. - (itbl_get_val): Likewise. - * config/tc-mips.c (mips_ip): Update call to itbl_get_reg_val. - - * symbols.c (copy_symbol_attributes): Convert local symbols to - regular symbols. - -1999-06-10 Nick Clifton - - * config/tc-arm.c (md_parse_option): Add support for ARM920 and - ARM920t. - -1999-06-07 Jakub Jelinek - - * config/tc-sparc.c (md_assemble): Fix up setx, support setsw. - Optimize set if sizeof(bfd_vma) == 64. - (sparc_ip): Fix sethi - without %hi() it should generate - R_SPARC_22 reloc, not R_SPARC_HI22. - (tc_gen_reloc): Handle BFD_RELOC_SPARC22. - -1999-06-07 Jakub Jelinek - - * config/tc-sparc.c (md_begin): Handle native wordsize aliases. - (s_ncons): New function. - (native_op_table): New table. - (sparc_ip): Be more strict on %hi() etc.; prepare assembler for - R_SPARC_OLO10 handling. - -Mon Jun 7 10:22:16 1999 Richard Henderson - - * expr.h (struct expressionS): Revert last change; widen X_op. - * config/tc-alpha.c (md_begin): Check the field is wide enough. - -Mon Jun 7 11:25:16 1999 Andreas Schwab - - * Makefile.am (TARGET_CPU_CFILES): Add config/tc-fr30.c. - (TARGET_CPU_HFILES): Add config/tc-fr30.h. - (TARG_ENV_HFILES): Add config/te-epoc-pe.h. - * Makefile.in: Regenerated. - - * config/obj-elf.c (obj_elf_common): In MRI mode if called as - `common' pass on to s_mri_common. - (elf_pseudo_table): Pass 1 to obj_elf_common for `common'. - -1999-06-06 Richard Henderson - - * config/obj-elf.c (obj_elf_section): Don't free the return - value of demand_copy_C_string. - -1999-06-05 Richard Henderson - - * dwarf2dbg.c (dwarf2_gen_line_info): Mirror the section symbol - creation logic from obj_elf_create_section. - - * config/obj-elf.c (elf_pseudo_tab): Add pushsection/popsection. - (section_stack): New. - (special_sections): Make const. - (obj_elf_section): Gut and rewrite parsing. - (obj_elf_change_section): New function broken out of obj_elf_section. - (obj_elf_parse_section_letters): Likewise. - (obj_elf_section_word): Likewise. - (obj_elf_section_type): Likewise. - (obj_elf_previous): Treat as a toggle. - (obj_elf_popsection): New. - * config/tc-ppc.c (ppc_section_word): Take str+len not ptr_str. - (ppc_section_type): Likewise. - * config/tc-ppc.h: Likewise. - - * expr.h (struct expressionS): Don't make X_op a bitfield. - * config/tc-alpha.c: Update for symbol handling changes. - (md_apply_fix) [case GPREL]: Use now_seg instead of absolute_section. - (load_expression, emit_ir_load, emit_loadstore, emit_jsrjmp): Likewise. - -1999-06-05 Richard Henderson - - * dwarf2dbg.c (*): Convert to K&R + prototypes. - (dwarf2_gen_line_info): Kill unused variables. - (dwarf2_finish): Likewise. - (dwarf2_where): Likewise. - (dwarf2_directive_file): If we've only got a string, - hand off to s_app_file. - * ecoff.c: Move the include of ecoff.h. - * symbols.h (S_IS_FUNCTION): Prototype. - - * read.c (LEX_HASH): Supply a default. - (lex_type): Use it. - (s_globl): Update `c' after skipping whitespace. - * read.h (LEX_END_NAME, is_name_ender): New. - * expr.c (get_symbol_end): Respect it. - -1999-06-04 Mark Klein - - * config/tc-hppa.c (md_begin): Convert local symbol dummy_symbol - to real if OBJ_SOM - (tc_gen_reloc): Still need bfd_abs_symbol in some relocs. - - * config/tc-hppa.c: Update for symbol handling changes. - -1999-06-03 Ian Lance Taylor - - * cgen.c: Update for symbol handling changes. - * config/tc-m32r.c: Likewise. - - * config/tc-hppa.h: Update for symbol handling changes. - * config/tc-hppa.c: Likewise. - - * config/tc-arm.h: Update for symbol handling changes. - * config/tc-arm.c: Likewise. - (symbol_make_empty): Remove. Just use symbol_create. - - * symbols.c (symbol_set_tc): Correct name. - - * Makefile.am: Rebuild dependencies. - ($(OBJS)): Don't depend upon struc-symbol.h. - (.dep1, .tcdep, .objdep): Create itbl-parse.h. - * dep-in.sed: Don't remove struc-symbol.h. - * Makefile.in: Rebuild. - - * doc/internals.texi (Symbols): Describe changes in symbol - handling. - -1999-06-03 Richard Henderson - - * dwarf2dbg.c (dwarf2_gen_line_info): Use section_symbol - instead of doing the work by hand. - -1999-06-03 David Mosberger - - * dwarf2dbg.c (INITIAL_STATE): New macro encapsulating initial - state of line state-machine. - (struct ls): Collect DWARF2 line state-machine state in new member - SM. Add member EMPTY_SEQUENCE to keep track if a code sequence - resulted in any DWARF2 directives. - (reset_state_machine): New function. - (out_end_sequence): Ditto. - (dwarf2_gen_line_info): When switching sections or switching to a - lower text address, call out_end_sequence() first to terminate the - previous code sequence as code sequences MUST have monotonically - increasing addresses. - (dwarf2_finish): Call out_end_sequence() instead of open coding it. - -1999-06-03 David Mosberger - - * as.c (parse_args): Add option -gdwarf2 to allow requesting - DWARF2 debug info (line information only, at this point). - * as.h: Update comment about supported debug formats. - * dwarf2dbg.c, dwarf2dbg.h: New files. - * Makefile.am (GAS_CFILES, HFILES, GENERIC_OBJS): Add them. - - * expr.c (operand): Don't use [ for parens if we want an index op. - (op_encoding): Switch [ into O_index, if desired. - (op_rank): Renumber with O_index on bottom. - (expr): If O_index, match closing bracket. - * expr.h (O_index): New. - - * read.c (read_a_source_file): Conditionally allow matched " - in lines passed to md_assemble. - - * config/obj-elf.c (elf_pseudo_table): Add `common'. - -1999-06-03 Ian Lance Taylor - - Add support for storing local symbols in a small structure to save - memory when assembling large files. - * as.h: Don't include struc-symbol.h. - (symbolS): Add typedef. - * symbols.c: Include struc-symbol.h. - (local_hash): New static variable. - (save_symbol_name): New static function, from symbol_create. - (symbol_create): Call save_symbol_name. - (local_symbol_count): New static variable. - (local_symbol_conversion_count): Likewise. - (LOCAL_SYMBOL_CHECK): Define. - (local_symbol_make): New static function. - (local_symbol_convert): New static function. - (colon): Handle local symbols. Create local symbol for local - label name. - (symbol_table_insert): Handle local symbols. - (symbol_find_or_make): Create local symbol for local label name. - (symbol_find_base): Check for local symbol. - (symbol_append, symbol_insert): Check for local symbols. - (symbol_clear_list_pointers, symbol_remove): Likewise. - (verify_symbol_chain): Likewise. - (copy_symbol_attributes): Likewise. - (resolve_symbol_value): Handle local symbols. - (resolve_local_symbol): New static function. - (resolve_local_symbol_values): New function. - (S_GET_VALUE, S_SET_VALUE): Handle local symbols. - (S_IS_FUNCTION, S_IS_EXTERNAL, S_IS_WEAK, S_IS_COMMON): Likewise. - (S_IS_DEFINED, S_IS_DEBUG, S_IS_LOCAL, S_GET_NAME): Likewise. - (S_GET_SEGMENT, S_SET_SEGMENT, S_SET_EXTERNAL): Likewise. - (S_CLEAR_EXTERNAL, S_SET_WEAK, S_SET_NAME): Likewise. - (symbol_previous, symbol_next): New functions. - (symbol_get_value_expression): Likewise. - (symbol_set_value_expression): Likewise. - (symbol_set_frag, symbol_get_frag): Likewise. - (symbol_mark_used, symbol_clear_used, symbol_used_p): Likewise. - (symbol_mark_used_in_reloc): Likewise. - (symbol_clear_used_in_reloc, symbol_used_in_reloc_p): Likewise. - (symbol_mark_mri_common, symbol_clear_mri_common): Likewise. - (symbol_mri_common_p): Likewise. - (symbol_mark_written, symbol_clear_written): Likewise. - (symbol_written_p): Likewise. - (symbol_mark_resolved, symbol_resolved_p): Likewise. - (symbol_section_p, symbol_equated_p): Likewise. - (symbol_constant_p): Likewise. - (symbol_get_bfdsym, symbol_set_bfdsym): Likewise. - (symbol_get_obj, symbol_set_obj): Likewise. - (symbol_get_tc, symbol_set_tc): Likewise. - (symbol_begin): Initialize local_hash. - (print_symbol_value_1): Handle local symbols. - (symbol_print_statistics): Print local symbol statistics. - * symbols.h: Include "struc-symbol.h" if not BFD_ASSEMBLER. - Declare new symbols.c functions. Move many declarations here from - struc-symbol.h. - (SYMBOLS_NEED_BACKPOINTERS): Define if needed. - * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Don't set. - (struct symbol): Move bsym to make it clearly the first field. - Remove TARGET_SYMBOL_FIELDS. - (symbolS): Don't typedef. - (struct broken_word): Remove. - (N_TYPE_seg, seg_N_TYPE): Move to symbol.h. - (SEGMENT_TO_SYMBOL_TYPE, N_REGISTER): Likewise. - (symbol_clear_list_pointers): Likewise. - (symbol_insert, symbol_remove): Likewise. - (symbol_previous, symbol_append): Likewise. - (verify_symbol_chain, verify_symbol_chain_2): Likewise. - (struct local_symbol): Define. - (local_symbol_converted_p, local_symbol_mark_converted): Define. - (local_symbol_resolved_p, local_symbol_mark_resolved): Define. - (local_symbol_get_frag, local_symbol_set_frag): Define. - (local_symbol_get_real_symbol): Define. - (local_symbol_set_real_symbol): Define. - Define. - * write.c (write_object_file): Call resolve_local_symbol_values. - * config/obj-ecoff.h (OBJ_SYMFIELD_TYPE): Define. - (TARGET_SYMBOL_FIELDS): Don't define. - * config/obj-elf.h (OBJ_SYMFIELD_TYPE): Add local field. If - ECOFF_DEBUGGING, add ECOFF fields. - (ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define. - * config/obj-multi.h (struct elf_obj_sy): Add local field. If - ECOFF_DEBUGGING, add ECOFF fields. - (ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define. - (ECOFF_DEBUG_TARGET_SYMBOL_FIELDS): Don't define. - * config/tc-mcore.h: Don't include struc-symbol.h. - (TARGET_SYMBOL_FIELDS): Don't define. - (struct mcore_tc_sy): Define. - (TC_SYMFIELD_TYPE): Define. - * Many files: Use symbolS instead of struct symbol. Use new - accessor functions rather than referring to symbolS fields - directly. - - * read.c (s_mri_common): Don't add in value of line_label. - - * config/tc-mips.c (md_apply_fix): Correct parenthesization when - checking for SEC_LINK_ONCE. - - * config/tc-sh.h (sh_fix_adjustable): Declare. - - * app.c (input_buffer): New static variable. - (app_push): Save saved_input in allocated buffer. - (app_pop): Restored saved_input. - (do_scrub_chars): Change get parameter to take char * and int as - arguments. Change GET macro to pass input_buffer to get - function. Don't save input into allocated buffer. - * as.h (do_scrub_chars): Update declaration. - * input-file.c (input_file_get): Change to take char * and int. - Read data into passed in buffer. Remove static buffer. - * read.c (scrub_from_string): Change to take char * and int. Copy - data into passed in buffer. - - * hash.h: Neaten. Declare hash_traverse. - * hash.c: Complete rewrite based on BFD hashing code. - * gasp.c (chunksize): New variable. - * macro.c (macro_expand_body): Call hash_jam with NULL rather than - hash_delete. - -1999-05-28 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Add pipeline offset into reloc - addend unless the target uses an old ABI. - -Mon May 24 13:36:55 1999 Doug Evans - - -Wchar-subscripts cleanup - * listing.c (listing_newline): Use unsigned char variable, so - calls to isascii,iscntrl are correct. - * atof-generic.c (atof_generic): Cast arg to isdigit, et. al. with - (unsigned char). - * ecoff.c (ecoff_directive_ent,ecoff_stab): Ditto. - * config/obj-elf.c (obj_elf_vtable_inherit): Ditto. - * config/tc-mips.c (mips_ip,mips16_ip): Ditto. - (my_getSmallExpression,get_number,s_mips_ent): Ditto. - -1999-05-28 Torbjorn Granlund - - * config/tc-m68k.c (m68k_ip): Check for disallowed index register - width for Coldfire. - (arch_coldfire_p): New #define. - (m68k_ip, m68k_init_after_args): Use arch_coldfire_p. - -1999-05-28 Linus Nordberg - - * config/tc-m68k.c (install_operand): Add places `n', `o'. - - * config/tc-m68k.c (m68k_ip): Add formats `E', `G', `H'. - (install_operand): Add place `N'. - (init_table): Add registers ACC, MACSR, MASK. - - * config/m68k-parse.h (m68k_register): Add ACC, MACSR, MASK. - - * config/tc-m68k.c: Change mcf5200 --> mcf. - (archs): Add mcf5206e, mcf5307. - (m68k_ip): Add format `u'. - (install_operand): Add place `m', `M', `h'. - (init_table): Add upper/lower registers. - - * config/m68k-parse.h (m68k_register): Add upper/lower registers. - -1999-05-28 Martin Dorey - - * config/tc-i960.c: Several minor changes to add ELF and - BFD_ASSEMBLER support. - * config/tc-i960.h: Likewise. - * configure.in (i960-*-elf*): New target. - * aclocal.m4, configure: Rebuild. - -1999-05-25 Alan Modra - - * config/tc-i386.c (md_apply_fix3): Only do 1999-05-17 fx_pcrel - reloc changes when defined(BFD_ASSEMBLER). - -1999-05-17 Alan Modra - - * config/tc-i386.c (tc_gen_reloc): Remove F and MAP macros. - - * write.c (write_print_statistics): Output to file, not stderr. - - * expr.c (generic_bignum_to_int32,64): Prototype. - - * read.c (s_lcomm_internal, sizeof_sleb128, sizeof_uleb128, - output_sleb128, output_uleb128, output_big_sleb128, - output_big_uleb128, output_big_leb128): Prototype. - (output_big_sleb128, output_big_uleb128): Make inline. - (output_big_leb128): Remove inline - - From Maciej W. Rozycki - * config/tc-i386.c (md_apply_fix3): Convert BFD_RELOC_16 with - fx_pcrel set to BFD_RELOC_16_PCREL. Similarly for BFD_RELOC_8. - Handle BFD_RELOC_16_PCREL and BFD_RELOC_8_PCREL. Return changed - value for correct overflow check in write.c:fixup_segment. - * write.c (fixup_segment): Move bitfield overflow checks to after - the md_apply_fix call. - * config/obj-coff.c (fixup_segment): Likewise. - * doc/internals.texi (CPU backend): Mention md_apply_fix modifying - valueT *val argument. - -Fri May 14 10:52:13 1999 Andreas Schwab - - * config/atof-ieee.c (gen_to_words): Correctly round a - denormalized number. Fix off-by-one in range checking for - exponent in a denormal. - -1999-05-10 Nick Clifton - - * config/tc-mcore.c (parse_reg): Accept 'sp' as a valid register - name. - -Thu May 13 09:46:59 1999 Joel Sherrill (joel@OARcorp.com) - - * configure.in (i386-*-rtemself*, sh-*-rtemself*): New targets. - -1999-05-12 Alan Modra - - * config/tc-i386.h (InvMem): New flag. Add to AnyMem. - (ReverseRegRegmem): Remove. - (ImmExt): New flag. Renumber some of the opcode_modifier bits. - * config/tc-i386.c (md_assemble): Test for PIII SIMD and AMD - 3DNow! via ImmExt opcode_modifier. Remove ReverseRegRegmem - kludge. - - From Doug Ledford - * config/tc-i386.h (RegXMM): New for P/III. - * config/tc-i386.c: Add support for P/III. - -Sat May 8 23:28:50 1999 Richard Henderson - - * config/tc-ppc.c (md_parse_option): Recognize -mppc64bridge. - (md_begin): Allow ppc32 insns in ppc64bridge mode. - (ppc_insert_operand): Accept SIGNOPT in ppc64 mode. - -Thu May 6 23:13:39 1999 Richard Henderson - - * config/tc-i386.c (i386_immediate): Skip whitespace before - complaining about junk after expression. - (i386_displacement): Likewise. - -Thu May 6 19:50:14 1999 Richard Henderson - - * symbols.c (symbol_find_base): Use memcpy instead of strcpy. - Don't copy before downcaseing. - -1999-05-05 Catherine Moore - - * config/tc-m68k.c: Include elf/m68k.h. - (m68k_elf_final_processing): New routine. - * config/tc-m68k.h (elf_tc_final_processing m68k_elf_final_processing): - Define. - -Mon May 3 10:26:03 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_apply_fix): Handle 22 bit fmt insn like a - 17 bit fmt insn. - -1999-04-30 Nick Clifton - - * config/tc-mcore.c (mcore_s_section): Dump literals before - changing section. - -1999-04-29 Nick Clifton - - * config/tc-mcore.c (md_apply_fix3): Insert reloc addend into insn - for COFF/PE port. - -Mon Apr 26 12:34:37 1999 Doug Evans - - * config/tc-fr30.h (TC_FIX_TYPE): Delete, cgen fields moved to write.h. - (TC_INIT_FIX_DATA): Delete. - * config/tc-m32r.h (TC_FIX_TYPE): Delete, cgen fields moved to write.h. - (TC_INIT_FIX_DATA): Delete. - * write.h (struct fix): New member fx_cgen, ifdef USING_CGEN. - * write.c (fix_new_internal): Initialize fx_cgen member. - * cgen.c (gas_cgen_record_fixup,gas_cgen_record_fixup_exp): Update. - (gas_cgen_md_apply_fix3): Update. - * config/tc-m32r.c (md_cgen_lookup_reloc): Update. - (md_cgen_record_fixup_exp): Update. - (FX_OPINFO_R_TYPE): Update. - - * frags.c (frag_var,frag_variant): Initialize fr_cgen here. - * config/tc-fr30.h (TC_FRAG_INIT): Delete. - * config/tc-m32r.h (TC_FRAG_INIT): Delete. - * frags.h (struct frag): Make opindex, opinfo ints. - - * config/tc-fr30.c (FX_OPINFO_R_TYPE): Delete, unused. - -1999-04-26 Tom Tromey - - * aclocal.m4, configure: Updated for new version of libtool. - -1999-04-22 Nick Clifton - - * config/tc-mcore.c (md_apply_fix3): Renamed function from - md_apply_fix. - (md_apply_fix3): Do not fix up absolute relocations against - symbolic values. - - * config/tc-mcore.h (MD_APPLY_FIX3): Define. - -1999-04-20 Nick Clifton - - * config/tc-mcore.c (md_pseudo_table): Add intercepts for section - changes and data-in-text directives. - (mcore_cons): New function: intercept cons() operations. - (mcore_float_cons): New function: intercept float_cons() - operations. - (mcore_stringer): New function: intercept stringer() operations. - -1999-04-18 Ian Lance Taylor - - * obj.h (struct format_ops): Change generate_asm_lineno field to - take no parameters. - * config/obj-ecoff.h (OBJ_GENERATE_ASM_LINENO): Don't define. - - * config/tc-alpha.c (find_opcode_match): Add default case to - switch. - (find_macro_match): Likewise. - (load_expression): Parenthesize && within ||. - - * config/tc-alpha.h (TC_RELOC_RTSYM_LOC_FIXUP): Define. - -1999-04-17 Nick Clifton - - * config/tc-mcore.c (md_pseudo_table): Add overrides for .bss - .text .data .section pseudo ops. - (mcore_s_section): New function. Dump lits before changing secs. - (mcore_s_text): New function. Dump lits before changing secs. - (mcore_s_data): New function. Dump lits before changing secs. - -1999-04-16 Gavin Romig-Koch - - * config/tc-mips.c (mips_32bitmode): New. - (md_begin): Set mips_32bitmode if needed. - (mips_elf_final_processing): Don't set EF_MIPS_ARCH. - Set EF_MIPS_32BITMODE. - -Fri Apr 16 12:26:39 1999 Bob Manson - - * config/obj-coff.c (c_section_symbol): Fix typo in previous - change. - -1999-04-16 Nick Clifton - - * config/tc-mcore.h (LOCAL_LABELS_FB): Define to 1. - -Thu Apr 15 16:52:09 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_get_absolute_exression): Try to handle "5 %r3" - expressions correctly. - - -1999-04-15 Gavin Romig-Koch - - * config/tc-mips.c (mips_elf_final_processing): Set EF_MIPS_ARCH. - -Mon Apr 12 23:45:07 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip, case '3'): New case for PA2.0 fmpyfadd - and fmpynfadd instructions. - -1999-04-11 Richard Henderson - - * as.h (environ): Declare it, if needed. - * as.c (dump_statistics): Don't declare environ. - * configure.in (environ): Detect declaration. - * configure, config.in: Rebuild - - * config/tc-i386.c (i386_immediate): Accept @GOT relocations. - (i386_displacement): Allocate enough space for replacement buffer. - Clean up replacement buffer initialization. - -1999-04-11 Bob Manson : - - * subsegs.c (section_symbol): Don't create a new symbol if one - already exists; instead, use the existing one, but set its segment - and frag data if it hasn't already been defined. - * config/obj-coff.c (c_section_symbol): Likewise. - -Sat Apr 10 20:10:02 1999 Richard Henderson - - * config/tc-alpha.c (load_expression): Call as_bad instead of abort. - -1999-04-08 Nick Clifton - - * config/tc-mcore.c: New File: Support routines for MCore - assembler. - * config/tc-mcore.h: New File: Definitions for MCore assembler. - * config/obj-coff.c: Add support for mcore-pe target. - - * Makefile.am: Add support for MCore targets. - * Makefile.in: Regenerate. - * configure.in: Add support for MCore targets. - * configure: Regenerate. - - * doc/all.texi: Set MCORE. - * doc/as.texinfo: Document MCore specific command line options. - - * write.h: Prevent multiple inclusion. - -1999-04-06 Ian Lance Taylor - - * asintl.h (LC_MESSAGES): Never define. - * as.c (main): Don't pass LC_MESSAGES to setlocale if the system - does not define it. - * gasp.c (main): Don't pass LC_MESSAGES to setlocale if the system - does not define it. - - * Makefile.am (m68k-parse.c): If configuring in the source - directory, copy m68k-parse.y into the local directory before - running ylwrap, to remove spurious differences when generating - snapshots. - * Makefile.in: Rebuild. - - * config/tc-sparc.h (md_do_align): Just allocate the number of - bytes necessary, rather than always allocating 1024. - -1999-04-04 Ian Lance Taylor - - * listing.c (listing_newline): Add cast to avoid warning. - * read.c (generate_lineno_debug): Add cases to switch. Reindent. - * config/tc-i386.c (i386_scale): Add return value. - (build_displacement_string): Remove unused local temp_disp2. - (i386_intel_memory_operand): Add parentheses to avoid warning. - (i386_intel_operand): Remove unused local end_of_operand_string. - (i386_operand): Remove unused local operand_modifier. - (i386_operand): Add parens to avoid warning. - -1999-04-04 Don Bowman - - * configure.in: Add mips*-*-vxworks* target; have it define - MIPS_STABS_ELF. - * configure, config.in: Rebuild. - -1999-03-31 Nick Clifton - - * configure.in (emulations): Add support for arm-epoc-pe. - * configure: Regenerate. - * config/te-epoc-pe.h: New file. Define macros specific to - arm-epoc-pe target. - * config/tc-arm.h: Select epoc-pe-arm target format if configured - for arm-epoc-pe target. - -Mon Mar 29 10:15:40 CST 1999 Catherine Moore - - * config/tc-mips.c (md_apply_fix): Adjust value for linkonce sections. - -Wed Mar 24 14:11:10 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Clean up code to - detect ",n" without a condition. - (pa_parse_neg_cmpsub_cmpltr): Likewise. - - -Tue Mar 23 11:28:23 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip, case '~'): The condition for a branch on bit - instruction is encoded with one bit. - - -1999-03-23 Ian Lance Taylor - - * doc/internals.texi (CPU backend): Mention that - line_separator_chars should not include newline. From thi - . - -1999-03-22 Doug Evans - - * config/tc-fr30.c (md_begin): Update call to fr30_cgen_cpu_open. - * config/tc-m32r.c (md_begin): Update call to m32r_cgen_cpu_open. - -Sun Mar 21 18:08:18 1999 Richard Henderson - - * config/tc-alpha.c (md_assemble): Allow '6' in an opcode. - -Thu Mar 18 10:55:30 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip, case 'a'): Do not call pa_parse_..._cmpsub_cmpltr. - - -Thu Mar 18 02:30:07 1999 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_ip, case 'd'): Do not allow ",n". - -1999-03-15 Martin Hunt - - * app.c (do_scrub_begin): Change '-' back to a symbol char - so we can use multiple opcodes on a line again. - - * config/tc-d30v.c: By default, warn if a symbol has - the same name as a register. Plus some minor - updates from the branch. - -1999-03-13 Nick Clifton - - * config/tc-d30v.c (md_apply_fix3): Handle BFD_RELOC_8, - BFD_RELOC_16 and BFD_RELOC_64. - -1999-03-12 Andreas Schwab - - * expr.c (expr): Add missing else. - -1999-03-12 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Improve error message. - -1999-03-11 Doug Evans - - * Makefile.am (CPU_TYPES): Add fr30. - (cgen.o): Add $(CGEN_CPU_PREFIX)-desc.h dependency. - (fr30,m32r dependencies): Update. - * Makefile.in: Rebuild. - - * cgen.c (gas_cgen_record_fixup): Update use of operand->type. - (gas_cgen_record_fixup_exp): Ditto. - (gas_cgen_finish_insn): Call cgen_operand_lookup_by_num. - (gas_cgen_md_apply_fix3): Ditto. Update call to set_vma_operand. - * config/tc-fr30.c (md_begin): Update call to fr30_cgen_cpu_open. - (md_cgen_lookup_reloc): Update use of operand->type. - * config/tc-m32r.c (md_begin): Update call to fr30_cgen_cpu_open. - (md_convert_frag): Call cgen_operand_lookup_by_num. - (md_cgen_lookup_reloc): Update use of operand->type. - (m32r_cgen_record_fixup_exp): Ditto. - -1999-03-09 Jim Blandy - - * config/tc-mips.c (md_show_usage): Fix message. - -1999-03-03 Nick Clifton - - * doc/c-arm.texi (ARM Syntax): Document new command line switches - and LDR reg,= instruction. - - * config/tc-arm.c: Add support for -mcpu=arm810, -mcpu=arm9 and - -mcpu=arm9tdmi. - -Fri Feb 19 09:36:30 1999 Ian Lance Taylor - - * doc/c-arm.texi (ARM-Chars): Fix typo in use of '@'. - -1999-02-17 Nick Clifton - - This patch was created by: Scott Bambrough - - - * app.c: - Special cased '@' character. The '@' character is used as the - ARM assembler comment character, as a special character - and in ELF .symver pseudo-op's, and as a special character in - .type and .section pseudo-ops. - (symver_pseudo): New static variable. - (symver_state): New static variable. - (struct app_save): Add field 'symver_state'. - (app_push): Save global symver_state int struct app_save. - (app_pop): Restore global symver_state from struct app_save. - (do_scrub_chars): Special case handling of '@' character in - .symver pseudo-ops. - - * configure.in: Modified to recognize armv* uname syntax from ARM - Linux kernel. - * configure: Regenerated. - - * config/obj-elf.c (obj_elf_section): Allow '%' as well as '@' as - a prefix to the section's type. - (obj_elf_type): Allow '%' as well as '@' and '#' as prefixes to - the type's typename. - - * config/tc-arm.h: Add support for PIC generation: - (pic_code): New boolean. - (obj_relocate_extern): Define. - (TC_RELOC_RTSYM_LOC_FIXUP): Define - (TC_CONS_FIX_NEW): Define. - (tc_fix_adjustable): Define. - (GLOBAL_OFFSET_TABLE_NAME): Define. - - * config/tc-arm.c: Add support for PIC generation: - (line_seperator_chars): Allow ';' as a seperator for Linux. - (is_immediate_prefix): New macro. - (arm_parse_reloc): New function. - (s_arm_elf_cons): New function. - (do_branch): Special case for BFD_RELOC_ARM_PLT32. - (md_undefined_symbol): Special case handling for the Global Offset - Table's symbol. - (md_apply_fix3): Handle PIC relocs. - (tc_gen_reloc): Handle PIC relocs. - (md_parse_option): Add support for '-k' command line switch to - enable PIC generation. - (cons_fix_new_arm): New function. - (s_arm_elf_cons): New function. - -Tue Feb 16 16:31:53 1999 Ian Lance Taylor - - * configure.in: Add comments for uses of AC_DEFINE. - * acinclude.m4: Likewise. - * acconfig.h: Remove. - * aclocal.m4: Rebuild. - * configure: Rebuild. - * Makefile.in: Rebuild. - * config.in: Rebuild. - -1999-02-15 Jim Lemke - - * config/tc-mips.c (mips_ip: case 'o'): Fix assertion failure for - non-constant offset from a base register. - -1999-02-14 Ken Raeburn - - * config/tc-alpha.c (md_show_usage): Put \ before newline in - strings always. - -Sat Feb 13 14:10:10 1999 Richard Henderson - - * config/tc-alpha.c (cpu_types): Enable EV6 PALcode with -m21264. - (emit_insn): Look for pc-relative and no-overflow specifiers on - internal relocation types. - -1999-02-13 Jim Blandy - - * doc/c-mips.texi (MIPS Opts): Updated list of -mNNNN and - -mcpu=NNNN flags. - - * config/tc-mips.c: Remove all the mips_NNNN variables; just use - mips_cpu instead. - (mips_4650, mips_4010, mips_4100): Variables removed. - (hilo_interlocks, gpr_interlocks, append_insn, macro_build, macro, - macro2, mips16_macro, mips_ip): Test mips_cpu, not the mips_NNNN - variables. - (md_begin): Don't bother initializing the mips_NNNN variables; - mips_cpu is set, and that's good enough now. - (md_parse_option): Have the -mNNNN options set mips_cpu instead of - the mips_NNNN variable. The -no-mNNNN flags are now no-ops. - (show): New function, to handle wrapping in the CPU lists. - (md_show_usage): Update lists of -mcpu and -mNNNN switches. - -Sat Feb 13 00:17:26 1999 Richard Henderson - - * config/tc-i386.c (i386_intel_operand): Ignore `SHORT' rather - than treat as an immediate specifier. - -Thu Feb 11 16:18:31 1999 Richard Henderson - - * config/tc-i386.c: Prototype many functions. - (set_intel_syntax): Accept `prefix'/`noprefix' specifiers. - (i386_immediate): Remove unused second argument. - (i386_intel_operand): Fix i386_is_reg typo. - (i386_operand): Use allow_naked_reg. - (output_invalid): Make operand int for K&R. - -Thu Feb 11 11:21:02 1999 Ian Lance Taylor - - * Makefile.am (EXTRA_as_new_SOURCES): Uncomment--fixed by automake - patch. - * Makefile.in: Rebuild. - -1999-02-09 Doug Evans - - * Makefile.am (DISTCLEANFILES): Change cgen-opc.h to cgen-desc.h. - (cgen.o): Ditto. - (EXTRA_as_new_SOURCES): Comment out. - (.tcdep): -opc.h renamed to -desc.h. - * Makefile.in: Rebuild. - * doc/Makefile.in: Rebuild. - * configure.in: Require autoconf 2.13. Redo using_cgen handling. - Delete call to AM_CYGWIN32. Replace AM_EXEEXT with AC_EXEEXT. - (AC_OUTPUT): -opc.h renamed to -desc.h. - * configure: Rebuild. - * aclocal.m4: Rebuild. - * config.in: Rebuild. - * cgen.c: Include cgen-desc.h, not cgen-opc.h. - (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC. - (gas_cgen_cpu_desc): Renamed from gas_cgen_opcode_desc. - CGEN_INSN_ATTR renamed to CGEN_INSN_ATTR_VALUE. - CGEN_OPERAND_ATTR renamed to CGEN_OPERAND_ATTR_VALUE. - (gas_cgen_record_fixup): Remove unnecessary != 0 test. - (gas_cgen_record_fixup_exp): Ditto. - (gas_cgen_finish_insn): Ditto. Refer to operand table via cpu - descriptor, not global variable. - (gas_cgen_md_apply_fix3): Refer to operand_table via cpu - descriptor, not global variable. Refer to insert_operand handler - via cpu descriptor, not global function. - * cgen.h (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC. - * config/tc-fr30.c: Include opcodes/fr30-desc.h. - (*): gas_cgen_opcode_desc renamed to gas_cgen_cpu_desc. - CGEN_INSN_ATTR renamed to CGEN_INSN_ATTR_VALUE. - Update call to CGEN_OPERAND_TYPE,CGEN_INSN_OPERANDS. - * config/tc-m32r.c: Ditto. - (assemble_two_insns): Update calls to cgen_lookup_get_insn_operands. - (md_assemble): Ditto. - (md_convert_frag): Update call to CGEN_OPERAND_ENTRY. - -1999-02-09 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Fix handling of label1 - label2 - relocations for ELF targets. - -1999-02-08 Nick Clifton - - * configure.in: Add support for StrongARM target. - * configure: Regenerate. - -1999-02-05 Nick Clifton - - * config/tc-arm.h: Tidy OBJ_ELF and OBJ_COFF definitions. - - * config/tc-arm.c (md_apply_fix3): Fix BFD_RELOC_ARM_PCREL_BRANCH - for COFF ports. - -Wed Feb 3 11:35:47 1999 Richard Henderson - - * config/tc-alpha.c (md_show_usage): Document pca56 and ev6 options. - -Mon Feb 1 20:37:30 1999 Catherine Moore - - * config/tc-i386.h (LONG_DOUBLE_MNEM_SUFFIX): Define. - (INTEL_DWORD_MNEM_SUFFIX): Define. - (BYTE_PTR): Define. - (WORD_PTR): Define. - (DWORD_PTR): Define. - (XWORD_PTR): Define. - (SHORT): Define. - (OFFSET_FLAT): Define. - (FLAT): Define. - (NONE_FOUND): Define. - (No_dSuf): Define. - (No_xSuf): Define. - * config/tc-i386.c (set_intel_syntax): New routine. - (intel_syntax): Declare. - (allow_naked_reg): Declare. - (md_pseudo_table): Support .intel_syntax and .att_syntax. - (intel_float_operand): New routine. - (md_assemble): Handle INTEL_DWORD_MNEM_SUFFIX. - Handle brackets as well as parens. Call i386_intel_operand for - intel syntax. Reverse operands if appropriate. Handle new - suffixes. Handle movzx and movsx. - (i386_is_reg): New routine. - (i386_immediate): New routine. - (i386_scale): New routine. - (i386_displacement): New routine. - (i386_operand_modifier): New routine. - (build_displacement_string): New routine. - (i386_parse_seg): New routine. - (i386_intel_memory_operand): New routine. - (i386_intel_operand): New routine. - (i386_operand): Call i386_displacement, i386_immediate, - i386_scale, etc. instead of handling inline. - (parse_register): Handle registers without prefix. - -Mon Feb 1 12:24:58 1999 Catherine Moore - - * configure: Regenerate. - * configure.in (arm-*-oabi): New. - (thumb-*-oabi): New. - * config/tc-arm.c (target_oabi): Declare. - (md_apply_fix3): Support REL relocs. - (md_parse_option): Handle -oabi. - (elf32_arm_target_format): New routine. - (md_longopts): Add OPTION_OABI. - * config/tc-arm.h: Redefine TARGET_FORMAT. - - -1999-01-28 Nick Clifton - - * write.c (write_relocs): Handle out of range error. - - * config/tc-fr30.c (fr30_fix_adjustable): New function. - (fr30_force_relocation): Default to 0. - - * config/tc-fr30.h (obj_fix_adjustable): Define. - (TC_FORCE_RELOCATION): Define. - - * cgen.c (gas_cgen_md_apply_fix3): Do not apply fixes to VTABLE - relocs. - -1999-01-16 Nick Clifton - - * config/tc-d30v.c (write_2_short): Do not generate a sequential - merge of two instructions if the left instruciton kills the right. - -1999-01-11 Doug Evans - - * Makefile.in: Regenerate. - * configure.in: Redo test for using cgen. - * configure: Regenerate. - -1999-01-09 Nick Clifton - - * config/obj-coff.h (obj_adjust_symtab): Prevent accidental - redefinition of this macro. - -Tue Jan 5 21:58:03 1999 Doug Evans - - * config/tc-mips.c (mips_frob_file): Disable "Unmatched %hi reloc" - warning. - -1998-12-29 Gavin Romig-Koch - - * config/tc-mips.c (append_insn): For mips16, insert a nop between - a read of HI or LO and an immediatly following branch. - -1998-12-29 Gavin Romig-Koch - - * config/tc-mips.c (md_begin): Another correction to the setting of - mips_eabi64. - -1998-12-23 Gavin Romig-Koch - - * config/tc-mips.c (md_begin): Correct type-o in setting of - mips_eabi64. - -1998-12-21 Nick Clifton - - * config/tc-m32r.c (md_assemble): Emit a NOP after a relaxable 16 - bit insn when optimizing, so that parallelised instructions will - start on a 32 bit boundary. - -1998-12-19 Gavin Romig-Koch - - * config/tc-mips.c (mips_eabi64): New. - (md_begin): Set mips_eabi64. - (mips_elf_final_processing): Use it. - -1998-12-18 Gavin Romig-Koch - - * config/tc-mips.c (mips_elf_final_processing): - Correct setting of ABI in e_flags. - -Wed Dec 16 16:17:22 1998 Dave Brolley - - * config/tc-fr30.c (md_assemble): Warn about invalid instructions - in delay slots. - -1998-12-16 Gavin Romig-Koch - - * config/tc-mips.c (md_begin,md_parse_option): Handle vr4111. - -1998-12-15 Doug Evans - - * cgen.c (gas_cgen_md_apply_fix3): Mark as an error, rather than a - warning, values that don't fit in the field. - -1998-12-15 Gavin Romig-Koch - - * config/tc-mips.c (mips_abi_string): New. - (md_parse_option,md_longopts): Add mabi. - (mips_elf_final_processing): Set e_flags based on mabi flag. - -1998-12-15 Gavin Romig-Koch - - * config/tc-mips.c (md_parse_option): Handle vr4111. - -98-12-11 Ken Raeburn - - * config/tc-h8300.c (build_bytes): Change message given if the - instruction requires H8/300H mode and we're not in Hmode, to - suggest that it may be the operand modes that are the problem, not - necessarily the opcode. - -1998-12-10 Nick Clifton - - * config/tc-fr30.c: Add line separator character. - -Tue Dec 8 19:51:50 1998 Mark Klein - - * configure.in (hppa-*-mpeix*): New target. - * config/obj-som.h (obj_som_compiler): Declare. - * config/obj-som.c (compiler_seen): New static variable. - (obj_som_compiler): New function. - * config/tc-hppa.c: Update tc_data uses for change to bfd/som.h. - (md_pseudo_table): Add "compiler" if OBJ_SOM. - (pa_type_args): Set hppa_priv_level. - (pa_compiler): New static function if OBJ_SOM. - * configure: Rebuild. - -Tue Dec 8 15:00:50 1998 Ian Lance Taylor - - * read.c (output_leb128): Don't mark as inline. - -1998-12-08 Andrew MacLeod - - * config/tc-ppc.c (ppc_vbyte): Prototype and new function for - AIX .vbyte unaligned data support. - (md_pseudo_table): Add 'vbyte' to list of valid pseudos. - (ppc_elf_validate_fix): Add eh_frame to list of ELF relocatable - sections. - -1998-12-07 Nick Clifton - - * config/tc-d30v.c (md_assemble, do_assemble): Improve erroneous - input handling. - -Mon Dec 7 09:48:34 1998 Catherine Moore - - * config/tc-arm.c (elf32_arm_force_relocation): Check for - BFD_RELOC_ARM_PCREL_BRANCH. - -Sun Dec 6 12:46:36 1998 Ian Lance Taylor - - * configure.in: Define TARGET_BYTES_{BIG,LITTLE}_ENDIAN after - checking the target type. - (mips-dec-bsd*): Set endian to little. - * configure: Rebuild. - - COFF weak symbol support, based on patches from Mark Elbrecht - : - * config/obj-coff.h (S_IS_WEAK): Define if not BFD_ASSEMBLER. - * config/obj-coff.c (obj_coff_weak): New static function. - (obj_coff_endef) [both versions]: Handle weak symbols. - (coff_frob_symbol): Likewise. - (yank_symbols): Likewise. - (obj_pseudo_table): Add "weak". - - * configure.in (m68k-*-gnu*): New target. From Aymeric Vincent - . - * aclocal.m4: Rebuild with current tools. - * configure: Rebuild. - - * config/tc-alpha.c (emit_ldgp): Give an error message rather than - an assertion failure for a case we can't handle when OBJ_ECOFF. - - * expr.c (operator): And with 0xff to avoid problems with signed - char. - -1998-12-03 Nick Clifton - - * config/tc-fr30.c (md_cgen_lookup_reloc): Generate - BFD_RELOC_FR30_48 instead of BFD_RELOC_FR30_32. - -1998-12-02 Nick Clifton - - * config/tc-fr30.c (md_cgen_lookup_reloc): Enable relocs for - LDI:20 insn. - -Thu Nov 26 11:23:48 1998 Dave Brolley - - * config/tc-fr30.c (md_pcrel_from_section): Restore previous - calculation of pcrel point. - -Tue Nov 24 17:21:52 1998 Nick Clifton - - * config/tc-fr30.c (md_pcrel_from_section): Fix calculation of - pcrel point. - -Tue Nov 24 14:54:38 1998 Nick Clifton - - * config/tc-d10v.c (md_assemble): Make static 'etype' have file - scope. - (d10v_cleanup): Only generate previous insn if a multiline insn is - not pending. - -Fri Nov 20 11:41:13 1998 Nick Clifton - - * config/tc-fr30.c (md_cgen_lookup_reloc): Add support for - FR30_OPERAND_I32. - -Thu Nov 19 15:01:29 1998 Nick Clifton - - * config/tc-arm.c (md_parse_option): Add support for -marm7xxx and - -marm6xxx command line switches. - -1998-11-18 Doug Evans - - * Makefile.am (DEP): Use $(srcdir)/../mkdep. - (itbl-ops.o): Delete duplicate dependencies. - Rebuild dependencies. - Add fr30 dependencies. - * Makefile.in: Rebuild. - -Tue Nov 17 13:42:42 1998 Nick Clifton - - * config/tc-fr30.c (md_cgen_lookup_reloc): Updated to match latest - opcode list. - * listing.c: Ignore line terminator characters found inside - strings. - -Thu Nov 12 19:21:24 1998 Dave Brolley - - * po/gas.pot: Regenerated. - -Thu Nov 12 10:54:16 1998 Nick Clifton - - * config/tc-fr30.c (fr30_is_colon_insn): New name for - fr30_is_label_start(). Also checks for delay slot insns. - - * config/tc-fr30.c (fr30_is_label_start): New function: Handle - FR30 instructions which contain a colon in the mnemonic. - - * config/tc-fr30.h (TC_START_LABEL): Define this macro. - -Wed Nov 11 09:58:21 1998 Nick Clifton - - * config/tc-fr30.c: Removed currently superflous code. - -Tue Nov 10 13:13:05 1998 Nick Clifton - - * config/tc-fr30.h: New file. - * config/tc-fr30.c: Tweaking so that it will compile. - -Tue Nov 10 14:41:33 1998 Catherine Moore - - * config/tc-d10v.h (obj_fix_adjustable): Define. - (TC_FORCE_RELOCATION): Define. - (d10v_force_relocation): Declare. - * config/tc-d10v.c (tc_gen_reloc): Handle Vtable relocs. - (md_apply_fix3): Handle Vtable relocs. - (d10v_fix_adjustable): New. - (d10v_force_relocation): New. - -Mon Nov 9 14:25:06 1998 Nick Clifton - - * config/tc-d30v.c: Change default behaviour to ignore potential - conflicts between register name and symbol names. - -Wed Nov 4 18:42:00 1998 Dave Brolley - - * configure.in: Add fr30-*-*. - * config/tc-fr30.c: New file. - * Makefile.in: Regenerated. - * config.in: Regenerated. - * configure: Regenerated. - * doc/Makefile.in: Regenerated. - * po/gas.pot: Regenerated. - -Mon Nov 2 20:54:16 1998 Doug Evans - - * config/tc-m32r.c (assemble_two_insns): Ensure both insns - are 16 bit insns. - -Mon Nov 2 20:10:18 1998 Martin von Loewis - - * app.c (do_scrub_begin): Set characters above 127 to be symbol - characters. - (do_scrub_chars): Add some casts to unsigned char to avoid - unwanted sign extension. - * read.c (lex_type): Set characters about 127 to be symbol - characters. - * config/tc-i386.c (md_begin): Set identifier_chars and - operand_chars for values above 127. - -Mon Nov 2 15:05:33 1998 Geoffrey Noer - - * configure.in: detect cygwin* instead of cygwin32* - * configure: regenerate - -Tue Oct 27 13:18:40 1998 Nick Clifton - - * listing.c: Add support for producing a listing from piped - input. - -Tue Oct 27 08:56:44 1998 Gavin Romig-Koch - - * config/tc-mips.c (hilo_interlocks): Remove mips_3900. - (append_insn): Account for the tx39's multiply behavior. - -1998-10-26 Michael Meissner - - * config/tc-m32r.c (assemble_two_insns): Rename assemble_two_insns - from assemble_parallel_insns. Add support for '->' to indicate - explicitly serializing the instructions. - (md_assemble): Ditto. - -Sat Oct 24 15:12:19 1998 Catherine Moore - - * config/tc-sh.c (sh_fix_adjustable): Adjust EXTERN and - WEAK handling. - -Thu Oct 22 12:41:33 1998 Catherine Moore - - * cgen.c (gas_cgen_md_apply_fix3): Revert last change. - -Thu Oct 22 10:03:15 1998 Ron Unrau - - * config/tc-mips.c: support frame and regmask/fregmask when - MIPS_STABS_ELF is specified. - -Wed Oct 21 11:34:51 1998 Catherine Moore - - * config/tc-sh.c (sh_fix_adjustable): Only include if OBJ_ELF. - (md_apply_fix): Don't return 1 for VTABLE relocs. - * config/tc-sh.h (obj_fix_adjustable): Define only if OBJ_ELF. - -Tue Oct 20 11:18:28 1998 Alan Modra - - * doc/c-i386.texi: Replace occurences of "opcode" with - "instruction mnemonic", "instruction", or "mnemonic" when - referring to the name of an instruction. Use "opcode" when - referring to the sequence of machine bytes. - - * config/tc-i386.c (opcode_chars): Rename to mnemonic_chars. - (is_opcode_char): Rename to is_mnemonic_char. - (md_assemble and i386_operand): Correct error messages from - "opcode" to "instruction mnemonic" - Rename throughout opcode[] -> mnemonic[], opp -> mnem_p, - MAX_OPCODE_SIZE -> MAX_MNEM_SIZE, - DWORD_OPCODE_SUFFIX -> DWORD_MNEM_SUFFIX, - WORD_OPCODE_SUFFIX -> WORD_MNEM_SUFFIX, - BYTE_OPCODE_SUFFIX -> BYTE_MNEM_SUFFIX, - SHORT_OPCODE_SUFFIX -> SHORT_MNEM_SUFFIX - LONG_OPCODE_SUFFIX -> LONG_MNEM_SUFFIX - - * config/tc-i386.h (*_MNEM_SUFFIX): Rename from *_OPCODE_SUFFIX. - - * config/tc-i386.c (i386_operand): Check for garbage after - register name. - -Tue Oct 20 10:49:42 1998 Ian Lance Taylor - - * config/tc-i386.c (md_apply_fix3): Change handling of PCREL reloc - for BFD_ASSEMBLER to only change value when COFF if TE_PE. - -Mon Oct 19 20:20:42 1998 Catherine Moore - - * config/tc-sh.h (obj_fix_adjustable): Define. - * config/tc-sh.c (sh_force_relocation): Handle VT relocs. - (md_apply_fix): Likewise. - (tc_gen_reloc): Likewise. - (sh_fix_adjustable): New. - -Mon Oct 19 12:35:43 1998 Doug Evans - - * cgen.c (gas_cgen_finish_insn): Update handling of CGEN_INT_INSN_P. - * cgen.h (gas_cgen_finish_insn): Update prototype. - * config/tc-m32r.c (m32r_insn): CGEN_INT_INSN -> CGEN_INT_INSN_P. - cgen_insn_t -> CGEN_INSN_INT. - (make_parallel): Update handling of CGEN_INT_INSN_P. - (assemble_parallel_insn): Ditto. - (target_make_parallel): New function. - (md_assemble): Use it. - -Mon Oct 19 13:16:12 1998 Catherine Moore - - * config/tc-m32r.c (m32r_force_relocation): Fix typo. - -Sun Oct 18 18:48:57 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-sh.c (md_assemble): Make sure the entire opcode is - converted into lower case. - -Fri Oct 16 13:36:34 CDT Catherine Moore - - * cgen.c (gas_cgen_md_apply_fix3): Handle VTABLE relocs. - (gas_cgen_tc_gen_reloc): Likewise. - * config/tc-m32r.h (obj_fix_adjustable): Define. - * config/tc-m32r.c (m32r_fix_adjustable): New. - (m32r_force_relocation): Handle VTABLE relocs. - -Wed Oct 14 11:33:38 1998 Nick Clifton - - * doc/c-arm.texi (ARM Directives): Document .ltorn directive. - -Mon Oct 12 11:07:21 1998 Nick Clifton - - * config/tc-m32r.c (assemble_parallel_insn): Convert second opcode - to lower case before parsing. - - * config/tc-d30v.c (parallel_ok): Ignore conflicts when explicitly - parallel insns modift buts in the PSW as a side effect. - -Thu Oct 8 10:18:33 1998 Nick Clifton - - * config/tc-d30v.c (find_format): Test for missing flag and - control registers. - - (md_apply_fix3): Fix error messages to avoid - assumption about presence of a symbol. - - (parallel_ok): Disallow parallel instructions that both modify the - same flag register. - - (find_format): Generate a warning if an odd numbered register is - used as the first register in a mutli-register instruction. - -Wed Oct 7 14:09:14 1998 Nick Clifton - - * config/tc-d30v.c (md_apply_fix3): Do not assume that bad - relocations are always associated with a symbol. - -Tue Oct 6 09:31:15 1998 Catherine Moore - - * config/tc-sparc.h (TC_FORCE_RELOCATION): Define. - (elf32_sparc_force_relocation): Declare. - * config/tc-sparc.c (md_apply_fix3): Handle vtable relocs. - (tc_gen_reloc): Handle vtable relocs. - (elf32_sparc_force_relocation): New. - -Mon Oct 5 09:25:32 1998 Catherine Moore - - * symbols.c (S_IS_FUNCTION): New. - * config/tc-v850.h (obj_fix_adjustable): Define. - (TC_FORCE_RELOCATION): Define. - (v850_force_relocation): Declare. - * config/tc-v850.c (tc_gen_reloc): Use offset instead - of fx_addnumber for VTABLE reloc addends. - (md_apply_fix3): Handle VTABLE relocs. - (v850_fix_adjustable): New. - (v850_force_relocation): New. - -Mon Oct 5 00:48:52 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (fp_operand_format): Add some additional formats. - (pa_ip): Do not automatically promote into pa2.0 mode. - (pa_level): Handle ".level 2.0". - -Sun Oct 4 20:57:43 1998 Alan Modra - - * config/tc-i386.c (md_assemble): Handle AMD_3DNOW_OPCODE. - * config/tc-i386.h (template.extension_opcode): Change to - unsigned int to allow full range of 8-bit opcode suffixes. - (None): Redefine as 0xffff. - - From Jeff B Epler - * doc/c-i386.texi (i386-SIMD): New section. - -Thu Oct 1 15:37:54 1998 Richard Henderson - - * read.c (discard_rest_of_line): New function. - * read.h: Declare it. - * config/tc-alpha.c (s_alpha_mask, s_alpha_frame): Use it. - -Thu Oct 1 10:33:53 1998 Nick Clifton - - * config/tc-d10v.c (find_symbol_matching_register): New function. - (find_opcode): Cope with the case where a register name matches - a symbol name. - -Wed Sep 30 10:52:32 1998 Nick Clifton - - * config/tc-v850.c (md_pcrel_from): Rename to - v850_pcrel_from_section. - (v850_pcrel_from_section): Do not resolves symbols in other - sections. - - * config/tc-v850.h (MD_PCREL_FROM_SECTION): Define. - -Mon Sep 28 11:01:20 1998 Nick Clifton - - * config/tc-d10v.c (find_opcode): Generate an error if a register - is supplied for an operand that should not be a register. - -Fri Sep 25 10:04:21 1998 Nick Clifton - - * config/tc-d30v.c (write_2_short): But do allow delayed branch - instructions to have another instruction in the right bin. - -Thu Sep 24 09:28:34 1998 Nick Clifton - - * config/tc-d30v.c (write_2_short): Do not allow instructions in - the right container if the left container holds a branch - instruction. - -Wed Sep 23 10:54:29 1998 Nick Clifton - - * config/tc-d30v.c (reg_name_search): Only warn if a name matches - both a register name and symbol name. - (find_format): Allow correct parsing of MVTSYS and MVFSYS insns. - -Tue Sep 22 17:49:16 1998 Nick Clifton - - * config/tc-d30v.c (write_2_short): Implement EITHER_BUT_PREFER_MU - execution unit class. - - (reg_name_search): If a name matches a register and a symbol, - prefer the register. - (find_format): Disallow flag registers when a general purpose - register is required. - If a number is required, but a register has been given, check to - see if a symbol with the same name as the register exists, and if - so, use that symbol. - -Tue Sep 22 16:40:52 1998 Jim Wilson - - * config/obj-elf.h (ECOFF_DEBUGGING): Add missing parens. - -Tue Sep 22 15:44:21 1998 Nick Clifton - - * config/tc-d30v.c (find_format): Do not accept flag registers as - general purpose registers. - (find_format): If an immediate value is expected at a given place - in a format, but a register name has been provided instead, check - to see if that register name matches the name of a predefined - symbol and if it does, then use the symbol instead. - (reg_name_search): If a register name matches a symbol name, - prefer the register name to the symbol name. - -Mon Sep 21 10:42:57 1998 Nick Clifton - - * config/tc-m32r.c (m32r_do_align): After inserting NOPs, reset - the previous insn to empty. - -1998-09-20 Michael Meissner - - * config/tc-ppc.c (md_apply_fix3): Do not break string into two - pieces, forcing the use of an ANSI compiler. - -Sun Sep 20 00:58:12 1998 Andreas Schwab - - * config/tc-m68k.h (TC_FORCE_RELOCATION): New macro. Force vtable - relocs. - * config/tc-m68k.c (md_apply_fix_2): Do nothing for vtable relocs. - -Tue Sep 15 08:51:07 1998 Catherine Moore - - * config/obj-elf.c (obj_elf_vtable_inherit): Handle arm - assembler syntax. - (obj_elf_vtable_entry): Likewise. - * config/tc-arm.h: Define TC_FORCE_RELOCATION for OBJ_ELF. - * config/tc-arm.c (md_apply_fix3): Handle VTABLE relocations. - (tc_gen_reloc): Likewise. - (arm_fix_adjustable): Likewise. - (elf32_arm_force_relocation): New. - (armelf_frob_symbol): Remove coff-style symbol support. - -Wed Sep 9 11:27:16 1998 Richard Henderson - - * config/tc-i386.c (i386_operand): Fix typo in last patch. - -Tue Sep 8 18:10:01 1998 Catherine Moore - - * config/tc-arm.c (arm_adjust_symtab): Move #ifdef - OBJ_COFF so that routine is defined for a.out format. - -Tue Sep 8 15:56:19 1998 Richard Henderson - - * config/tc-i386.c (i386_operand): Detect non-segment registers - used as segment prefixes. - -Sat Sep 5 19:00:38 1998 Ian Lance Taylor - - * ehopt.c (check_eh_frame): Check the size of the FDE, and don't - optimize across FDE boundaries. - - * config/obj-coff.c (obj_coff_section): Preserve any link once - flags when setting the section flags. - -Fri Sep 4 17:07:14 1998 Nick Clifton - - * config/tc-arm.h (obj_adjust_symtab): Fixed typo. - * config/tc-arm.c (armelf_adjust_symtab): Reformatted. - -Fri Sep 4 13:57:43 1998 Jakub Jelinek - - * config/tc-sparc.c (in_signed_range): Sign extend 32-bit words - to the host width. - -Wed Sep 2 11:31:14 1998 Richard Henderson - - * frags.c (frag_grow): Include the size of the frag struct in the - obstack chunk size. - - * subsegs.c (subseg_set_rest): Adjust the seginfo frchain start - if the new subseg comes before the old. - -Tue Sep 1 15:01:33 1998 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Allow all digits in an instruction - to handle edge8 and edge16. - -Mon Aug 31 09:51:14 1998 Richard Henderson - - * config/obj-elf.c (obj_elf_vtable_inherit): Print error message - before we clobber the symbol involved. - -Mon Aug 31 10:58:06 1998 Catherine Moore - - * config/tc-arm.c: Remove OBJ_ELF definitions for - S_GET_STORAGE_CLASS and S_SET_STORAGE_CLASS. Only - use arm_adjust_symtab for OBJ_COFF. - (armelf_adjust_symtab): New Routine. - * config/tc-arm.h: Define obj_adjust_symtab to - armelf_adjust_symtab for OBJ_ELF. - -Sat Aug 29 22:18:51 1998 Richard Henderson - - * configure.in: Make all i386-elf targets use bfd_gas. - * config/tc-i386.c (tc_i386_force_relocation): New. - (tc_i386_fix_adjustable): Don't fix vtable relocs. - (md_apply_fix3): Likewise. - (tc_gen_reloc): Handle them. - * config/tc-i386.h (TC_FORCE_RELOCATION): Always define, calling - tc_i386_force_relocation. - -Mon Aug 24 13:40:21 1998 Nick Clifton - - * config/tc-arm.c (md_show_usage): Improve formatting of --help output. - -Fri Aug 21 18:43:48 1998 Nick Clifton - - * config/tc-d30v.c (md_assemble): Copy previous opcode over - current opcode after writing the first insturction of a reverse - sequential pair. - -Fri Aug 21 07:30:35 1998 Doug Evans - - * read.h (generate_lineno_debug): Add prototype. - * read.c (generate_lineno_debug): Make non-static. - -Thu Aug 20 23:17:04 1998 Alan Modra - - * config/tc-i386.c (md_assemble): Only warn for address/data size - prefixes. - -Thu Aug 20 14:45:08 1998 Nick Clifton - - * config/tc-arm.c (arm_fix_adjustable): Do not adjust relocations - against Thumb function names, as the linker needs this information. - -1998-08-20 Vladimir N. Makarov - - * expr.c (operand): Check also that there is no advance in operand - after atof_generic in order to decide "is it label 0f or floating - point number?". - -Wed Aug 19 09:30:16 1998 Nick Clifton - - * config/tc-m32r.c: Replace double dash prefix to M32R specific - command line options with a single dash. - * doc/c-m32r.texi: Replace double dash prefix with a single dash. - -Tue Aug 18 11:59:43 1998 Catherine Moore - - * config/tc-arm.h: Define obj_fix_adjustable for OBJ_ELF. - * config/tc-arm.c (arm_fix_adjustable): New routine. - -1998-08-13 Vladimir N. Makarov - - * read.c (s_align, s_comm, s_mri_common, s_fail, s_globl, s_space, - s_float_space, s_struct, cons_worker): Move ignore_rest_of_line or - demand_empty_rest_of_line before mri_comment_end. - (equals): Check garbage after expression before - mri_comment_end in MRI mode. - -Thu Aug 13 15:08:42 1998 Ian Lance Taylor - - * config/tc-mips.c (macro): Correct M_SGE_I/M_SGEUI_I case for a - small immediate constant to use the constant itself rather than - always using 1. - -Wed Aug 12 18:47:38 1998 Ian Lance Taylor - - * config/tc-hppa.c (pa_enter): Call as_bad rather than abort. - (pa_leave): Likewise. - -Wed Aug 12 13:25:03 1998 Alan Modra - - * config/tc-i386.c (md_assemble): Emit a warning for stand-alone - prefixes. - (i386_operand): Fix an error message. - -Tue Aug 11 14:44:32 1998 Nick Clifton - - * doc/c-arm.texi (ARM Directives): Document .req directive. - - * config/tc-arm.c (reg_required_here): Display erroneous string if - the register name could not be decoded. - Do not set inst.instruction if the sift is -1. - -Mon Aug 10 15:39:56 1998 Richard Henderson - - * config/tc-alpha.c (tc_gen_reloc): Bias WEAK symbols just as - we do for EXTERN. - -Mon Aug 10 15:06:18 1998 Nick Clifton - - * config/tc-d30v.c (d30v_align): Always perform alignment request, - even if it is belived to be unnecessary. - -Mon Aug 10 17:48:09 1998 Alan Modra - - config/tc-i386.c (i386_operand): Size immediate constants by - suffix (erroneously removed as part of July 7 change). - -Sun Aug 9 20:45:32 1998 Catherine Moore - - * config/obj-elf.h: Check for redefinition of obj_frob_symbol. - * config/tc-arm.c: Define S_GET_STORAGE_CLASS and S_SET_STORAGE_CLASS. - (armelf_frob_symbol): New Routine. - * config/tc-arm.h: Define obj_frob_symbol if OBJ_ELF. - -Sat Aug 8 15:21:28 1998 Richard Henderson - - * config/tc-alpha.c (alpha_fix_adjustable): Don't adjust weak syms. - -Wed Aug 5 15:54:14 1998 Nick Clifton - - * config/tc-arm.c (md_begin): Set BFD private flags depending upon - command line switches passed to assembler. - -Mon Aug 3 14:02:52 1998 Doug Evans - - * cgen.h (GAS_CGEN_MAX_FIXUPS): GAS_ prepended, all uses updated. - (gas_cgen_opcode_desc): Declare. - (gas_cgen_parse_operand): Declare. - (*): Prepend gas_ to gas specific fns to denote them as such. - All uses updated. - * cgen.c (gas_cgen_opcode_desc): New global - (gas_cgen_init_parse): Renamed from cgen_asm_init_parse. - (queue_fixup): Renamed from cgen_queue_fixup. - (*): Prepend gas_ to gas specific fns to denote them as such. - All uses updated. - (gas_cgen_md_apply_fix3): Update call to insert_operand. - (gas_cgen_finish_insn): Renamed from cgen_asm_finish_insn. - * config/tc-m32r.c (md_begin): Remove use of CGEN_SYM. - Open opcode table and initialize it. - (make_parallel): Use gas_cgen_opcode_desc. - (assemble_parallel_insn): Ditto. Remove use of CGEN_SYM. - (md_assemble): Ditto. - -Sat Aug 1 19:27:30 1998 Richard Henderson - - * as.h (debug_info_type): Add entries for unspecified and dwarf*. - * ecoff.c (ecoff_generate_asm_lineno): Take no arguments; call - as_where ourselves. Provide a stub for !ECOFF_DEBUGGING. - * ecoff.h: Move ECOFF_DEBUGGING protection inside GAS_ECOFF_H. - Move ecoff_generate_asm_lineno outside ECOFF_DEBUGGING protection. - * read.c (generate_lineno_debug): Tidy ECOFF bits. Use - DEBUG_UNSPECIFIED rather than DEBUG_NONE for initial test. - * config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Define to a variable. - (SEPARATE_STAB_SECTIONS): Conditionalize on value of ECOFF_DEBUGGING. - (INIT_STAB_SECTION): Likewise. - (OBJ_PROCESS_STAB): Likewise. - - * config/tc-alpha.c (md_longopts): New options -mdebug/-no-mdebug. - (md_parse_option): Watch for them. - (alpha_cur_ent_sym, alpha_flag_mdebug): New variables. - (md_begin): Kill neverdef code. - (s_alpha_ent, s_alpha_end, s_alpha_mask, s_alpha_frame): New. - (s_alpha_prologue): Watch alpha_cur_ent_sym. - (s_alpha_coff_wrapper): New. - (md_pseudo_table): Trap all ECOFF pseudos. - -Fri Jul 31 16:45:54 1998 Ron Unrau - - Start of changes to remove mdebug section from mips*-elf - Based on MIPS_STAB_ELF definition - * acconfig.h: undef if not configured - * config.in: undef if not configured - * config/mips-elf.h: only set ECOFF debugging if not stabs-in-elf - * config/tc-mips.c (s_ent): set BSF_FUNCTION - * stabs.c (s_stab_generic): flush frag - -Fri Jul 31 16:14:45 1998 Catherine Moore - - * configure.in: (arm-*-elf): Handle. - (thumb-*-elf): Handle. - * configure: Regenerate. - * read.c (stringer): Fix typo in comment. - * write.c (fixup_segment): Don't add symbol value to addend if - TC_ARM and OBJ_ELF. - * config/tc-arm.c (md_section_align): Don't align dwarf debug - sections. - (tc_gen_reloc): Always set the reloc addend to fixp->fx_offset - for OBJ_ELF. - -Thu Jul 30 21:38:43 1998 Frank Ch. Eigler - - * config/tc-d30v.c ({cur,prev}_left_kills_right_p): New variables. - (write_2_short): Emit warning if new flag is set. - (do_assemble): Set flags if left instruction is one of special - "right-instruction-killer" type. - -Tue Jun 28 18:12:28 1998 Stan Cox - - * config/tc-sparc.c (md_number_to_chars, cons_fix_new_sparc): - Always output words in debug_info section as big endian. - (sparc_target_format): Choose correct bfd target. - (md_apply_fix3): Rename BFD_RELOC_SPARC_32LE to BFD_RELOC_SPARC_REV32. - -Tue Jul 28 11:01:21 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Fix "errmsg" initialization - to work with internationalization code. Issue an error when two - operands match that are not allowed to match. - -Mon Jul 27 16:25:58 1998 Doug Evans - - * configure.in (install_tooldir): Allow target to specify whether - it wants to be installed in $(tooldir)/bin. - * configure: Regenerate. - * Makefile.am (install-exec-local): Set install-exec-tooldir - dependency via configure. - * Makefile.in: Regenerate. - -Fri Jul 24 19:58:59 1998 Doug Evans - - * Makefile.am (install-exec-local): Split into two ... - (install-exec-bindir,install-exec-tooldir): New rules. - * Makefile.in: Regenerate. - -Fri Jul 24 16:31:49 1998 Ian Lance Taylor - - * Makefile.am (install-exec-local): Don't remove the file before - checking whether $(bindir) == $(tooldir)/bin. From Maciej - W. Rozycki . - * Makefile.in: Rebuild. - -Fri Jul 24 09:13:46 1998 Doug Evans - - * cgen.c: Include libiberty.h. - (cgen_md_apply_fix3): Update call to md_cgen_lookup_reloc. - (cgen_tc_gen_reloc): Use xmalloc, not bfd_alloc. - * cgen.h (cgen_md_apply_fix3,cgen_tc_gen_reloc): Declare. - (md_cgen_lookup_reloc)): Declare. - (md_cgen_record_fixup_exp): Declare. - * config/tc-m32r.h (md_pcrel_from_section): Declare. - (m32r_relax_frag): Declare. - (cgen_md_apply_fix3): Decls moved to cgen.h. - (cgen_record_fixup_exp,cgen_tc_gen_reloc): Ditto. - (m32r_cgen_record_fixup_exp): Delete decl. - * config/tc-m32r.c (m32r_cpu_desc): #if 0 out. - (assemble_nop): Delete. - (expand_debug_syms): Delete unused `exp'. - (md_cgen_lookup_reloc): Renamed from CGEN_SYM (lookup_reloc). - Add default case for -Wall. - (m32r_cgen_record_fixup_exp): Add default case for -Wall. - (md_atof): Delete unused wordP. - -Thu Jul 23 13:19:50 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (md_assemble): Make sure "errmsg" has a non-NULL - value. - -Wed Jul 22 14:36:56 1998 Ian Lance Taylor - - * doc/as.texinfo: Add documentation for .end, .exitm, .fail, - .ifc, .ifeqs, .ifge, .ifgt, .ifle, .iflt, .ifnc, .ifne, .ifnes, - .print, .purgem, and .struct. Remove documentation for - .app-file. - -Tue Jul 21 16:50:52 1998 Doug Evans - - * cgen.c (cgen_md_apply_fix3): set_operand renamed to set_vma_operand. - Update call to insert_operand. - -Fri Jul 17 11:42:20 1998 Nick Clifton - - * config/tc-m32r.c (ms_show_usage): Formatting changes. - -Wed Jul 15 15:38:28 1998 Ian Lance Taylor - - * config/tc-i386.c (md_assemble): Don't get confused by trailing - whitespace after a prefix operator. - -Tue Jul 14 15:32:56 1998 Richard Henderson - - * configure.in (i386-*-beos{pe,elf,}*): Recognize. - -Tue Jul 14 12:33:44 1998 Chris Torek - - * config/tc-sparc.c (log2): New static function. - (s_reserve): Use log2 to convert alignment before calling - record_alignment. - (s_common): Use log2 to convert alignment before calling - record_alignment and frag_align. - (sparc_cons_align): Use log2. - -Tue Jul 14 11:58:40 1998 Ian Lance Taylor - - * config/tc-sparc.c (s_reserve): Set symbol size if OBJ_ELF. - (s_common): Likewise. - - * config/tc-sparc.c (sparc_handle_align): Reindent a bit. Correct - initialization of waddr. - (sparc_elf_final_processing): Add default case to switch. - -Tue Jul 14 11:00:16 1998 Alan Modra - - * doc/c-i386.texi: Fix a typo. Use the term 80-bit real rather - than temporary real. - -Mon Jul 13 13:55:42 1998 Ian Lance Taylor - - * write.c (subsegs_finish): Don't align the segments if there were - any errors. - - * config/obj-coff.c (c_symbol_merge): Correct number of bytes when - copying aux information. - - * expr.c (make_expr_symbol): Catch attempts to turn an O_big - expression into a symbol. - -Mon Jul 13 13:29:04 1998 Alan Modra - - * config/tc-i386.c (mode_from_disp_size): Change arg and return - type to unsigned int. - (md_assemble): Change type used to store offsets from unsigned - long to long. - (i386_operand): Switch error check to only call RESTORE_END_STRING - once after parse_register. - -Fri Jul 10 16:00:04 1998 Nick Clifton - - * config/tc-v850.c (md_show_usage): Changed format to match that - of gcc, ld, etc. - - * as.c (show_usage): Changed format to match that of gcc, ld, etc. - -Thu Jul 9 12:09:57 1998 Andreas Schwab - - * config/tc-m68k.c (tc_m68k_fix_adjustable): Don't adjust vtable - relocs. - (md_apply_fix_2): Force the symbol of the vtable reloc to be - weak. - -Thu Jul 9 11:31:54 1998 Ian Lance Taylor - - * doc/Makefile.am (MAINTAINERCLEANFILES): Define. - * doc/Makefile.in: Rebuild. - -Wed Jul 8 12:18:56 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (mips_ip, case 'i' and 'j'): Mask off high bits - for %lo expressions. - (mips_ip, case 'u'): Move range check after code to mask - off bits in %hi/%lo expressions. Mask off high bits for - %lo expressions. - -Tue Jul 7 17:57:38 1998 Ian Lance Taylor - - * doc/Makefile.am (gasver.texi): New target. - (as.info, as.dvi): Depends upon gasver.texi. - * doc/as.texinfo: Include gasver.texi. Mention version number on - title page and in top node. - * doc/Makefile.in: Rebuild. - -Tue Jul 7 11:42:16 1998 Richard Henderson - - * listing.c (listing_listing): For EDICT_LIST, skip all lines up to - but not including the line containing the edict. - * listing.h (LISTING_EOF): New. - * input-scrub.c (input_scrub_next_buffer): Call it. - -Tue Jul 7 13:00:37 1998 Alan Modra - - * config/tc-i386.c (i386_operand): Don't set the size of an - immediate address based solely on the suffix and the mode. - - * config/tc-i386.c (md_assemble): Add assertion to make sure - overlap2 does not set Imm. - - * config/tc-i386.c (space_chars): Remove. The scrubber converts - sequences of whitespace to a single space. - (is_space_chars): Just compare with space. - (md_begin): Don't initialize space_chars. - (md_assemble): Just skip a single whitespace character. - (i386_operand): Rewrite base-index parsing to use new - parse_register, and to skip white space. Skip white space in a - number of other places too. Don't give error message if - parse_register fails. - (parse_register): Change reg_string parameter to be non-const. - Add end_op parameter. Skip white space after the `%', and return - end of register string. Give error message here rather than - caller. - -Fri Jul 3 15:34:34 1998 Ian Lance Taylor - - Based on patch from Matt Semersky : - * expr.c (op_encoding): Make const. - (expr_set_precedence): New function. - (expr_begin): Don't set operator rankings, just call - expr_set_precedence. - * expr.h (expr_set_precedence): Declare. - * read.c (s_mri): Call expr_set_precedence. - -Thu Jul 2 16:24:58 1998 Ian Lance Taylor - - * doc/as.texinfo (Statements): Remove paragraph discussing - continuing lines with a backslash. This hasn't worked for years, - if it ever did. - -Thu Jul 2 14:06:22 1998 Klaus Kaempf - - * config/obj-vms.c: Add C++ support with ctors/dtors sections. Add weak - symbol definitions. - (Ctors_Symbols, Dtors_Symbols): New symbol chains. - (ps_CTORS, ps_DTORS): New section types. - (vms_fixup_xtors_section): New function - (Ctors_Psect, Dtors_Psect): Define. - (IS_GXX_XTOR): Define - (global_symbol_directory): Change check of gxx_bug_fixed to 0. - Filter static constructors/destructors and add to - Ctors_Symbols/Dtors_Symbols chain. - (vms_write_object_file): Write Ctors_Symbols/Dtors_Symbols to - appropriate section. - - * config/tc-alpha.h (TARGET_FORMAT): Rename "evax-alpha" to "vms-alpha". - * makefile.vms: Merge vax/vms support. - -Wed Jul 1 20:06:20 1998 Richard Henderson - - * config/obj-elf.c (obj_elf_vtable_inherit, obj_elf_vtable_entry): New. - (elf_pseudo_table): Add them. - * config/tc-mips.c (mips_force_relocation): Force vtable relocs. - (md_apply_fix): Accept them. - (mips_fix_adjustable): Don't adjust them. - (tc_gen_reloc): Mung BFD_RELOC_VTABLE_ENTRY for Rel. - * config/tc-ppc.c (md_apply_fix3): Accept vtable relocs. - * config/tc-ppc.h (TC_FORCE_RELOCATION_SECTION): Force vtable relocs. - (tc_fix_adjustable): Don't adjust them. - -Wed Jul 1 16:35:32 1998 Doug Evans - - * Makefile.am (CGEN_CPU_PREFIX): New variable. - (cgen.o): Use it. - * Makefile.in: Regenerate. - * configure.in: AC_SUBST cgen_cpu_prefix. - * configure: Regenerate. - -Wed Jul 1 21:38:56 1998 J"orn Rennecke - - * config/tc-sh.c (COND_JUMP_DELAY, COND12_DELAY_LENGTH): Define. - Changed all users of COND12_DELAY. - -Fri Jun 26 11:21:11 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (set_arch_mach): New function. - (md_pseudo_table): Add pseudo-ops to set the current machine type. - (md_begin): Default to mn10300 mode. - (md_assemble): Only accept instructions for the core mn10300 - chip and the active machine type. - -Wed Jun 24 19:06:04 1998 Ian Lance Taylor - - * subsegs.h (segment_info_type): Give the struct a name. - * config/tc-h8300.h (tc_reloc_mangle): Add prototype. - * config/tc-h8500.h (tc_reloc_mangle): Declare. - * config/tc-sh.h (sh_coff_reloc_mangle): Add prototype. - * config/tc-w65.h (tc_reloc_mangle): Declare. - * config/tc-z8k.h (tc_reloc_mangle): Declare. - -Wed Jun 24 13:45:00 1998 Catherine Moore - - * config/tc-v850.c (v850_comm): Restore old section - after common processing. - -Wed Jun 24 11:50:54 1998 Klaus Kaempf - - * config/obj-vms.c (Create_VMS_Object_File): Force binary file. - -Tue Jun 23 17:47:31 1998 Jim Wilson - - * config/tc-h8300.c (do_a_fix_imm, build_bytes): Replace cast to - char with code that explicitly sign-extends. - -Tue Jun 23 13:54:57 1998 Nick Clifton - - * config/tc-v850.c (md_begin): Restore text section as the current - section after creating call table sections. - * config/obj-coff.h (SYM_AUXINFO): New macro to conceal ugly - code. - - * config/obj-coff.c (c_symbol_merge): Replace complex expresion - with call to macro SYM_AUXINFO. - -Tue Jun 23 15:09:27 1998 Mike Stump - - * Makefile.am (install-exec-local): Don't let EXEEXT interfere - with the program transform name. - * Makefile.in: Rebuild. - -Mon Jun 22 19:52:42 1998 Ian Lance Taylor - - * config/obj-coff.c (c_symbol_merge): Fix copying of auxiliary - information. - -Mon Jun 22 15:18:58 1998 Ian Lance Taylor - - * config/tc-i386.c (i386_operand): Be prepared for a space between - the open parenthesis and the start of the register operand, - because of the June 16 change. - -Sun Jun 21 21:27:03 1998 Ian Lance Taylor - - * config/tc-sh.c (md_apply_fix): Handle weak symbols correctly if - BFD_ASSEMBLER. - -Sun Jun 21 12:26:36 1998 Nick Clifton - - * config/tc-d30v.c (d30v_align): Always perform alignment request, - even if it is belived to be unnecessary. - -Fri Jun 19 13:57:06 1998 Ian Lance Taylor - - * write.c (adjust_reloc_syms): Never adjust relocs against weak - symbols. - * config/tc-mips.c (md_apply_fix): Adjust accordingly. - -Fri Jun 19 09:50:17 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.c (mn10300_insert_operand): Do not hardcode the - shift amount for a repeated operand. The shift amount for the - repeated copy comes from the size of the operand. - -Fri Jun 19 00:44:19 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (get_operand): Fix typos in ldm/stm support. - -Wed Jun 17 13:07:05 1998 Ian Lance Taylor - - * config/tc-mips.c (md_show_usage): Fix -mipsN usage. - -Tue Jun 16 13:06:21 1998 Alan Modra - - * app.c (do_scrub_begin): If tc_symbol_chars is defined, treat all - characters in it as LEX_IS_SYMBOL_COMPONENT. - * config/tc-i386.h (tc_symbol_chars): Define. - (extra_symbol_chars): Declare. - * config/tc-i386.c (extra_symbol_chars): Define. - (comment_chars): Don't use '/' as comment start if TE_LINUX. - (line_comment_chars): Set to '/' if TE_LINUX. - * doc/c-i386.texi (i386-prefixes): Update. - * doc/internals.texi (CPU backend): Document tc_symbol_chars. - -Fri Jun 12 13:36:54 1998 Tom Tromey - - * po/Make-in (all-yes): If maintainer mode, depend on .pot file. - ($(PACKAGE).pot): Unconditionally depend on POTFILES. - -1998-06-12 Vladimir N. Makarov - - * config/tc-d10v.c (md_apply_fix3): Checking displacement - constraint in instructions REP & REPI. - -Thu Jun 11 08:56:46 1998 Nick Clifton - - * config/tc-d30v.c (md_apply_fix3): Catch BFD_RELOC_8, - BFD_RELOC_16, BFD_RELOC_64 and issue appropriate error messages. - - (check_range): If the operand is shifted, then shift the number - before checking its range. - - * write.c (adjust_reloc_syms): Add more checks for NULL pointers. - - * config/tc-v850.c (v850_comm): Set SEC_COMMON bit on special - common sections. - -Wed Jun 10 17:26:35 1998 Nick Clifton - - * config/tc-v850.c (v850_comm): Create special sections as needed. - -1998-06-10 Vladimir N. Makarov - - * config/tc-d10v.c (write_2_short): Addition of swapping - instructions for sequential and reverse sequential order when - given order is not possible. - -Tue Jun 9 13:52:53 1998 Ian Lance Taylor - - * Makefile.am: Rebuild dependencies. - (DEP_INCLUDES): Fix reference to intl build directory. - * Makefile.in: Rebuild. - -Tue Jun 9 12:20:05 1998 Alan Modra - - * doc/c-i386.texi: Update 16 bit documentation. - - * config/tc-i386.h: Change Data16 to Size16, Data32 to Size32, - IgnoreDataSize to IgnoreSize as they are used for address size as - well as data size. - * config/tc-i386.c: Likewise. Add code to reject addr32/data32 in - 32-bit mode, similarly addr16/data16 and variants. - -Mon Jun 8 18:32:01 1998 Nick Clifton - - * config/tc-d30v.c (md_assemble): Fix handling of reverse - sequential word multiply instructions. - - (do_assemble): Add extra command line argument, to allow mul32 - attribute to be preserved across parallel insns. - (md_assemble): Insert NOPs between explicitly parallel insns which - contain an 32 bit multiply and a 16 multiply. - -Mon Jun 8 12:20:30 1998 Alan Modra - - * config/tc-i386.c: REPNE renamed to REPNE_PREFIX_OPCODE, and - likewise for REPE. - - * config/tc-i386.c (reloc): Add braces. - - * config/tc-i386.c (struct _i386_insn): Rename bi to sib to be - consistent with Intel naming. - * config/tc-i386.h (base_index_byte): Rename to sib_byte. Don't - use bitfields in sib_byte. - (modrm_byte): Don't use bitfields here either. - - * config/tc-i386.c (current_templates): Add const. - (parse_register): Add const to return, param, and char *s. - (i386_operand): Add const to reg_entry *r. - * config/tc-i386.h (templates): Add const to start, end. - - Inspired by code for 16 bit gas support from Martynas Kunigelis - : - * config/tc-i386.c (md_assemble): Add full support for 16 bit - modrm, and Jump, JumpByte, JumpDword, JumpInterSegment insns. - (uses_mem_addrmode): Remove. - (md_estimate_size_before_relax): Add support here too. - (md_relax_table): Rewrite interface to md_relax for 16 bit - support. - (BYTE, WORD, DWORD, UNKNOWN_SIZE): Remove. - (opcode_suffix_to_type): Remove. - (CODE16, SMALL, SMALL16, BIG, BIG16): Define. - (SIZE_FROM_RELAX_STATE): Modify to suit above. - (md_convert_frag): Likewise. - (i386_operand): Add support for 16 bit base/index regs, - immediates, and displacements. Remove some unnecessary casts, and - localise end_of_operand_string, displacement_string_start, - displacement_string_end variables. Add GCC_ASM_O_HACK. - * config/tc-i386.h (NO_BASE_REGISTER_16): Define. - - * config/tc-i386.c (prefix_hash): Remove. - (md_begin): Rewrite without obstacks. Remove prefix hash table - handling. Rewrite lexical table handling. - (i386_print_statistics): Don't print prefix statistics. - (md_assemble): Rewrite instruction parser so that line is not - converted to lower case. Don't do a hash_find for prefixes, - instead recognise them via opcode modifier. - (expecting_operand, paren_not_balanced): Localise variables. - * config/tc-i386.h (IsPrefix): Define. - (prefix_entry): Remove. - - * config/tc-i386.h (PREFIX_SEPERATOR): Don't define. - * config/tc-i386.c (PREFIX_SEPARATOR): Define here instead, using - '\\' in case where comment_chars contains '/'. - - * config/tc-i386.c (MATCH): Ensure given operand and template - match for JumpAbsolute. Makes e.g. `ljmp table(%ebx)' invalid; - you must write `ljmp *table(%ebx)'. - - From H.J. Lu : - * config/tc-i386.c (BFD_RELOC_16, BFD_RELOC_16_PCREL): Define - as 0 ifndef BFD_ASSEMBLER. - (md_assemble): Allow immediate operands without suffix or - other reg operand to default in size to the current code size. - -Mon Jun 8 09:45:00 1998 Catherine Moore - - * config/tc-v850.c (md_begin): Restore creation of - .call_table_text and .call_table_data sections. - -Sat Jun 6 00:02:41 1998 Nick Clifton - - * config/tc-d30v.c (md_assemble): Set execution type to unknown - after emitting a word of noops. - -Fri Jun 5 23:27:04 1998 Alan Modra - - * config/tc-i386.c (mode_from_disp_size): Disp16 is mode 2. - (i386_operand): Simplify checks for valid base/index combinations. - Disallow `in 4(%dx),%al'. - - * config/tc-i386.c (struct _i386_insn): Make regs, base_reg, and - index_reg const. - (add_prefix): Change parameter from char to int. - - * config/tc-i386.h (Ugh): Define opcode modifier. - * config/tc-i386.c (md_assemble): Print warnings for Ugh insns. - - * config/tc-i386.c (md_assemble): Rewrite MATCH and - CONSISTENT_REGISTER_MATCH macros to check register types more - thoroughly. Check for illegal suffix/operand combinations - when matching insns with operands. Handle new `s' suffix, and - associated FloatMF opcode modifier for float insns with memory - operands. - * config/tc-i386.h (FloatMF): Define new opcode modifier. - (No_sSuf, No_bSuf, No_wSuf, No_lSuf): Likewise. - (SHORT_OPCODE_SUFFIX, LONG_OPCODE_SUFFIX): Define. - * config/tc-i386.c: Rename WORD_PREFIX_OPCODE to - DATA_PREFIX_OPCODE throughout. - - * config/tc-i386.c (REGISTER_WARNINGS): Define. - (md_assemble): Rewrite suffix/register operand checking code to be - more thorough. Remove Abs8,16,32. Change occurrences of Mem to - AnyMem, the better to grep. - (pi): Remove Abs. - (i386_operand): Don't set Mem bits in i.types[this_operand] when - given a memory operand. Don't set Abs bits either. - (type_names): Remove Mem*, Abs*. - * config/tc-i386.h (Mem8, Mem16, Mem32, Abs8, Abs16, Abs32): Don't - define opcode_modifiers as these cases are handled by Disp8, - Disp16, Disp32 and suffix checks. - (COMES_IN_BOTH_DIRECTIONS): Remove. - (FloatR): Define. It's OK to share the bit with ReverseRegRegmem. - - * config/tc-i386.c (md_assemble): Don't emit operand size prefix - if IgnoreDataSize modifier given. Remove ShortformW modifier - test. Add test for ShortForm in W base_opcode modification. - Merge Seg2ShortForm and Seg3ShortForm code. - * config/tc-i386.h (ShortFormW): Remove. - (IgnoreDataSize): Define. - -Fri Jun 5 10:50:53 1998 Nick Clifton - - * config/tc-d30v.c (md_assemble): Store previous segment state - with previous instruction. - -Wed Jun 3 18:21:56 1998 Alan Modra - - * config/tc-i386.c (SCALE1_WHEN_NO_INDEX): Define. - (ebp, esp): Remove static variables. - (MATCH): Remove test for InOutPortReg. - (i386_operand): Properly handle InOutPortReg here instead. - Disallows `inb (%dx,2)', `inb %es:(%dx)' and `mov (%dx),%ax' - (md_assemble): Simplify and correct modrm and sib generation. - (i386_operand): Add warning for scale without index. - Rewrite checks for valid base/index combinations. - - * config/tc-i386.c (END_STRING_AND_SAVE): Protect arguments of - macros and enclose in do while(0). - (RESTORE_END_STRING): Likewise. - (md_assemble): Add one to printed operand number so we start - from 1 not 0. Add some more gettext invocations. - (i386_operand): Fix `%%s' -> `%%%s'. Inc printed operand - number here too. - - * config/tc-i386.h (WAIT_PREFIX, LOCKREP_PREFIX, ADDR_PREFIX, - DATA_PREFIX, SEG_PREFIX): Define. - * config/tc-i386.c (struct _i386_insn): Remove wait_prefix field. - (check_prefix): Remove function. - (add_prefix): New function. Add prefix to i.prefix as well as - doing checks. - (md_assemble): Changes for add_prefix. Remove hack for wait - prefix, instead always output prefixes in fixed order. Test - for jcxz/loop when selecting between word & dword operations, - and add address size prefix rather than operand size prefix. - Remove operand -> address size hack when emitting jcxz/loop. - (i386_operand): Remove O_Absent check as it's done in expr. - -Wed Jun 3 15:09:10 1998 Ian Lance Taylor - - * configure.in: Recognize m5200 as a cpu_type of m68k. - * aclocal.m4: Rebuild with current libtool. - * configure: Rebuild. - -Wed Jun 3 14:11:59 1998 Andreas Schwab - - * config/tc-m68k.c (md_estimate_size_before_relax): Add more calls - to relaxable_symbol to prevent references to external symbol from - being relaxed. - -Wed Jun 3 14:10:36 1998 Ian Lance Taylor - - * config/tc-m68k.c (relaxable_symbol): If TARGET_OS is "elf", all - symbols are relaxable. - -Wed Jun 3 09:16:00 1998 Catherine Moore - - * config/tc-v850.c (md_begin): Don't create special - sections by default. - -Tue Jun 2 14:52:56 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (macro): For div and udiv, close the - reorder block as soon as possible. - -Tue Jun 2 15:36:13 1998 Ian Lance Taylor - - From Matt Semersky : - * macro.c (macro_mri_mode): New function. - * macro.h (macro_mri_mode): Declare. - * read.c (s_mri): Call macro_mri_mode when switching in and out of - MRI mode. - -Tue Jun 2 13:32:22 1998 Klaus Kaempf - - * config/tc-alpha.c (s_alpha_comm): Allow alignment parameter in - OBJ_EVAX case. - - * config/tc-alpha.c (s_alpha_comm): Defer restoring character - until after xstrdup in OBJ_EVAX case. - -Tue Jun 2 13:11:13 1998 Pat Rankin - - * config/tc-vax.c (md_create_short_jump): Fix off by two bug in - offset calculation. Also, use VAX_BRW from vax-inst.h instead - of hardcoded magic number. - (md_create_long_jump): Use VAX_JMP and VAX_ABSOLUTE_MODE macros. - -Tue Jun 2 09:25:34 1998 Doug Evans - - * read.c (do_s_func): New function. - (s_func): Call it. - * read.h (do_s_func): Add prototype. - -Mon Jun 1 12:47:30 1998 Doug Evans - - * config/tc-m32r.c (m32r_do_align): Only fill code sections with - nops if fill pattern not specified. - -Mon Jun 1 14:08:35 1998 Ian Lance Taylor - - From Andrew Crabtree : - * config/te-go32.h (TE_GO32): Define. - * config/tc-i386.h (LOCAL_LABEL): Don't define if TE_GO32. - -Sun May 31 15:43:06 1998 Doug Evans - - Implement .func/.endfunc pseudo-ops. - * read.h (stabs_generate_asm_func,stabs_generate_asm_endfunc): Declare. - (s_func): Declare. - * read.c (potable): Add .func,.endfunc. - (s_func): New function. - * stabs.c (stabs_generate_asm_func,stabs_generate_asm_endfunc): New - functions. - (in_doc_func_p,current_function_label): New static globals. - (stabs_generate_asm_lineno): Emit function relative stabs if in .func. - -Fri May 29 18:13:12 1998 Ian Lance Taylor - - * config/tc-a29k.h (WORKING_DOT_WORD): Define. - * config/tc-alpha.h (WORKING_DOT_WORD): Define. - * config/tc-arm.h (WORKING_DOT_WORD): Define. - * config/tc-h8300.h (WORKING_DOT_WORD): Define. - * config/tc-h8500.h (WORKING_DOT_WORD): Define. - * config/tc-hppa.h (WORKING_DOT_WORD): Define. - * config/tc-i860.h (WORKING_DOT_WORD): Define. - * config/tc-i960.h (WORKING_DOT_WORD): Define. - * config/tc-tic30.h (WORKING_DOT_WORD): Define. - * config/tc-w65.h (WORKING_DOT_WORD): Define. - * config/tc-z8k.h (WORKING_DOT_WORD): Define. - * config/tc-a29k.c: Don't define md_short_jump_size, - md_long_jump_size, md_create_short_jump or md_create_long_jump. - * config/tc-alpha.c: Likewise. - * config/tc-alpha.h: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-h8500.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.h: Likewise. - * config/tc-tic30.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - -Fri May 29 16:03:26 1998 Pat Rankin - - * config/tc-vax.c (_): Delete this macro used for placeholder - values in vax_operand_width_size; it conflicts with the _() macro - used for internationalization. - -Fri May 29 13:46:07 1998 Ian Lance Taylor - - * symbols.c (symbol_find_base): Fix case insensitive symbol name - code. From Chris Moller . - - Based on patch from Klaus Kaempf : - * struc-symbol.h (struct broken_word): Add seg and subseg fields. - * read.c (emit_expr): Initialize seg and subseg fields of a new - broken word. - * write.c (write_object_file): Switch to the appropriate segment - and subsegment when processing a broken word. - - * config/tc-m68k.c (mri_assemble): New static function. - (build_mri_control_operand): Call mri_assemble rather than - md_assemble. - (s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise. - (s_mri_endf, s_mri_endw): Likewise. - -Wed May 27 11:16:25 1998 Ian Lance Taylor - - * read.c (s_org): Call md_flush_pending_output if it is defined. - - * config/tc-sparc.c (md_show_usage): Add \n\ to new string. - -Tue May 26 19:27:52 1998 Stan Cox - - * config/tc-sparc.c (OPTION_LITTLE_ENDIAN_DATA): New. - (md_parse_option): Add for same. - (sparc_md_end): Set bfd_mach_sparc_sparclite_le. - (md_apply_fix3, tc_gen_reloc): Allow BFD_RELOC_SPARC_32LE. - (cons_fix_new_sparc): Added to create BFD_RELOC_SPARC_32LE. - - * config/tc-sparc.h (cons_fix_new_sparc): Added. - -Thu May 21 15:02:41 1998 Nick Clifton - - * config/tc-arm.c (find_real_start): Relax definition of local - labels. - -Tue May 19 16:59:44 1998 Nick Clifton - - * config/tc-d30v.c (d30v_align): Apply address adjustment to all - symbols at the given address, not just the last one specified. - -Tue May 19 08:25:19 1998 Catherine Moore - - * config/tc-sparc.c (sparc_handle_align): Use number_to_chars_bigendian - or number_to_chars_littleendian to write data. - -Mon May 18 17:09:30 1998 Nick Clifton - - * config/tc-v850.c (md_assemble): Remove artificially created - register name symbols. - -Mon May 18 13:47:06 1998 Doug Evans - - * write.c (fixup_segment): Change "segment" to "section" in - error message. - -Mon May 18 16:55:40 1998 Michael Meissner - - * write.c (fixup_segment): Change sym1-sym2 message again. - -Mon May 18 09:31:43 1998 Michael Meissner - - * write.c (fixup_segment): Improve error message for sym1-sym2 - errors when sym1 is in a different segment from sym2. - -Wed May 13 10:16:37 1998 Doug Evans - - * config/tc-m32r.c (warn_unmatched_high): New static local. - (OPTION_WARN_PARALLEL): Rename from OPTION_WARN. - (OPTION_NO_WARN_PARALLEL): Rename from OPTION_NO_WARN. - (md_longopts): Recognize --{no-,}warn-unmatched-high. - (md_parse_option): Likewise. - (md_show_usage): Likewise. - (m32r_frob_file): Likewise. - - * read.c (generate_file_debug,generate_lineno_debug): New functions. - (read_a_source_file): Call them. - * read.h (stabs_generate_asm_file): Declare. - * stabs.c (stabs_generate_asm_file): New function. - (generate_asm_file): New function. - (stabs_generate_asm_lineno): Move file name handling into - generate_asm_file. - -Tue May 12 12:03:44 1998 Richard Henderson - - * config/tc-d30v.c (cur_mul32_p, prev_mul32_p): Make static. - (d30v_current_align, d30v_current_align_seg): New variables. - (d30v_last_label): New variable. - (d30v_align, s_d30v_align, s_d30v_text): New functions. - (s_d30v_data, s_d30v_section): Likewise. - (md_pseudo_table): Call them. - (md_begin): Initialize d30v_current_align_seg. - (md_assemble): Call d30v_align when needed by known current alignment. - (d30v_frob_label, d30v_cons_align): New functions. - * config/tc-d30v.h (md_do_align): Remove. - (tc_frob_label): Call d30v_frob_label. - (md_cons_align): New. - - * config/tc-d30v.c (find_format): Convert complex expressions to - expression symbols before processing. Clean up code formatting. - -Sun May 10 22:35:02 1998 Jeffrey A Law (law@cygnus.com) - - * po/Make-in (install-info): New target. - -Thu May 7 15:49:07 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (md_assemble): Handle "bra" just like "jmp" - instructions. - * config/tc-mn10300.c (md_assemble): Likewise. - -Thu May 7 11:47:22 1998 Doug Evans - - * Makefile.am: Update with `make dep-am'. - (HFILES): Add cgen.h. - (cgen.o): Depend on cgen.h. - * Makefile.in: Regenerate. - - * cgen.c (cgen_md_apply_fix3): Don't pass newline to as_warn_where. - -Thu May 7 13:20:56 1998 Anders Blomdell - - * gasp.c (grab_label): Permit a label to be a preprocessor - variable by permitting a label to start with a backslash. - -Thu May 7 12:50:33 1998 Frank Ch. Eigler - - * config/tc-mips.c (validate_mips_insn): Removed hack - for previously inaccessible bitfields in some INSN_TRAP - instructions. - -Thu May 7 11:13:00 1998 Frank Ch. Eigler - - * config/tc-d30v.c (do_assemble): Abort with error message - if opcode operands do not match. - -Thu May 7 09:36:06 1998 Frank Ch. Eigler - - * config/tc-mips.c (macro_build, validate_mips_insn): Implement - 'q' operand format for 20-bit "break"/"sdbbp" instructions. - (mips_ip): Truncate overflowed "break" 'c' operand. Implement - similar new 'q' operand. - -Thu May 7 07:47:14 1998 Michael Meissner - - * cgen.c (cgen_asm_finish_insn): Fix typo. - -Thu May 7 02:19:14 1998 Doug Evans - - * cgen.h: New file. - * cgen.c: Include it. - (MAX_FIXUPS): Renamed to CGEN_MAX_FIXUPS. - (cgen_asm_finish_insn): Result is now void. New arg `result'. - All callers updated. - * config/tc-m32r.c: Include cgen.h. - (m23r_insn): New members num_fixups,fixups. - -Wed May 6 16:29:19 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (md_apply_fix): Slightly rework some code - to avoid compiler warning. - -Wed May 6 15:26:34 1998 Klaus Kaempf - - * makefile.vms: Run dec c with /nodebug. Pass CC value when - calling make. - - * makefile.vms (OBJS): Add ehopt.obj - -Wed May 6 15:11:12 1998 Klaus Kaempf - - * doc/c-vax.texi: Correct and extend vax/vms documentation. - -Wed May 6 11:51:51 1998 Richard Henderson - - * config/tc-d30v.c (do_assemble): Accept a new parameter requesting - a short format insn. - (md_assemble): Set it for explicitly packed insns. - -Tue May 5 13:23:13 1998 Nick Clifton - - * config/obj-coff.c (c_symbol_merge): Do not take address of - native fields when performing the memcpy. - -Tue May 5 13:10:41 1998 Gavin Koch - - * config/tc-mips.c (macro,macro2): Implement - M_DMULO_I, M_MULO_I, M_DMULOU_I, and M_MULOU_I. - -Mon May 4 17:49:14 1998 Andreas Schwab - - * config/tc-m68k.h (TC_RELOC_RTSYM_LOC_FIXUP): Changed to keep - relocations against globally visible symbols. - * config/tc-m68k.c (relaxable_symbol): New macro. - (m68k_ip, md_estimate_size_before_relax): Use it. - (tc_m68k_fix_adjustable): Also handle weak symbols. - -Mon May 4 16:12:23 1998 Ian Lance Taylor - - * config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Keep relocs for all - references to externally visible symbols. - * config/tc-i386.c (md_apply_fix3): When OBJ_ELF, don't add the - values in twice for a PC relative reloc if the symbol is - externally defined. - - * config/tc-sparc.h (tc_fix_adjustable) [OBJ_AOUT]: When PIC, - don't adjust a PC relative reloc against an externally visible - symbol. - * config/tc-sparc.c (md_apply_fix3): When generating a.out PIC, - for a PC relative fixup against an externally visible defined - symbol, arrange to store object file and addend values as though - the symbol were not defined. - (tc_gen_reloc): Likewise. - -Thu Apr 30 13:09:39 1998 Fred Fish - - * read.c (sizeof_leb128): Referenced externally by write.c so - don't inline. - -Wed Apr 29 15:45:57 1998 Michael Meissner - - * config/tc-m32r.c ({,expand_}debug_sym): New functions to record - and expand a 'debug' symbol associated with the next instruction - that does not cause a short instruction to be filled with a NOP. - (md_pseudo_table): Add support for .debugsym. - (assemble_parallel_insn): Add calls to expand_debug_sym as - appropriate. - (md_assemble): Ditto. - -Tue Apr 28 19:16:26 1998 Tom Tromey - - * as.c (main): Conditionally call setlocale. - * gasp.c (main): Likewise. - * asintl.h: Include if HAVE_LOCALE_H. - (LC_MESSAGES): Now can be defined even when ENABLE_NLS. - -Tue Apr 28 18:33:23 1998 Frank Ch. Eigler - - * config/tc-d30v.c (md_show_usage): Correct gettext typo. - -Tue Apr 28 12:16:30 1998 Ian Lance Taylor - - * config/tc-hppa.c: Change all calls to bzero to use memset. - (pa_ip): Add cast to avoid warning. - (tc_gen_reloc, md_apply_fix): Likewise. - (pa_find_space_by_number): Likewise. - (hppa_force_relocation): Likewise. - (pa_block): Change i to unsigned int. - * config/obj-som.h (obj_som_copyright): Declare. - -Tue Apr 28 11:35:56 1998 Frank Ch. Eigler - - * ecoff.c (ecoff_build_lineno): Do not use dummy first_lineno - for line numbers for assembly source. - -Mon Apr 27 15:58:46 1998 Ian Lance Taylor - - * configure.in: Change version number to 2.9.4 - * configure: Rebuild. - -Mon Apr 27 12:07:33 1998 Doug Evans - - * cgen.c (cgen_asm_finish_insn): New arg relax_p. All callers updated. - -Mon Apr 27 15:16:12 1998 Ian Lance Taylor - - * ecoff.h: Change symbolS in function declaration to struct - symbol. - -Sun Apr 26 13:44:22 1998 Ian Lance Taylor - - * config/tc-sh.c (parse_reg): Add casts to avoid warnings. - (md_convert_frag): Fix i18n typo. - -Sat Apr 25 20:12:02 1998 Richard Henderson - - * ecoff.c (ecoff_get_cur_proc_sym): New function. - * ecoff.h: Protoype it. - * config/tc-alpha.c [ELF] (s_alpha_prologue): New function. - [EVAX] (s_alpha_prologue): Delete. - (md_pseudo_table): Update. - -Sat Apr 25 14:00:52 1998 Ian Lance Taylor - - * config/tc-i960.c (md_assemble): Change bp_error_msg from static - array to local pointer. - (get_args, parse_expr): Add casts to avoid warnings. - -Fri Apr 24 12:47:42 1998 Philippe De Muyter - - * read.c (s_set): Cast xmalloc return value to fragS *. - * config/tc-m68k.c (m68k_ip): Function made static to match - previous forward declaration. - (insert_reg, init_regtable, md_convert_frag_1): Likewise. - -Fri Apr 24 09:26:46 1998 Nick Clifton - - * config/tc-v850.c: Add internationalisation macros to error - strings. - - * config/tc-m32r.c (can_make_parallel): Add internationalisation - macros to error strings. - -Thu Apr 23 19:23:23 1998 Ian Lance Taylor - - * config/tc-ppc.c (ppc_fix_adjustable): Correct test of whether a - reloc is in the TOC csect. - (md_apply_fix3): Correct gettext typo. - -Thu Apr 23 14:58:31 1998 Nick Clifton - - * config/tc-arm.c (find_real_start): Ignore symbols starting with - .L - they are local labels and the branches are not really - function calls but rather far jumps. - -Wed Apr 22 15:57:21 1998 Tom Tromey - - * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir). - -Wed Apr 22 14:52:36 1998 Ian Lance Taylor - - * config/tc-i386.c (md_assemble): Print operand number rather than - using ordinal_names. - (i386_operand): Likewise. - -Tue Apr 21 22:34:25 1998 Tom Tromey - - * Makefile.am (INTLLIBS): Define to work around apparent automake - bug. - All Makefiles: Regenerated. - - * Many files: Added gettext invocations around user-visible - strings. - * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY, - HAVE_LC_MESSAGES): Define. - * dep-in.sed: Added asintl.h. - * po/Make-in: New file. - * gasp.c (main): Call setlocale, bindtextdomain, and textdomain. - Include "asintl.h". - * read.c (Z_): Renamed from `_'. - * Makefile.am (SUBDIRS): Added po. - (POTFILES): new macro. - (po/POTFILES.in): New target. - ($(OBJS)): Added asintl.h. - (HFILES): Likewise. - (INCLUDES): Added -DLOCALEDIR, -I$(top_srcdir)/../intl. - (as_new_LDADD): Added $(INTLLIBS). - (as_new_DEPENDENCIES): Added $(INTLDEPS). - (gasp_new_LDADD): Added $(INTLLIBS). - (gasp_new_DEPENDENCIES): New macro. - * configure, aclocal.m4: Rebuilt. - * configure.in: Call CY_GNU_GETTEXT. Generate po/Makefile.in and - po/Makefile. - (ALL_LINGUAS): Define. - * macro.c: Include "asintl.h". - * as.c (main): Call setlocale, bindtextdomain, and textdomain. - * as.h: Include "asintl.h". - * config/tc-i386.c (ordinal_names): Removed. - (md_assemble): Changed error text to avoid ordinal_names. - (i386_operand): Likewise. - (reloc): Added as_bad to avoid i18n problems. - (tc_gen_reloc): Likewise. - * config/tc-arm.c (bad_args): Now a #define. - (bad_pc): Likewise. - * config/obj-vms.c (VMS_stab_parse): Changed type of - `long_const_msg'. - (global_symbol_directory): Unified strings to avoid i18n - problems. - * config/tc-m68k.c (get_reloc_code): Added some as_bad calls to - avoid i18n problems. - * config/tc-ns32k.c (reloc): Added as_bad to avoid i18n problems. - * config/tc-ppc.c (md_apply_fix3): Added as_bad_where to avoid - i18n problems. - * config/tc-sh.c (md_convert_frag): Added as_bad to avoid i18n - problems. - * config/tc-v850.c (md_assemble): Changed C++ comment into C - comment. - * config/tc-vax.c (md_assemble): Added as_warn to avoid i18n - problems. - * as.c (print_version_id): Added an fprintf to avoid i18n - problems. - * cond.c (cond_finish_check): Added as_bad call to avoid i18n - problems. - * expr.c (expr): Added as_warn call to avoid i18n problems. - * messages.c (as_assert): Changed code to avoid i18n problems. - (as_abort): Likewise. - * read.c (pseudo_set): Added as_bad call to avoid i18n problems. - (s_space): Likewise. - * po/Make-in, po/POTFILES.in, po/gas.pot: New files. - -Tue Apr 21 17:01:22 1998 Alan Modra - - * config/tc-i386.c (check_prefix): New static function, split out - from md_assemble. - (struct _i386_insn): Add wait_prefix field. - (md_assemble): Remove wait_prefix local variable. Use - check_prefix when adding a prefix. - - * config/tc-i386.c (current_templates): New static variable. - (md_assemble): Remove current_templates local variable. - (md_assemble, i386_operand): Improve error and warning messages in - many places. Add RESTORE_END_STRING in many places before error - return. Clarify some comments. - - * config/tc-i386.c (struct _i386_insn): Change seg field to a two - element array. - (md_assemble): Parse string instruction operands, looking for - segment override prefixes. Check for invalid segment prefixes on - string instruction. - (i386_operand): i.seg[] and max mem_operand changes for string - insns. - * config/tc-i386.h (EsSeg): Define. - - * config/tc-i386.h (regKludge): Define. - (iclrKludge, imulKludge): Don't define. - * config/tc-i386.c (md_assemble): Merge imulKludge and iclrKludge - code. Move ReverseRegRegmem fudges into Modrm case. Reorder - opcode_modifier checks to look for more common cases first. Add - default_seg for IsString case. - -Tue Apr 21 16:18:12 1998 Ian Lance Taylor - - * configure.in: Call AM_PROG_LEX rather than AC_PROG_LEX and - AC_DECL_YYTEXT. - * configure: Rebuild with new automake and libtool. - * aclocal.m4, Makefile.in: Likewise. - - * doc/Makefile.am (as.dvi): New target. - * doc/Makefile.in: Rebuild. - -Sat Apr 18 01:21:04 1998 Stan Cox - - * configure.in: Added sparc86x support. - - * configure: Rebuild. - - * config/tc-sparc.c (lookup_arch): Added arch_type to struct - sparc_arch. - (md_parse_option): Warn if -EL is not supported for this architecture. - - * config/tc-sparc.h (SPARC_BIENDIAN) Always define. - -Sat Apr 18 01:19:01 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (mips_ip): Note when we use get match on - the full instruction name. - -Wed Apr 15 15:17:27 1998 Richard Henderson - - * symbols.c (resolve_symbol_value) [O_symbol]: Also store the symbol - back into the expression to handle add/sub simplification correctly. - -Wed Apr 15 07:06:04 1998 Catherine Moore - - * config/tc-mips.c (hilo_interlocks): Remove 4300. - -Mon Apr 13 16:51:04 1998 Nick Clifton - - * config/tc-arm.c (do_msr): Support undocumented 'msr cpsr_flg, - #' instruction. - -Thu Apr 9 10:29:42 1998 Doug Evans - - * symbols.c (max_indent_level): New global. - (print_symbol_value_1): Use it. - * expr.h (expr_build_dot): Declare. - * expr.c (expr_build_dot): New function. - -Wed Apr 8 16:16:11 1998 Doug Evans - - * symbols.c (print_binary): New function. - (print_expr_1): Call it. - -Mon Apr 6 12:06:39 1998 Andreas Schwab - - * config/tc-m68k.c (m68k_ip, case "#B"): Install the offset of the - operand in the opcode. - -Fri Apr 3 11:58:19 1998 Alan Modra - - * config/tc-i386.h: Reorder operand flags and opcode modifier - flags for clarity. Remove unused definitions: Unknown, - ImmUnknown, DispUnknown, NoModrm. - * config/tc-i386.c (type_names): Add missing Debug type. - (md_assemble): Better duplicate prefix checking. Quicker string - instruction check via new opcode_modifier flag. - -Fri Apr 3 11:44:34 1998 Ian Lance Taylor - - * doc/as.texinfo (Invoking): Clarify -Wa example. - -Fri Apr 3 09:12:23 1998 Gavin Koch - - * config/tc-mips.c (mips_pseudo_table): Add weakext entry. - (s_mips_weakext): Define. - * ecoff.c (ecoff_directive_weakext): Don't define if defined(TC_MIPS). - * config/obj-ecoff.c (obj_pseudo_table): Don't add weakext if - defined(TC_MIPS). - -Thu Apr 2 22:42:02 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10200.c (tc_gen_reloc): The difference of two symbols - is an error if the value can not be computed at assembly time. - * config/tc-mn10300.c (tc_gen-reloc): Likewise. - -Thu Apr 2 16:36:47 1998 Ian Lance Taylor - - * gasp.c (main): Set next field of new include_path structure to - NULL. From Avery Pennarun . - - * read.c (s_mri_sect): Call as_bad rather than abort for an - unsupported MRI target. - -Wed Apr 1 11:08:27 1998 Nick Clifton - - * config/tc-arm.c (arm_validate_fix): New function. Determine if - the destination of a branch instruction should be altered. - (find_real_start): New function: Locate the real, Thumb coded - start of a Thumb function. - (do_t_branch23): Alter the destination of branches to Thumb - functions. - - * config/tc-arm.h: Define TC_VALIDATE_FIX. - -Tue Mar 31 13:27:33 1998 Dean M. Deaver - - * config/tc-arm.c (decode_shift): Handle addressing mode 2 w/rrx - also. - -Wed Apr 1 13:13:20 1998 Andreas Schwab - - * doc/as.texinfo: Use @itemx for a secondary item in a table. - * doc/c-hppa.texi: Likewise. - -Tue Mar 31 17:52:40 1998 Ian Lance Taylor - - * Makefile.am: Rebuild dependencies. - * Makefile.in: Rebuild. - - * Makefile.am (DEP_INCLUDES): New variable. - (.dep1): Change to work when srcdir is not an absolute path. - (.tcdep, .objdep, .dep2, dep.sed): Likewise. - * Makefile.in: Rebuild. - -Mon Mar 30 12:46:48 1998 Ian Lance Taylor - - * config/tc-i386.h, config/tc-i386.c: Revert March 24 - LinearAddress patch. - - * configure.in: Set version to 2.9.1. - * configure: Rebuild. - - * Branched binutils 2.9. - -Mon Mar 30 11:22:08 1998 Alan Modra - - * config/tc-i386.h (FWait): Define. - * config/tc-i386.c (md_assemble): Emit fwait prefix before any - other prefixes. Check FWait flag in opcode table to see which - instructions require an fwait prefix. - -Mon Mar 30 10:12:00 1998 Andreas Schwab - - * stabs.c (get_stab_string_offset): Always create a stab string - section. - -Sat Mar 28 22:28:02 1998 Ian Lance Taylor - - Fix some gcc -Wall warnings: - * atof-generic.c (atof_generic): Add casts to avoid warnings. - * ehopt.c (eh_frame_code_alignment): Likewise. - * expr.c (integer_constant, operand): Likewise. - * frags.c (frag_align): Likewise. - * gasp.c (level_0, change_base, doinstr): Likewise. - * hash.c (hash_ask): Likewise. - * listing.c (listing_page, calc_hex, print_lines): Likewise. - (debugging_pseudo): Likewise. - * macro.c (define_macro, check_macro): Likewise. - * read.c (read_a_source_file, s_align, s_float_space): Likewise. - (ignore_rest_of_line, float_cons): Likewise. - * symbols.c (decode_local_label_name): Likewise. - * write.c (record_alignment, cvs_frag_to_fill): Likewise. - (fixup_segment, number_to_chars_bigendian): Likewise. - (number_to_chars_littleendian): Likewise. - * config/atof-ieee.c (gen_to_words): Likewise. - * config/tc-sparc.c (md_begin, md_assemble): Likewise. - (sparc_ip, parse_keyword_arg, s_common): Likewise. - * read.c (output_big_sleb128): Initialize locals to avoid - warnings. - (output_big_uleb128, equals): Likewise. - * atof-generic.c (atof_generic): Change number_of_digits_* locals - to unsigned int. Change zeros to unsigned int. - * cond.c (s_if): Add return to default case. - * frags.c (frag_now_fix): Change return type to addressT. - * frags.h (frag_now_fix): Update declaration. - * listing.c (file_info_struct): Change linenum to unsigned int. - (struct list_info_struct): Change hll_line to unsigned int. - (print_source): Update format string. - * read.c (emit_expr): Change scan to unsigned int, and don't - bother to initialize it. - * symbols.c (dollar_label_count): Change to unsigned long. - * write.c (adjust_reloc_syms): Remove unused label reduce_fixup. - * config/tc-sparc.c (sparc_memory_model): Only define if OBJ_ELF. - * config/tc-sparc.c (tc_gen_reloc): Add return to default case. - -Fri Mar 27 12:46:47 1998 Ian Lance Taylor - - * config/tc-m68k.c (m68k_ip): Check legal addressing modes for - mcf5200 just as we do for m68000. - (m68k_init_after_args): Likewise. - (md_estimate_size_before_relax): Likewise. - -Fri Mar 27 10:30:01 1998 Catherine Moore - - * config/tc-v850.c (md_assemble): Store relocation addend in - fixup instead of instruction. - -Thu Mar 26 23:07:18 1998 Alan Modra - - * config/tc-i386.c (md_assemble): Swap template arguments to - CONSISTENT_REGISTER_MATCH macro in reverse direction test. - This macro is currently symmetric, so passing them the wrong - way didn't cause any problem, but may if the macro is changed - in the future. - After copying template to i.tm, use i.tm. rather than t-> to - access fields, and make t a const* - Move i.tm.operand_types[] swap to immediately after the copy. - -Wed Mar 25 13:44:18 1998 Doug Evans - - * expr.h (expr_build_uconstant): Add prototype. - (expr_build_unary,expr_build_binary): Add prototypes. - * expr.c (expr_build_uconstant): New function. - (expr_build_unary,expr_build_binary): New functions. - -Wed Mar 25 13:10:42 1998 Bruno Haible - - * gasp.c (IS*): Cast argument to unsigned char, not unsigned int. - * macro.c (macro_expand_body): Increase buffer size. - * messages.c (as_warn): Likewise. - (as_warn_where, as_bad, as_bad_where): Likewise. - -Wed Mar 25 12:59:07 1998 Ian Lance Taylor - - Based on patch from H.J. Lu : - * Makefile.am (DISTSTUFF): New variable. - (diststuff): New target. - * Makefile.in: Rebuild. - -Tue Mar 24 16:51:29 1998 Nick Clifton - - * config/tc-m32r.h (md_cleanup, md_elf_section_change_hook): Call - m32r_elf_section_change_hook. - - * config/tc-m32r.c (m32r_elf_section_change_hook): New function to - emit a nop if a section ends with a 16 bit instruction. - -Tue Mar 24 19:48:09 1998 Ian Lance Taylor - - * config/obj-coff.c (obj_coff_bss): Compile unconditionally. Call - s_lcomm rather than obj_coff_lcomm. - (obj_pseudo_table): Compile .bss pseudo-op unconditionally. - -Tue Mar 24 18:30:58 1998 H.J. Lu - - * config/tc-i386.h (LinearAddress): Define. - * config/tc-i386.c (md_assemble): If LinearAddress is set for the - instruction, don't use a default segment. - -Mon Mar 23 18:53:40 1998 Joel Sherrill - - * configure.in: (sh*-*-rtems*): Switched from ELF to COFF. - * configure: Rebuild. - -Fri Mar 20 19:15:44 1998 Ian Lance Taylor - - * aclocal.m4, configure: Rebuild with libtool 1.2. - -Thu Mar 19 16:03:12 1998 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): fix code to test the range of - PC relative branches. Patch courtesy of Jonathan Walton. - - -Wed Mar 18 09:29:51 1998 Nick Clifton - - * configure.in (emulations): Add thumb-pe target. - - * configure (emulations): Add thumb-pe target. - -1998-03-17 Ken Raeburn - - * itbl-lex.l (yywrap): Don't define if already defined as a - macro. - -Fri Mar 13 16:31:38 1998 Tom Tromey - - * depend.c (quote_string_for_make): New function. - (wrap_output): Use it. - -Thu Mar 12 18:28:22 1998 Nick Clifton - - * config/obj-elf.c (obj_elf_section): Set bss flag in seg_info - structure if type is SHT_NOBITS. [Bug fix courtesy of rth] - -Sat Feb 28 17:28:55 1998 Richard Henderson - - * config/tc-alpha.c (md_shortopts, md_longopts, md_parse_option): - Recognize -GN and -relax. - (md_begin): Initialize gp size from -G switch. - (alpha_force_relocation): Always force if -relax. - (alpha_align): Take a new argument that will specify when to - emit an R_ALPHA_ALIGN relocation (though we don't do that now). - Change all callers. Emit nop alignment padding as nop+unop pair. - -Sat Feb 28 17:06:22 1998 Richard Henderson - - * config/obj-elf.c [TC_ALPHA]: Include . - * config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): New. - -Thu Feb 26 15:49:04 1998 Michael Meissner - - * config/tc-d30v.c (write_2_short): Delayed jsr instructions don't - require padding to the next long word boundary. - -Mon Feb 23 11:29:06 1998 Doug Evans - - * cgen.c: #include symcat.h. - * config/tc-m32r.c: Likewise. - -Mon Feb 23 10:27:40 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (mips_ip, case 'P'): Make 'P' arguments be - absolute expressions instead of '$' prefixed register names. - -Sat Feb 21 22:36:52 1998 Richard Henderson - - * read.c (s_set): Record file and line info for symbols when -as. - (pseudo_set): Don't overwrite that dummy fragment. - -Fri Feb 20 15:03:13 1998 Ian Lance Taylor - - * config/tc-ppc.c (md_pseudo_table): Add "section". - (ppc_named_section): New static function. - -Thu Feb 19 22:25:42 1998 Richard Henderson - - * config/tc-ppc.c (ppc_biei): Cache the last symbol we inserted - so we don't have to scan the entire list. - -Tue Feb 17 17:02:15 1998 Fred Fish - - * config/tc-d30v.c (parallel_ok): For the explicitly parallel - case, allow the parallel instructions to modify the same flag - bits. - -Thu Feb 19 16:08:15 1998 Richard Henderson - - * listing.c (list_symbol_table): Categorize symbols by - undefined_section rather than sy_frag->line == NULL. - -Wed Feb 18 23:39:46 1998 Richard Henderson - - * Makefile.am (install-exec-local): Install properly when ln - fails or tooldir == prefix. - -Tue Feb 17 18:58:51 1998 Doug Evans - - * cgen.c (cgen_md_apply_fix3): Delete call to validate_operand. - Test result of insert_operand for error. - -Fri Feb 13 16:41:42 1998 Ian Lance Taylor - - * Makefile.am (AUTOMAKE_OPTIONS): Add cygnus. - * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e. - * doc/Makefile.am (AUTOMAKE_OPTIONS): Define. - * doc/Makefile.in: Rebuild. - -Fri Feb 13 00:47:44 1998 Ian Lance Taylor - - * config/tc-mips.c (macro_build): Handle operand type 'C'. - (macro): Fix handling of M_COP[0-3]. - -Thu Feb 12 14:06:59 1998 Ian Lance Taylor - - Based on patches from Ross Harvey : - * macro.c (ISSEP): Only treat '<' and '>' as separator characters - if macro_alternate or macro_mri. - (getstring): Remove support for byte constants between < and >. - (get_any_string): '<' only starts a string if macro_alternate or - macro_mri. - (macro_expand_body): Permit keyword parameters following - positional parameters. - - NetBSD patches from Gordon W. Ross : - * configure.in (alpha*-*-netbsd*): New target. - * config/te-nbsd.h (LOCAL_LABELS_FB): Define. - * configure: Rebuild. - - * as.h (flag_warn_suppress_instructionswap): Move from here... - * config/tc-d10v.c (flag_warn_suppress_instructionswap): ...to - here, and make static. - - * ehopt.c (eh_frame_code_alignment): Only use seg_info if - BFD_ASSEMBLER or MANY_SEGMENTS. - - * as.c (show_usage): Update bug-gnu-utils address. - * gasp.c (show_usage): Likewise. - * doc/as.texinfo (Bug Reporting): Likewise. - -Wed Feb 11 23:26:28 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (load_address): Don't use mips III or mips IV - insns regardless of the size of a pointer if we're in mips I or - MIPS II mode. - (macro, macro2, s_cprestore, s_cpadd): Likewise. - -Thu Feb 12 03:41:00 1998 J"orn Rennecke - - Fix rac to accept only a0: - * config/tc-d10v.c (parallel_ok, find_opcode): - Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1. - Introduce OPERAND_GPR. - -Wed Feb 11 16:28:13 1998 Richard Henderson - - * read.c (s_fill): Handle non-constant repeat counts by creating - an rs_space fragment. - -Tue Feb 10 18:31:31 1998 Ian Lance Taylor - - * config/tc-i386.c (i386_operand): Change error added Jan 2 1998 - from as_bad to as_warn. - -Tue Feb 10 18:04:00 1998 Jim Lemke - - * as.c: (perform_an_assembly_pass): Use [TEXT|DATA|BSS]_SECTION_NAME - * as.h: Define default values of [TEXT|DATA|BSS]_SECTION_NAME - * config/obj-elf.c (elf_begin): Use [TEXT|DATA|BSS]_SECTION_NAME - -Tue Feb 10 17:58:18 1998 Ian Lance Taylor - - * ehopt.c (eh_frame_code_alignment): If not BFD_ASSEMBLER, use - seg_fix_rotP rather than fix_root from seg_info. - -Tue Feb 10 15:32:22 1998 Ian Carmichael - - * expr.c: Add support for 0x1_2_3_4 bignums. - -Tue Feb 10 14:43:40 1998 Ian Lance Taylor - - * configure.in: Change -linux* to -linux-gnu*. - * configure: Rebuild. - - * app.c (do_scrub_begin): Treat \r as whitespace. - -Mon Feb 9 14:16:11 1998 Ian Lance Taylor - - * Makefile.am: Update dependencies. - * Makefile.in: Rebuild. - -Sat Feb 7 15:33:51 1998 Ian Lance Taylor - - * configure, aclocal.m4: Rebuild with new libtool. - -Fri Feb 6 16:08:30 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (md_begin): If mips_cpu is set, then use it as - the argument to bfd_set_arch_mach. - (load_address): Use bfd_arch_bits_per_address to determine the - bit size of an address instead of looking at the isa level. - (macro, macro2, s_cprestore, s_cpadd): Likewise. - -Fri Feb 6 14:44:34 1998 Nick Clifton - - * config/tc-v850.c (md_parse_option): Add -mv850any command line option. - -Thu Feb 5 12:39:08 1998 Ian Lance Taylor - - * ehopt.c: New file. - * as.h (enum _relax_state): Add rs_cfa. - (check_eh_frame, eh_frame_estimate_size_before_relax): Declare. - (eh_frame_relax_frag, eh_frame_convert_frag): Declare. - * read.c (emit_expr): Call check_eh_frame. - * write.c (cvt_frag_to_fill): Handle rs_cfa. - (relax_segment): Likewise. - * Makefile.am: Rebuild dependencies. - (GAS_CFILES): Add ehopt.c. - (GENERIC_OBJS): Add ehopt.o. - * doc/internals.texi (Frags): Document rs_cfa. - - * as.c (show_usage): Mention --traditional-format. - (parse_args): Accept --traditional-format. - * as.h (flag_traditional_format): Declare. - * output-file.c (output_file_create): If flag_traditional_format, - set BFD_TRADITIONAL_FORMAT on stdoutput. - * doc/as.texinfo, doc/as.1: Document --traditional-format. - - * config/tc-mips.c (append_insn): Make sure that if we have a - fixup for an unmatched %hi reloc, it does not associated with a - variant frag. - - * configure, Makefile.in, aclocal.m4: Rebuild with new libtool. - * doc/Makefile.in: Likewise. - -Wed Feb 4 15:41:54 1998 Nick Clifton - - * config/tc-m32r.c (check_for_side_effects): New function. - (can_make_parallel): Add checks for instruction side effects - clashing with the other instruction. - (assemble_parallel_insn): Improve warning messages. Return error - message from non-swapped instruction order. - -Wed Feb 4 20:00:26 1998 James G. Smith - - * config/tc-arm.c: Rename arm_after_pass_hook() to arm_cleanup(). - - * config/tc-arm.h: Replace md_after_pass_hook definition with a - md_cleanup definition. This moves the forced literal output to - the end of the source pass, and avoids macro's inserting literals - into the code immediately after the macro expansion. - -Wed Feb 4 13:17:19 1998 Ian Lance Taylor - - * config/tc-sparc.h (tc_fix_adjustable) [OBJ_ELF]: A reloc against - a gas internal symbol is adjustable. - * config/tc-ppc.h (tc_fix_adjustable): Likewise. - - * as.h: If gcc version greater than 2.6, use `__format__' and - `__printf__' in function attributes, rather than `format' and - `printf'. - -Mon Feb 2 18:38:18 1998 Ian Lance Taylor - - * config/tc-sparc.c: Only include elf/sparc.h if OBJ_ELF. - -Mon Feb 2 18:30:34 1998 Steve Haworth - - Add tms320c30 support: - * config/tc-tic30.h: New file. - * config/tc-tic30.c: New file. - * config/obj-coff.h: If TC_TIC30, include coff/tic30.h and define - TARGET_FORMAT as "coff-tic30". - * configure.in (tic30-*-*aout*, tic30-*-*coff*): New targets. - * Makefile.am: Rebuild dependencies. - (CPU_TYPES): Add tic30. - (CPU_OBJ_VALID): tic30-aout is valid. - (TARGET_CPU_CFILES): Add config/tc-tic30.c. - (TARGET_CPU_HFILES): Add config/tc-tic30.h. - * configure, Makefile.in: Rebuild. - -Mon Feb 2 10:20:37 1998 Nick Clifton - - * config/tc-v850.c (md_assemble): Improvements to error messages. - -Mon Feb 2 12:39:05 1998 Geoff Keating - - * config/tc-ppc.c (md_apply_fix3): Change BFD_RELOC_HI16 and - BFD_RELOC_HI16_S to store the high bits of any value. - - * config/tc-ppc.h (tc_fix_adjustable): Undo change of Fri Jun 27. - (TC_RELOC_RTSYM_LOC_FIXUP): Don't let the - assembler calculate relocations to any external symbol at all. - * config/tc-ppc.c (md_apply_fix3) [OBJ_ELF]: Correct bugs - involving generation of pc-relative relocs. - (md_pcrel_from_section) [OBJ_ELF]: The job this code used to do - has been moved to md_apply_fix3. - - * config/tc-ppc.c (md_apply_fix3): Fix test for too-far branch. - (ppc_elf_suffix): Warn about 'identifier+constant@got' syntax, - which actually means (the address of identifier's GOT entry) + - constant, which is not particularly useful. - -Fri Jan 30 11:02:35 1998 Doug Evans - - * read.h (include_dirs): Declare. - (include_dir_count,include_dir_maxlen): Declare. - -Fri Jan 30 11:47:02 1998 Ian Lance Taylor - - * configure.in: Correct check for shared opcodes library. - * configure: Rebuild. - - * listing.c (buffer_line): If we can't open the file, set at_end. - (listing_print): Remove unused local variable fi. - - * config/m68k-parse.y (reglistpair): Handle register list in - either order. - - * config/vms-conf.h: Don't undef VERSION. - -Thu Jan 29 14:42:44 1998 Pat Rankin - - * Makefile.am (CONFIG_OBJS): New variable, containing part of old - OBJS variable. - (GENERIC_OBJS): New variable, with the rest of the old OBJS - variable. - (OBJS): Now just $(CONFIG_OBJS) and $(GENERIC_OBJS). - ($(srcdir)/make-gas.com): Rename from make-gas.com. - (stamp-mk.com): Replace $(OBJS) with $(GENERIC_OBJS). - (EXTRA_DIST): Define. - * vmsconf.sh: Handle {targ-cpu, obj-format, atof-targ} modules - explicitly rather than via the list of object files. - (gcc-as.opt): New file created when make-gas.com is run. - * config-gas.com: Create {targ-cpu.h, obj-format.h, targ-env.h, - itbl-cpu.h} to #include appropriate file rather than copying that - file. - * config/vms-conf.h: Synchronize with current config.in. - * Makefile.in: Rebuild. - -Thu Jan 29 18:48:19 1998 Bill Moyer - - * config/tc-d30v.c (do_assemble): Added flag_explicitly_parallel. - (parallel_ok): Relaxed parallel subinstruction dependency check. - -Wed Jan 28 14:35:00 1998 Bill Moyer - - * as.h (flag_warn_suppress_instructionswap): added new flag. - * config/tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap" - command line argument. - * config/tc-d10v.c (write_2_short): emit "Swapping instructions" - warning only if flag_warn_suppress_instructionswap is false. - -Wed Jan 28 16:41:19 1998 J.J. van der Heijden - - * configure.in (i386-*-mingw32*): New target. - * configure: Rebuild. - -Wed Jan 28 14:51:18 1998 Ian Lance Taylor - - * symbols.c (resolve_symbol_value): Don't set the segment if it - hasn't changed, and this is OBJ_AOUT without BFD_ASSEMBLER. - - * config/obj-aout.h (S_IS_LOCAL): Correct typo--pass argument to - S_GET_SEGMENT. - -Wed Jan 28 13:54:50 1998 Pat Rankin - - as.h (unlink): Reverse 13-Feb-97 change; use of unlink vs remove - depends upon HAVE_{UNLINK,REMOVE} values rather than host - compiler. - -Wed Jan 28 13:48:08 1998 Ian Lance Taylor - - * config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define. - -Wed Jan 28 09:52:00 1998 Nick Clifton - - * config/tc-v850.c (v850_insert_operand): Display instruction when - an error is encountered. - -Tue Jan 27 13:32:01 1998 Robert Lipe - - * configure.in (i386-*-sco3.2v5*): Defaults to ELF now. - (i386-*-sco3.2v5*coff): New target. - (i386-*-sco3.2*): New target. - * configure: Rebuild. - -Tue Jan 27 11:06:52 1998 Nick Clifton - - * config/tc-v850.c: Tidy error message production. - -Tue Jan 27 12:24:32 1998 Ian Lance Taylor - - * config/tc-arm.c (md_apply_fix3): Add new variable newimm to hold - validate_immediate return value in the right type for comparisons - to FAIL. - -Tue Jan 27 06:51:59 1998 Richard Henderson - - * listing.c (MAX_BYTES): Use listing variables not constants. - (data_buffer): No longer an array, but a pointer. - (calc_hex): sizeof(data_buffer) -> MAX_BYTES. - (listing_listing): Allocate data_buffer. - -Tue Jan 27 06:38:35 1998 Richard Henderson - - * as.c (parse_args): Add --listing-lhs-width, --listing-lhs-width2, - --listing-rhs-width, --listing-cont-lines. - (show_usage): Update. - * listing.c (listing_lhs_width, listing_lhs_width_second): New vars. - (listing_lhs_cont_lines, listing_rhs_width): New vars. - (print_lines): Use the variables instead of the constants. - (listing_listing): Likewise. - * listing.h: Declare the new vars. - -Tue Jan 27 05:32:05 1998 Richard Henderson - - * as.c (parse_args): Add --keep-locals alias for -L. - Add --strip-local-absolute. - (show_usage): Update. - * as.h (flag_strip_local_absolute): New flag. - * symbols.c (S_IS_LOCAL): Use it. - * config/obj-aout.h (S_IS_LOCAL): Likewise. - * config/obj-bout.h (S_IS_LOCAL): Likewise. - * config/obj-coff.h (S_IS_LOCAL): Likewise. - -Mon Jan 26 13:07:41 1998 Nick Clifton - - * config/tc-m32r.c: Detect if explicitly parallel instructions - might have an io conflict and issue a warning message. - -Thu Jan 22 17:51:44 1998 Nick Clifton - - * cgen.c (cgen_save_fixups, cgen_restore_fixups, - cgen_swap_fixups): Functions to save, restore and swap the fixup - chain with a backup copy. - (cgen_asm_finish_insn): Returns address of constructed insn. - -Wed Jan 21 16:49:10 1998 Richard Henderson - - * listing.c (file_info_struct): Remove FILE, add POS. - (last_open_file_info, last_open_file): New; a one entry FILE* cache. - (file_info): Don't open the file. - (buffer_line): Check for the file in the last_open cache, updating - as necessary. - (print_source): Don't reference file_info->file. - (listing_listing): Likewise. - (listing_print): Close the file in the cache, if any. - -Fri Jan 16 14:51:48 1998 Ian Lance Taylor - - * read.c (dwarf_file_string): New file static variable. - (emit_expr): Look for constant sequence that leads up to a file - name in DWARF debugging output. - (stringer): Use dwarf_file_string to decide whether to accept a - string as a file name. - -Fri Jan 16 11:30:37 1998 Richard Henderson - - * config/tc-m68k.c (m68k_ip): Remove absl->reglst MRI hack. - (crack_operand): Add reg->reglst MRI hack. - (r_seg): Put reglst symbols in reg_section. - (m68k_frob_symbol): Frob reglst symbols into absolute_section. - -Thu Jan 15 14:19:01 1998 Richard Henderson - - * config/tc-sh.c (get_specific): Handle SGR & DBR. - -Thu Jan 15 13:46:48 1998 Richard Henderson - - * config/tc-h8300.c (parse_reg): Take the length of the symbol into - account when attempting to match a register name. - * config/tc-h8500.c (parse_reg): Likewise. - -Wed Jan 14 17:52:33 1998 Nick Clifton - - * cgen.c: Formatting changes to improve readability. - -Wed Jan 14 15:41:41 1998 Jeffrey A Law (law@cygnus.com) - - * config/tc-mips.c (macro): Rework division code to avoid unfilled - delay slot. - -Wed Jan 14 18:04:20 1998 Michael Meissner - - Based on a patch from Jim Wilson - * config/tc-d30v.c (do_assemble): Remove non-ansi default case. - (tc_gen_reloc): Handle cross section PC relative relocs - correctly. - -Wed Jan 14 15:02:19 1998 Doug Evans - - * config/tc-mips.c (mips_ip): Don't test pinfo flags if INSN_MACRO. - -Mon Jan 12 13:04:57 1998 Doug Evans - - * cgen.c: #include setjmp.h. Clean up pass over `struct foo' usage. - (expr_jmp_buf): New static local. - (cgen_parse_operand): Allow use of longjmp in parsing to handle errors. - (cgen_md_operand): New function. - * config/tc-m32r.c: Clean up pass over `struct foo' usage. - (md_estimate_size_before_relax): Use CGEN_INSN_MNEMONIC. - -Tue Jan 6 15:36:02 1998 Richard Henderson - - * symbols.c (S_SET_SEGMENT): Don't set the segment for section syms. - (S_IS_EXTERNAL, S_IS_LOCAL): Correct parenthetication. - -Fri Jan 2 16:08:54 1998 Ian Lance Taylor - - * config/tc-i386.c (i386_operand): Give an error if there are - unrecognized characters after an expression. - -For older changes see ChangeLog-9697 diff --git a/gas/MAINTAINERS b/gas/MAINTAINERS deleted file mode 100644 index d59a3bd7f..000000000 --- a/gas/MAINTAINERS +++ /dev/null @@ -1 +0,0 @@ -See ../binutils/MAINTAINERS diff --git a/gas/Makefile.am b/gas/Makefile.am deleted file mode 100644 index 0a88de05a..000000000 --- a/gas/Makefile.am +++ /dev/null @@ -1,2478 +0,0 @@ -## Process this file with automake to generate Makefile.in - -## Work around apparent automake bug. -INTLLIBS = @INTLLIBS@ - -AUTOMAKE_OPTIONS = 1.8 cygnus dejagnu - -SUBDIRS = doc po - -tooldir = $(exec_prefix)/$(target_alias) - -YACC = `if [ -f ../bison/bison ] ; then echo ../bison/bison -y -L../bison/bison ; else echo @YACC@ ; fi` -LEX = `if [ -f ../flex/flex ] ; then echo ../flex/flex ; else echo @LEX@ ; fi` - -WARN_CFLAGS = @WARN_CFLAGS@ -AM_CFLAGS = $(WARN_CFLAGS) - -MKDEP = gcc -MM - -TARG_CPU = @target_cpu_type@ -TARG_CPU_C = $(srcdir)/config/tc-@target_cpu_type@.c -TARG_CPU_O = tc-@target_cpu_type@.o -TARG_CPU_H = $(srcdir)/config/tc-@target_cpu_type@.h -OBJ_FORMAT_C = $(srcdir)/config/obj-@obj_format@.c -OBJ_FORMAT_O = obj-@obj_format@.o -OBJ_FORMAT_H = $(srcdir)/config/obj-@obj_format@.h -TARG_ENV_H = $(srcdir)/config/te-@te_file@.h -ATOF_TARG_C = $(srcdir)/config/atof-@atof@.c -ATOF_TARG_O = atof-@atof@.o - -# use @target_cpu_type@ for refering to configured target name -IT_HDRS=itbl-parse.h $(srcdir)/itbl-ops.h -IT_SRCS=itbl-parse.c itbl-lex.c $(srcdir)/itbl-ops.c -IT_DEPS=$(srcdir)/itbl-parse.y $(srcdir)/itbl-lex.l $(srcdir)/config/itbl-@target_cpu_type@.h -IT_OBJS=itbl-parse.o itbl-lex.o itbl-ops.o - -# CPU types. This is only used for dependency information. - -CPU_TYPES = \ - a29k \ - alpha \ - arc \ - arm \ - avr \ - cris \ - d10v \ - d30v \ - dlx \ - fr30 \ - frv \ - h8300 \ - h8500 \ - hppa \ - ia64 \ - i370 \ - i386 \ - i860 \ - i960 \ - ip2k \ - m32r \ - m68hc11 \ - m68k \ - m88k \ - mcore \ - mips \ - mmix \ - mn10200 \ - mn10300 \ - msp430 \ - ns32k \ - openrisc \ - or32 \ - pdp11 \ - pj \ - ppc \ - s390 \ - sh \ - sh64 \ - sparc \ - tahoe \ - tic30 \ - tic4x \ - tic54x \ - tic80 \ - vax \ - w65 \ - v850 \ - xstormy16 \ - xtensa \ - z8k - -# Object format types. This is only used for dependency information. -# We deliberately omit SOM, since it does not work as a cross assembler. - -OBJ_FORMATS = \ - aout \ - bout \ - coff \ - ecoff \ - elf \ - evax \ - hp300 \ - ieee \ - vms - -# This is an sh case which sets valid according to whether the CPU -# type in the shell variable c and the OS type in the shell variable o -# are supported. This helps cuts down on the amount of dependency -# information. - -CPU_OBJ_VALID = \ - valid= ; \ - case $$o in \ - aout) \ - case $$c in \ - a29k | arm | cris | i386 | m68k | mips | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \ - valid=yes ;; \ - esac ;; \ - bout) \ - case $$c in \ - i960) valid=yes ;; \ - esac ;; \ - coff) valid=yes; \ - case $$c in \ - cris | i860 | mmix | sh64) \ - valid= ;; \ - esac ;; \ - ecoff) \ - case $$c in \ - mips | alpha) valid=yes ;; \ - esac ;; \ - elf) valid=yes ;; \ - evax) \ - case $$c in \ - alpha) valid=yes ;; \ - esac ;; \ - hp300) \ - case $$c in \ - m68k) valid=yes ;; \ - esac ;; \ - vms) \ - case $$c in \ - vax) valid=yes ;; \ - esac ;; \ - esac; - -# These are like CPU_TYPES and CPU_OBJ_VALID, for the obj=multi case. - -MULTI_CPU_TYPES = i386 mips cris - -MULTI_CPU_OBJ_VALID = \ - valid= ; \ - case $$o in \ - aout) \ - case $$c in \ - i386 | cris) valid=yes ;; \ - esac ;; \ - coff) \ - case $$c in \ - i386 | mips) valid=yes ;; \ - esac ;; \ - ecoff) \ - case $$c in \ - mips) valid=yes ;; \ - esac ;; \ - elf) valid=yes ;; \ - esac; - -# Regular source files. - -GAS_CFILES = \ - app.c \ - as.c \ - atof-generic.c \ - bignum-copy.c \ - cond.c \ - depend.c \ - dwarf2dbg.c \ - dw2gencfi.c \ - ecoff.c \ - ehopt.c \ - expr.c \ - flonum-copy.c \ - flonum-konst.c \ - flonum-mult.c \ - frags.c \ - hash.c \ - input-file.c \ - input-scrub.c \ - listing.c \ - literal.c \ - macro.c \ - messages.c \ - output-file.c \ - read.c \ - sb.c \ - stabs.c \ - subsegs.c \ - symbols.c \ - write.c - -CFILES = $(GAS_CFILES) itbl-ops.c - -HFILES = \ - as.h \ - asintl.h \ - bignum.h \ - bit_fix.h \ - cgen.h \ - dwarf2dbg.h \ - dw2gencfi.h \ - ecoff.h \ - emul-target.h \ - emul.h \ - expr.h \ - flonum.h \ - frags.h \ - hash.h \ - input-file.h \ - itbl-ops.h \ - listing.h \ - macro.h \ - obj.h \ - output-file.h \ - read.h \ - sb.h \ - struc-symbol.h \ - subsegs.h \ - symbols.h \ - tc.h \ - write.h - -# CPU files in config. - -TARGET_CPU_CFILES = \ - config/tc-a29k.c \ - config/tc-alpha.c \ - config/tc-arc.c \ - config/tc-arm.c \ - config/tc-avr.c \ - config/tc-cris.c \ - config/tc-d10v.c \ - config/tc-d30v.c \ - config/tc-dlx.c \ - config/tc-fr30.c \ - config/tc-frv.c \ - config/tc-h8300.c \ - config/tc-h8500.c \ - config/tc-hppa.c \ - config/tc-ia64.c \ - config/tc-i370.c \ - config/tc-i386.c \ - config/tc-i860.c \ - config/tc-i960.c \ - config/tc-ip2k.c \ - config/tc-m32r.c \ - config/tc-m68hc11.c \ - config/tc-m68k.c \ - config/tc-m88k.c \ - config/tc-mcore.c \ - config/tc-mips.c \ - config/tc-mmix.c \ - config/tc-mn10200.c \ - config/tc-mn10300.c \ - config/tc-msp430.c \ - config/tc-ns32k.c \ - config/tc-openrisc.c \ - config/tc-or32.c \ - config/tc-pdp11.c \ - config/tc-pj.c \ - config/tc-ppc.c \ - config/tc-s390.c \ - config/tc-sh.c \ - config/tc-sh64.c \ - config/tc-sparc.c \ - config/tc-tahoe.c \ - config/tc-tic30.c \ - config/tc-tic54x.c \ - config/tc-tic80.c \ - config/tc-vax.c \ - config/tc-w65.c \ - config/tc-v850.c \ - config/tc-xstormy16.c \ - config/tc-xtensa.c \ - config/tc-z8k.c - -TARGET_CPU_HFILES = \ - config/tc-a29k.h \ - config/tc-alpha.h \ - config/tc-arc.h \ - config/tc-arm.h \ - config/tc-avr.h \ - config/tc-cris.h \ - config/tc-d10v.h \ - config/tc-d30v.h \ - config/tc-dlx.h \ - config/tc-fr30.h \ - config/tc-frv.h \ - config/tc-h8300.h \ - config/tc-h8500.h \ - config/tc-hppa.h \ - config/tc-ia64.h \ - config/tc-i370.h \ - config/tc-i386.h \ - config/tc-i860.h \ - config/tc-i960.h \ - config/tc-ip2k.h \ - config/tc-m32r.h \ - config/tc-m68hc11.h \ - config/tc-m68k.h \ - config/tc-m88k.h \ - config/tc-mcore.h \ - config/tc-mips.h \ - config/tc-mmix.h \ - config/tc-mn10200.h \ - config/tc-mn10300.h \ - config/tc-msp430.h \ - config/tc-ns32k.h \ - config/tc-openrisc.h \ - config/tc-or32.h \ - config/tc-pdp11.h \ - config/tc-pj.h \ - config/tc-ppc.h \ - config/tc-s390.h \ - config/tc-sh.h \ - config/tc-sh64.h \ - config/tc-sparc.h \ - config/tc-tahoe.h \ - config/tc-tic30.h \ - config/tc-tic54x.h \ - config/tc-tic80.h \ - config/tc-vax.h \ - config/tc-w65.h \ - config/tc-v850.h \ - config/tc-xstormy16.h \ - config/tc-xtensa.h \ - config/tc-z8k.h - -# OBJ files in config - -OBJ_FORMAT_CFILES = \ - config/obj-aout.c \ - config/obj-bout.c \ - config/obj-coff.c \ - config/obj-ecoff.c \ - config/obj-elf.c \ - config/obj-evax.c \ - config/obj-hp300.c \ - config/obj-ieee.c \ - config/obj-som.c \ - config/obj-vms.c - -OBJ_FORMAT_HFILES = \ - config/obj-aout.h \ - config/obj-bout.h \ - config/obj-coff.h \ - config/obj-ecoff.h \ - config/obj-elf.h \ - config/obj-evax.h \ - config/obj-hp300.h \ - config/obj-ieee.h \ - config/obj-som.h \ - config/obj-vms.h - -# Emulation header files in config - -TARG_ENV_HFILES = \ - config/te-386bsd.h \ - config/te-aux.h \ - config/te-delta.h \ - config/te-delt88.h \ - config/te-dpx2.h \ - config/te-dynix.h \ - config/te-epoc-pe.h \ - config/te-generic.h \ - config/te-go32.h \ - config/te-hp300.h \ - config/te-hppa.h \ - config/te-hppa64.h \ - config/te-hppalinux64.h \ - config/te-i386aix.h \ - config/te-ia64aix.h \ - config/te-ic960.h \ - config/te-linux.h \ - config/te-lnews.h \ - config/te-lynx.h \ - config/te-mach.h \ - config/te-macos.h \ - config/te-nbsd.h \ - config/te-nbsd532.h \ - config/te-pc532mach.h \ - config/te-pe.h \ - config/te-ppcnw.h \ - config/te-psos.h \ - config/te-riscix.h \ - config/te-sparcaout.h \ - config/te-sun3.h \ - config/te-svr4.h \ - config/te-sysv32.h \ - config/te-tmips.h - -# Multi files in config - -MULTI_CFILES = \ - config/e-crisaout.c \ - config/e-criself.c \ - config/e-i386aout.c \ - config/e-i386coff.c \ - config/e-i386elf.c \ - config/e-mipsecoff.c \ - config/e-mipself.c - -CONFIG_OBJS = \ - $(TARG_CPU_O) \ - $(OBJ_FORMAT_O) \ - $(ATOF_TARG_O) \ - $(extra_objects) - -GENERIC_OBJS = \ - app.o \ - as.o \ - atof-generic.o \ - bignum-copy.o \ - cond.o \ - depend.o \ - dwarf2dbg.o \ - dw2gencfi.o \ - ehopt.o \ - expr.o \ - flonum-konst.o \ - flonum-copy.o \ - flonum-mult.o \ - frags.o \ - hash.o \ - input-file.o \ - input-scrub.o \ - literal.o \ - messages.o \ - output-file.o \ - read.o \ - subsegs.o \ - symbols.o \ - write.o \ - listing.o \ - ecoff.o \ - stabs.o \ - sb.o \ - macro.o - -OBJS = $(CONFIG_OBJS) $(GENERIC_OBJS) - -POTFILES = $(MULTI_CFILES) $(TARGET_ENV_HFILES) $(OBJ_FORMAT_HFILES) \ - $(OBJ_FORMAT_CFILES) $(TARGET_CPU_HFILES) $(TARGET_CPU_CFILES) \ - $(HFILES) $(CFILES) $(GAS_CFILES) -po/POTFILES.in: @MAINT@ Makefile - for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \ - && mv tmp $(srcdir)/po/POTFILES.in - -# Note: GASP is now deprecated and has been removed. It is still -# available in the CVS archive or older binutils releases if it is needed. -noinst_PROGRAMS = as-new -noinst_SCRIPTS = $(GDBINIT) -EXTRA_SCRIPTS = .gdbinit - -$(srcdir)/make-gas.com: stamp-mk.com -stamp-mk.com: vmsconf.sh Makefile - sh $(srcdir)/vmsconf.sh $(GENERIC_OBJS) > new-make.com - $(SHELL) $(srcdir)/../move-if-change new-make.com $(srcdir)/make-gas.com - touch stamp-mk.com - -EXTRA_DIST = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c -diststuff: $(EXTRA_DIST) info - -DISTCLEANFILES = targ-cpu.h obj-format.h targ-env.h itbl-cpu.h cgen-desc.h - -# Now figure out from those variables how to compile and link. - -BASEDIR = $(srcdir)/.. -BFDDIR = $(BASEDIR)/bfd -INCDIR = $(BASEDIR)/include - -# This is the variable actually used when we compile. -# Specify the directories to be searched for header files. -# Both . and srcdir are used, in that order, -# so that tm.h and config.h will be found in the compilation -# subdirectory rather than in the source directory. -INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) -I$(srcdir)/.. -I$(BFDDIR) -I$(srcdir)/../intl -I../intl -DLOCALEDIR="\"$(prefix)/share/locale\"" - -# This should be parallel to INCLUDES, but should replace $(srcdir) -# with $${srcdir}, and should work in a subdirectory. This is used -# when building dependencies, because the dependency building is done -# in a subdirectory. -DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(prefix)/share/locale\"" - -DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \ - -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) - -# How to link with both our special library facilities -# and the system's installed libraries. - -GASLIBS = @OPCODES_LIB@ @BFDLIB@ ../libiberty/libiberty.a - -# Files to be copied away after each stage in building. -STAGESTUFF = *.o $(noinst_PROGRAMS) - -BFDVER_H = @BFDVER_H@ - -$(OBJS): @ALL_OBJ_DEPS@ - -as_new_SOURCES = $(GAS_CFILES) -as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \ - $(extra_objects) $(GASLIBS) $(INTLLIBS) $(LIBM) -as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \ - $(extra_objects) $(GASLIBS) $(INTLDEPS) - -# Stuff that every object file depends upon. If anything is removed -# from this list, remove it from dep-in.sed as well. -$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/progress.h $(INCDIR)/fopen-same.h \ - $(OBJ_FORMAT_H) $(TARG_CPU_H) $(TARG_ENV_H) \ - as.h asintl.h bignum.h bit_fix.h config.h emul.h expr.h flonum.h \ - frags.h hash.h listing.h obj.h read.h symbols.h tc.h write.h - -EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \ - echo $${rootme}/../expect/expect ; \ - else echo expect ; fi` - -RUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \ - echo $${srcdir}/../dejagnu/runtest ; else echo runtest; \ - fi` -RUNTESTFLAGS= - -check-DEJAGNU: site.exp - if [ -d testsuite ]; then \ - true; \ - else \ - mkdir testsuite; \ - fi - rm -f testsuite/site.exp - cp site.exp testsuite/site.exp - rootme=`pwd`; export rootme; \ - srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ - EXPECT=${EXPECT} ; export EXPECT ; \ - if [ -f $(top_builddir)/../expect/expect ]; then \ - TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \ - export TCL_LIBRARY; \ - fi; \ - runtest=$(RUNTEST); \ - cd testsuite; \ - if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ - $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \ - $(RUNTESTFLAGS); \ - else echo "WARNING: could not find \`runtest'" 1>&2; :;\ - fi - -# The implicit .c.o rule doesn't work for these, perhaps because of -# the variables, or perhaps because the sources are not on vpath. -$(TARG_CPU_O): $(TARG_CPU_C) - $(COMPILE) -c $(TARG_CPU_C) -$(ATOF_TARG_O): $(ATOF_TARG_C) - $(COMPILE) -c $(ATOF_TARG_C) - -# ecoff.c only has full dependencies when ECOFF_DEBUGGING is defined, -# so the automatic dependency stuff doesn't work. -ecoff.o : ecoff.c ecoff.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/symconst.h \ - $(INCDIR)/aout/stab_gnu.h - -# We need all these explicit rules for the multi stuff. Because of -# these rules, we don't need one for OBJ_FORMAT_O. - -obj-aout.o : $(srcdir)/config/obj-aout.c - $(COMPILE) -c $(srcdir)/config/obj-aout.c -obj-bout.o : $(srcdir)/config/obj-bout.c - $(COMPILE) -c $(srcdir)/config/obj-bout.c -obj-coff.o: $(srcdir)/config/obj-coff.c - $(COMPILE) -c $(srcdir)/config/obj-coff.c -obj-ecoff.o : $(srcdir)/config/obj-ecoff.c - $(COMPILE) -c $(srcdir)/config/obj-ecoff.c -obj-elf.o : $(srcdir)/config/obj-elf.c - $(COMPILE) -c $(srcdir)/config/obj-elf.c -obj-evax.o : $(srcdir)/config/obj-evax.c - $(COMPILE) -c $(srcdir)/config/obj-evax.c -obj-hp300.o : $(srcdir)/config/obj-hp300.c - $(COMPILE) -c $(srcdir)/config/obj-hp300.c -obj-ieee.o : $(srcdir)/config/obj-ieee.c - $(COMPILE) -c $(srcdir)/config/obj-ieee.c -obj-multi.o : $(srcdir)/config/obj-multi.c - $(COMPILE) -c $(srcdir)/config/obj-multi.c -obj-som.o : $(srcdir)/config/obj-som.c - $(COMPILE) -c $(srcdir)/config/obj-som.c -obj-vms.o : $(srcdir)/config/obj-vms.c - $(COMPILE) -c $(srcdir)/config/obj-vms.c - -e-mipself.o : $(srcdir)/config/e-mipself.c - $(COMPILE) -c $(srcdir)/config/e-mipself.c -e-mipsecoff.o : $(srcdir)/config/e-mipsecoff.c - $(COMPILE) -c $(srcdir)/config/e-mipsecoff.c -e-i386aout.o: $(srcdir)/config/e-i386aout.c - $(COMPILE) -c $(srcdir)/config/e-i386aout.c -e-i386coff.o: $(srcdir)/config/e-i386coff.c - $(COMPILE) -c $(srcdir)/config/e-i386coff.c -e-i386elf.o: $(srcdir)/config/e-i386elf.c - $(COMPILE) -c $(srcdir)/config/e-i386elf.c -e-crisaout.o: $(srcdir)/config/e-crisaout.c - $(COMPILE) -c $(srcdir)/config/e-crisaout.c -e-criself.o: $(srcdir)/config/e-criself.c - $(COMPILE) -c $(srcdir)/config/e-criself.c - -xtensa-relax.o: $(srcdir)/config/xtensa-relax.c - $(COMPILE) -c $(srcdir)/config/xtensa-relax.c - -# The m68k operand parser. - -EXTRA_as_new_SOURCES = config/m68k-parse.y - -# If m68k-parse.y is in a different directory, then ylwrap will use an -# absolute path when it invokes yacc, which will cause yacc to put the -# absolute path into the generated file. That's a pain when it comes -# to generating snapshots, because it introduces spurious diffs. -# Since when we make the snapshots $(srcdir) = ".", we check for that -# case and handle it differently. This means that anybody who -# configures with $(srcdir) = "." will have to set their path in the -# debugger if they want to debug m68k-parse.y. This is bad, but on -# the other hand it's good that people who use the prebuilt -# m68k-parse.c don't get a spurious absolute path. -m68k-parse.c: $(srcdir)/config/m68k-parse.y - f=$(srcdir)/config/m68k-parse.y; \ - if [ $$f = "./config/m68k-parse.y" ]; then \ - ln -s config/m68k-parse.y . > /dev/null 2>/dev/null || \ - ln config/m68k-parse.y . > /dev/null 2>/dev/null || \ - cp config/m68k-parse.y . >/dev/null 2>/dev/null; \ - f=m68k-parse.y; \ - else true; fi; \ - $(SHELL) $(YLWRAP) "$(YACC)" $$f y.tab.c m68k-parse.c --; \ - if [ $$f = "m68k-parse.y" ]; then \ - rm -f m68k-parse.y; \ - else true; fi -m68k-parse.o: m68k-parse.c $(srcdir)/config/m68k-parse.h - -# Don't let the .y.h rule clobber m68k-parse.h. -m68k-parse.h: ; @true -$(srcdir)/config/m68k-parse.h: ; @true - -# The instruction table specification lexical analyzer and parser. - -itbl-lex.c: $(srcdir)/itbl-lex.l -itbl-lex.o: itbl-lex.c itbl-parse.h - -itbl-parse.o: itbl-parse.c itbl-parse.h $(srcdir)/itbl-ops.h - -itbl-ops.o: $(srcdir)/itbl-ops.c $(srcdir)/itbl-ops.h itbl-parse.h - -itbl-parse.c itbl-parse.h: $(srcdir)/itbl-parse.y - $(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/itbl-parse.y y.tab.c itbl-parse.c y.tab.h itbl-parse.h -- -d - -# stand-alone itbl assembler & disassembler - -EXTRA_PROGRAMS = itbl-test -itbl_test_SOURCES = itbl-parse.y itbl-lex.l -itbl_test_LDADD = itbl-tops.o itbl-test.o $(GASLIBS) @LEXLIB@ - -itbl-tops.o: $(srcdir)/itbl-ops.c $(srcdir)/itbl-ops.h itbl-parse.h - $(COMPILE) -o itbl-tops.o -DSTAND_ALONE -c $(srcdir)/itbl-ops.c - -itbl-test.o: $(srcdir)/testsuite/gas/all/itbl-test.c $(srcdir)/itbl-ops.h - $(COMPILE) -c -DSTAND_ALONE $(srcdir)/testsuite/gas/all/itbl-test.c - -# CGEN interface. - -CGEN_CPU_PREFIX = @cgen_cpu_prefix@ - -cgen.o: cgen.c cgen.h cgen-desc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/$(CGEN_CPU_PREFIX)-desc.h \ - $(srcdir)/../opcodes/$(CGEN_CPU_PREFIX)-opc.h - -# Remake the info files. - -MOSTLYCLEANFILES = $(STAGESTUFF) core stamp-mk.com \ - testsuite/*.o testsuite/*.out testsuite/gas.log testsuite/gas.sum \ - testsuite/site.exp site.bak site.exp stage stage1 stage2 - -CLEANFILES = dep.sed DEPTC DEPTCA DEPOBJ DEPOBJA DEP2 DEP2A DEP1 DEPA DEP DEPDIR - -.PHONY: install-exec-local install-data-local -.PHONY: install-exec-bindir install-exec-tooldir - -install-exec-local: install-exec-bindir @install_tooldir@ - -install-exec-bindir: $(noinst_PROGRAMS) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - else :; fi; \ - done - -install-exec-tooldir: install-exec-bindir $(noinst_PROGRAMS) - $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin - n=`echo as | sed '$(transform)'`; \ - if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/as$(EXEEXT)" ]; then \ - rm -f $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ - ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ - else \ - true ; \ - fi - -# These exist for maintenance purposes. - -.PHONY: bootstrap bootstrap2 bootstrap3 stage1 stage2 stage3 comparison - -bootstrap: as-new - $(MAKE) stage1 - rm -f stage && ln -s stage1 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) stage2 - rm -f stage && ln -s stage2 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) comparison against=stage2 - -bootstrap2: - rm -f stage && ln -s stage1 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) stage2 - rm -f stage && ln -s stage2 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) comparison against=stage2 - -bootstrap3: - rm -f stage && ln -s stage2 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) comparison against=stage2 - -# Copy the object files from a particular stage into a subdirectory. -stage1: - -mkdir stage1 - -mv $(STAGESTUFF) stage1 - if [ -f stage1/as-new$(EXEEXT) -a ! -f stage1/as$(EXEEXT) ] ; then (cd stage1 ; ln -s as-new$(EXEEXT) as$(EXEEXT)) ; fi - -stage2: - -mkdir stage2 - -mv $(STAGESTUFF) stage2 - if [ -f stage2/as-new$(EXEEXT) -a ! -f stage2/as$(EXEEXT) ] ; then (cd stage2 ; ln -s as-new$(EXEEXT) as$(EXEEXT)) ; fi - -stage3: - -mkdir stage3 - -mv $(STAGESTUFF) stage3 - if [ -f stage3/as-new$(EXEEXT) -a ! -f stage3/as$(EXEEXT) ] ; then (cd stage3 ; ln -s as-new as$(EXEEXT)) ; fi - -against=stage2 - -# This rule is derived from corresponding code in the Makefile.in for gcc. -# The "tail +16c" is to bypass headers which may include timestamps or -# temporary assembly file names. -comparison: - x=0 ; \ - for file in *.o ; do \ - tail +16c ./$$file > tmp-foo1; \ - if tail +16c ${against}/$$file > tmp-foo2 2>/dev/null ; then \ - if cmp tmp-foo1 tmp-foo2 ; then \ - true ; \ - else \ - echo $$file differs ; \ - x=1 ; \ - fi ; \ - else true; fi ; \ - done ; \ - exit $$x - -rm -f tmp-foo* - -.PHONY: de-stage1 de-stage2 de-stage3 - -de-stage1: - - (cd stage1 ; rm -f as$(EXEEXT) ; mv -f * ..) - - rmdir stage1 - -de-stage2: - - (cd stage2 ; rm -f as$(EXEEXT) ; mv -f * ..) - - rmdir stage2 - -de-stage3: - - (cd stage3 ; rm -f as$(EXEEXT) ; mv -f * ..) - - rmdir stage3 - -DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \ - $(TARGET_CPU_HFILES) $(OBJ_FORMAT_CFILES) $(OBJ_FORMAT_HFILES) - -CONFIG_STATUS_DEPENDENCIES = $(BFDDIR)/configure.in - -# Automatic dependency computation. This is a real pain, because the -# dependencies change based on target_cpu_type and obj_format. -# Just to make things even more complicated, automake separates the -# dependency variable assignments from the dependency rules, and tacks -# on a .NOEXPORT at the end of Makefile.in. - -DEP: dep.sed $(DEP_FILE_DEPS) DEPTC DEPOBJ DEP2 - rm -f DEP1 # delete because we use $? in DEP1 rule - srcdir=`cd $(srcdir); pwd`; \ - $(MAKE) MKDEP="$(MKDEP)" srcdir="$${srcdir}" VPATH="$${srcdir}" DEP1 - rm -rf DEPDIR - echo 'AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.' > DEPA - sed -f dep.sed < DEPTC >> DEPA - sed -f dep.sed < DEPOBJ >> DEPA - sed -f dep.sed < DEP2 >> DEPA - echo 'BMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE.' >> DEPA - echo '#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.' >> DEPA - sed -f dep.sed < DEP1 >> DEPA - echo '$$(OBJS): $$(DEP_@target''_cpu_type@_@obj''_format@)' >> DEPA - echo '$$(TARG_CPU_O): $$(DEPTC_@target''_cpu_type@_@obj''_format@)' >> DEPA - echo '$$(OBJ_FORMAT_O): $$(DEPOBJ_@target''_cpu_type@_@obj''_format@)' >> DEPA - echo '#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE.' >> DEPA - if grep ' /' DEPA > /dev/null 2> /dev/null; then \ - echo 'make DEP failed!'; exit 1; \ - else \ - mv -f DEPA $@; \ - fi - -DEP1: $(CFILES) $(MULTI_CFILES) - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - echo '' > targ-cpu.h; \ - echo '' > obj-format.h; \ - echo '' > targ-env.h; \ - echo '' > itbl-cpu.h; \ - echo '' > itbl-parse.h; \ - $(MKDEP) $(DEP_FLAGS) $? > DEP - mv -f DEPDIR/DEP $@ - -# Work out the special dependencies for the tc-*.c files. -DEPTC: $(TARGET_CPU_CFILES) - rm -f DEPTCA - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - for c in $(CPU_TYPES); do \ - for o in $(OBJ_FORMATS); do \ - $(CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ - echo '#include "obj-'"$${o}"'.h"' > obj-format.h; \ - echo '#include "te-generic.h"' > targ-env.h; \ - echo '' > itbl-cpu.h; \ - echo '' > itbl-parse.h; \ - echo '#include "opcodes/'"$${c}"'-desc.h"' > cgen-desc.h; \ - rm -f dummy.c; \ - cp $${srcdir}/config/tc-$${c}.c dummy.c; \ - $(MKDEP) $(DEP_FLAGS) dummy.c | \ - sed -e "s/dummy.o: dummy.c/DEPTC_$${c}_$${o} =/" >> ../DEPTCA; \ - rm -f dummy.c; \ - else true; fi; \ - done; \ - done - echo 'DEPTC_hppa_som = $$(srcdir)/config/tc-hppa.h subsegs.h \' >> DEPTCA - echo ' $$(INCDIR)/obstack.h $$(BFDDIR)/libhppa.h \' >> DEPTCA - echo ' $$(INCDIR)/opcode/hppa.h $$(BFDDIR)/som.h' >> DEPTCA - for c in $(MULTI_CPU_TYPES); do \ - echo "DEPTC_$${c}"'_multi = \' >> DEPTCA; \ - for o in $(OBJ_FORMATS); do \ - $(MULTI_CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '$$(DEPTC_'"$${c}_$${o}"') \' >> DEPTCA; \ - else true; fi; \ - done; \ - echo '' >> DEPTCA; \ - done - mv -f DEPTCA DEPTC - -# Work out the special dependencies for the obj-*.c files. -DEPOBJ: $(OBJ_FORMAT_CFILES) - rm -f DEPOBJA - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - for c in $(CPU_TYPES); do \ - for o in $(OBJ_FORMATS); do \ - $(CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ - echo '#include "obj-'"$${o}"'.h"' > obj-format.h; \ - echo '#include "te-generic.h"' > targ-env.h; \ - echo '' > itbl-cpu.h; \ - echo '' > itbl-parse.h; \ - rm -f dummy.c; \ - cp $${srcdir}/config/obj-$${o}.c dummy.c; \ - $(MKDEP) $(DEP_FLAGS) dummy.c | \ - sed -e "s/dummy.o: dummy.c/DEPOBJ_$${c}_$${o} =/" >> ../DEPOBJA; \ - rm -f dummy.c; \ - else true; fi; \ - done; \ - done - echo 'DEPOBJ_hppa_som = $$(srcdir)/config/obj-som.h subsegs.h \' >> DEPOBJA - echo ' $$(INCDIR)/obstack.h $$(BFDDIR)/libhppa.h \' >> DEPOBJA - echo ' $$(BFDDIR)/som.h $$(INCDIR)/aout/stab_gnu.h \' >> DEPOBJA - echo ' $$(INCDIR)/aout/stab.def' >> DEPOBJA - for c in $(MULTI_CPU_TYPES); do \ - echo "DEPOBJ_$${c}"'_multi = \' >> DEPOBJA; \ - for o in $(OBJ_FORMATS); do \ - $(MULTI_CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '$$(DEPOBJ_'"$${c}_$${o}"') \' >> DEPOBJA; \ - else true; fi; \ - done; \ - echo '' >> DEPOBJA; \ - done - mv -f DEPOBJA DEPOBJ - -# Work out the dependencies for each CPU/OBJ combination. -# Note that SOM is a special case, because it only works native. -DEP2: $(TARGET_CPU_HFILES) $(OBJ_FORMAT_HFILES) - rm -f DEP2A - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - for c in $(CPU_TYPES); do \ - for o in $(OBJ_FORMATS); do \ - $(CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ - echo '#include "obj-'"$${o}"'.h"' > dummy.c; \ - $(MKDEP) $(DEP_FLAGS) dummy.c | \ - sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2A; \ - else true; fi; \ - done; \ - done - echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> DEP2A - for c in $(MULTI_CPU_TYPES); do \ - echo "DEP_$${c}"'_multi = \' >> DEP2A; \ - for o in $(OBJ_FORMATS); do \ - $(MULTI_CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '$$(DEP_'"$${c}_$${o}"') \' >> DEP2A; \ - else true; fi; \ - done; \ - echo '' >> DEP2A; \ - done - mv -f DEP2A DEP2 - -dep.sed: dep-in.sed config.status - srcdir=`cd $(srcdir); pwd`; \ - sed <$(srcdir)/dep-in.sed >dep.sed \ - -e "s!@INCDIR@!$${srcdir}/../include!" \ - -e "s!@BFDDIR@!$${srcdir}/../bfd!" \ - -e "s!@SRCDIR@!$${srcdir}!" \ - -e 's!@TOPDIR@!'`echo $(srcdir) | sed -e s,/gas,,`'!' - -dep: DEP - sed -e '/^.MKDEP.*WARNING BELOW./,/^.MKDEP.*WARNING ABOVE./d' \ - < Makefile > tmp-Makefile - cat DEP >> tmp-Makefile - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile - -dep-in: DEP - sed -e '/^.MKDEP.*WARNING BELOW./,/^.MKDEP.*WARNING ABOVE./d' \ - < $(srcdir)/Makefile.in > tmp-Makefile.in - cat DEP >> tmp-Makefile.in - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in - -dep-am: DEP - sed -e '/^.MKDEP.*WARNING BELOW./,/^.MKDEP.*WARNING ABOVE./d' \ - < $(srcdir)/Makefile.am > tmp-Makefile.am - cat DEP >> tmp-Makefile.am - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am - -# HEED THE MKDEP WARNINGS. -# ANYTHING CHANGED OR ADDED BETWEEN THE WARNING LINES MAY GO AWAY. -.PHONY: dep dep-in dep-am - -AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c -DEPTC_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c -DEPTC_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \ - $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h $(INCDIR)/opcode/alpha.h \ - $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c -DEPTC_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ - $(srcdir)/config/tc-alpha.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c -DEPTC_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ - $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ - struc-symbol.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ - $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h -DEPTC_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h -DEPTC_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h -DEPTC_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/avr.h -DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/cris.h dwarf2dbg.h -DEPTC_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/cris.h dwarf2dbg.h -DEPTC_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \ - $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h -DEPTC_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h -DEPTC_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h -DEPTC_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/d30v.h -DEPTC_dlx_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-dlx.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/opcode/dlx.h -DEPTC_dlx_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/tc-dlx.h $(INCDIR)/opcode/dlx.h -DEPTC_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/fr30-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \ - cgen.h -DEPTC_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/fr30-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/fr30-opc.h cgen.h -DEPTC_frv_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-frv.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/frv-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/frv-opc.h cgen.h $(BFDDIR)/libbfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/reloc-macros.h -DEPTC_frv_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-frv.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/frv-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/frv-opc.h \ - cgen.h $(BFDDIR)/libbfd.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/reloc-macros.h -DEPTC_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h \ - $(INCDIR)/opcode/h8300.h $(INCDIR)/safe-ctype.h -DEPTC_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ - subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/h8300.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h -DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h -DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h -DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h -DEPTC_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ - $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/hppa.h \ - dwarf2dbg.h -DEPTC_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ia64.h $(INCDIR)/opcode/ia64.h \ - $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h -DEPTC_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/safe-ctype.h dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h -DEPTC_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h -DEPTC_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h $(INCDIR)/opcode/i370.h $(INCDIR)/elf/i370.h \ - $(INCDIR)/elf/reloc-macros.h -DEPTC_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/i386.h -DEPTC_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/opcode/i386.h -DEPTC_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/i386.h -DEPTC_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h -DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/i960.h -DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h -DEPTC_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h -DEPTC_ip2k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ip2k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/ip2k-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/ip2k-opc.h cgen.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/ip2k.h $(INCDIR)/elf/reloc-macros.h $(BFDDIR)/libbfd.h -DEPTC_ip2k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ip2k.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/ip2k-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/ip2k-opc.h \ - cgen.h $(INCDIR)/elf/ip2k.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/libbfd.h -DEPTC_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/m32r-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ - cgen.h -DEPTC_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/m32r-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/m32r-opc.h cgen.h -DEPTC_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h \ - $(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h -DEPTC_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h $(INCDIR)/elf/m68hc11.h \ - $(INCDIR)/elf/reloc-macros.h -DEPTC_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h \ - $(srcdir)/config/m68k-parse.h -DEPTC_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ - subsegs.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h -DEPTC_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h \ - $(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \ - $(INCDIR)/elf/reloc-macros.h -DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h subsegs.h dwarf2dbg.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h -DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h -DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/config/m88k-opcode.h -DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ - $(INCDIR)/safe-ctype.h -DEPTC_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h -DEPTC_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/mips.h itbl-ops.h \ - dwarf2dbg.h $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h -DEPTC_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(INCDIR)/elf/mips.h \ - $(INCDIR)/elf/reloc-macros.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h -DEPTC_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/mmix.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/mmix.h \ - $(INCDIR)/safe-ctype.h dwarf2dbg.h -DEPTC_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h -DEPTC_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/mn10200.h -DEPTC_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h \ - dwarf2dbg.h -DEPTC_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/mn10300.h dwarf2dbg.h -DEPTC_msp430_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-msp430.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/msp430.h $(INCDIR)/safe-ctype.h -DEPTC_msp430_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/msp430.h \ - $(INCDIR)/safe-ctype.h -DEPTC_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h -DEPTC_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ns32k.h \ - $(INCDIR)/obstack.h -DEPTC_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h -DEPTC_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/openrisc-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/openrisc-opc.h cgen.h -DEPTC_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/openrisc-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/openrisc-opc.h \ - cgen.h -DEPTC_or32_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/or32.h $(INCDIR)/elf/or32.h \ - $(INCDIR)/elf/reloc-macros.h -DEPTC_or32_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/tc-or32.h $(INCDIR)/opcode/or32.h \ - $(INCDIR)/elf/or32.h $(INCDIR)/elf/reloc-macros.h -DEPTC_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h -DEPTC_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/pdp11.h -DEPTC_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h -DEPTC_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/pj.h -DEPTC_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pj.h -DEPTC_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/ppc.h -DEPTC_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/ppc.h \ - $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/s390.h \ - $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h -DEPTC_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/opcode/s390.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h -DEPTC_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ - $(INCDIR)/safe-ctype.h struc-symbol.h dwarf2dbg.h -DEPTC_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ - $(INCDIR)/safe-ctype.h struc-symbol.h $(INCDIR)/elf/sh.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_sh64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh64.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/elf32-sh64.h $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/sh64-opc.h \ - $(srcdir)/config/tc-sh.c subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/sh-opc.h struc-symbol.h dwarf2dbg.h -DEPTC_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/sparc.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h -DEPTC_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h -DEPTC_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/sparc.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \ - dwarf2dbg.h -DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h -DEPTC_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h -DEPTC_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h -DEPTC_tic4x_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic4x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic4x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic4x.h \ - subsegs.h $(INCDIR)/obstack.h -DEPTC_tic4x_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/tc-tic4x.h $(INCDIR)/opcode/tic4x.h \ - subsegs.h $(INCDIR)/obstack.h -DEPTC_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h sb.h macro.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/tic54x.h -DEPTC_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/safe-ctype.h sb.h macro.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h -DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h -DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h -DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ - $(INCDIR)/opcode/vax.h $(INCDIR)/safe-ctype.h -DEPTC_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/vax.h \ - $(INCDIR)/safe-ctype.h -DEPTC_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ - $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ - $(INCDIR)/elf/vax.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/vax.h \ - $(INCDIR)/safe-ctype.h -DEPTC_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/vax.h \ - $(INCDIR)/safe-ctype.h -DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/v850.h dwarf2dbg.h -DEPTC_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h \ - dwarf2dbg.h -DEPTC_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/xstormy16-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/xstormy16-opc.h cgen.h -DEPTC_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/xstormy16-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/xstormy16-opc.h \ - cgen.h -DEPTC_xtensa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xtensa.h \ - $(INCDIR)/xtensa-config.h sb.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/xtensa-relax.h \ - $(INCDIR)/xtensa-isa.h $(srcdir)/config/xtensa-istack.h \ - dwarf2dbg.h struc-symbol.h -DEPTC_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h -DEPTC_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h -DEPTC_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \ - $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h \ - $(BFDDIR)/som.h -DEPTC_i386_multi = $(DEPTC_i386_aout) $(DEPTC_i386_coff) \ - $(DEPTC_i386_elf) -DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \ - $(DEPTC_mips_elf) -DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf) -DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h -DEPOBJ_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h -DEPOBJ_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ - $(srcdir)/config/tc-alpha.h -DEPOBJ_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_dlx_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-dlx.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_dlx_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-dlx.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_frv_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-frv.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_frv_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-frv.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ - $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h \ - $(INCDIR)/aout/aout64.h -DEPOBJ_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ia64.h $(INCDIR)/opcode/ia64.h \ - $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h -DEPOBJ_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h -DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_ip2k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ip2k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_ip2k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ip2k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h -DEPOBJ_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h -DEPOBJ_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_msp430_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-msp430.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_msp430_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_or32_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-or32.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_or32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h -DEPOBJ_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_sh64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh64.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/elf32-sh64.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic4x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic4x.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic4x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic4x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic4x.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h -DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h \ - $(INCDIR)/aout/aout64.h -DEPOBJ_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_xtensa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xtensa.h \ - $(INCDIR)/xtensa-config.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_hppa_som = $(srcdir)/config/obj-som.h subsegs.h \ - $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/som.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -DEPOBJ_i386_multi = $(DEPOBJ_i386_aout) $(DEPOBJ_i386_coff) \ - $(DEPOBJ_i386_elf) -DEPOBJ_mips_multi = $(DEPOBJ_mips_coff) $(DEPOBJ_mips_ecoff) \ - $(DEPOBJ_mips_elf) -DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf) -DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h -DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEP_alpha_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h -DEP_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h -DEP_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_arc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h -DEP_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_arm_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h -DEP_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h -DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h -DEP_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h -DEP_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_d30v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h -DEP_dlx_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-dlx.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_dlx_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-dlx.h -DEP_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_fr30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h -DEP_frv_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-frv.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_frv_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-frv.h -DEP_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h -DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h -DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_hppa_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ - $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/reloc-macros.h -DEP_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/symcat.h $(INCDIR)/elf/ia64.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_ia64_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h -DEP_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_i370_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h -DEP_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_i386_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h -DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h -DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h -DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_i960_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h -DEP_ip2k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ip2k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_ip2k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ip2k.h -DEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_m32r_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h -DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m68hc11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h -DEP_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h -DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h -DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_mcore_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h -DEP_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEP_mips_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h -DEP_mmix_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h -DEP_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_mn10200_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h -DEP_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_mn10300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h -DEP_msp430_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-msp430.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_msp430_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h -DEP_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_ns32k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h -DEP_openrisc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-openrisc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_openrisc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h -DEP_or32_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_or32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h -DEP_pdp11_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-pdp11.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_pdp11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pdp11.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_pdp11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h -DEP_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_pj_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h -DEP_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_ppc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h -DEP_s390_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-s390.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_s390_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h -DEP_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_sh_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h -DEP_sh64_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh64.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/elf32-sh64.h -DEP_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h -DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h -DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h -DEP_tic4x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic4x.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic4x.h \ - $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic4x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic4x.h -DEP_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h \ - $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h -DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h -DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h -DEP_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h -DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/symcat.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_v850_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h -DEP_xstormy16_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-xstormy16.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_xstormy16_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h -DEP_xtensa_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xtensa.h \ - $(INCDIR)/xtensa-config.h -DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_z8k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h -DEP_hppa_som = $(BFDDIR)/som.h -DEP_i386_multi = $(DEP_i386_aout) $(DEP_i386_coff) \ - $(DEP_i386_elf) -DEP_mips_multi = $(DEP_mips_coff) $(DEP_mips_ecoff) \ - $(DEP_mips_elf) -DEP_cris_multi = $(DEP_cris_aout) $(DEP_cris_elf) -BMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE. -#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -app.o: app.c $(INCDIR)/symcat.h -as.o: as.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ - output-file.h sb.h macro.h dwarf2dbg.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h $(BFDVER_H) -atof-generic.o: atof-generic.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h -bignum-copy.o: bignum-copy.c $(INCDIR)/symcat.h -cond.o: cond.c $(INCDIR)/symcat.h macro.h sb.h $(INCDIR)/obstack.h -depend.o: depend.c $(INCDIR)/symcat.h -dwarf2dbg.o: dwarf2dbg.c $(INCDIR)/symcat.h dwarf2dbg.h \ - $(INCDIR)/filenames.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/elf/dwarf2.h -dw2gencfi.o: dw2gencfi.c $(INCDIR)/symcat.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h -ecoff.o: ecoff.c $(INCDIR)/symcat.h ecoff.h -ehopt.o: ehopt.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/elf/dwarf2.h -expr.o: expr.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h -flonum-copy.o: flonum-copy.c $(INCDIR)/symcat.h -flonum-konst.o: flonum-konst.c -flonum-mult.o: flonum-mult.c -frags.o: frags.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h -hash.o: hash.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h -input-file.o: input-file.c $(INCDIR)/symcat.h input-file.h \ - $(INCDIR)/safe-ctype.h -input-scrub.o: input-scrub.c $(INCDIR)/symcat.h input-file.h \ - sb.h -listing.o: listing.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \ - $(INCDIR)/safe-ctype.h input-file.h subsegs.h -literal.o: literal.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h -macro.o: macro.c $(INCDIR)/safe-ctype.h sb.h macro.h -messages.o: messages.c $(INCDIR)/symcat.h -output-file.o: output-file.c $(INCDIR)/symcat.h output-file.h -read.o: read.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h sb.h macro.h ecoff.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h -sb.o: sb.c sb.h -stabs.o: stabs.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \ - subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -subsegs.o: subsegs.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h -symbols.o: symbols.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h subsegs.h struc-symbol.h -write.o: write.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ - output-file.h dwarf2dbg.h -itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/symcat.h -e-crisaout.o: $(srcdir)/config/e-crisaout.c $(INCDIR)/symcat.h \ - emul-target.h -e-criself.o: $(srcdir)/config/e-criself.c $(INCDIR)/symcat.h \ - emul-target.h -e-i386aout.o: $(srcdir)/config/e-i386aout.c $(INCDIR)/symcat.h \ - emul-target.h -e-i386coff.o: $(srcdir)/config/e-i386coff.c $(INCDIR)/symcat.h \ - emul-target.h -e-i386elf.o: $(srcdir)/config/e-i386elf.c $(INCDIR)/symcat.h \ - emul-target.h -e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c $(INCDIR)/symcat.h \ - emul-target.h -e-mipself.o: $(srcdir)/config/e-mipself.c $(INCDIR)/symcat.h \ - emul-target.h -$(OBJS): $(DEP_@target_cpu_type@_@obj_format@) -$(TARG_CPU_O): $(DEPTC_@target_cpu_type@_@obj_format@) -$(OBJ_FORMAT_O): $(DEPOBJ_@target_cpu_type@_@obj_format@) -#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE. diff --git a/gas/Makefile.in b/gas/Makefile.in deleted file mode 100644 index beed77040..000000000 --- a/gas/Makefile.in +++ /dev/null @@ -1,3419 +0,0 @@ -# Makefile.in generated by automake 1.7.8 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# 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@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -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@ -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -ALL_OBJ_DEPS = @ALL_OBJ_DEPS@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BFDLIB = @BFDLIB@ - -BFDVER_H = @BFDVER_H@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GDBINIT = @GDBINIT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ - -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -LDFLAGS = @LDFLAGS@ -LEX = `if [ -f ../flex/flex ] ; then echo ../flex/flex ; else echo @LEX@ ; fi` -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -OBJEXT = @OBJEXT@ -OPCODES_LIB = @OPCODES_LIB@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ - -WARN_CFLAGS = @WARN_CFLAGS@ -XGETTEXT = @XGETTEXT@ - -YACC = `if [ -f ../bison/bison ] ; then echo ../bison/bison -y -L../bison/bison ; else echo @YACC@ ; fi` -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -atof = @atof@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -cgen_cpu_prefix = @cgen_cpu_prefix@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -extra_objects = @extra_objects@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -install_tooldir = @install_tooldir@ -l = @l@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -obj_format = @obj_format@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_cpu_type = @target_cpu_type@ -target_os = @target_os@ -target_vendor = @target_vendor@ -te_file = @te_file@ - -AUTOMAKE_OPTIONS = cygnus dejagnu - -SUBDIRS = doc po - -tooldir = $(exec_prefix)/$(target_alias) -AM_CFLAGS = $(WARN_CFLAGS) - -MKDEP = gcc -MM - -TARG_CPU = @target_cpu_type@ -TARG_CPU_C = $(srcdir)/config/tc-@target_cpu_type@.c -TARG_CPU_O = tc-@target_cpu_type@.o -TARG_CPU_H = $(srcdir)/config/tc-@target_cpu_type@.h -OBJ_FORMAT_C = $(srcdir)/config/obj-@obj_format@.c -OBJ_FORMAT_O = obj-@obj_format@.o -OBJ_FORMAT_H = $(srcdir)/config/obj-@obj_format@.h -TARG_ENV_H = $(srcdir)/config/te-@te_file@.h -ATOF_TARG_C = $(srcdir)/config/atof-@atof@.c -ATOF_TARG_O = atof-@atof@.o - -# use @target_cpu_type@ for refering to configured target name -IT_HDRS = itbl-parse.h $(srcdir)/itbl-ops.h -IT_SRCS = itbl-parse.c itbl-lex.c $(srcdir)/itbl-ops.c -IT_DEPS = $(srcdir)/itbl-parse.y $(srcdir)/itbl-lex.l $(srcdir)/config/itbl-@target_cpu_type@.h -IT_OBJS = itbl-parse.o itbl-lex.o itbl-ops.o - - -# CPU types. This is only used for dependency information. -CPU_TYPES = \ - a29k \ - alpha \ - arc \ - arm \ - avr \ - cris \ - d10v \ - d30v \ - dlx \ - fr30 \ - frv \ - h8300 \ - h8500 \ - hppa \ - ia64 \ - i370 \ - i386 \ - i860 \ - i960 \ - ip2k \ - m32r \ - m68hc11 \ - m68k \ - m88k \ - mcore \ - mips \ - mmix \ - mn10200 \ - mn10300 \ - msp430 \ - ns32k \ - openrisc \ - or32 \ - pdp11 \ - pj \ - ppc \ - s390 \ - sh \ - sh64 \ - sparc \ - tahoe \ - tic30 \ - tic4x \ - tic54x \ - tic80 \ - vax \ - w65 \ - v850 \ - xstormy16 \ - xtensa \ - z8k - - - -# Object format types. This is only used for dependency information. -# We deliberately omit SOM, since it does not work as a cross assembler. -OBJ_FORMATS = \ - aout \ - bout \ - coff \ - ecoff \ - elf \ - evax \ - hp300 \ - ieee \ - vms - - - -# This is an sh case which sets valid according to whether the CPU -# type in the shell variable c and the OS type in the shell variable o -# are supported. This helps cuts down on the amount of dependency -# information. -CPU_OBJ_VALID = \ - valid= ; \ - case $$o in \ - aout) \ - case $$c in \ - a29k | arm | cris | i386 | m68k | mips | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \ - valid=yes ;; \ - esac ;; \ - bout) \ - case $$c in \ - i960) valid=yes ;; \ - esac ;; \ - coff) valid=yes; \ - case $$c in \ - cris | i860 | mmix | sh64) \ - valid= ;; \ - esac ;; \ - ecoff) \ - case $$c in \ - mips | alpha) valid=yes ;; \ - esac ;; \ - elf) valid=yes ;; \ - evax) \ - case $$c in \ - alpha) valid=yes ;; \ - esac ;; \ - hp300) \ - case $$c in \ - m68k) valid=yes ;; \ - esac ;; \ - vms) \ - case $$c in \ - vax) valid=yes ;; \ - esac ;; \ - esac; - - - -# These are like CPU_TYPES and CPU_OBJ_VALID, for the obj=multi case. -MULTI_CPU_TYPES = i386 mips cris - -MULTI_CPU_OBJ_VALID = \ - valid= ; \ - case $$o in \ - aout) \ - case $$c in \ - i386 | cris) valid=yes ;; \ - esac ;; \ - coff) \ - case $$c in \ - i386 | mips) valid=yes ;; \ - esac ;; \ - ecoff) \ - case $$c in \ - mips) valid=yes ;; \ - esac ;; \ - elf) valid=yes ;; \ - esac; - - - -# Regular source files. -GAS_CFILES = \ - app.c \ - as.c \ - atof-generic.c \ - bignum-copy.c \ - cond.c \ - depend.c \ - dwarf2dbg.c \ - dw2gencfi.c \ - ecoff.c \ - ehopt.c \ - expr.c \ - flonum-copy.c \ - flonum-konst.c \ - flonum-mult.c \ - frags.c \ - hash.c \ - input-file.c \ - input-scrub.c \ - listing.c \ - literal.c \ - macro.c \ - messages.c \ - output-file.c \ - read.c \ - sb.c \ - stabs.c \ - subsegs.c \ - symbols.c \ - write.c - - -CFILES = $(GAS_CFILES) itbl-ops.c - -HFILES = \ - as.h \ - asintl.h \ - bignum.h \ - bit_fix.h \ - cgen.h \ - dwarf2dbg.h \ - dw2gencfi.h \ - ecoff.h \ - emul-target.h \ - emul.h \ - expr.h \ - flonum.h \ - frags.h \ - hash.h \ - input-file.h \ - itbl-ops.h \ - listing.h \ - macro.h \ - obj.h \ - output-file.h \ - read.h \ - sb.h \ - struc-symbol.h \ - subsegs.h \ - symbols.h \ - tc.h \ - write.h - - - -# CPU files in config. -TARGET_CPU_CFILES = \ - config/tc-a29k.c \ - config/tc-alpha.c \ - config/tc-arc.c \ - config/tc-arm.c \ - config/tc-avr.c \ - config/tc-cris.c \ - config/tc-d10v.c \ - config/tc-d30v.c \ - config/tc-dlx.c \ - config/tc-fr30.c \ - config/tc-frv.c \ - config/tc-h8300.c \ - config/tc-h8500.c \ - config/tc-hppa.c \ - config/tc-ia64.c \ - config/tc-i370.c \ - config/tc-i386.c \ - config/tc-i860.c \ - config/tc-i960.c \ - config/tc-ip2k.c \ - config/tc-m32r.c \ - config/tc-m68hc11.c \ - config/tc-m68k.c \ - config/tc-m88k.c \ - config/tc-mcore.c \ - config/tc-mips.c \ - config/tc-mmix.c \ - config/tc-mn10200.c \ - config/tc-mn10300.c \ - config/tc-msp430.c \ - config/tc-ns32k.c \ - config/tc-openrisc.c \ - config/tc-or32.c \ - config/tc-pdp11.c \ - config/tc-pj.c \ - config/tc-ppc.c \ - config/tc-s390.c \ - config/tc-sh.c \ - config/tc-sh64.c \ - config/tc-sparc.c \ - config/tc-tahoe.c \ - config/tc-tic30.c \ - config/tc-tic54x.c \ - config/tc-tic80.c \ - config/tc-vax.c \ - config/tc-w65.c \ - config/tc-v850.c \ - config/tc-xstormy16.c \ - config/tc-xtensa.c \ - config/tc-z8k.c - - -TARGET_CPU_HFILES = \ - config/tc-a29k.h \ - config/tc-alpha.h \ - config/tc-arc.h \ - config/tc-arm.h \ - config/tc-avr.h \ - config/tc-cris.h \ - config/tc-d10v.h \ - config/tc-d30v.h \ - config/tc-dlx.h \ - config/tc-fr30.h \ - config/tc-frv.h \ - config/tc-h8300.h \ - config/tc-h8500.h \ - config/tc-hppa.h \ - config/tc-ia64.h \ - config/tc-i370.h \ - config/tc-i386.h \ - config/tc-i860.h \ - config/tc-i960.h \ - config/tc-ip2k.h \ - config/tc-m32r.h \ - config/tc-m68hc11.h \ - config/tc-m68k.h \ - config/tc-m88k.h \ - config/tc-mcore.h \ - config/tc-mips.h \ - config/tc-mmix.h \ - config/tc-mn10200.h \ - config/tc-mn10300.h \ - config/tc-msp430.h \ - config/tc-ns32k.h \ - config/tc-openrisc.h \ - config/tc-or32.h \ - config/tc-pdp11.h \ - config/tc-pj.h \ - config/tc-ppc.h \ - config/tc-s390.h \ - config/tc-sh.h \ - config/tc-sh64.h \ - config/tc-sparc.h \ - config/tc-tahoe.h \ - config/tc-tic30.h \ - config/tc-tic54x.h \ - config/tc-tic80.h \ - config/tc-vax.h \ - config/tc-w65.h \ - config/tc-v850.h \ - config/tc-xstormy16.h \ - config/tc-xtensa.h \ - config/tc-z8k.h - - - -# OBJ files in config -OBJ_FORMAT_CFILES = \ - config/obj-aout.c \ - config/obj-bout.c \ - config/obj-coff.c \ - config/obj-ecoff.c \ - config/obj-elf.c \ - config/obj-evax.c \ - config/obj-hp300.c \ - config/obj-ieee.c \ - config/obj-som.c \ - config/obj-vms.c - - -OBJ_FORMAT_HFILES = \ - config/obj-aout.h \ - config/obj-bout.h \ - config/obj-coff.h \ - config/obj-ecoff.h \ - config/obj-elf.h \ - config/obj-evax.h \ - config/obj-hp300.h \ - config/obj-ieee.h \ - config/obj-som.h \ - config/obj-vms.h - - - -# Emulation header files in config -TARG_ENV_HFILES = \ - config/te-386bsd.h \ - config/te-aux.h \ - config/te-delta.h \ - config/te-delt88.h \ - config/te-dpx2.h \ - config/te-dynix.h \ - config/te-epoc-pe.h \ - config/te-generic.h \ - config/te-go32.h \ - config/te-hp300.h \ - config/te-hppa.h \ - config/te-hppa64.h \ - config/te-hppalinux64.h \ - config/te-i386aix.h \ - config/te-ia64aix.h \ - config/te-ic960.h \ - config/te-linux.h \ - config/te-lnews.h \ - config/te-lynx.h \ - config/te-mach.h \ - config/te-macos.h \ - config/te-nbsd.h \ - config/te-nbsd532.h \ - config/te-pc532mach.h \ - config/te-pe.h \ - config/te-ppcnw.h \ - config/te-psos.h \ - config/te-riscix.h \ - config/te-sparcaout.h \ - config/te-sun3.h \ - config/te-svr4.h \ - config/te-sysv32.h \ - config/te-tmips.h - - - -# Multi files in config -MULTI_CFILES = \ - config/e-crisaout.c \ - config/e-criself.c \ - config/e-i386aout.c \ - config/e-i386coff.c \ - config/e-i386elf.c \ - config/e-mipsecoff.c \ - config/e-mipself.c - - -CONFIG_OBJS = \ - $(TARG_CPU_O) \ - $(OBJ_FORMAT_O) \ - $(ATOF_TARG_O) \ - $(extra_objects) - - -GENERIC_OBJS = \ - app.o \ - as.o \ - atof-generic.o \ - bignum-copy.o \ - cond.o \ - depend.o \ - dwarf2dbg.o \ - dw2gencfi.o \ - ehopt.o \ - expr.o \ - flonum-konst.o \ - flonum-copy.o \ - flonum-mult.o \ - frags.o \ - hash.o \ - input-file.o \ - input-scrub.o \ - literal.o \ - messages.o \ - output-file.o \ - read.o \ - subsegs.o \ - symbols.o \ - write.o \ - listing.o \ - ecoff.o \ - stabs.o \ - sb.o \ - macro.o - - -OBJS = $(CONFIG_OBJS) $(GENERIC_OBJS) - -POTFILES = $(MULTI_CFILES) $(TARGET_ENV_HFILES) $(OBJ_FORMAT_HFILES) \ - $(OBJ_FORMAT_CFILES) $(TARGET_CPU_HFILES) $(TARGET_CPU_CFILES) \ - $(HFILES) $(CFILES) $(GAS_CFILES) - -RECURSIVE_TARGETS = install-info-recursive - -# Note: GASP is now deprecated and has been removed. It is still -# available in the CVS archive or older binutils releases if it is needed. -noinst_PROGRAMS = as-new -noinst_SCRIPTS = $(GDBINIT) -EXTRA_SCRIPTS = .gdbinit - -EXTRA_DIST = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c - -DISTCLEANFILES = targ-cpu.h obj-format.h targ-env.h itbl-cpu.h cgen-desc.h - - -# Now figure out from those variables how to compile and link. -BASEDIR = $(srcdir)/.. -BFDDIR = $(BASEDIR)/bfd -INCDIR = $(BASEDIR)/include - -# This is the variable actually used when we compile. -# Specify the directories to be searched for header files. -# Both . and srcdir are used, in that order, -# so that tm.h and config.h will be found in the compilation -# subdirectory rather than in the source directory. -INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) -I$(srcdir)/.. -I$(BFDDIR) -I$(srcdir)/../intl -I../intl -DLOCALEDIR="\"$(prefix)/share/locale\"" - -# This should be parallel to INCLUDES, but should replace $(srcdir) -# with $${srcdir}, and should work in a subdirectory. This is used -# when building dependencies, because the dependency building is done -# in a subdirectory. -DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(prefix)/share/locale\"" - -DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \ - -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) - - - -# How to link with both our special library facilities -# and the system's installed libraries. -GASLIBS = @OPCODES_LIB@ @BFDLIB@ ../libiberty/libiberty.a - -# Files to be copied away after each stage in building. -STAGESTUFF = *.o $(noinst_PROGRAMS) - -as_new_SOURCES = $(GAS_CFILES) -as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \ - $(extra_objects) $(GASLIBS) $(INTLLIBS) $(LIBM) - -as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \ - $(extra_objects) $(GASLIBS) $(INTLDEPS) - - -EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \ - echo $${rootme}/../expect/expect ; \ - else echo expect ; fi` - - -RUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \ - echo $${srcdir}/../dejagnu/runtest ; else echo runtest; \ - fi` - -RUNTESTFLAGS = - - -# The m68k operand parser. -EXTRA_as_new_SOURCES = config/m68k-parse.y - - -# stand-alone itbl assembler & disassembler -EXTRA_PROGRAMS = itbl-test -itbl_test_SOURCES = itbl-parse.y itbl-lex.l -itbl_test_LDADD = itbl-tops.o itbl-test.o $(GASLIBS) @LEXLIB@ - - -# CGEN interface. -CGEN_CPU_PREFIX = @cgen_cpu_prefix@ - - -# Remake the info files. -MOSTLYCLEANFILES = $(STAGESTUFF) core stamp-mk.com \ - testsuite/*.o testsuite/*.out testsuite/gas.log testsuite/gas.sum \ - testsuite/site.exp site.bak site.exp stage stage1 stage2 - - -CLEANFILES = dep.sed DEPTC DEPTCA DEPOBJ DEPOBJA DEP2 DEP2A DEP1 DEPA DEP DEPDIR - -against = stage2 - -DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \ - $(TARGET_CPU_HFILES) $(OBJ_FORMAT_CFILES) $(OBJ_FORMAT_HFILES) - - -AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h - -DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h - -DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h - -DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c - -DEPTC_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c - -DEPTC_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \ - $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h $(INCDIR)/opcode/alpha.h \ - $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c - -DEPTC_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ - $(srcdir)/config/tc-alpha.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ - $(srcdir)/config/atof-vax.c - -DEPTC_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ - $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h - -DEPTC_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ - struc-symbol.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ - $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h - -DEPTC_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h - -DEPTC_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h - -DEPTC_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h - -DEPTC_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h - -DEPTC_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/avr.h - -DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/cris.h dwarf2dbg.h - -DEPTC_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/cris.h dwarf2dbg.h - -DEPTC_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \ - $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h - -DEPTC_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/d30v.h - -DEPTC_dlx_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-dlx.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/opcode/dlx.h - -DEPTC_dlx_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/tc-dlx.h $(INCDIR)/opcode/dlx.h - -DEPTC_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/fr30-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \ - cgen.h - -DEPTC_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/fr30-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/fr30-opc.h cgen.h - -DEPTC_frv_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-frv.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/frv-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/frv-opc.h cgen.h $(BFDDIR)/libbfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_frv_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-frv.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/frv-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/frv-opc.h \ - cgen.h $(BFDDIR)/libbfd.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h \ - $(INCDIR)/opcode/h8300.h $(INCDIR)/safe-ctype.h - -DEPTC_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ - subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/h8300.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h - -DEPTC_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ - $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/hppa.h \ - dwarf2dbg.h - -DEPTC_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ia64.h $(INCDIR)/opcode/ia64.h \ - $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h - -DEPTC_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/safe-ctype.h dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h - -DEPTC_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h - -DEPTC_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h $(INCDIR)/opcode/i370.h $(INCDIR)/elf/i370.h \ - $(INCDIR)/elf/reloc-macros.h - -DEPTC_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/i386.h - -DEPTC_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/opcode/i386.h - -DEPTC_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/i386.h - -DEPTC_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/i960.h - -DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h - -DEPTC_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h - -DEPTC_ip2k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ip2k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/ip2k-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/ip2k-opc.h cgen.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/ip2k.h $(INCDIR)/elf/reloc-macros.h $(BFDDIR)/libbfd.h - -DEPTC_ip2k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ip2k.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/ip2k-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/ip2k-opc.h \ - cgen.h $(INCDIR)/elf/ip2k.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/libbfd.h - -DEPTC_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/m32r-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ - cgen.h - -DEPTC_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/m32r-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/m32r-opc.h cgen.h - -DEPTC_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h \ - $(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h $(INCDIR)/elf/m68hc11.h \ - $(INCDIR)/elf/reloc-macros.h - -DEPTC_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h \ - $(srcdir)/config/m68k-parse.h - -DEPTC_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ - subsegs.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h - -DEPTC_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ - dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h \ - $(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \ - $(INCDIR)/elf/reloc-macros.h - -DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h subsegs.h dwarf2dbg.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h - -DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h - -DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/config/m88k-opcode.h - -DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - -DEPTC_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - -DEPTC_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/mips.h itbl-ops.h \ - dwarf2dbg.h $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(INCDIR)/elf/mips.h \ - $(INCDIR)/elf/reloc-macros.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h - -DEPTC_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/mmix.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/mmix.h \ - $(INCDIR)/safe-ctype.h dwarf2dbg.h - -DEPTC_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h - -DEPTC_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/mn10200.h - -DEPTC_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h \ - dwarf2dbg.h - -DEPTC_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/mn10300.h dwarf2dbg.h - -DEPTC_msp430_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-msp430.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/msp430.h $(INCDIR)/safe-ctype.h - -DEPTC_msp430_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/msp430.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h - -DEPTC_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ns32k.h \ - $(INCDIR)/obstack.h - -DEPTC_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h - -DEPTC_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/openrisc-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/openrisc-opc.h cgen.h - -DEPTC_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/openrisc-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/openrisc-opc.h \ - cgen.h - -DEPTC_or32_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/or32.h $(INCDIR)/elf/or32.h \ - $(INCDIR)/elf/reloc-macros.h - -DEPTC_or32_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/tc-or32.h $(INCDIR)/opcode/or32.h \ - $(INCDIR)/elf/or32.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h - -DEPTC_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/pdp11.h - -DEPTC_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h - -DEPTC_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/opcode/pj.h - -DEPTC_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pj.h - -DEPTC_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/ppc.h - -DEPTC_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/ppc.h \ - $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h - -DEPTC_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/s390.h \ - $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/opcode/s390.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ - $(INCDIR)/safe-ctype.h struc-symbol.h dwarf2dbg.h - -DEPTC_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ - $(INCDIR)/safe-ctype.h struc-symbol.h $(INCDIR)/elf/sh.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h - -DEPTC_sh64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh64.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/elf32-sh64.h $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/sh64-opc.h \ - $(srcdir)/config/tc-sh.c subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/sh-opc.h struc-symbol.h dwarf2dbg.h - -DEPTC_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/sparc.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h - -DEPTC_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h - -DEPTC_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/sparc.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ - $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \ - dwarf2dbg.h - -DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h - -DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h - -DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h - -DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h - -DEPTC_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h - -DEPTC_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h - -DEPTC_tic4x_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic4x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic4x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic4x.h \ - subsegs.h $(INCDIR)/obstack.h - -DEPTC_tic4x_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/tc-tic4x.h $(INCDIR)/opcode/tic4x.h \ - subsegs.h $(INCDIR)/obstack.h - -DEPTC_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h sb.h macro.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/tic54x.h - -DEPTC_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/safe-ctype.h sb.h macro.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h - -DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h - -DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h - -DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ - $(INCDIR)/opcode/vax.h $(INCDIR)/safe-ctype.h - -DEPTC_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/vax.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ - $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ - $(INCDIR)/elf/vax.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/vax.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/vax.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h - -DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h - -DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/v850.h dwarf2dbg.h - -DEPTC_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h \ - dwarf2dbg.h - -DEPTC_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/../opcodes/xstormy16-desc.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/xstormy16-opc.h cgen.h - -DEPTC_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/xstormy16-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/xstormy16-opc.h \ - cgen.h - -DEPTC_xtensa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xtensa.h \ - $(INCDIR)/xtensa-config.h sb.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/xtensa-relax.h \ - $(INCDIR)/xtensa-isa.h $(srcdir)/config/xtensa-istack.h \ - dwarf2dbg.h struc-symbol.h - -DEPTC_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h - -DEPTC_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h - -DEPTC_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \ - $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h \ - $(BFDDIR)/som.h - -DEPTC_i386_multi = $(DEPTC_i386_aout) $(DEPTC_i386_coff) \ - $(DEPTC_i386_elf) - -DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \ - $(DEPTC_mips_elf) - -DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf) -DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h - -DEPOBJ_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h - -DEPOBJ_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ - $(srcdir)/config/tc-alpha.h - -DEPOBJ_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_dlx_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-dlx.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_dlx_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-dlx.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_frv_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-frv.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_frv_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-frv.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ - $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h \ - $(INCDIR)/aout/aout64.h - -DEPOBJ_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ia64.h $(INCDIR)/opcode/ia64.h \ - $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h - -DEPOBJ_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h - -DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_ip2k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ip2k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_ip2k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ip2k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h - -DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ - $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h - -DEPOBJ_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h - -DEPOBJ_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_msp430_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-msp430.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_msp430_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_or32_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-or32.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_or32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/aout/aout64.h - -DEPOBJ_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_sh64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh64.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/elf32-sh64.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_tic4x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic4x.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic4x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_tic4x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic4x.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ - $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ - $(INCDIR)/aout/stab.def $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h - -DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h \ - $(INCDIR)/aout/aout64.h - -DEPOBJ_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_xtensa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xtensa.h \ - $(INCDIR)/xtensa-config.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - -DEPOBJ_hppa_som = $(srcdir)/config/obj-som.h subsegs.h \ - $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/som.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def - -DEPOBJ_i386_multi = $(DEPOBJ_i386_aout) $(DEPOBJ_i386_coff) \ - $(DEPOBJ_i386_elf) - -DEPOBJ_mips_multi = $(DEPOBJ_mips_coff) $(DEPOBJ_mips_ecoff) \ - $(DEPOBJ_mips_elf) - -DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf) -DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h - -DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - -DEP_alpha_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h - -DEP_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h -DEP_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_arc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h - -DEP_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_arm_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h - -DEP_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h - -DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h - -DEP_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h - -DEP_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_d30v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h - -DEP_dlx_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-dlx.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_dlx_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-dlx.h - -DEP_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_fr30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h - -DEP_frv_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-frv.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_frv_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-frv.h - -DEP_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h - -DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h - -DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_hppa_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ - $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/reloc-macros.h - -DEP_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/symcat.h $(INCDIR)/elf/ia64.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_ia64_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/reloc-macros.h - -DEP_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_i370_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h - -DEP_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_i386_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h - -DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h - -DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h -DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_i960_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h - -DEP_ip2k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ip2k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_ip2k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ip2k.h - -DEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_m32r_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h - -DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_m68hc11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h - -DEP_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h - -DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h - -DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_mcore_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h - -DEP_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - -DEP_mips_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h - -DEP_mmix_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h - -DEP_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_mn10200_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h - -DEP_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_mn10300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h - -DEP_msp430_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-msp430.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_msp430_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h - -DEP_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_ns32k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h - -DEP_openrisc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-openrisc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_openrisc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h - -DEP_or32_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_or32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h - -DEP_pdp11_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-pdp11.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_pdp11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pdp11.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_pdp11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h - -DEP_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_pj_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h - -DEP_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_ppc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h - -DEP_s390_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-s390.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_s390_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h - -DEP_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_sh_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h - -DEP_sh64_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh64.h \ - $(srcdir)/config/tc-sh.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \ - $(BFDDIR)/elf32-sh64.h - -DEP_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h - -DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h - -DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_tic30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h - -DEP_tic4x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic4x.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic4x.h \ - $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_tic4x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic4x.h - -DEP_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h \ - $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h - -DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h - -DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h - -DEP_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def - -DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h - -DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/symcat.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_v850_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h - -DEP_xstormy16_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-xstormy16.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_xstormy16_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h - -DEP_xtensa_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xtensa.h \ - $(INCDIR)/xtensa-config.h - -DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_z8k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h - -DEP_hppa_som = $(BFDDIR)/som.h -DEP_i386_multi = $(DEP_i386_aout) $(DEP_i386_coff) \ - $(DEP_i386_elf) - -DEP_mips_multi = $(DEP_mips_coff) $(DEP_mips_ecoff) \ - $(DEP_mips_elf) - -DEP_cris_multi = $(DEP_cris_aout) $(DEP_cris_elf) -BMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE. -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = gdb.ini .gdbinit po/Makefile.in -EXTRA_PROGRAMS = itbl-test$(EXEEXT) -noinst_PROGRAMS = as-new$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) - -am__objects_1 = app.$(OBJEXT) as.$(OBJEXT) atof-generic.$(OBJEXT) \ - bignum-copy.$(OBJEXT) cond.$(OBJEXT) depend.$(OBJEXT) \ - dwarf2dbg.$(OBJEXT) dw2gencfi.$(OBJEXT) ecoff.$(OBJEXT) \ - ehopt.$(OBJEXT) expr.$(OBJEXT) flonum-copy.$(OBJEXT) \ - flonum-konst.$(OBJEXT) flonum-mult.$(OBJEXT) frags.$(OBJEXT) \ - hash.$(OBJEXT) input-file.$(OBJEXT) input-scrub.$(OBJEXT) \ - listing.$(OBJEXT) literal.$(OBJEXT) macro.$(OBJEXT) \ - messages.$(OBJEXT) output-file.$(OBJEXT) read.$(OBJEXT) \ - sb.$(OBJEXT) stabs.$(OBJEXT) subsegs.$(OBJEXT) \ - symbols.$(OBJEXT) write.$(OBJEXT) -am_as_new_OBJECTS = $(am__objects_1) -as_new_OBJECTS = $(am_as_new_OBJECTS) -as_new_LDFLAGS = -am_itbl_test_OBJECTS = itbl-parse.$(OBJEXT) itbl-lex.$(OBJEXT) -itbl_test_OBJECTS = $(am_itbl_test_OBJECTS) -itbl_test_DEPENDENCIES = itbl-tops.o itbl-test.o \ - ../libiberty/libiberty.a -itbl_test_LDFLAGS = -SCRIPTS = $(noinst_SCRIPTS) - - -DEFAULT_INCLUDES = -I. -I$(srcdir) -I. -depcomp = -am__depfiles_maybe = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ - $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -LTLEXCOMPILE = $(LIBTOOL) --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) -YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) -LTYACCCOMPILE = $(LIBTOOL) --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) -YLWRAP = $(top_srcdir)/../ylwrap -DIST_SOURCES = $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) \ - $(itbl_test_SOURCES) - -RECURSIVE_TARGETS = install-info-recursive info-recursive dvi-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - all-recursive install-data-recursive install-exec-recursive \ - installdirs-recursive install-recursive uninstall-recursive \ - check-recursive installcheck-recursive -SOURCES = $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(itbl_test_SOURCES) - -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .l .lo .o .obj .y - -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --cygnus Makefile - -$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) 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@ $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOHEADER) - touch $(srcdir)/config.in - -distclean-hdr: - -rm -f config.h stamp-h1 -gdb.ini: $(top_builddir)/config.status gdbinit.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -.gdbinit: $(top_builddir)/config.status gdbinit.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -po/Makefile.in: $(top_builddir)/config.status $(top_srcdir)/po/Make-in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -as-new$(EXEEXT): $(as_new_OBJECTS) $(as_new_DEPENDENCIES) - @rm -f as-new$(EXEEXT) - $(LINK) $(as_new_LDFLAGS) $(as_new_OBJECTS) $(as_new_LDADD) $(LIBS) -itbl-test$(EXEEXT): $(itbl_test_OBJECTS) $(itbl_test_DEPENDENCIES) - @rm -f itbl-test$(EXEEXT) - $(LINK) $(itbl_test_LDFLAGS) $(itbl_test_OBJECTS) $(itbl_test_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -.c.o: - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: - $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` - -.c.lo: - $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -.l.c: - $(LEXCOMPILE) `test -f $< || echo '$(srcdir)/'`$< - sed '/^#/ s|$(LEX_OUTPUT_ROOT)\.c|$@|' $(LEX_OUTPUT_ROOT).c >$@ - rm -f $(LEX_OUTPUT_ROOT).c - -.y.c: - $(SHELL) $(YLWRAP) `test -f '$<' || echo '$(srcdir)/'`$< 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 -uninstall-info-am: - -# 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): - @set fnord $$MAKEFLAGS; amf=$$2; \ - 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; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $$MAKEFLAGS; amf=$$2; \ - 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; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ETAGS = etags -ETAGSFLAGS = - -CTAGS = ctags -CTAGSFLAGS = - -tags: TAGS - -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; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - if (etags --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - else \ - include_option=--include; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && \ - tags="$$tags $$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; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - 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; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -DEJATOOL = $(PACKAGE) -RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir -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: - $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU -check: check-recursive -all-am: Makefile $(PROGRAMS) $(SCRIPTS) config.h -installdirs: installdirs-recursive -installdirs-am: -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f $(CONFIG_CLEAN_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 m68k-parse.c - -rm -f itbl-lex.c - -rm -f itbl-parse.c -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-DEJAGNU distclean-compile \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: install-exec-local - -install-info: - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-DEJAGNU \ - check-am clean clean-generic clean-libtool clean-noinstPROGRAMS \ - clean-recursive ctags ctags-recursive distclean \ - distclean-DEJAGNU distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-recursive \ - distclean-tags dvi dvi-am dvi-recursive info info-am \ - info-recursive install install-am install-data install-data-am \ - install-data-recursive install-exec install-exec-am \ - install-exec-local install-exec-recursive install-info \ - install-info-am install-man install-recursive install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - installdirs-recursive maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ - pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ - tags-recursive uninstall uninstall-am uninstall-info-am \ - uninstall-info-recursive uninstall-recursive - -po/POTFILES.in: @MAINT@ Makefile - for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \ - && mv tmp $(srcdir)/po/POTFILES.in - -# We want install to imply install-info as per GNU standards, despite the -# cygnus option. -install: install-recursive install-info -install-info: install-info-recursive - -$(srcdir)/make-gas.com: stamp-mk.com -stamp-mk.com: vmsconf.sh Makefile - sh $(srcdir)/vmsconf.sh $(GENERIC_OBJS) > new-make.com - $(SHELL) $(srcdir)/../move-if-change new-make.com $(srcdir)/make-gas.com - touch stamp-mk.com -diststuff: $(EXTRA_DIST) info - -$(OBJS): @ALL_OBJ_DEPS@ - -# Stuff that every object file depends upon. If anything is removed -# from this list, remove it from dep-in.sed as well. -$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/progress.h $(INCDIR)/fopen-same.h \ - $(OBJ_FORMAT_H) $(TARG_CPU_H) $(TARG_ENV_H) \ - as.h asintl.h bignum.h bit_fix.h config.h emul.h expr.h flonum.h \ - frags.h hash.h listing.h obj.h read.h symbols.h tc.h write.h - -check-DEJAGNU: site.exp - if [ -d testsuite ]; then \ - true; \ - else \ - mkdir testsuite; \ - fi - rm -f testsuite/site.exp - cp site.exp testsuite/site.exp - rootme=`pwd`; export rootme; \ - srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ - EXPECT=${EXPECT} ; export EXPECT ; \ - if [ -f $(top_builddir)/../expect/expect ]; then \ - TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \ - export TCL_LIBRARY; \ - fi; \ - runtest=$(RUNTEST); \ - cd testsuite; \ - if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ - $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \ - $(RUNTESTFLAGS); \ - else echo "WARNING: could not find \`runtest'" 1>&2; :;\ - fi - -# The implicit .c.o rule doesn't work for these, perhaps because of -# the variables, or perhaps because the sources are not on vpath. -$(TARG_CPU_O): $(TARG_CPU_C) - $(COMPILE) -c $(TARG_CPU_C) -$(ATOF_TARG_O): $(ATOF_TARG_C) - $(COMPILE) -c $(ATOF_TARG_C) - -# ecoff.c only has full dependencies when ECOFF_DEBUGGING is defined, -# so the automatic dependency stuff doesn't work. -ecoff.o : ecoff.c ecoff.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/symconst.h \ - $(INCDIR)/aout/stab_gnu.h - -# We need all these explicit rules for the multi stuff. Because of -# these rules, we don't need one for OBJ_FORMAT_O. - -obj-aout.o : $(srcdir)/config/obj-aout.c - $(COMPILE) -c $(srcdir)/config/obj-aout.c -obj-bout.o : $(srcdir)/config/obj-bout.c - $(COMPILE) -c $(srcdir)/config/obj-bout.c -obj-coff.o: $(srcdir)/config/obj-coff.c - $(COMPILE) -c $(srcdir)/config/obj-coff.c -obj-ecoff.o : $(srcdir)/config/obj-ecoff.c - $(COMPILE) -c $(srcdir)/config/obj-ecoff.c -obj-elf.o : $(srcdir)/config/obj-elf.c - $(COMPILE) -c $(srcdir)/config/obj-elf.c -obj-evax.o : $(srcdir)/config/obj-evax.c - $(COMPILE) -c $(srcdir)/config/obj-evax.c -obj-hp300.o : $(srcdir)/config/obj-hp300.c - $(COMPILE) -c $(srcdir)/config/obj-hp300.c -obj-ieee.o : $(srcdir)/config/obj-ieee.c - $(COMPILE) -c $(srcdir)/config/obj-ieee.c -obj-multi.o : $(srcdir)/config/obj-multi.c - $(COMPILE) -c $(srcdir)/config/obj-multi.c -obj-som.o : $(srcdir)/config/obj-som.c - $(COMPILE) -c $(srcdir)/config/obj-som.c -obj-vms.o : $(srcdir)/config/obj-vms.c - $(COMPILE) -c $(srcdir)/config/obj-vms.c - -e-mipself.o : $(srcdir)/config/e-mipself.c - $(COMPILE) -c $(srcdir)/config/e-mipself.c -e-mipsecoff.o : $(srcdir)/config/e-mipsecoff.c - $(COMPILE) -c $(srcdir)/config/e-mipsecoff.c -e-i386aout.o: $(srcdir)/config/e-i386aout.c - $(COMPILE) -c $(srcdir)/config/e-i386aout.c -e-i386coff.o: $(srcdir)/config/e-i386coff.c - $(COMPILE) -c $(srcdir)/config/e-i386coff.c -e-i386elf.o: $(srcdir)/config/e-i386elf.c - $(COMPILE) -c $(srcdir)/config/e-i386elf.c -e-crisaout.o: $(srcdir)/config/e-crisaout.c - $(COMPILE) -c $(srcdir)/config/e-crisaout.c -e-criself.o: $(srcdir)/config/e-criself.c - $(COMPILE) -c $(srcdir)/config/e-criself.c - -xtensa-relax.o: $(srcdir)/config/xtensa-relax.c - $(COMPILE) -c $(srcdir)/config/xtensa-relax.c - -# If m68k-parse.y is in a different directory, then ylwrap will use an -# absolute path when it invokes yacc, which will cause yacc to put the -# absolute path into the generated file. That's a pain when it comes -# to generating snapshots, because it introduces spurious diffs. -# Since when we make the snapshots $(srcdir) = ".", we check for that -# case and handle it differently. This means that anybody who -# configures with $(srcdir) = "." will have to set their path in the -# debugger if they want to debug m68k-parse.y. This is bad, but on -# the other hand it's good that people who use the prebuilt -# m68k-parse.c don't get a spurious absolute path. -m68k-parse.c: $(srcdir)/config/m68k-parse.y - f=$(srcdir)/config/m68k-parse.y; \ - if [ $$f = "./config/m68k-parse.y" ]; then \ - ln -s config/m68k-parse.y . > /dev/null 2>/dev/null || \ - ln config/m68k-parse.y . > /dev/null 2>/dev/null || \ - cp config/m68k-parse.y . >/dev/null 2>/dev/null; \ - f=m68k-parse.y; \ - else true; fi; \ - $(SHELL) $(YLWRAP) "$(YACC)" $$f y.tab.c m68k-parse.c --; \ - if [ $$f = "m68k-parse.y" ]; then \ - rm -f m68k-parse.y; \ - else true; fi -m68k-parse.o: m68k-parse.c $(srcdir)/config/m68k-parse.h - -# Don't let the .y.h rule clobber m68k-parse.h. -m68k-parse.h: ; @true -$(srcdir)/config/m68k-parse.h: ; @true - -# The instruction table specification lexical analyzer and parser. - -itbl-lex.c: $(srcdir)/itbl-lex.l -itbl-lex.o: itbl-lex.c itbl-parse.h - -itbl-parse.o: itbl-parse.c itbl-parse.h $(srcdir)/itbl-ops.h - -itbl-ops.o: $(srcdir)/itbl-ops.c $(srcdir)/itbl-ops.h itbl-parse.h - -itbl-parse.c itbl-parse.h: $(srcdir)/itbl-parse.y - $(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/itbl-parse.y y.tab.c itbl-parse.c y.tab.h itbl-parse.h -- -d - -itbl-tops.o: $(srcdir)/itbl-ops.c $(srcdir)/itbl-ops.h itbl-parse.h - $(COMPILE) -o itbl-tops.o -DSTAND_ALONE -c $(srcdir)/itbl-ops.c - -itbl-test.o: $(srcdir)/testsuite/gas/all/itbl-test.c $(srcdir)/itbl-ops.h - $(COMPILE) -c -DSTAND_ALONE $(srcdir)/testsuite/gas/all/itbl-test.c - -cgen.o: cgen.c cgen.h cgen-desc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/cgen.h \ - $(srcdir)/../opcodes/$(CGEN_CPU_PREFIX)-desc.h \ - $(srcdir)/../opcodes/$(CGEN_CPU_PREFIX)-opc.h - -.PHONY: install-exec-local install-data-local -.PHONY: install-exec-bindir install-exec-tooldir - -install-exec-local: install-exec-bindir @install_tooldir@ - -install-exec-bindir: $(noinst_PROGRAMS) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - else :; fi; \ - done - -install-exec-tooldir: install-exec-bindir $(noinst_PROGRAMS) - $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin - n=`echo as | sed '$(transform)'`; \ - if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/as$(EXEEXT)" ]; then \ - rm -f $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ - ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ - else \ - true ; \ - fi - -# These exist for maintenance purposes. - -.PHONY: bootstrap bootstrap2 bootstrap3 stage1 stage2 stage3 comparison - -bootstrap: as-new - $(MAKE) stage1 - rm -f stage && ln -s stage1 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) stage2 - rm -f stage && ln -s stage2 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) comparison against=stage2 - -bootstrap2: - rm -f stage && ln -s stage1 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) stage2 - rm -f stage && ln -s stage2 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) comparison against=stage2 - -bootstrap3: - rm -f stage && ln -s stage2 stage - $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage/ $(CFLAGS)" libdir=$(libdir) ALLOCA= $(noinst_PROGRAMS) - $(MAKE) comparison against=stage2 - -# Copy the object files from a particular stage into a subdirectory. -stage1: - -mkdir stage1 - -mv $(STAGESTUFF) stage1 - if [ -f stage1/as-new$(EXEEXT) -a ! -f stage1/as$(EXEEXT) ] ; then (cd stage1 ; ln -s as-new$(EXEEXT) as$(EXEEXT)) ; fi - -stage2: - -mkdir stage2 - -mv $(STAGESTUFF) stage2 - if [ -f stage2/as-new$(EXEEXT) -a ! -f stage2/as$(EXEEXT) ] ; then (cd stage2 ; ln -s as-new$(EXEEXT) as$(EXEEXT)) ; fi - -stage3: - -mkdir stage3 - -mv $(STAGESTUFF) stage3 - if [ -f stage3/as-new$(EXEEXT) -a ! -f stage3/as$(EXEEXT) ] ; then (cd stage3 ; ln -s as-new as$(EXEEXT)) ; fi - -# This rule is derived from corresponding code in the Makefile.in for gcc. -# The "tail +16c" is to bypass headers which may include timestamps or -# temporary assembly file names. -comparison: - x=0 ; \ - for file in *.o ; do \ - tail +16c ./$$file > tmp-foo1; \ - if tail +16c ${against}/$$file > tmp-foo2 2>/dev/null ; then \ - if cmp tmp-foo1 tmp-foo2 ; then \ - true ; \ - else \ - echo $$file differs ; \ - x=1 ; \ - fi ; \ - else true; fi ; \ - done ; \ - exit $$x - -rm -f tmp-foo* - -.PHONY: de-stage1 de-stage2 de-stage3 - -de-stage1: - - (cd stage1 ; rm -f as$(EXEEXT) ; mv -f * ..) - - rmdir stage1 - -de-stage2: - - (cd stage2 ; rm -f as$(EXEEXT) ; mv -f * ..) - - rmdir stage2 - -de-stage3: - - (cd stage3 ; rm -f as$(EXEEXT) ; mv -f * ..) - - rmdir stage3 - -Makefile: $(BFDDIR)/configure.in - -# Automatic dependency computation. This is a real pain, because the -# dependencies change based on target_cpu_type and obj_format. -# Just to make things even more complicated, automake separates the -# dependency variable assignments from the dependency rules, and tacks -# on a .NOEXPORT at the end of Makefile.in. - -DEP: dep.sed $(DEP_FILE_DEPS) DEPTC DEPOBJ DEP2 - rm -f DEP1 # delete because we use $? in DEP1 rule - srcdir=`cd $(srcdir); pwd`; \ - $(MAKE) MKDEP="$(MKDEP)" srcdir="$${srcdir}" VPATH="$${srcdir}" DEP1 - rm -rf DEPDIR - echo 'AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.' > DEPA - sed -f dep.sed < DEPTC >> DEPA - sed -f dep.sed < DEPOBJ >> DEPA - sed -f dep.sed < DEP2 >> DEPA - echo 'BMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE.' >> DEPA - echo '#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.' >> DEPA - sed -f dep.sed < DEP1 >> DEPA - echo '$$(OBJS): $$(DEP_@target''_cpu_type@_@obj''_format@)' >> DEPA - echo '$$(TARG_CPU_O): $$(DEPTC_@target''_cpu_type@_@obj''_format@)' >> DEPA - echo '$$(OBJ_FORMAT_O): $$(DEPOBJ_@target''_cpu_type@_@obj''_format@)' >> DEPA - echo '#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE.' >> DEPA - if grep ' /' DEPA > /dev/null 2> /dev/null; then \ - echo 'make DEP failed!'; exit 1; \ - else \ - mv -f DEPA $@; \ - fi - -DEP1: $(CFILES) $(MULTI_CFILES) - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - echo '' > targ-cpu.h; \ - echo '' > obj-format.h; \ - echo '' > targ-env.h; \ - echo '' > itbl-cpu.h; \ - echo '' > itbl-parse.h; \ - $(MKDEP) $(DEP_FLAGS) $? > DEP - mv -f DEPDIR/DEP $@ - -# Work out the special dependencies for the tc-*.c files. -DEPTC: $(TARGET_CPU_CFILES) - rm -f DEPTCA - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - for c in $(CPU_TYPES); do \ - for o in $(OBJ_FORMATS); do \ - $(CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ - echo '#include "obj-'"$${o}"'.h"' > obj-format.h; \ - echo '#include "te-generic.h"' > targ-env.h; \ - echo '' > itbl-cpu.h; \ - echo '' > itbl-parse.h; \ - echo '#include "opcodes/'"$${c}"'-desc.h"' > cgen-desc.h; \ - rm -f dummy.c; \ - cp $${srcdir}/config/tc-$${c}.c dummy.c; \ - $(MKDEP) $(DEP_FLAGS) dummy.c | \ - sed -e "s/dummy.o: dummy.c/DEPTC_$${c}_$${o} =/" >> ../DEPTCA; \ - rm -f dummy.c; \ - else true; fi; \ - done; \ - done - echo 'DEPTC_hppa_som = $$(srcdir)/config/tc-hppa.h subsegs.h \' >> DEPTCA - echo ' $$(INCDIR)/obstack.h $$(BFDDIR)/libhppa.h \' >> DEPTCA - echo ' $$(INCDIR)/opcode/hppa.h $$(BFDDIR)/som.h' >> DEPTCA - for c in $(MULTI_CPU_TYPES); do \ - echo "DEPTC_$${c}"'_multi = \' >> DEPTCA; \ - for o in $(OBJ_FORMATS); do \ - $(MULTI_CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '$$(DEPTC_'"$${c}_$${o}"') \' >> DEPTCA; \ - else true; fi; \ - done; \ - echo '' >> DEPTCA; \ - done - mv -f DEPTCA DEPTC - -# Work out the special dependencies for the obj-*.c files. -DEPOBJ: $(OBJ_FORMAT_CFILES) - rm -f DEPOBJA - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - for c in $(CPU_TYPES); do \ - for o in $(OBJ_FORMATS); do \ - $(CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ - echo '#include "obj-'"$${o}"'.h"' > obj-format.h; \ - echo '#include "te-generic.h"' > targ-env.h; \ - echo '' > itbl-cpu.h; \ - echo '' > itbl-parse.h; \ - rm -f dummy.c; \ - cp $${srcdir}/config/obj-$${o}.c dummy.c; \ - $(MKDEP) $(DEP_FLAGS) dummy.c | \ - sed -e "s/dummy.o: dummy.c/DEPOBJ_$${c}_$${o} =/" >> ../DEPOBJA; \ - rm -f dummy.c; \ - else true; fi; \ - done; \ - done - echo 'DEPOBJ_hppa_som = $$(srcdir)/config/obj-som.h subsegs.h \' >> DEPOBJA - echo ' $$(INCDIR)/obstack.h $$(BFDDIR)/libhppa.h \' >> DEPOBJA - echo ' $$(BFDDIR)/som.h $$(INCDIR)/aout/stab_gnu.h \' >> DEPOBJA - echo ' $$(INCDIR)/aout/stab.def' >> DEPOBJA - for c in $(MULTI_CPU_TYPES); do \ - echo "DEPOBJ_$${c}"'_multi = \' >> DEPOBJA; \ - for o in $(OBJ_FORMATS); do \ - $(MULTI_CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '$$(DEPOBJ_'"$${c}_$${o}"') \' >> DEPOBJA; \ - else true; fi; \ - done; \ - echo '' >> DEPOBJA; \ - done - mv -f DEPOBJA DEPOBJ - -# Work out the dependencies for each CPU/OBJ combination. -# Note that SOM is a special case, because it only works native. -DEP2: $(TARGET_CPU_HFILES) $(OBJ_FORMAT_HFILES) - rm -f DEP2A - if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi - srcdir=`cd $(srcdir); pwd`; \ - cd DEPDIR; \ - for c in $(CPU_TYPES); do \ - for o in $(OBJ_FORMATS); do \ - $(CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ - echo '#include "obj-'"$${o}"'.h"' > dummy.c; \ - $(MKDEP) $(DEP_FLAGS) dummy.c | \ - sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2A; \ - else true; fi; \ - done; \ - done - echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> DEP2A - for c in $(MULTI_CPU_TYPES); do \ - echo "DEP_$${c}"'_multi = \' >> DEP2A; \ - for o in $(OBJ_FORMATS); do \ - $(MULTI_CPU_OBJ_VALID) \ - if [ x$${valid} = xyes ]; then \ - echo '$$(DEP_'"$${c}_$${o}"') \' >> DEP2A; \ - else true; fi; \ - done; \ - echo '' >> DEP2A; \ - done - mv -f DEP2A DEP2 - -dep.sed: dep-in.sed config.status - srcdir=`cd $(srcdir); pwd`; \ - sed <$(srcdir)/dep-in.sed >dep.sed \ - -e "s!@INCDIR@!$${srcdir}/../include!" \ - -e "s!@BFDDIR@!$${srcdir}/../bfd!" \ - -e "s!@SRCDIR@!$${srcdir}!" \ - -e 's!@TOPDIR@!'`echo $(srcdir) | sed -e s,/gas,,`'!' - -dep: DEP - sed -e '/^.MKDEP.*WARNING BELOW./,/^.MKDEP.*WARNING ABOVE./d' \ - < Makefile > tmp-Makefile - cat DEP >> tmp-Makefile - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile - -dep-in: DEP - sed -e '/^.MKDEP.*WARNING BELOW./,/^.MKDEP.*WARNING ABOVE./d' \ - < $(srcdir)/Makefile.in > tmp-Makefile.in - cat DEP >> tmp-Makefile.in - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in - -dep-am: DEP - sed -e '/^.MKDEP.*WARNING BELOW./,/^.MKDEP.*WARNING ABOVE./d' \ - < $(srcdir)/Makefile.am > tmp-Makefile.am - cat DEP >> tmp-Makefile.am - $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am - -# HEED THE MKDEP WARNINGS. -# ANYTHING CHANGED OR ADDED BETWEEN THE WARNING LINES MAY GO AWAY. -.PHONY: dep dep-in dep-am -#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -app.o: app.c $(INCDIR)/symcat.h -as.o: as.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ - output-file.h sb.h macro.h dwarf2dbg.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h $(BFDVER_H) -atof-generic.o: atof-generic.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h -bignum-copy.o: bignum-copy.c $(INCDIR)/symcat.h -cond.o: cond.c $(INCDIR)/symcat.h macro.h sb.h $(INCDIR)/obstack.h -depend.o: depend.c $(INCDIR)/symcat.h -dwarf2dbg.o: dwarf2dbg.c $(INCDIR)/symcat.h dwarf2dbg.h \ - $(INCDIR)/filenames.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/elf/dwarf2.h -dw2gencfi.o: dw2gencfi.c $(INCDIR)/symcat.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h -ecoff.o: ecoff.c $(INCDIR)/symcat.h ecoff.h -ehopt.o: ehopt.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/elf/dwarf2.h -expr.o: expr.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h -flonum-copy.o: flonum-copy.c $(INCDIR)/symcat.h -flonum-konst.o: flonum-konst.c -flonum-mult.o: flonum-mult.c -frags.o: frags.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h -hash.o: hash.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h -input-file.o: input-file.c $(INCDIR)/symcat.h input-file.h \ - $(INCDIR)/safe-ctype.h -input-scrub.o: input-scrub.c $(INCDIR)/symcat.h input-file.h \ - sb.h -listing.o: listing.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \ - $(INCDIR)/safe-ctype.h input-file.h subsegs.h -literal.o: literal.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h -macro.o: macro.c $(INCDIR)/safe-ctype.h sb.h macro.h -messages.o: messages.c $(INCDIR)/symcat.h -output-file.o: output-file.c $(INCDIR)/symcat.h output-file.h -read.o: read.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - subsegs.h $(INCDIR)/obstack.h sb.h macro.h ecoff.h \ - dw2gencfi.h $(INCDIR)/elf/dwarf2.h -sb.o: sb.c sb.h -stabs.o: stabs.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \ - subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -subsegs.o: subsegs.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h -symbols.o: symbols.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h subsegs.h struc-symbol.h -write.o: write.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ - output-file.h dwarf2dbg.h -itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/symcat.h -e-crisaout.o: $(srcdir)/config/e-crisaout.c $(INCDIR)/symcat.h \ - emul-target.h -e-criself.o: $(srcdir)/config/e-criself.c $(INCDIR)/symcat.h \ - emul-target.h -e-i386aout.o: $(srcdir)/config/e-i386aout.c $(INCDIR)/symcat.h \ - emul-target.h -e-i386coff.o: $(srcdir)/config/e-i386coff.c $(INCDIR)/symcat.h \ - emul-target.h -e-i386elf.o: $(srcdir)/config/e-i386elf.c $(INCDIR)/symcat.h \ - emul-target.h -e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c $(INCDIR)/symcat.h \ - emul-target.h -e-mipself.o: $(srcdir)/config/e-mipself.c $(INCDIR)/symcat.h \ - emul-target.h -$(OBJS): $(DEP_@target_cpu_type@_@obj_format@) -$(TARG_CPU_O): $(DEPTC_@target_cpu_type@_@obj_format@) -$(OBJ_FORMAT_O): $(DEPOBJ_@target_cpu_type@_@obj_format@) -#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE. -# 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/gas/NEWS b/gas/NEWS deleted file mode 100644 index 6257fae66..000000000 --- a/gas/NEWS +++ /dev/null @@ -1,419 +0,0 @@ --*- text -*- - -* Added PIC m32r Linux (ELF) and support to M32R assembler. - -* Added support for ARM V6. - -* Added support for sh4a and variants. - -* Support for Renesas M32R2 added. - -* Limited support for Mapping Symbols as specified in the ARM ELF - specification has been added to the arm assembler. - -* On ARM architectures, added a new gas directive ".unreq" that undoes - definitions created by ".req". - -* Support for Motorola ColdFire MCF528x added. - -* Added --gstabs+ switch to enable the generation of STABS debug format - information with GNU extensions. - -* Added support for MIPS64 Release 2. - -* Added support for v850e1. - -* Added -n switch for x86 assembler. By default, x86 GAS replaces - multiple nop instructions used for alignment within code sections - with multi-byte nop instructions such as leal 0(%esi,1),%esi. This - switch disables the optimization. - -* Removed -n option from MIPS assembler. It was not useful, and confused the - existing -non_shared option. - -Changes in 2.14: - -* Added support for MIPS32 Release 2. - -* Added support for Xtensa architecture. - -* Support for Intel's iWMMXt processor (an ARM variant) added. - -* An assembler test generator has been contributed and an example file that - uses it (gas/testsuite/gas/all/test-gen.c and test-exmaple.c). - -* Support for SH2E added. - -* GASP has now been removed. - -* Support for Texas Instruments TMS320C4x and TMS320C3x series of - DSP's contributed by Michael Hayes and Svein E. Seldal. - -* Support for the Ubicom IP2xxx microcontroller added. - -Changes in 2.13: - -* Support for the Fujitsu FRV architecture added by Red Hat. Models for FR400 - and FR500 included. - -* Support for DLX processor added. - -* GASP has now been deprecated and will be removed in a future release. Use - the macro facilities in GAS instead. - -* GASP now correctly parses floating point numbers. Unless the base is - explicitly specified, they are interpreted as decimal numbers regardless of - the currently specified base. - -Changes in 2.12: - -* Support for Don Knuth's MMIX, by Hans-Peter Nilsson. - -* Support for the OpenRISC 32-bit embedded processor by OpenCores. - -* The ARM assembler now accepts -march=..., -mcpu=... and -mfpu=... for - specifying the target instruction set. The old method of specifying the - target processor has been deprecated, but is still accepted for - compatibility. - -* Support for the VFP floating-point instruction set has been added to - the ARM assembler. - -* New psuedo op: .incbin to include a set of binary data at a given point - in the assembly. Contributed by Anders Norlander. - -* The MIPS assembler now accepts -march/-mtune. -mcpu has been deprecated - but still works for compatability. - -* The MIPS assembler no longer issues a warning by default when it - generates a nop instruction from a macro. The new command line option - -n will turn on the warning. - -Changes in 2.11: - -* Support for PDP-11 and 2.11BSD a.out format, by Lars Brinkhoff. - -* x86 gas now supports the full Pentium4 instruction set. - -* Support for AMD x86-64 architecture, by Jan Hubicka, SuSE Labs. - -* Support for Motorola 68HC11 and 68HC12. - -* Support for Texas Instruments TMS320C54x (tic54x). - -* Support for IA-64. - -* Support for i860, by Jason Eckhardt. - -* Support for CRIS (Axis Communications ETRAX series). - -* x86 gas has a new .arch pseudo op to specify the target CPU architecture. - -* x86 gas -q command line option quietens warnings about register size changes - due to suffix, indirect jmp/call without `*', stand-alone prefixes, and - translating various deprecated floating point instructions. - -Changes in 2.10: - -* Support for the ARM msr instruction was changed to only allow an immediate - operand when altering the flags field. - -* Support for ATMEL AVR. - -* Support for IBM 370 ELF. Somewhat experimental. - -* Support for numbers with suffixes. - -* Added support for breaking to the end of repeat loops. - -* Added support for parallel instruction syntax (DOUBLEBAR_PARALLEL). - -* New .elseif pseudo-op added. - -* New --fatal-warnings option. - -* picoJava architecture support added. - -* Motorola MCore 210 processor support added. - -* A new pseudo-op .intel_syntax has been implemented to allow gas to parse i386 - assembly programs with intel syntax. - -* New pseudo-ops .func,.endfunc to aid in debugging user-written assembler code. - -* Added -gdwarf2 option to generate DWARF 2 debugging information. - -* Full 16-bit mode support for i386. - -* Greatly improved instruction operand checking for i386. This change will - produce errors or warnings on incorrect assembly code that previous versions - of gas accepted. If you get unexpected messages from code that worked with - older versions of gas, please double check the code before reporting a bug. - -* Weak symbol support added for COFF targets. - -* Mitsubishi D30V support added. - -* Texas Instruments c80 (tms320c80) support added. - -* i960 ELF support added. - -* ARM ELF support added. - -Changes in 2.9: - -* Texas Instruments c30 (tms320c30) support added. - -* The assembler now optimizes the exception frame information generated by egcs - and gcc 2.8. The new --traditional-format option disables this optimization. - -* Added --gstabs option to generate stabs debugging information. - -* The -a option takes a new suboption, m (e.g., -alm) to expand macros in a - listing. - -* Added -MD option to print dependencies. - -Changes in 2.8: - -* BeOS support added. - -* MIPS16 support added. - -* Motorola ColdFire 5200 support added (configure for m68k and use -m5200). - -* Alpha/VMS support added. - -* m68k options --base-size-default-16, --base-size-default-32, - --disp-size-default-16, and --disp-size-default-32 added. - -* The alignment directives now take an optional third argument, which is the - maximum number of bytes to skip. If doing the alignment would require - skipping more than the given number of bytes, the alignment is not done at - all. - -* The ELF assembler has a new pseudo-op, .symver, used for symbol versioning. - -* The -a option takes a new suboption, c (e.g., -alc), to skip false - conditionals in listings. - -* Added new pseudo-op, .equiv; it's like .equ, except that it is an error if - the symbol is already defined. - -Changes in 2.7: - -* The PowerPC assembler now allows the use of symbolic register names (r0, - etc.) if -mregnames is used. Symbolic names preceded by a '%' (%r0, etc.) - can be used any time. PowerPC 860 move to/from SPR instructions have been - added. - -* Alpha Linux (ELF) support added. - -* PowerPC ELF support added. - -* m68k Linux (ELF) support added. - -* i960 Hx/Jx support added. - -* i386/PowerPC gnu-win32 support added. - -* SCO ELF support added. For OpenServer 5 targets (i386-unknown-sco3.2v5) the - default is to build COFF-only support. To get a set of tools that generate - ELF (they'll understand both COFF and ELF), you must configure with - target=i386-unknown-sco3.2v5elf. - -* m88k-motorola-sysv3* support added. - -Changes in 2.6: - -* Gas now directly supports macros, without requiring GASP. - -* Gas now has an MRI assembler compatibility mode. Use -M or --mri to select - MRI mode. The pseudo-op ``.mri 1'' will switch into the MRI mode until the - ``.mri 0'' is seen; this can be convenient for inline assembler code. - -* Added --defsym SYM=VALUE option. - -* Added -mips4 support to MIPS assembler. - -* Added PIC support to Solaris and SPARC SunOS 4 assembler. - -Changes in 2.4: - -* Converted this directory to use an autoconf-generated configure script. - -* ARM support, from Richard Earnshaw. - -* Updated VMS support, from Pat Rankin, including considerably improved - debugging support. - -* Support for the control registers in the 68060. - -* Handles (ignores) a new directive ".this_GCC_requires_the_GNU_assembler", to - provide for possible future gcc changes, for targets where gas provides some - features not available in the native assembler. If the native assembler is - used, it should become obvious pretty quickly what the problem is. - -* Usage message is available with "--help". - -* The GNU Assembler Preprocessor (gasp) is included. (Actually, it was in 2.3 - also, but didn't get into the NEWS file.) - -* Weak symbol support for a.out. - -* A bug in the listing code which could cause an infinite loop has been fixed. - Bugs in listings when generating a COFF object file have also been fixed. - -* Initial i386-svr4 PIC implementation from Eric Youngdale, based on code by - Paul Kranenburg. - -* Improved Alpha support. Immediate constants can have a much larger range - now. Support for the 21164 has been contributed by Digital. - -* Updated ns32k (pc532-mach, netbsd532) support from Ian Dall. - -Changes in 2.3: - -* Mach i386 support, by David Mackenzie and Ken Raeburn. - -* RS/6000 and PowerPC support by Ian Taylor. - -* VMS command scripts (make-gas.com, config-gas.com) have been worked on a bit, - based on mail received from various people. The `-h#' option should work - again too. - -* HP-PA work, by Jeff Law. Note, for the PA, gas-2.3 has been designed to work - with gdb-4.12 and gcc-2.6. As gcc-2.6 has not been released yet, a special - version of gcc-2.5.8 has been patched to work with gas-2.3. You can retrieve - this special version of gcc-2.5.8 via anonymous ftp from jaguar.cs.utah.edu - in the "dist" directory. - -* Vax support in gas fixed for BSD, so it builds and seems to run a couple - simple tests okay. I haven't put it through extensive testing. (GNU make is - currently required for BSD 4.3 builds.) - -* Support for the DEC Alpha, running OSF/1 (ECOFF format). The gas support is - based on code donated by CMU, which used an a.out-based format. I'm afraid - the alpha-a.out support is pretty badly mangled, and much of it removed; - making it work will require rewriting it as BFD support for the format anyways. - -* Irix 5 support. - -* The test suites have been fixed up a bit, so that they should work with a - couple different versions of expect and dejagnu. - -* Symbols' values are now handled internally as expressions, permitting more - flexibility in evaluating them in some cases. Some details of relocation - handling have also changed, and simple constant pool management has been - added, to make the Alpha port easier. - -* New option "--statistics" for printing out program run times. This is - intended to be used with the gcc "-Q" option, which prints out times spent in - various phases of compilation. (You should be able to get all of them - printed out with "gcc -Q -Wa,--statistics", I think.) - -Changes in 2.2: - -* RS/6000 AIX and MIPS SGI Irix 5 support has been added. - -* Configurations that are still in development (and therefore are convenient to - have listed in configure.in) still get rejected without a minor change to - gas/Makefile.in, so people not doing development work shouldn't get the - impression that support for such configurations is actually believed to be - reliable. - -* The program name (usually "as") is printed when a fatal error message is - displayed. This should prevent some confusion about the source of occasional - messages about "internal errors". - -* ELF support is falling into place. Support for the 386 should be working. - Support for SPARC Solaris is in. HPPA support from Utah is being integrated. - -* Symbol values are maintained as expressions instead of being immediately - boiled down to add-symbol, sub-symbol, and constant. This permits slightly - more complex calculations involving symbols whose values are not alreadey - known. - -* DBX-style debugging info ("stabs") is now supported for COFF formats. - If any stabs directives are seen in the source, GAS will create two new - sections: a ".stab" and a ".stabstr" section. The format of the .stab - section is nearly identical to the a.out symbol format, and .stabstr is - its string table. For this to be useful, you must have configured GCC - to generate stabs (by defining DBX_DEBUGGING_INFO), and must have a GDB - that can use the stab sections (4.11 or later). - -* LynxOS, on i386 and m68k platforms, is now supported. SPARC LynxOS - support is in progress. - -Changes in 2.1: - -* Several small fixes for i386-aix (PS/2) support from Minh Tran-Le have been - incorporated, but not well tested yet. - -* Altered the opcode table split for m68k; it should require less VM to compile - with gcc now. - -* Some minor adjustments to add (Convergent Technologies') Miniframe support, - suggested by Ronald Cole. - -* HPPA support (running OSF only, not HPUX) has been contributed by Utah. This - includes improved ELF support, which I've started adapting for SPARC Solaris - 2.x. Integration isn't completely, so it probably won't work. - -* HP9000/300 support, donated by HP, has been merged in. - -* Ian Taylor has finished the MIPS ECOFF (Ultrix, Irix) support. - -* Better error messages for unsupported configurations (e.g., hppa-hpux). - -* Test suite framework is starting to become reasonable. - -Changes in 2.0: - -* Mostly bug fixes. - -* Some more merging of BFD and ELF code, but ELF still doesn't work. - -Changes in 1.94: - -* BFD merge is partly done. Adventurous souls may try giving configure the - "--with-bfd-assembler" option. Currently, ELF format requires it, a.out - format accepts it; SPARC CPU accepts it. It's the default only for OS "elf" - or "solaris". (ELF isn't really supported yet. It needs work. I've got - some code from Utah for HP-PA ELF, and from DG for m88k ELF, but they're not - fully merged yet.) - -* The 68K opcode table has been split in half. It should now compile under gcc - without consuming ridiculous amounts of memory. - -* A couple data structures have been reduced in size. This should result in - saving a little bit of space at runtime. - -* Support for MIPS, from OSF and Ralph Campbell, has been merged in. The OSF - code provided ROSE format support, which I haven't merged in yet. (I can - make it available, if anyone wants to try it out.) Ralph's code, for BSD - 4.4, supports a.out format. We don't have ECOFF support in just yet; it's - coming. - -* Support for the Hitachi H8/500 has been added. - -* VMS host and target support should be working now, thanks chiefly to Eric - Youngdale. - -Changes in 1.93.01: - -* For m68k, support for more processors has been added: 68040, CPU32, 68851. - -* For i386, .align is now power-of-two; was number-of-bytes. - -* For m68k, "%" is now accepted before register names. For COFF format, which - doesn't use underscore prefixes for C labels, it is required, so variable "a0" - can be distinguished from the register. - -* Last public release was 1.38. Lots of configuration changes since then, lots - of new CPUs and formats, lots of bugs fixed. - - -Local variables: -fill-column: 79 -End: diff --git a/gas/README b/gas/README deleted file mode 100644 index 790539582..000000000 --- a/gas/README +++ /dev/null @@ -1,241 +0,0 @@ - README for GAS - -A number of things have changed since version 1 and the wonderful -world of gas looks very different. There's still a lot of irrelevant -garbage lying around that will be cleaned up in time. Documentation -is scarce, as are logs of the changes made since the last gas release. -My apologies, and I'll try to get something useful. - -Unpacking and Installation - Summary -==================================== - -See ../binutils/README. - -To build just the assembler, make the target all-gas. - -Documentation -============= - -The GAS release includes texinfo source for its manual, which can be processed -into `info' or `dvi' forms. - -The DVI form is suitable for printing or displaying; the commands for doing -this vary from system to system. On many systems, `lpr -d' will print a DVI -file. On others, you may need to run a program such as `dvips' to convert the -DVI file into a form your system can print. - -If you wish to build the DVI file, you will need to have TeX installed on your -system. You can rebuild it by typing: - - cd gas/doc - make as.dvi - -The Info form is viewable with the GNU Emacs `info' subsystem, or the -stand-alone `info' program, available as part of the GNU Texinfo distribution. -To build the info files, you will need the `makeinfo' program. Type: - - cd gas/doc - make info - -Specifying names for hosts and targets -====================================== - - The specifications used for hosts and targets in the `configure' -script are based on a three-part naming scheme, but some short -predefined aliases are also supported. The full naming scheme encodes -three pieces of information in the following pattern: - - ARCHITECTURE-VENDOR-OS - - For example, you can use the alias `sun4' as a HOST argument or in a -`--target=TARGET' option. The equivalent full name is -`sparc-sun-sunos4'. - - The `configure' script accompanying GAS does not provide any query -facility to list all supported host and target names or aliases. -`configure' calls the Bourne shell script `config.sub' to map -abbreviations to full names; you can read the script, if you wish, or -you can use it to test your guesses on abbreviations--for example: - - % sh config.sub sun4 - sparc-sun-sunos411 - % sh config.sub sun3 - m68k-sun-sunos411 - % sh config.sub decstation - mips-dec-ultrix42 - % sh config.sub hp300bsd - m68k-hp-bsd - % sh config.sub i386v - i386-unknown-sysv - % sh config.sub i786v - Invalid configuration `i786v': machine `i786v' not recognized - - -`configure' options -=================== - - Here is a summary of the `configure' options and arguments that are -most often useful for building GAS. `configure' also has several other -options not listed here. - - configure [--help] - [--prefix=DIR] - [--srcdir=PATH] - [--host=HOST] - [--target=TARGET] - [--with-OPTION] - [--enable-OPTION] - -You may introduce options with a single `-' rather than `--' if you -prefer; but you may abbreviate option names if you use `--'. - -`--help' - Print a summary of the options to `configure', and exit. - -`-prefix=DIR' - Configure the source to install programs and files under directory - `DIR'. - -`--srcdir=PATH' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--host=HOST' - Configure GAS to run on the specified HOST. Normally the - configure script can figure this out automatically. - - There is no convenient way to generate a list of all available - hosts. - -`--target=TARGET' - Configure GAS for cross-assembling programs for the specified - TARGET. Without this option, GAS is configured to assemble .o files - that run on the same machine (HOST) as GAS itself. - - There is no convenient way to generate a list of all available - targets. - -`--enable-OPTION' - These flags tell the program or library being configured to - configure itself differently from the default for the specified - host/target combination. See below for a list of `--enable' - options recognized in the gas distribution. - -`configure' accepts other options, for compatibility with configuring -other GNU tools recursively; but these are the only options that affect -GAS or its supporting libraries. - -The `--enable' options recognized by software in the gas distribution are: - -`--enable-targets=...' - This causes one or more specified configurations to be added to those for - which BFD support is compiled. Currently gas cannot use any format other - than its compiled-in default, so this option is not very useful. - -`--enable-bfd-assembler' - This causes the assembler to use the new code being merged into it to use - BFD data structures internally, and use BFD for writing object files. - For most targets, this isn't supported yet. For most targets where it has - been done, it's already the default. So generally you won't need to use - this option. - -Supported platforms -=================== - -At this point I believe gas to be ANSI only code for most target cpu's. That -is, there should be relatively few, if any host system dependencies. So -porting (as a cross-assembler) to hosts not yet supported should be fairly -easy. Porting to a new target shouldn't be too tough if it's a variant of one -already supported. - -Native assembling should work on: - - sun3 - sun4 - 386bsd - bsd/386 - delta (m68k-sysv from Motorola) - delta88 (m88k-sysv from Motorola) - GNU/linux - m68k hpux 8.0 (hpux 7.0 may be a problem) - vax bsd, ultrix, vms - hp9000s300 - decstation - irix 4 - irix 5 - miniframe (m68k-sysv from Convergent Technologies) - i386-aix (ps/2) - hppa (hpux 4.3bsd, osf1) - AIX - unixware - sco 3.2v4.2 - sco openserver 5.0 (a.k.a. 3.2v5.0 ) - sparc solaris - ns32k (netbsd, lites) - -I believe that gas as a cross-assembler can currently be targeted for -most of the above hosts, plus - - arm - decstation-bsd (a.out format, to be used in BSD 4.4) - ebmon29k - go32 (DOS on i386, with DJGPP -- old a.out version) - H8/300, H8/500 (Hitachi) - i386-aix (ps/2) - i960-coff - mips ecoff (decstation-ultrix, iris, mips magnum, mips-idt-ecoff) - Mitsubishi d10v and d30v - nindy960 - powerpc EABI - SH (Hitachi) - sco386 - TI tic30 and tic80 - vax bsd or ultrix? - vms - vxworks68k - vxworks960 - z8000 (Zilog) - -MIPS ECOFF support has been added, but GAS will not run a C-style -preprocessor. If you want that, rename your file to have a ".S" suffix, and -run gcc on it. Or run "gcc -xassembler-with-cpp foo.s". - -Support for ELF should work now for sparc, hppa, i386, alpha, m68k, -MIPS, powerpc. - -Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot. - -If you try out gas on some host or target not listed above, please let me know -the results, so I can update the list. - -Compiler Support Hacks -====================== - -On a few targets, the assembler has been modified to support a feature -that is potentially useful when assembling compiler output, but which -may confuse assembly language programmers. If assembler encounters a -.word pseudo-op of the form symbol1-symbol2 (the difference of two -symbols), and the difference of those two symbols will not fit in 16 -bits, the assembler will create a branch around a long jump to -symbol1, and insert this into the output directly before the next -label: The .word will (instead of containing garbage, or giving an -error message) contain (the address of the long jump)-symbol2. This -allows the assembler to assemble jump tables that jump to locations -very far away into code that works properly. If the next label is -more than 32K away from the .word, you lose (silently); RMS claims -this will never happen. If the -K option is given, you will get a -warning message when this happens. - - -REPORTING BUGS IN GAS -===================== - -Bugs in gas should be reported to: - - bug-binutils@gnu.org. - -They may be cross-posted to gcc-bugs@gnu.org if they affect the use of -gas with gcc. They should not be reported just to gcc-bugs, since not -all of the maintainers read that list. - -See ../binutils/README for what we need in a bug report. diff --git a/gas/README-vms b/gas/README-vms deleted file mode 100644 index f3ee10e5e..000000000 --- a/gas/README-vms +++ /dev/null @@ -1,248 +0,0 @@ - This document explains a couple of things that are specific to VMS. -There are currently two "chapters", the first deals with cross-assembly -issues, and the second deals with the VMS debugger and GNU-CC. - - -*********************************************************************** -****************** Notes for Cross Assembly with VMS ****************** -*********************************************************************** - - If you wish to build gas on a non-VMS system to cross-assemble, -you should use: - -configure ${hosttype} -target=vms - -and then follow the usual procedure. The object files generated on -Unix will be correct from a binary point of view, but the real trick is -getting them to the VMS machine. The format of the object file is -a variable-length record, but each record contains binary data. gas -writes the records in the same format that VMS would expect, -namely a two-byte count followed by that number of bytes. - - If you try to copy the file to a VMS system using ftp, the ftp -protocol will screw up the file by looking for nulls (record terminator for -unix) and it will insert it's own record terminators at that point. This -will obviously corrupt the file. - - If you try to transfer the file with ftp in binary mode, the -file itself will not be corrupt, but VMS will think that the file contains -fixed-length records of 512 bytes. You can use the public-domain FILE -utility to change this with a command like: - -$FILE foo.o/type=variable - -If you do not have this utility available, the following program can be -used to perform this task: - - #include - - #define RME$C_SETRFM 1 - - struct FAB * fab; - - main(int argc, char * argv[]){ - int i, status; - fab = (struct FAB*) malloc(sizeof(struct FAB)); - *fab = cc$rms_fab; /* initialize FAB*/ - fab->fab$b_fac = FAB$M_PUT; - fab->fab$l_fop |= FAB$M_ESC; - fab->fab$l_ctx = RME$C_SETRFM; - fab->fab$w_ifi = 0; - for(i=1;ifab$l_fna = argv[i]; - fab->fab$b_fns = strlen(argv[i]); - status = sys$open(fab,0,0); - if((status & 7) != 1) lib$signal(status); - fab->fab$b_rfm = FAB$C_VAR; - status = sys$modify(fab,0,0); - if((status & 7) != 1) lib$signal(status); - status = sys$close(fab,0,0); - if((status & 7) != 1) lib$signal(status); - }; - } - - If you have NFS running on the VMS system, what you need to do -depends upon which NFS software you are running on the VMS system. There -are a number of different TCP/IP packages for VMS available, and only very -limited testing has been performed. In the tests that has been done so -far, the contents of the file will always be correct when transferring the -file via NFS, but the record attributes may or may not be correct. - - One proprietary TCP/IP/NFS package for VMS is known to -automatically fix the record attributes of the object file if you NFS mount -a unix disk from the VMS system, and if the file has a ".obj" extension on -the unix system. Other TCP/IP packages might do this for you as well, but -they have not been checked. - -No matter what method you use to get the file to the VMS system, it is -always a good idea to check to make sure that it is the correct type by -doing a "$dir/full" on the object file. The desired record attributes will -be "None". Undesirable record attributes will be "Stream-LF" or anything -else. - -Once you get the files on the VMS system, you can check their integrity -with the "$anal/obj" command. (Naturally at some point you should rename -the .o files to .obj). As far as the debugger is concerned, the records -will be correct, but the debugger will not be able to find the source files, -since it only has the file name, and not the full directory specification. -You must give the debugger some help by telling it which directories to -search for the individual files - once you have done this you should be -able to proceed normally. - - It is a good idea to use names for your files which will be valid -under VMS, since otherwise you will have no way of getting the debugger to -find the source file when deugging. - -The reason for this is that the object file normally contins specific -information that the debugger can use to positively identify a file, and if -you are assembling on a unix system this information simply does not exist -in a meaningful way. You must help the debugger by using the "SET FILE=" -command to tell the debugger where to look for source files. The debugger -records will be correct, except that the debugger will not be initially -able to find the source files. You can use the "SET FILE" command to tell -the debugger where to look for the source files. - -I have only tested this with a SVr4 i486 machine, and everything seems to -work OK, with the limited testing that I have done. Other machines may -or may not work. You should read the chapters on cross-compilers in the gcc -manual before fooling with this. Since gas does not need to do any floating -point arithmetic, the floating point constants that are generated here should -be correct - the only concern is with constant folding in the main compiler. -The range and precision of floats and doubles are similar on the 486 (with -a builtin 80387) and the VAX, although there is a factor of 2 to 4 -difference in the range. The double, as implemented on the 486, is quite -similar to the G_FLOAT on the VAX. - -*********************************************************************** -****************** Notes for using GNU CC with the VMS debugger******** -*********************************************************************** - - - 1) You should be aware that GNU-C, as with any other decent compiler, -will do things when optimization is turned on that you may not expect. -Sometimes intermediate results are not written to variables, if they are only -used in one place, and sometimes variables that are not used at all will not be -written to the symbol table. Also, parameters to inline functions are often -inaccessible. You can see the assembly code equivalent by using KP7 in the -debugger, and from this you can tell if in fact a variable should have the -value that you expect. You can find out if a variable lives withing a register -by doing a 'show symbol/addr'. - - 2) Overly complex data types, such as: - -int (*(*(*(*(*(* sarr6)[1])[1])[2])[3])[4])[5]; - -will not be debugged properly, since the debugging record overflows an internal -debugger buffer. gcc-as will convert these to *void as far as the debugger -symbol table is concerned, which will avoid any problems, and the assembler -will give you a message informing you that this has happened. - - 3) You must, of course, compile and link with /debug. If you link -without debug, you still get traceback table in the executable, but there is no -symbol table for variables. - - 4) Included in the patches to VMS.C are fixes to two bugs that are -unrelated to the changes that I have made. One of these made it impossible to -debug small programs sometimes, and the other caused the debugger to become -confused about which routine it was in, and give this incorrect info in -tracebacks. - - 5) If you are using the GNU-C++ compiler, you should modify the -compiler driver file GNU_CC:[000000]GCC.COM (or GXX.COM). If you have a -separate GXX.COM, then you need to change one line in GXX.COM to: -$ if f$locate("D",p2) .ne. P2_Length then Debug = " ""-G0""" - Notice zero---> ^ -If you are using a GCC.COM that does both C and C++, add the following lines to -GCC.COM: - -$! -$! Use old style debugging records for VMS -$! -$ if (Debug.nes."" ).and. Plus then Debug = " ""-G0""" - -after the variables Plus and Debug are set. The reason for this, is that C++ -compiler by default generates debugging records that are more complex, -with many new syntactical elements that allow for the new features of the -language. The -G0 switch tells the C++ compiler to use the old style debugging -records. Until the debugger understands C++ there is not any point to try and -use the expanded syntax. - - 6) When you have nested scopes, i.e.: -main(){ - int i; - {int i; - {int i; -};};} -and you say "EXAM i" the debugger needs to figure out which variable you -actually want to reference. I have arranged things to define a block to the -debugger when you use brackets to enter a new scope, so in the example above, -the variables would be described as: -TEST\main\i -TEST\main\$0\i -TEST\main\$0\$0\i -At each level, the block name is a number with a dollar sign prefix, the -numbers start with 0 and count upward. When you say EXAM i, the debugger looks -at the current PC, and decides which block it is currently in. It works from -the innermost level outward until it finds a block that has the variable "i" -defined. You can always specify the scope explicitly. - - 7) With C++, there can be a lot of inline functions, and it would be -rather restrictive to force the user to debug the program by converting all of -the inline functions to normal functions. What I have done is to essentially -"add" (with the debugger) source lines from the include files that contain the -inline functions. Thus when you step into an inline function it appears as if -you have called the function, and you can examine variables and so forth. -There are several *very* important differences, however. First of all, since -there is no function call involved, you cannot step over the inline function -call - you always step into it. Secondly, since the same source lines are used -in many locations, there is a separate copy of the source for *each* usage. -Without this, breakpoints do not work, since we must have a 1-to-1 mapping -between source lines and PC. - Since you cannot step over inline function calls, it can be a real pain -if you are not really interested in what is going on for that function call. -What I have done is to use the "-D" switch for the assembler to toggle the -following behavior. With the "-D" switch, all inline functions are included in -the object file, and you can debug everything. Without the "-D" switch -(default case with VMS implementation), inline functions are included *only* if -they did not come from system header files (i.e. from GNU_CC_INCLUDE: or -GNU_GXX_INCLUDE:). Thus, without the switch the user only debugs his/her own -inline functions, and not the system ones. (This is especially useful if you do -a lot of stream I/O in C++). This probably will not provide enough granularity -for many users, but for now this is still somewhat experimental, and I would -like to reflect upon it and get some feedback before I go any further. -Possible solutions include an interactive prompting, a logical name, or a new -command line option in gcc.c (which is then passed through somehow to the guts -of the assembler). - The inline functions from header files appear after the source code -for the source file. This has the advantage that the source file itself is -numbered with the same line numbers that you get with an editor. In addition, -the entire header file is not included, since the assembler makes a list of -the min and max source lines that are used, and only includes those lines from -the first to the last actually used. (It is easy to change it to include the -whole file). - - 8) When you are debugging C++ objects, the object "this" is refered to -as "$this". Actually, the compiler writes it as ".this", but the period is -not good for the debugger, so I have a routine to convert it to a $. (It -actually converts all periods to $, but only for variables, since this was -intended to allow us to access "this". - - 9) If you use the asm("...") keyword for global symbols, you will not -be able to see that symbol with the debugger. The reason is that there are two -records for the symbol stored in the data structures of the assembler. One -contains the info such as psect number and offset, and the other one contains -the information having to do with the data type of the variable. In order to -debug as symbol, you need to be able to coorelate these records, and the only -way to do this is by name. The record with the storage attributes will take -the name used in the asm directive, and the record that specifies the data type -has the actual variable name, and thus when you use the asm directive to change -a variable name, the symbol becomes invisible. - - 10) Older versions of the compiler ( GNU-C 1.37.92 and earlier) place -global constants in the text psect. This is unfortunate, since to the linker -this appears to be an entry point. I sent a patch to the compiler to RMS, -which will generate a .const section for these variables, and patched the -assembler to put these variables into a psect just like that for normal -variables, except that they are marked NOWRT. static constants are still -placed in the text psect, since there is no need for any external access. diff --git a/gas/acinclude.m4 b/gas/acinclude.m4 deleted file mode 100644 index 4a3ccf358..000000000 --- a/gas/acinclude.m4 +++ /dev/null @@ -1,72 +0,0 @@ -dnl GAS_CHECK_DECL_NEEDED(name, typedefname, typedef, headers) -AC_DEFUN([GAS_CHECK_DECL_NEEDED],[ -AC_MSG_CHECKING(whether declaration is required for $1) -AC_CACHE_VAL(gas_cv_decl_needed_$1, -AC_TRY_LINK([$4], -[ -typedef $3; -$2 x; -x = ($2) $1; -], gas_cv_decl_needed_$1=no, gas_cv_decl_needed_$1=yes))dnl -AC_MSG_RESULT($gas_cv_decl_needed_$1) -if test $gas_cv_decl_needed_$1 = yes; then - AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), 1, - [Define if $1 is not declared in system header files.]) -fi -])dnl -dnl -dnl Some non-ANSI preprocessors botch requoting inside strings. That's bad -dnl enough, but on some of those systems, the assert macro relies on requoting -dnl working properly! -dnl GAS_WORKING_ASSERT -AC_DEFUN([GAS_WORKING_ASSERT], -[AC_MSG_CHECKING([for working assert macro]) -AC_CACHE_VAL(gas_cv_assert_ok, -AC_TRY_LINK([#include -#include ], [ -/* check for requoting problems */ -static int a, b, c, d; -static char *s; -assert (!strcmp(s, "foo bar baz quux")); -/* check for newline handling */ -assert (a == b - || c == d); -], gas_cv_assert_ok=yes, gas_cv_assert_ok=no))dnl -AC_MSG_RESULT($gas_cv_assert_ok) -test $gas_cv_assert_ok = yes || AC_DEFINE(BROKEN_ASSERT, 1, [assert broken?]) -])dnl -dnl -dnl Since many Bourne shell implementations lack subroutines, use this -dnl hack to simplify the code in configure.in. -dnl GAS_UNIQ(listvar) -AC_DEFUN([GAS_UNIQ], -[_gas_uniq_list="[$]$1" -_gas_uniq_newlist="" -dnl Protect against empty input list. -for _gas_uniq_i in _gas_uniq_dummy [$]_gas_uniq_list ; do - case [$]_gas_uniq_i in - _gas_uniq_dummy) ;; - *) case " [$]_gas_uniq_newlist " in - *" [$]_gas_uniq_i "*) ;; - *) _gas_uniq_newlist="[$]_gas_uniq_newlist [$]_gas_uniq_i" ;; - esac ;; - esac -done -$1=[$]_gas_uniq_newlist -])dnl - -sinclude(../libtool.m4) -dnl The lines below arrange for aclocal not to bring libtool.m4 -dnl AM_PROG_LIBTOOL into aclocal.m4, while still arranging for automake -dnl to add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_DEFUN([AC_CHECK_LIBM],) -AC_SUBST(LIBTOOL) -]) - -sinclude(../gettext.m4) -ifelse(yes,no,[ -AC_DEFUN([CY_WITH_NLS],) -AC_SUBST(INTLLIBS) -]) diff --git a/gas/aclocal.m4 b/gas/aclocal.m4 deleted file mode 100644 index a0aa57806..000000000 --- a/gas/aclocal.m4 +++ /dev/null @@ -1,1033 +0,0 @@ -# generated automatically by aclocal 1.7.8 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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. - -dnl GAS_CHECK_DECL_NEEDED(name, typedefname, typedef, headers) -AC_DEFUN(GAS_CHECK_DECL_NEEDED,[ -AC_MSG_CHECKING(whether declaration is required for $1) -AC_CACHE_VAL(gas_cv_decl_needed_$1, -AC_TRY_LINK([$4], -[ -typedef $3; -$2 x; -x = ($2) $1; -], gas_cv_decl_needed_$1=no, gas_cv_decl_needed_$1=yes))dnl -AC_MSG_RESULT($gas_cv_decl_needed_$1) -if test $gas_cv_decl_needed_$1 = yes; then - AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), 1, - [Define if $1 is not declared in system header files.]) -fi -])dnl -dnl -dnl Some non-ANSI preprocessors botch requoting inside strings. That's bad -dnl enough, but on some of those systems, the assert macro relies on requoting -dnl working properly! -dnl GAS_WORKING_ASSERT -AC_DEFUN(GAS_WORKING_ASSERT, -[AC_MSG_CHECKING([for working assert macro]) -AC_CACHE_VAL(gas_cv_assert_ok, -AC_TRY_LINK([#include -#include ], [ -/* check for requoting problems */ -static int a, b, c, d; -static char *s; -assert (!strcmp(s, "foo bar baz quux")); -/* check for newline handling */ -assert (a == b - || c == d); -], gas_cv_assert_ok=yes, gas_cv_assert_ok=no))dnl -AC_MSG_RESULT($gas_cv_assert_ok) -test $gas_cv_assert_ok = yes || AC_DEFINE(BROKEN_ASSERT, 1, [assert broken?]) -])dnl -dnl -dnl Since many Bourne shell implementations lack subroutines, use this -dnl hack to simplify the code in configure.in. -dnl GAS_UNIQ(listvar) -AC_DEFUN(GAS_UNIQ, -[_gas_uniq_list="[$]$1" -_gas_uniq_newlist="" -dnl Protect against empty input list. -for _gas_uniq_i in _gas_uniq_dummy [$]_gas_uniq_list ; do - case [$]_gas_uniq_i in - _gas_uniq_dummy) ;; - *) case " [$]_gas_uniq_newlist " in - *" [$]_gas_uniq_i "*) ;; - *) _gas_uniq_newlist="[$]_gas_uniq_newlist [$]_gas_uniq_i" ;; - esac ;; - esac -done -$1=[$]_gas_uniq_newlist -])dnl - -sinclude(../libtool.m4) -dnl The lines below arrange for aclocal not to bring libtool.m4 -dnl AM_PROG_LIBTOOL into aclocal.m4, while still arranging for automake -dnl to add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_DEFUN([AC_CHECK_LIBM],) -AC_SUBST(LIBTOOL) -]) - -sinclude(../gettext.m4) -ifelse(yes,no,[ -AC_DEFUN([CY_WITH_NLS],) -AC_SUBST(INTLLIBS) -]) - -# isc-posix.m4 serial 2 (gettext-0.11.2) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. - -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) - -# Do all the work for Automake. -*- Autoconf -*- - -# 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. - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 10 - -AC_PREREQ([2.54]) - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl - -# 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_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -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 - 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) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -# 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([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 -]) -]) - - -# 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_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# Copyright 2002 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., 59 Temple Place - Suite 330, Boston, MA - -# 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. -AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.7.8])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _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], -[AC_FOREACH([_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. -# - -# Copyright 1996, 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# 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 -# 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)]) - -# -*- Autoconf -*- - - -# Copyright 1997, 1999, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# 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 -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# 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 -]) - -# AM_AUX_DIR_EXPAND - -# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# 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. - -# Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50]) - -AC_DEFUN([AM_AUX_DIR_EXPAND], [ -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# 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="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# -*- Autoconf -*- -# Copyright (C) 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[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 -AC_SUBST([am__leading_dot])]) - -# serial 5 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# 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], 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 - 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 - : > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - 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 - ;; - none) break ;; - esac - # 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. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} 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 - # (even with -Werror). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' 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 builds - --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]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright 1999, 2000, 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; 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. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # 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 -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //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"]) -]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# 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 done -.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 -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 5 - -AC_PREREQ(2.52) - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -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])]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- - -# Copyright 1996, 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_PREREQ([2.52]) - -# serial 6 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - - -# Copyright 1998, 1999, 2000, 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -AC_PREREQ(2.50) - -# 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_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. -# From Jim Meyering - -# Copyright 1996, 1998, 2000, 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - 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]) - diff --git a/gas/app.c b/gas/app.c deleted file mode 100644 index 1dbc49a8c..000000000 --- a/gas/app.c +++ /dev/null @@ -1,1371 +0,0 @@ -/* This is the Assembler Pre-Processor - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Modified by Allen Wirfs-Brock, Instantiations Inc 2/90. */ -/* App, the assembler pre-processor. This pre-processor strips out excess - spaces, turns single-quoted characters into a decimal constant, and turns - # into a .line \n.file - pair. This needs better error-handling. */ - -#include -#include "as.h" /* For BAD_CASE() only. */ - -#if (__STDC__ != 1) -#ifndef const -#define const /* empty */ -#endif -#endif - -#ifdef TC_M68K -/* Whether we are scrubbing in m68k MRI mode. This is different from - flag_m68k_mri, because the two flags will be affected by the .mri - pseudo-op at different times. */ -static int scrub_m68k_mri; - -/* The pseudo-op which switches in and out of MRI mode. See the - comment in do_scrub_chars. */ -static const char mri_pseudo[] = ".mri 0"; -#else -#define scrub_m68k_mri 0 -#endif - -#if defined TC_ARM && defined OBJ_ELF -/* The pseudo-op for which we need to special-case `@' characters. - See the comment in do_scrub_chars. */ -static const char symver_pseudo[] = ".symver"; -static const char * symver_state; -#endif - -static char lex[256]; -static const char symbol_chars[] = -"$._ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - -#define LEX_IS_SYMBOL_COMPONENT 1 -#define LEX_IS_WHITESPACE 2 -#define LEX_IS_LINE_SEPARATOR 3 -#define LEX_IS_COMMENT_START 4 -#define LEX_IS_LINE_COMMENT_START 5 -#define LEX_IS_TWOCHAR_COMMENT_1ST 6 -#define LEX_IS_STRINGQUOTE 8 -#define LEX_IS_COLON 9 -#define LEX_IS_NEWLINE 10 -#define LEX_IS_ONECHAR_QUOTE 11 -#ifdef TC_V850 -#define LEX_IS_DOUBLEDASH_1ST 12 -#endif -#ifdef TC_M32R -#define DOUBLEBAR_PARALLEL -#endif -#ifdef DOUBLEBAR_PARALLEL -#define LEX_IS_DOUBLEBAR_1ST 13 -#endif -#define LEX_IS_PARALLEL_SEPARATOR 14 -#define IS_SYMBOL_COMPONENT(c) (lex[c] == LEX_IS_SYMBOL_COMPONENT) -#define IS_WHITESPACE(c) (lex[c] == LEX_IS_WHITESPACE) -#define IS_LINE_SEPARATOR(c) (lex[c] == LEX_IS_LINE_SEPARATOR) -#define IS_PARALLEL_SEPARATOR(c) (lex[c] == LEX_IS_PARALLEL_SEPARATOR) -#define IS_COMMENT(c) (lex[c] == LEX_IS_COMMENT_START) -#define IS_LINE_COMMENT(c) (lex[c] == LEX_IS_LINE_COMMENT_START) -#define IS_NEWLINE(c) (lex[c] == LEX_IS_NEWLINE) - -static int process_escape (int); - -/* FIXME-soon: The entire lexer/parser thingy should be - built statically at compile time rather than dynamically - each and every time the assembler is run. xoxorich. */ - -void -do_scrub_begin (int m68k_mri ATTRIBUTE_UNUSED) -{ - const char *p; - int c; - - lex[' '] = LEX_IS_WHITESPACE; - lex['\t'] = LEX_IS_WHITESPACE; - lex['\r'] = LEX_IS_WHITESPACE; - lex['\n'] = LEX_IS_NEWLINE; - lex[':'] = LEX_IS_COLON; - -#ifdef TC_M68K - scrub_m68k_mri = m68k_mri; - - if (! m68k_mri) -#endif - { - lex['"'] = LEX_IS_STRINGQUOTE; - -#if ! defined (TC_HPPA) && ! defined (TC_I370) - /* I370 uses single-quotes to delimit integer, float constants. */ - lex['\''] = LEX_IS_ONECHAR_QUOTE; -#endif - -#ifdef SINGLE_QUOTE_STRINGS - lex['\''] = LEX_IS_STRINGQUOTE; -#endif - } - - /* Note: if any other character can be LEX_IS_STRINGQUOTE, the loop - in state 5 of do_scrub_chars must be changed. */ - - /* Note that these override the previous defaults, e.g. if ';' is a - comment char, then it isn't a line separator. */ - for (p = symbol_chars; *p; ++p) - lex[(unsigned char) *p] = LEX_IS_SYMBOL_COMPONENT; - - for (c = 128; c < 256; ++c) - lex[c] = LEX_IS_SYMBOL_COMPONENT; - -#ifdef tc_symbol_chars - /* This macro permits the processor to specify all characters which - may appears in an operand. This will prevent the scrubber from - discarding meaningful whitespace in certain cases. The i386 - backend uses this to support prefixes, which can confuse the - scrubber as to whether it is parsing operands or opcodes. */ - for (p = tc_symbol_chars; *p; ++p) - lex[(unsigned char) *p] = LEX_IS_SYMBOL_COMPONENT; -#endif - - /* The m68k backend wants to be able to change comment_chars. */ -#ifndef tc_comment_chars -#define tc_comment_chars comment_chars -#endif - for (p = tc_comment_chars; *p; p++) - lex[(unsigned char) *p] = LEX_IS_COMMENT_START; - - for (p = line_comment_chars; *p; p++) - lex[(unsigned char) *p] = LEX_IS_LINE_COMMENT_START; - - for (p = line_separator_chars; *p; p++) - lex[(unsigned char) *p] = LEX_IS_LINE_SEPARATOR; - -#ifdef tc_parallel_separator_chars - /* This macro permits the processor to specify all characters which - separate parallel insns on the same line. */ - for (p = tc_parallel_separator_chars; *p; p++) - lex[(unsigned char) *p] = LEX_IS_PARALLEL_SEPARATOR; -#endif - - /* Only allow slash-star comments if slash is not in use. - FIXME: This isn't right. We should always permit them. */ - if (lex['/'] == 0) - lex['/'] = LEX_IS_TWOCHAR_COMMENT_1ST; - -#ifdef TC_M68K - if (m68k_mri) - { - lex['\''] = LEX_IS_STRINGQUOTE; - lex[';'] = LEX_IS_COMMENT_START; - lex['*'] = LEX_IS_LINE_COMMENT_START; - /* The MRI documentation says '!' is LEX_IS_COMMENT_START, but - then it can't be used in an expression. */ - lex['!'] = LEX_IS_LINE_COMMENT_START; - } -#endif - -#ifdef TC_V850 - lex['-'] = LEX_IS_DOUBLEDASH_1ST; -#endif -#ifdef DOUBLEBAR_PARALLEL - lex['|'] = LEX_IS_DOUBLEBAR_1ST; -#endif -#ifdef TC_D30V - /* Must do this is we want VLIW instruction with "->" or "<-". */ - lex['-'] = LEX_IS_SYMBOL_COMPONENT; -#endif -} - -/* Saved state of the scrubber. */ -static int state; -static int old_state; -static char *out_string; -static char out_buf[20]; -static int add_newlines; -static char *saved_input; -static int saved_input_len; -static char input_buffer[32 * 1024]; -static const char *mri_state; -static char mri_last_ch; - -/* Data structure for saving the state of app across #include's. Note that - app is called asynchronously to the parsing of the .include's, so our - state at the time .include is interpreted is completely unrelated. - That's why we have to save it all. */ - -struct app_save -{ - int state; - int old_state; - char * out_string; - char out_buf[sizeof (out_buf)]; - int add_newlines; - char * saved_input; - int saved_input_len; -#ifdef TC_M68K - int scrub_m68k_mri; -#endif - const char * mri_state; - char mri_last_ch; -#if defined TC_ARM && defined OBJ_ELF - const char * symver_state; -#endif -}; - -char * -app_push (void) -{ - register struct app_save *saved; - - saved = (struct app_save *) xmalloc (sizeof (*saved)); - saved->state = state; - saved->old_state = old_state; - saved->out_string = out_string; - memcpy (saved->out_buf, out_buf, sizeof (out_buf)); - saved->add_newlines = add_newlines; - if (saved_input == NULL) - saved->saved_input = NULL; - else - { - saved->saved_input = xmalloc (saved_input_len); - memcpy (saved->saved_input, saved_input, saved_input_len); - saved->saved_input_len = saved_input_len; - } -#ifdef TC_M68K - saved->scrub_m68k_mri = scrub_m68k_mri; -#endif - saved->mri_state = mri_state; - saved->mri_last_ch = mri_last_ch; -#if defined TC_ARM && defined OBJ_ELF - saved->symver_state = symver_state; -#endif - - /* do_scrub_begin() is not useful, just wastes time. */ - - state = 0; - saved_input = NULL; - - return (char *) saved; -} - -void -app_pop (char *arg) -{ - register struct app_save *saved = (struct app_save *) arg; - - /* There is no do_scrub_end (). */ - state = saved->state; - old_state = saved->old_state; - out_string = saved->out_string; - memcpy (out_buf, saved->out_buf, sizeof (out_buf)); - add_newlines = saved->add_newlines; - if (saved->saved_input == NULL) - saved_input = NULL; - else - { - assert (saved->saved_input_len <= (int) (sizeof input_buffer)); - memcpy (input_buffer, saved->saved_input, saved->saved_input_len); - saved_input = input_buffer; - saved_input_len = saved->saved_input_len; - free (saved->saved_input); - } -#ifdef TC_M68K - scrub_m68k_mri = saved->scrub_m68k_mri; -#endif - mri_state = saved->mri_state; - mri_last_ch = saved->mri_last_ch; -#if defined TC_ARM && defined OBJ_ELF - symver_state = saved->symver_state; -#endif - - free (arg); -} - -/* @@ This assumes that \n &c are the same on host and target. This is not - necessarily true. */ - -static int -process_escape (int ch) -{ - switch (ch) - { - case 'b': - return '\b'; - case 'f': - return '\f'; - case 'n': - return '\n'; - case 'r': - return '\r'; - case 't': - return '\t'; - case '\'': - return '\''; - case '"': - return '\"'; - default: - return ch; - } -} - -/* This function is called to process input characters. The GET - parameter is used to retrieve more input characters. GET should - set its parameter to point to a buffer, and return the length of - the buffer; it should return 0 at end of file. The scrubbed output - characters are put into the buffer starting at TOSTART; the TOSTART - buffer is TOLEN bytes in length. The function returns the number - of scrubbed characters put into TOSTART. This will be TOLEN unless - end of file was seen. This function is arranged as a state - machine, and saves its state so that it may return at any point. - This is the way the old code used to work. */ - -int -do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen) -{ - char *to = tostart; - char *toend = tostart + tolen; - char *from; - char *fromend; - int fromlen; - register int ch, ch2 = 0; - - /*State 0: beginning of normal line - 1: After first whitespace on line (flush more white) - 2: After first non-white (opcode) on line (keep 1white) - 3: after second white on line (into operands) (flush white) - 4: after putting out a .line, put out digits - 5: parsing a string, then go to old-state - 6: putting out \ escape in a "d string. - 7: After putting out a .appfile, put out string. - 8: After putting out a .appfile string, flush until newline. - 9: After seeing symbol char in state 3 (keep 1white after symchar) - 10: After seeing whitespace in state 9 (keep white before symchar) - 11: After seeing a symbol character in state 0 (eg a label definition) - -1: output string in out_string and go to the state in old_state - -2: flush text until a '*' '/' is seen, then go to state old_state -#ifdef TC_V850 - 12: After seeing a dash, looking for a second dash as a start - of comment. -#endif -#ifdef DOUBLEBAR_PARALLEL - 13: After seeing a vertical bar, looking for a second - vertical bar as a parallel expression separator. -#endif -#ifdef TC_IA64 - 14: After seeing a `(' at state 0, looking for a `)' as - predicate. - 15: After seeing a `(' at state 1, looking for a `)' as - predicate. -#endif - */ - - /* I added states 9 and 10 because the MIPS ECOFF assembler uses - constructs like ``.loc 1 20''. This was turning into ``.loc - 120''. States 9 and 10 ensure that a space is never dropped in - between characters which could appear in an identifier. Ian - Taylor, ian@cygnus.com. - - I added state 11 so that something like "Lfoo add %r25,%r26,%r27" works - correctly on the PA (and any other target where colons are optional). - Jeff Law, law@cs.utah.edu. - - I added state 13 so that something like "cmp r1, r2 || trap #1" does not - get squashed into "cmp r1,r2||trap#1", with the all important space - between the 'trap' and the '#1' being eliminated. nickc@cygnus.com */ - - /* This macro gets the next input character. */ - -#define GET() \ - (from < fromend \ - ? * (unsigned char *) (from++) \ - : (saved_input = NULL, \ - fromlen = (*get) (input_buffer, sizeof input_buffer), \ - from = input_buffer, \ - fromend = from + fromlen, \ - (fromlen == 0 \ - ? EOF \ - : * (unsigned char *) (from++)))) - - /* This macro pushes a character back on the input stream. */ - -#define UNGET(uch) (*--from = (uch)) - - /* This macro puts a character into the output buffer. If this - character fills the output buffer, this macro jumps to the label - TOFULL. We use this rather ugly approach because we need to - handle two different termination conditions: EOF on the input - stream, and a full output buffer. It would be simpler if we - always read in the entire input stream before processing it, but - I don't want to make such a significant change to the assembler's - memory usage. */ - -#define PUT(pch) \ - do \ - { \ - *to++ = (pch); \ - if (to >= toend) \ - goto tofull; \ - } \ - while (0) - - if (saved_input != NULL) - { - from = saved_input; - fromend = from + saved_input_len; - } - else - { - fromlen = (*get) (input_buffer, sizeof input_buffer); - if (fromlen == 0) - return 0; - from = input_buffer; - fromend = from + fromlen; - } - - while (1) - { - /* The cases in this switch end with continue, in order to - branch back to the top of this while loop and generate the - next output character in the appropriate state. */ - switch (state) - { - case -1: - ch = *out_string++; - if (*out_string == '\0') - { - state = old_state; - old_state = 3; - } - PUT (ch); - continue; - - case -2: - for (;;) - { - do - { - ch = GET (); - - if (ch == EOF) - { - as_warn (_("end of file in comment")); - goto fromeof; - } - - if (ch == '\n') - PUT ('\n'); - } - while (ch != '*'); - - while ((ch = GET ()) == '*') - ; - - if (ch == EOF) - { - as_warn (_("end of file in comment")); - goto fromeof; - } - - if (ch == '/') - break; - - UNGET (ch); - } - - state = old_state; - UNGET (' '); - continue; - - case 4: - ch = GET (); - if (ch == EOF) - goto fromeof; - else if (ch >= '0' && ch <= '9') - PUT (ch); - else - { - while (ch != EOF && IS_WHITESPACE (ch)) - ch = GET (); - if (ch == '"') - { - UNGET (ch); - if (scrub_m68k_mri) - out_string = "\n\tappfile "; - else - out_string = "\n\t.appfile "; - old_state = 7; - state = -1; - PUT (*out_string++); - } - else - { - while (ch != EOF && ch != '\n') - ch = GET (); - state = 0; - PUT (ch); - } - } - continue; - - case 5: - /* We are going to copy everything up to a quote character, - with special handling for a backslash. We try to - optimize the copying in the simple case without using the - GET and PUT macros. */ - { - char *s; - int len; - - for (s = from; s < fromend; s++) - { - ch = *s; - /* This condition must be changed if the type of any - other character can be LEX_IS_STRINGQUOTE. */ - if (ch == '\\' - || ch == '"' - || ch == '\'' - || ch == '\n') - break; - } - len = s - from; - if (len > toend - to) - len = toend - to; - if (len > 0) - { - memcpy (to, from, len); - to += len; - from += len; - } - } - - ch = GET (); - if (ch == EOF) - { - as_warn (_("end of file in string; inserted '\"'")); - state = old_state; - UNGET ('\n'); - PUT ('"'); - } - else if (lex[ch] == LEX_IS_STRINGQUOTE) - { - state = old_state; - PUT (ch); - } -#ifndef NO_STRING_ESCAPES - else if (ch == '\\') - { - state = 6; - PUT (ch); - } -#endif - else if (scrub_m68k_mri && ch == '\n') - { - /* Just quietly terminate the string. This permits lines like - bne label loop if we haven't reach end yet. */ - state = old_state; - UNGET (ch); - PUT ('\''); - } - else - { - PUT (ch); - } - continue; - - case 6: - state = 5; - ch = GET (); - switch (ch) - { - /* Handle strings broken across lines, by turning '\n' into - '\\' and 'n'. */ - case '\n': - UNGET ('n'); - add_newlines++; - PUT ('\\'); - continue; - - case EOF: - as_warn (_("end of file in string; '\"' inserted")); - PUT ('"'); - continue; - - case '"': - case '\\': - case 'b': - case 'f': - case 'n': - case 'r': - case 't': - case 'v': - case 'x': - case 'X': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - break; - - default: -#ifdef ONLY_STANDARD_ESCAPES - as_warn (_("unknown escape '\\%c' in string; ignored"), ch); -#endif - break; - } - PUT (ch); - continue; - - case 7: - ch = GET (); - state = 5; - old_state = 8; - if (ch == EOF) - goto fromeof; - PUT (ch); - continue; - - case 8: - do - ch = GET (); - while (ch != '\n' && ch != EOF); - if (ch == EOF) - goto fromeof; - state = 0; - PUT (ch); - continue; - -#ifdef DOUBLEBAR_PARALLEL - case 13: - ch = GET (); - if (ch != '|') - abort (); - - /* Reset back to state 1 and pretend that we are parsing a - line from just after the first white space. */ - state = 1; - PUT ('|'); - continue; -#endif - } - - /* OK, we are somewhere in states 0 through 4 or 9 through 11. */ - - /* flushchar: */ - ch = GET (); - -#ifdef TC_IA64 - if (ch == '(' && (state == 0 || state == 1)) - { - state += 14; - PUT (ch); - continue; - } - else if (state == 14 || state == 15) - { - if (ch == ')') - { - state -= 14; - PUT (ch); - ch = GET (); - } - else - { - PUT (ch); - continue; - } - } -#endif - - recycle: - -#if defined TC_ARM && defined OBJ_ELF - /* We need to watch out for .symver directives. See the comment later - in this function. */ - if (symver_state == NULL) - { - if ((state == 0 || state == 1) && ch == symver_pseudo[0]) - symver_state = symver_pseudo + 1; - } - else - { - /* We advance to the next state if we find the right - character. */ - if (ch != '\0' && (*symver_state == ch)) - ++symver_state; - else if (*symver_state != '\0') - /* We did not get the expected character, or we didn't - get a valid terminating character after seeing the - entire pseudo-op, so we must go back to the beginning. */ - symver_state = NULL; - else - { - /* We've read the entire pseudo-op. If this is the end - of the line, go back to the beginning. */ - if (IS_NEWLINE (ch)) - symver_state = NULL; - } - } -#endif /* TC_ARM && OBJ_ELF */ - -#ifdef TC_M68K - /* We want to have pseudo-ops which control whether we are in - MRI mode or not. Unfortunately, since m68k MRI mode affects - the scrubber, that means that we need a special purpose - recognizer here. */ - if (mri_state == NULL) - { - if ((state == 0 || state == 1) - && ch == mri_pseudo[0]) - mri_state = mri_pseudo + 1; - } - else - { - /* We advance to the next state if we find the right - character, or if we need a space character and we get any - whitespace character, or if we need a '0' and we get a - '1' (this is so that we only need one state to handle - ``.mri 0'' and ``.mri 1''). */ - if (ch != '\0' - && (*mri_state == ch - || (*mri_state == ' ' - && lex[ch] == LEX_IS_WHITESPACE) - || (*mri_state == '0' - && ch == '1'))) - { - mri_last_ch = ch; - ++mri_state; - } - else if (*mri_state != '\0' - || (lex[ch] != LEX_IS_WHITESPACE - && lex[ch] != LEX_IS_NEWLINE)) - { - /* We did not get the expected character, or we didn't - get a valid terminating character after seeing the - entire pseudo-op, so we must go back to the - beginning. */ - mri_state = NULL; - } - else - { - /* We've read the entire pseudo-op. mips_last_ch is - either '0' or '1' indicating whether to enter or - leave MRI mode. */ - do_scrub_begin (mri_last_ch == '1'); - mri_state = NULL; - - /* We continue handling the character as usual. The - main gas reader must also handle the .mri pseudo-op - to control expression parsing and the like. */ - } - } -#endif - - if (ch == EOF) - { - if (state != 0) - { - as_warn (_("end of file not at end of a line; newline inserted")); - state = 0; - PUT ('\n'); - } - goto fromeof; - } - - switch (lex[ch]) - { - case LEX_IS_WHITESPACE: - do - { - ch = GET (); - } - while (ch != EOF && IS_WHITESPACE (ch)); - if (ch == EOF) - goto fromeof; - - if (state == 0) - { - /* Preserve a single whitespace character at the - beginning of a line. */ - state = 1; - UNGET (ch); - PUT (' '); - break; - } - -#ifdef KEEP_WHITE_AROUND_COLON - if (lex[ch] == LEX_IS_COLON) - { - /* Only keep this white if there's no white *after* the - colon. */ - ch2 = GET (); - UNGET (ch2); - if (!IS_WHITESPACE (ch2)) - { - state = 9; - UNGET (ch); - PUT (' '); - break; - } - } -#endif - if (IS_COMMENT (ch) - || ch == '/' - || IS_LINE_SEPARATOR (ch) - || IS_PARALLEL_SEPARATOR (ch)) - { - if (scrub_m68k_mri) - { - /* In MRI mode, we keep these spaces. */ - UNGET (ch); - PUT (' '); - break; - } - goto recycle; - } - - /* If we're in state 2 or 11, we've seen a non-white - character followed by whitespace. If the next character - is ':', this is whitespace after a label name which we - normally must ignore. In MRI mode, though, spaces are - not permitted between the label and the colon. */ - if ((state == 2 || state == 11) - && lex[ch] == LEX_IS_COLON - && ! scrub_m68k_mri) - { - state = 1; - PUT (ch); - break; - } - - switch (state) - { - case 0: - state++; - goto recycle; /* Punted leading sp */ - case 1: - /* We can arrive here if we leave a leading whitespace - character at the beginning of a line. */ - goto recycle; - case 2: - state = 3; - if (to + 1 < toend) - { - /* Optimize common case by skipping UNGET/GET. */ - PUT (' '); /* Sp after opco */ - goto recycle; - } - UNGET (ch); - PUT (' '); - break; - case 3: - if (scrub_m68k_mri) - { - /* In MRI mode, we keep these spaces. */ - UNGET (ch); - PUT (' '); - break; - } - goto recycle; /* Sp in operands */ - case 9: - case 10: - if (scrub_m68k_mri) - { - /* In MRI mode, we keep these spaces. */ - state = 3; - UNGET (ch); - PUT (' '); - break; - } - state = 10; /* Sp after symbol char */ - goto recycle; - case 11: - if (LABELS_WITHOUT_COLONS || flag_m68k_mri) - state = 1; - else - { - /* We know that ch is not ':', since we tested that - case above. Therefore this is not a label, so it - must be the opcode, and we've just seen the - whitespace after it. */ - state = 3; - } - UNGET (ch); - PUT (' '); /* Sp after label definition. */ - break; - default: - BAD_CASE (state); - } - break; - - case LEX_IS_TWOCHAR_COMMENT_1ST: - ch2 = GET (); - if (ch2 == '*') - { - for (;;) - { - do - { - ch2 = GET (); - if (ch2 != EOF && IS_NEWLINE (ch2)) - add_newlines++; - } - while (ch2 != EOF && ch2 != '*'); - - while (ch2 == '*') - ch2 = GET (); - - if (ch2 == EOF || ch2 == '/') - break; - - /* This UNGET will ensure that we count newlines - correctly. */ - UNGET (ch2); - } - - if (ch2 == EOF) - as_warn (_("end of file in multiline comment")); - - ch = ' '; - goto recycle; - } -#ifdef DOUBLESLASH_LINE_COMMENTS - else if (ch2 == '/') - { - do - { - ch = GET (); - } - while (ch != EOF && !IS_NEWLINE (ch)); - if (ch == EOF) - as_warn ("end of file in comment; newline inserted"); - state = 0; - PUT ('\n'); - break; - } -#endif - else - { - if (ch2 != EOF) - UNGET (ch2); - if (state == 9 || state == 10) - state = 3; - PUT (ch); - } - break; - - case LEX_IS_STRINGQUOTE: - if (state == 10) - { - /* Preserve the whitespace in foo "bar". */ - UNGET (ch); - state = 3; - PUT (' '); - - /* PUT didn't jump out. We could just break, but we - know what will happen, so optimize a bit. */ - ch = GET (); - old_state = 3; - } - else if (state == 9) - old_state = 3; - else - old_state = state; - state = 5; - PUT (ch); - break; - -#ifndef IEEE_STYLE - case LEX_IS_ONECHAR_QUOTE: - if (state == 10) - { - /* Preserve the whitespace in foo 'b'. */ - UNGET (ch); - state = 3; - PUT (' '); - break; - } - ch = GET (); - if (ch == EOF) - { - as_warn (_("end of file after a one-character quote; \\0 inserted")); - ch = 0; - } - if (ch == '\\') - { - ch = GET (); - if (ch == EOF) - { - as_warn (_("end of file in escape character")); - ch = '\\'; - } - else - ch = process_escape (ch); - } - sprintf (out_buf, "%d", (int) (unsigned char) ch); - - /* None of these 'x constants for us. We want 'x'. */ - if ((ch = GET ()) != '\'') - { -#ifdef REQUIRE_CHAR_CLOSE_QUOTE - as_warn (_("missing close quote; (assumed)")); -#else - if (ch != EOF) - UNGET (ch); -#endif - } - if (strlen (out_buf) == 1) - { - PUT (out_buf[0]); - break; - } - if (state == 9) - old_state = 3; - else - old_state = state; - state = -1; - out_string = out_buf; - PUT (*out_string++); - break; -#endif - - case LEX_IS_COLON: -#ifdef KEEP_WHITE_AROUND_COLON - state = 9; -#else - if (state == 9 || state == 10) - state = 3; - else if (state != 3) - state = 1; -#endif - PUT (ch); - break; - - case LEX_IS_NEWLINE: - /* Roll out a bunch of newlines from inside comments, etc. */ - if (add_newlines) - { - --add_newlines; - UNGET (ch); - } - /* Fall through. */ - - case LEX_IS_LINE_SEPARATOR: - state = 0; - PUT (ch); - break; - - case LEX_IS_PARALLEL_SEPARATOR: - state = 1; - PUT (ch); - break; - -#ifdef TC_V850 - case LEX_IS_DOUBLEDASH_1ST: - ch2 = GET (); - if (ch2 != '-') - { - UNGET (ch2); - goto de_fault; - } - /* Read and skip to end of line. */ - do - { - ch = GET (); - } - while (ch != EOF && ch != '\n'); - - if (ch == EOF) - as_warn (_("end of file in comment; newline inserted")); - - state = 0; - PUT ('\n'); - break; -#endif -#ifdef DOUBLEBAR_PARALLEL - case LEX_IS_DOUBLEBAR_1ST: - ch2 = GET (); - UNGET (ch2); - if (ch2 != '|') - goto de_fault; - - /* Handle '||' in two states as invoking PUT twice might - result in the first one jumping out of this loop. We'd - then lose track of the state and one '|' char. */ - state = 13; - PUT ('|'); - break; -#endif - case LEX_IS_LINE_COMMENT_START: - /* FIXME-someday: The two character comment stuff was badly - thought out. On i386, we want '/' as line comment start - AND we want C style comments. hence this hack. The - whole lexical process should be reworked. xoxorich. */ - if (ch == '/') - { - ch2 = GET (); - if (ch2 == '*') - { - old_state = 3; - state = -2; - break; - } - else - { - UNGET (ch2); - } - } - - if (state == 0 || state == 1) /* Only comment at start of line. */ - { - int startch; - - startch = ch; - - do - { - ch = GET (); - } - while (ch != EOF && IS_WHITESPACE (ch)); - - if (ch == EOF) - { - as_warn (_("end of file in comment; newline inserted")); - PUT ('\n'); - break; - } - - if (ch < '0' || ch > '9' || state != 0 || startch != '#') - { - /* Not a cpp line. */ - while (ch != EOF && !IS_NEWLINE (ch)) - ch = GET (); - if (ch == EOF) - as_warn (_("end of file in comment; newline inserted")); - state = 0; - PUT ('\n'); - break; - } - /* Looks like `# 123 "filename"' from cpp. */ - UNGET (ch); - old_state = 4; - state = -1; - if (scrub_m68k_mri) - out_string = "\tappline "; - else - out_string = "\t.appline "; - PUT (*out_string++); - break; - } - -#ifdef TC_D10V - /* All insns end in a char for which LEX_IS_SYMBOL_COMPONENT is true. - Trap is the only short insn that has a first operand that is - neither register nor label. - We must prevent exef0f ||trap #1 to degenerate to exef0f ||trap#1 . - We can't make '#' LEX_IS_SYMBOL_COMPONENT because it is - already LEX_IS_LINE_COMMENT_START. However, it is the - only character in line_comment_chars for d10v, hence we - can recognize it as such. */ - /* An alternative approach would be to reset the state to 1 when - we see '||', '<'- or '->', but that seems to be overkill. */ - if (state == 10) - PUT (' '); -#endif - /* We have a line comment character which is not at the - start of a line. If this is also a normal comment - character, fall through. Otherwise treat it as a default - character. */ - if (strchr (tc_comment_chars, ch) == NULL - && (! scrub_m68k_mri - || (ch != '!' && ch != '*'))) - goto de_fault; - if (scrub_m68k_mri - && (ch == '!' || ch == '*' || ch == '#') - && state != 1 - && state != 10) - goto de_fault; - /* Fall through. */ - case LEX_IS_COMMENT_START: -#if defined TC_ARM && defined OBJ_ELF - /* On the ARM, `@' is the comment character. - Unfortunately this is also a special character in ELF .symver - directives (and .type, though we deal with those another way). - So we check if this line is such a directive, and treat - the character as default if so. This is a hack. */ - if ((symver_state != NULL) && (*symver_state == 0)) - goto de_fault; -#endif -#ifdef WARN_COMMENTS - if (!found_comment) - as_where (&found_comment_file, &found_comment); -#endif - do - { - ch = GET (); - } - while (ch != EOF && !IS_NEWLINE (ch)); - if (ch == EOF) - as_warn (_("end of file in comment; newline inserted")); - state = 0; - PUT ('\n'); - break; - - case LEX_IS_SYMBOL_COMPONENT: - if (state == 10) - { - /* This is a symbol character following another symbol - character, with whitespace in between. We skipped - the whitespace earlier, so output it now. */ - UNGET (ch); - state = 3; - PUT (' '); - break; - } - - if (state == 3) - state = 9; - - /* This is a common case. Quickly copy CH and all the - following symbol component or normal characters. */ - if (to + 1 < toend - && mri_state == NULL -#if defined TC_ARM && defined OBJ_ELF - && symver_state == NULL -#endif - ) - { - char *s; - int len; - - for (s = from; s < fromend; s++) - { - int type; - - ch2 = *(unsigned char *) s; - type = lex[ch2]; - if (type != 0 - && type != LEX_IS_SYMBOL_COMPONENT) - break; - } - - if (s > from) - /* Handle the last character normally, for - simplicity. */ - --s; - - len = s - from; - - if (len > (toend - to) - 1) - len = (toend - to) - 1; - - if (len > 0) - { - PUT (ch); - if (len > 8) - { - memcpy (to, from, len); - to += len; - from += len; - } - else - { - switch (len) - { - case 8: *to++ = *from++; - case 7: *to++ = *from++; - case 6: *to++ = *from++; - case 5: *to++ = *from++; - case 4: *to++ = *from++; - case 3: *to++ = *from++; - case 2: *to++ = *from++; - case 1: *to++ = *from++; - } - } - ch = GET (); - } - } - - /* Fall through. */ - default: - de_fault: - /* Some relatively `normal' character. */ - if (state == 0) - { - state = 11; /* Now seeing label definition. */ - } - else if (state == 1) - { - state = 2; /* Ditto. */ - } - else if (state == 9) - { - if (!IS_SYMBOL_COMPONENT (ch)) - state = 3; - } - else if (state == 10) - { - if (ch == '\\') - { - /* Special handling for backslash: a backslash may - be the beginning of a formal parameter (of a - macro) following another symbol character, with - whitespace in between. If that is the case, we - output a space before the parameter. Strictly - speaking, correct handling depends upon what the - macro parameter expands into; if the parameter - expands into something which does not start with - an operand character, then we don't want to keep - the space. We don't have enough information to - make the right choice, so here we are making the - choice which is more likely to be correct. */ - PUT (' '); - } - - state = 3; - } - PUT (ch); - break; - } - } - - /*NOTREACHED*/ - - fromeof: - /* We have reached the end of the input. */ - return to - tostart; - - tofull: - /* The output buffer is full. Save any input we have not yet - processed. */ - if (fromend > from) - { - saved_input = from; - saved_input_len = fromend - from; - } - else - saved_input = NULL; - - return to - tostart; -} - diff --git a/gas/as.c b/gas/as.c deleted file mode 100644 index 0911aa1fa..000000000 --- a/gas/as.c +++ /dev/null @@ -1,1165 +0,0 @@ -/* as.c - GAS main program. - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Main program for AS; a 32-bit assembler of GNU. - Understands command arguments. - Has a few routines that don't fit in other modules because they - are shared. - - bugs - - : initialisers - Since no-one else says they will support them in future: I - don't support them now. */ - -#include "ansidecl.h" - -#define COMMON - -#include "as.h" -#include "subsegs.h" -#include "output-file.h" -#include "sb.h" -#include "macro.h" -#include "dwarf2dbg.h" -#include "dw2gencfi.h" - -#ifdef BFD_ASSEMBLER -#include "bfdver.h" -#endif - -#ifdef HAVE_ITBL_CPU -#include "itbl-ops.h" -#else -#define itbl_parse(itbl_file) 1 -#define itbl_init() -#endif - -#ifdef HAVE_SBRK -#ifdef NEED_DECLARATION_SBRK -extern PTR sbrk (); -#endif -#endif - -#ifdef USING_CGEN -/* Perform any cgen specific initialisation for gas. */ -extern void gas_cgen_begin (void); -#endif - -/* Keep a record of the itbl files we read in. */ -struct itbl_file_list -{ - struct itbl_file_list *next; - char *name; -}; - -/* We build a list of defsyms as we read the options, and then define - them after we have initialized everything. */ -struct defsym_list -{ - struct defsym_list *next; - char *name; - valueT value; -}; - - -/* True if a listing is wanted. */ -int listing; - -/* Type of debugging to generate. */ -enum debug_info_type debug_type = DEBUG_UNSPECIFIED; -int use_gnu_debug_info_extensions = 0; - -/* Maximum level of macro nesting. */ -int max_macro_nest = 100; - -/* argv[0] */ -char * myname; - -/* The default obstack chunk size. If we set this to zero, the - obstack code will use whatever will fit in a 4096 byte block. */ -int chunksize = 0; - -/* To monitor memory allocation more effectively, make this non-zero. - Then the chunk sizes for gas and bfd will be reduced. */ -int debug_memory = 0; - -/* Enable verbose mode. */ -int verbose = 0; - -#ifdef BFD_ASSEMBLER -segT reg_section; -segT expr_section; -segT text_section; -segT data_section; -segT bss_section; -#endif - -/* Name of listing file. */ -static char *listing_filename = NULL; - -static struct defsym_list *defsyms; - -static struct itbl_file_list *itbl_files; - -static long start_time; - - -#ifdef USE_EMULATIONS -#define EMULATION_ENVIRON "AS_EMULATION" - -extern struct emulation mipsbelf, mipslelf, mipself; -extern struct emulation mipsbecoff, mipslecoff, mipsecoff; -extern struct emulation i386coff, i386elf, i386aout; -extern struct emulation crisaout, criself; - -static struct emulation *const emulations[] = { EMULATIONS }; -static const int n_emulations = sizeof (emulations) / sizeof (emulations[0]); - -static void -select_emulation_mode (int argc, char **argv) -{ - int i; - char *p, *em = 0; - - for (i = 1; i < argc; i++) - if (!strncmp ("--em", argv[i], 4)) - break; - - if (i == argc) - goto do_default; - - p = strchr (argv[i], '='); - if (p) - p++; - else - p = argv[i + 1]; - - if (!p || !*p) - as_fatal (_("missing emulation mode name")); - em = p; - - do_default: - if (em == 0) - em = getenv (EMULATION_ENVIRON); - if (em == 0) - em = DEFAULT_EMULATION; - - if (em) - { - for (i = 0; i < n_emulations; i++) - if (!strcmp (emulations[i]->name, em)) - break; - if (i == n_emulations) - as_fatal (_("unrecognized emulation name `%s'"), em); - this_emulation = emulations[i]; - } - else - this_emulation = emulations[0]; - - this_emulation->init (); -} - -const char * -default_emul_bfd_name (void) -{ - abort (); - return NULL; -} - -void -common_emul_init (void) -{ - this_format = this_emulation->format; - - if (this_emulation->leading_underscore == 2) - this_emulation->leading_underscore = this_format->dfl_leading_underscore; - - if (this_emulation->default_endian != 2) - target_big_endian = this_emulation->default_endian; - - if (this_emulation->fake_label_name == 0) - { - if (this_emulation->leading_underscore) - this_emulation->fake_label_name = "L0\001"; - else - /* What other parameters should we test? */ - this_emulation->fake_label_name = ".L0\001"; - } -} -#endif - -void -print_version_id (void) -{ - static int printed; - - if (printed) - return; - printed = 1; - -#ifdef BFD_ASSEMBLER - fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s"), - VERSION, TARGET_ALIAS, BFD_VERSION_STRING); -#else - fprintf (stderr, _("GNU assembler version %s (%s)"), VERSION, TARGET_ALIAS); -#endif - fprintf (stderr, "\n"); -} - -static void -show_usage (FILE * stream) -{ - fprintf (stream, _("Usage: %s [option...] [asmfile...]\n"), myname); - - fprintf (stream, _("\ -Options:\n\ - -a[sub-option...] turn on listings\n\ - Sub-options [default hls]:\n\ - c omit false conditionals\n\ - d omit debugging directives\n\ - h include high-level source\n\ - l include assembly\n\ - m include macro expansions\n\ - n omit forms processing\n\ - s include symbols\n\ - =FILE list to FILE (must be last sub-option)\n")); - - fprintf (stream, _("\ - -D produce assembler debugging messages\n")); - fprintf (stream, _("\ - --defsym SYM=VAL define symbol SYM to given value\n")); -#ifdef USE_EMULATIONS - { - int i; - char *def_em; - - fprintf (stream, "\ - --em=["); - for (i = 0; i < n_emulations - 1; i++) - fprintf (stream, "%s | ", emulations[i]->name); - fprintf (stream, "%s]\n", emulations[i]->name); - - def_em = getenv (EMULATION_ENVIRON); - if (!def_em) - def_em = DEFAULT_EMULATION; - fprintf (stream, _("\ - emulate output (default %s)\n"), def_em); - } -#endif -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) - fprintf (stream, _("\ - --execstack require executable stack for this object\n")); - fprintf (stream, _("\ - --noexecstack don't require executable stack for this object\n")); -#endif - fprintf (stream, _("\ - -f skip whitespace and comment preprocessing\n")); - fprintf (stream, _("\ - --gstabs generate stabs debugging information\n")); - fprintf (stream, _("\ - --gstabs+ generate stabs debug info with GNU extensions\n")); - fprintf (stream, _("\ - --gdwarf2 generate DWARF2 debugging information\n")); - fprintf (stream, _("\ - --help show this message and exit\n")); - fprintf (stream, _("\ - --target-help show target specific options\n")); - fprintf (stream, _("\ - -I DIR add DIR to search list for .include directives\n")); - fprintf (stream, _("\ - -J don't warn about signed overflow\n")); - fprintf (stream, _("\ - -K warn when differences altered for long displacements\n")); - fprintf (stream, _("\ - -L,--keep-locals keep local symbols (e.g. starting with `L')\n")); - fprintf (stream, _("\ - -M,--mri assemble in MRI compatibility mode\n")); - fprintf (stream, _("\ - --MD FILE write dependency information in FILE (default none)\n")); - fprintf (stream, _("\ - -nocpp ignored\n")); - fprintf (stream, _("\ - -o OBJFILE name the object-file output OBJFILE (default a.out)\n")); - fprintf (stream, _("\ - -R fold data section into text section\n")); - fprintf (stream, _("\ - --statistics print various measured statistics from execution\n")); - fprintf (stream, _("\ - --strip-local-absolute strip local absolute symbols\n")); - fprintf (stream, _("\ - --traditional-format Use same format as native assembler when possible\n")); - fprintf (stream, _("\ - --version print assembler version number and exit\n")); - fprintf (stream, _("\ - -W --no-warn suppress warnings\n")); - fprintf (stream, _("\ - --warn don't suppress warnings\n")); - fprintf (stream, _("\ - --fatal-warnings treat warnings as errors\n")); - fprintf (stream, _("\ - --itbl INSTTBL extend instruction set to include instructions\n\ - matching the specifications defined in file INSTTBL\n")); - fprintf (stream, _("\ - -w ignored\n")); - fprintf (stream, _("\ - -X ignored\n")); - fprintf (stream, _("\ - -Z generate object file even after errors\n")); - fprintf (stream, _("\ - --listing-lhs-width set the width in words of the output data column of\n\ - the listing\n")); - fprintf (stream, _("\ - --listing-lhs-width2 set the width in words of the continuation lines\n\ - of the output data column; ignored if smaller than\n\ - the width of the first line\n")); - fprintf (stream, _("\ - --listing-rhs-width set the max width in characters of the lines from\n\ - the source file\n")); - fprintf (stream, _("\ - --listing-cont-lines set the maximum number of continuation lines used\n\ - for the output data column of the listing\n")); - - md_show_usage (stream); - - fputc ('\n', stream); - fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); -} - -/* Since it is easy to do here we interpret the special arg "-" - to mean "use stdin" and we set that argv[] pointing to "". - After we have munged argv[], the only things left are source file - name(s) and ""(s) denoting stdin. These file names are used - (perhaps more than once) later. - - check for new machine-dep cmdline options in - md_parse_option definitions in config/tc-*.c. */ - -static void -parse_args (int * pargc, char *** pargv) -{ - int old_argc; - int new_argc; - char ** old_argv; - char ** new_argv; - /* Starting the short option string with '-' is for programs that - expect options and other ARGV-elements in any order and that care about - the ordering of the two. We describe each non-option ARGV-element - as if it were the argument of an option with character code 1. */ - char *shortopts; - extern const char *md_shortopts; - static const char std_shortopts[] = - { - '-', 'J', -#ifndef WORKING_DOT_WORD - /* -K is not meaningful if .word is not being hacked. */ - 'K', -#endif - 'L', 'M', 'R', 'W', 'Z', 'a', ':', ':', 'D', 'f', 'I', ':', 'o', ':', -#ifndef VMS - /* -v takes an argument on VMS, so we don't make it a generic - option. */ - 'v', -#endif - 'w', 'X', - /* New option for extending instruction set (see also --itbl below). */ - 't', ':', - '\0' - }; - struct option *longopts; - extern struct option md_longopts[]; - extern size_t md_longopts_size; - /* Codes used for the long options with no short synonyms. */ - enum option_values - { - OPTION_HELP = OPTION_STD_BASE, - OPTION_NOCPP, - OPTION_STATISTICS, - OPTION_VERSION, - OPTION_DUMPCONFIG, - OPTION_VERBOSE, - OPTION_EMULATION, - OPTION_DEFSYM, - OPTION_INSTTBL, - OPTION_LISTING_LHS_WIDTH, - OPTION_LISTING_LHS_WIDTH2, - OPTION_LISTING_RHS_WIDTH, - OPTION_LISTING_CONT_LINES, - OPTION_DEPFILE, - OPTION_GSTABS, - OPTION_GSTABS_PLUS, - OPTION_STRIP_LOCAL_ABSOLUTE, - OPTION_TRADITIONAL_FORMAT, - OPTION_GDWARF2, - OPTION_WARN, - OPTION_TARGET_HELP, - OPTION_EXECSTACK, - OPTION_NOEXECSTACK, - OPTION_WARN_FATAL - }; - - static const struct option std_longopts[] = - { - {"help", no_argument, NULL, OPTION_HELP}, - /* getopt allows abbreviations, so we do this to stop it from - treating -k as an abbreviation for --keep-locals. Some - ports use -k to enable PIC assembly. */ - {"keep-locals", no_argument, NULL, 'L'}, - {"keep-locals", no_argument, NULL, 'L'}, - {"mri", no_argument, NULL, 'M'}, - {"nocpp", no_argument, NULL, OPTION_NOCPP}, - {"statistics", no_argument, NULL, OPTION_STATISTICS}, - {"version", no_argument, NULL, OPTION_VERSION}, - {"dump-config", no_argument, NULL, OPTION_DUMPCONFIG}, - {"verbose", no_argument, NULL, OPTION_VERBOSE}, - {"emulation", required_argument, NULL, OPTION_EMULATION}, - {"defsym", required_argument, NULL, OPTION_DEFSYM}, - /* New option for extending instruction set (see also -t above). - The "-t file" or "--itbl file" option extends the basic set of - valid instructions by reading "file", a text file containing a - list of instruction formats. The additional opcodes and their - formats are added to the built-in set of instructions, and - mnemonics for new registers may also be defined. */ - {"itbl", required_argument, NULL, OPTION_INSTTBL}, - {"listing-lhs-width", required_argument, NULL, OPTION_LISTING_LHS_WIDTH}, - {"listing-lhs-width2", required_argument, NULL, OPTION_LISTING_LHS_WIDTH2}, - {"listing-rhs-width", required_argument, NULL, OPTION_LISTING_RHS_WIDTH}, - {"listing-cont-lines", required_argument, NULL, OPTION_LISTING_CONT_LINES}, - {"MD", required_argument, NULL, OPTION_DEPFILE}, - {"gstabs", no_argument, NULL, OPTION_GSTABS}, - {"gstabs+", no_argument, NULL, OPTION_GSTABS_PLUS}, - {"strip-local-absolute", no_argument, NULL, OPTION_STRIP_LOCAL_ABSOLUTE}, - {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT}, - {"gdwarf2", no_argument, NULL, OPTION_GDWARF2}, - {"no-warn", no_argument, NULL, 'W'}, - {"warn", no_argument, NULL, OPTION_WARN}, - {"target-help", no_argument, NULL, OPTION_TARGET_HELP}, -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) - {"execstack", no_argument, NULL, OPTION_EXECSTACK}, - {"noexecstack", no_argument, NULL, OPTION_NOEXECSTACK}, -#endif - {"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL} - /* When you add options here, check that they do not collide with - OPTION_MD_BASE. See as.h. */ - }; - - /* Construct the option lists from the standard list and the target - dependent list. Include space for an extra NULL option and - always NULL terminate. */ - shortopts = concat (std_shortopts, md_shortopts, (char *) NULL); - longopts = xmalloc (sizeof (std_longopts) + md_longopts_size + sizeof (struct option)); - memcpy (longopts, std_longopts, sizeof (std_longopts)); - memcpy (((char *) longopts) + sizeof (std_longopts), md_longopts, md_longopts_size); - memset (((char *) longopts) + sizeof (std_longopts) + md_longopts_size, - 0, sizeof (struct option)); - - /* Make a local copy of the old argv. */ - old_argc = *pargc; - old_argv = *pargv; - - /* Initialize a new argv that contains no options. */ - new_argv = xmalloc (sizeof (char *) * (old_argc + 1)); - new_argv[0] = old_argv[0]; - new_argc = 1; - new_argv[new_argc] = NULL; - - while (1) - { - /* getopt_long_only is like getopt_long, but '-' as well as '--' can - indicate a long option. */ - int longind; - int optc = getopt_long_only (old_argc, old_argv, shortopts, longopts, - &longind); - - if (optc == -1) - break; - - switch (optc) - { - default: - /* md_parse_option should return 1 if it recognizes optc, - 0 if not. */ - if (md_parse_option (optc, optarg) != 0) - break; - /* `-v' isn't included in the general short_opts list, so check for - it explicitly here before deciding we've gotten a bad argument. */ - if (optc == 'v') - { -#ifdef VMS - /* Telling getopt to treat -v's value as optional can result - in it picking up a following filename argument here. The - VMS code in md_parse_option can return 0 in that case, - but it has no way of pushing the filename argument back. */ - if (optarg && *optarg) - new_argv[new_argc++] = optarg, new_argv[new_argc] = NULL; - else -#else - case 'v': -#endif - case OPTION_VERBOSE: - print_version_id (); - verbose = 1; - break; - } - /* Fall through. */ - - case '?': - exit (EXIT_FAILURE); - - case 1: /* File name. */ - if (!strcmp (optarg, "-")) - optarg = ""; - new_argv[new_argc++] = optarg; - new_argv[new_argc] = NULL; - break; - - case OPTION_TARGET_HELP: - md_show_usage (stdout); - exit (EXIT_SUCCESS); - - case OPTION_HELP: - show_usage (stdout); - exit (EXIT_SUCCESS); - - case OPTION_NOCPP: - break; - - case OPTION_STATISTICS: - flag_print_statistics = 1; - break; - - case OPTION_STRIP_LOCAL_ABSOLUTE: - flag_strip_local_absolute = 1; - break; - - case OPTION_TRADITIONAL_FORMAT: - flag_traditional_format = 1; - break; - - case OPTION_VERSION: - /* This output is intended to follow the GNU standards document. */ -#ifdef BFD_ASSEMBLER - printf (_("GNU assembler %s\n"), BFD_VERSION_STRING); -#else - printf (_("GNU assembler %s\n"), VERSION); -#endif - printf (_("Copyright 2002 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. This program has absolutely no warranty.\n")); - printf (_("This assembler was configured for a target of `%s'.\n"), - TARGET_ALIAS); - exit (EXIT_SUCCESS); - - case OPTION_EMULATION: -#ifdef USE_EMULATIONS - if (strcmp (optarg, this_emulation->name)) - as_fatal (_("multiple emulation names specified")); -#else - as_fatal (_("emulations not handled in this configuration")); -#endif - break; - - case OPTION_DUMPCONFIG: - fprintf (stderr, _("alias = %s\n"), TARGET_ALIAS); - fprintf (stderr, _("canonical = %s\n"), TARGET_CANONICAL); - fprintf (stderr, _("cpu-type = %s\n"), TARGET_CPU); -#ifdef TARGET_OBJ_FORMAT - fprintf (stderr, _("format = %s\n"), TARGET_OBJ_FORMAT); -#endif -#ifdef TARGET_FORMAT - fprintf (stderr, _("bfd-target = %s\n"), TARGET_FORMAT); -#endif - exit (EXIT_SUCCESS); - - case OPTION_DEFSYM: - { - char *s; - valueT i; - struct defsym_list *n; - - for (s = optarg; *s != '\0' && *s != '='; s++) - ; - if (*s == '\0') - as_fatal (_("bad defsym; format is --defsym name=value")); - *s++ = '\0'; -#ifdef BFD_ASSEMBLER - i = bfd_scan_vma (s, (const char **) NULL, 0); -#else - i = strtol (s, (char **) NULL, 0); -#endif - n = xmalloc (sizeof *n); - n->next = defsyms; - n->name = optarg; - n->value = i; - defsyms = n; - } - break; - - case OPTION_INSTTBL: - case 't': - { - /* optarg is the name of the file containing the instruction - formats, opcodes, register names, etc. */ - struct itbl_file_list *n; - - if (optarg == NULL) - { - as_warn (_("no file name following -t option")); - break; - } - - n = xmalloc (sizeof * n); - n->next = itbl_files; - n->name = optarg; - itbl_files = n; - - /* Parse the file and add the new instructions to our internal - table. If multiple instruction tables are specified, the - information from this table gets appended onto the existing - internal table. */ - itbl_files->name = xstrdup (optarg); - if (itbl_parse (itbl_files->name) != 0) - as_fatal (_("failed to read instruction table %s\n"), - itbl_files->name); - } - break; - - case OPTION_DEPFILE: - start_dependencies (optarg); - break; - - case OPTION_GSTABS_PLUS: - use_gnu_debug_info_extensions = 1; - /* Fall through. */ - case OPTION_GSTABS: - debug_type = DEBUG_STABS; - break; - - case OPTION_GDWARF2: - debug_type = DEBUG_DWARF2; - break; - - case 'J': - flag_signed_overflow_ok = 1; - break; - -#ifndef WORKING_DOT_WORD - case 'K': - flag_warn_displacement = 1; - break; -#endif - case 'L': - flag_keep_locals = 1; - break; - - case OPTION_LISTING_LHS_WIDTH: - listing_lhs_width = atoi (optarg); - if (listing_lhs_width_second < listing_lhs_width) - listing_lhs_width_second = listing_lhs_width; - break; - case OPTION_LISTING_LHS_WIDTH2: - { - int tmp = atoi (optarg); - if (tmp > listing_lhs_width) - listing_lhs_width_second = tmp; - } - break; - case OPTION_LISTING_RHS_WIDTH: - listing_rhs_width = atoi (optarg); - break; - case OPTION_LISTING_CONT_LINES: - listing_lhs_cont_lines = atoi (optarg); - break; - - case 'M': - flag_mri = 1; -#ifdef TC_M68K - flag_m68k_mri = 1; -#endif - break; - - case 'R': - flag_readonly_data_in_text = 1; - break; - - case 'W': - flag_no_warnings = 1; - break; - - case OPTION_WARN: - flag_no_warnings = 0; - flag_fatal_warnings = 0; - break; - - case OPTION_WARN_FATAL: - flag_no_warnings = 0; - flag_fatal_warnings = 1; - break; - -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) - case OPTION_EXECSTACK: - flag_execstack = 1; - flag_noexecstack = 0; - break; - - case OPTION_NOEXECSTACK: - flag_noexecstack = 1; - flag_execstack = 0; - break; -#endif - case 'Z': - flag_always_generate_output = 1; - break; - - case 'a': - if (optarg) - { - if (md_parse_option (optc, optarg) != 0) - break; - - while (*optarg) - { - switch (*optarg) - { - case 'c': - listing |= LISTING_NOCOND; - break; - case 'd': - listing |= LISTING_NODEBUG; - break; - case 'h': - listing |= LISTING_HLL; - break; - case 'l': - listing |= LISTING_LISTING; - break; - case 'm': - listing |= LISTING_MACEXP; - break; - case 'n': - listing |= LISTING_NOFORM; - break; - case 's': - listing |= LISTING_SYMBOLS; - break; - case '=': - listing_filename = xstrdup (optarg + 1); - optarg += strlen (listing_filename); - break; - default: - as_fatal (_("invalid listing option `%c'"), *optarg); - break; - } - optarg++; - } - } - if (!listing) - listing = LISTING_DEFAULT; - break; - - case 'D': - /* DEBUG is implemented: it debugs different - things from other people's assemblers. */ - flag_debug = 1; - break; - - case 'f': - flag_no_comments = 1; - break; - - case 'I': - { /* Include file directory. */ - char *temp = xstrdup (optarg); - add_include_dir (temp); - break; - } - - case 'o': - out_file_name = xstrdup (optarg); - break; - - case 'w': - break; - - case 'X': - /* -X means treat warnings as errors. */ - break; - } - } - - free (shortopts); - free (longopts); - - *pargc = new_argc; - *pargv = new_argv; - -#ifdef md_after_parse_args - md_after_parse_args (); -#endif -} - -static void -dump_statistics (void) -{ -#ifdef HAVE_SBRK - char *lim = (char *) sbrk (0); -#endif - long run_time = get_run_time () - start_time; - - fprintf (stderr, _("%s: total time in assembly: %ld.%06ld\n"), - myname, run_time / 1000000, run_time % 1000000); -#ifdef HAVE_SBRK - fprintf (stderr, _("%s: data size %ld\n"), - myname, (long) (lim - (char *) &environ)); -#endif - - subsegs_print_statistics (stderr); - write_print_statistics (stderr); - symbol_print_statistics (stderr); - read_print_statistics (stderr); - -#ifdef tc_print_statistics - tc_print_statistics (stderr); -#endif - -#ifdef obj_print_statistics - obj_print_statistics (stderr); -#endif -} - -/* The interface between the macro code and gas expression handling. */ - -static int -macro_expr (const char *emsg, int idx, sb *in, int *val) -{ - char *hold; - expressionS ex; - - sb_terminate (in); - - hold = input_line_pointer; - input_line_pointer = in->ptr + idx; - expression (&ex); - idx = input_line_pointer - in->ptr; - input_line_pointer = hold; - - if (ex.X_op != O_constant) - as_bad ("%s", emsg); - - *val = (int) ex.X_add_number; - - return idx; -} - -/* Here to attempt 1 pass over each input file. - We scan argv[*] looking for filenames or exactly "" which is - shorthand for stdin. Any argv that is NULL is not a file-name. - We set need_pass_2 TRUE if, after this, we still have unresolved - expressions of the form (unknown value)+-(unknown value). - - Note the un*x semantics: there is only 1 logical input file, but it - may be a catenation of many 'physical' input files. */ - -static void -perform_an_assembly_pass (int argc, char ** argv) -{ - int saw_a_file = 0; -#ifdef BFD_ASSEMBLER - flagword applicable; -#endif - - need_pass_2 = 0; - -#ifndef BFD_ASSEMBLER -#ifdef MANY_SEGMENTS - { - unsigned int i; - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - segment_info[i].fix_root = 0; - } - /* Create the three fixed ones. */ - { - segT seg; - -#ifdef TE_APOLLO - seg = subseg_new (".wtext", 0); -#else - seg = subseg_new (".text", 0); -#endif - assert (seg == SEG_E0); - seg = subseg_new (".data", 0); - assert (seg == SEG_E1); - seg = subseg_new (".bss", 0); - assert (seg == SEG_E2); -#ifdef TE_APOLLO - create_target_segments (); -#endif - } - -#else /* not MANY_SEGMENTS. */ - text_fix_root = NULL; - data_fix_root = NULL; - bss_fix_root = NULL; -#endif /* not MANY_SEGMENTS. */ -#else /* BFD_ASSEMBLER. */ - /* Create the standard sections, and those the assembler uses - internally. */ - text_section = subseg_new (TEXT_SECTION_NAME, 0); - data_section = subseg_new (DATA_SECTION_NAME, 0); - bss_section = subseg_new (BSS_SECTION_NAME, 0); - /* @@ FIXME -- we're setting the RELOC flag so that sections are assumed - to have relocs, otherwise we don't find out in time. */ - applicable = bfd_applicable_section_flags (stdoutput); - bfd_set_section_flags (stdoutput, text_section, - applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_CODE | SEC_READONLY)); - bfd_set_section_flags (stdoutput, data_section, - applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_DATA)); - bfd_set_section_flags (stdoutput, bss_section, applicable & SEC_ALLOC); - seg_info (bss_section)->bss = 1; - subseg_new (BFD_ABS_SECTION_NAME, 0); - subseg_new (BFD_UND_SECTION_NAME, 0); - reg_section = subseg_new ("*GAS `reg' section*", 0); - expr_section = subseg_new ("*GAS `expr' section*", 0); - -#endif /* BFD_ASSEMBLER. */ - - subseg_set (text_section, 0); - - /* This may add symbol table entries, which requires having an open BFD, - and sections already created, in BFD_ASSEMBLER mode. */ - md_begin (); - -#ifdef USING_CGEN - gas_cgen_begin (); -#endif -#ifdef obj_begin - obj_begin (); -#endif - - /* Skip argv[0]. */ - argv++; - argc--; - - while (argc--) - { - if (*argv) - { /* Is it a file-name argument? */ - PROGRESS (1); - saw_a_file++; - /* argv->"" if stdin desired, else->filename. */ - read_a_source_file (*argv); - } - argv++; /* Completed that argv. */ - } - if (!saw_a_file) - read_a_source_file (""); -} - - -int -main (int argc, char ** argv) -{ - int macro_alternate; - int macro_strip_at; - int keep_it; - - start_time = get_run_time (); - -#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); - - if (debug_memory) - chunksize = 64; - -#ifdef HOST_SPECIAL_INIT - HOST_SPECIAL_INIT (argc, argv); -#endif - - myname = argv[0]; - xmalloc_set_program_name (myname); - - START_PROGRESS (myname, 0); - -#ifndef OBJ_DEFAULT_OUTPUT_FILE_NAME -#define OBJ_DEFAULT_OUTPUT_FILE_NAME "a.out" -#endif - - out_file_name = OBJ_DEFAULT_OUTPUT_FILE_NAME; - - hex_init (); -#ifdef BFD_ASSEMBLER - bfd_init (); - bfd_set_error_program_name (myname); -#endif - -#ifdef USE_EMULATIONS - select_emulation_mode (argc, argv); -#endif - - PROGRESS (1); - symbol_begin (); - frag_init (); - subsegs_begin (); - parse_args (&argc, &argv); - read_begin (); - input_scrub_begin (); - expr_begin (); - - if (flag_print_statistics) - xatexit (dump_statistics); - - macro_alternate = 0; - macro_strip_at = 0; -#ifdef TC_I960 - macro_strip_at = flag_mri; -#endif -#ifdef TC_A29K - /* For compatibility with the AMD 29K family macro assembler - specification. */ - macro_alternate = 1; - macro_strip_at = 1; -#endif - - macro_init (macro_alternate, flag_mri, macro_strip_at, macro_expr); - - PROGRESS (1); - -#ifdef BFD_ASSEMBLER - output_file_create (out_file_name); - assert (stdoutput != 0); -#endif - -#ifdef tc_init_after_args - tc_init_after_args (); -#endif - - itbl_init (); - - /* Now that we have fully initialized, and have created the output - file, define any symbols requested by --defsym command line - arguments. */ - while (defsyms != NULL) - { - symbolS *sym; - struct defsym_list *next; - - sym = symbol_new (defsyms->name, absolute_section, defsyms->value, - &zero_address_frag); - symbol_table_insert (sym); - next = defsyms->next; - free (defsyms); - defsyms = next; - } - - PROGRESS (1); - - /* Assemble it. */ - perform_an_assembly_pass (argc, argv); - - cond_finish_check (-1); - -#ifdef md_end - md_end (); -#endif - -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) - if ((flag_execstack || flag_noexecstack) - && OUTPUT_FLAVOR == bfd_target_elf_flavour) - { - segT gnustack; - - gnustack = subseg_new (".note.GNU-stack", 0); - bfd_set_section_flags (stdoutput, gnustack, - SEC_READONLY | (flag_execstack ? SEC_CODE : 0)); - - } -#endif - - /* If we've been collecting dwarf2 .debug_line info, either for - assembly debugging or on behalf of the compiler, emit it now. */ - dwarf2_finish (); - - /* If we constructed dwarf2 .eh_frame info, either via .cfi - directives from the user or by the backend, emit it now. */ - cfi_finish (); - - if (seen_at_least_1_file () - && (flag_always_generate_output || had_errors () == 0)) - keep_it = 1; - else - keep_it = 0; - -#if defined (BFD_ASSEMBLER) || !defined (BFD) - /* This used to be done at the start of write_object_file in - write.c, but that caused problems when doing listings when - keep_it was zero. This could probably be moved above md_end, but - I didn't want to risk the change. */ - subsegs_finish (); -#endif - - if (keep_it) - write_object_file (); - -#ifndef NO_LISTING - listing_print (listing_filename); -#endif - -#ifndef OBJ_VMS /* Does its own file handling. */ -#ifndef BFD_ASSEMBLER - if (keep_it) -#endif - output_file_close (out_file_name); -#endif - - if (flag_fatal_warnings && had_warnings () > 0 && had_errors () == 0) - as_bad (_("%d warnings, treating warnings as errors"), had_warnings ()); - - if (had_errors () > 0 && ! flag_always_generate_output) - keep_it = 0; - - if (!keep_it) - unlink (out_file_name); - - input_scrub_end (); - - END_PROGRESS (myname); - - /* Use xexit instead of return, because under VMS environments they - may not place the same interpretation on the value given. */ - if (had_errors () > 0) - xexit (EXIT_FAILURE); - - /* Only generate dependency file if assembler was successful. */ - print_dependencies (); - - xexit (EXIT_SUCCESS); -} - diff --git a/gas/as.h b/gas/as.h deleted file mode 100644 index 890ecd8f1..000000000 --- a/gas/as.h +++ /dev/null @@ -1,701 +0,0 @@ -/* as.h - global header file - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef GAS -#define GAS 1 -/* I think this stuff is largely out of date. xoxorich. - * - * CAPITALISED names are #defined. - * "lowercaseH" is #defined if "lowercase.h" has been #include-d. - * "lowercaseT" is a typedef of "lowercase" objects. - * "lowercaseP" is type "pointer to object of type 'lowercase'". - * "lowercaseS" is typedef struct ... lowercaseS. - * - * #define DEBUG to enable all the "know" assertion tests. - * #define SUSPECT when debugging hash code. - * #define COMMON as "extern" for all modules except one, where you #define - * COMMON as "". - * If TEST is #defined, then we are testing a module: #define COMMON as "". - */ - -#include "config.h" -#include "bin-bugs.h" - -/* This is the code recommended in the autoconf documentation, almost - verbatim. If it doesn't work for you, let me know, and notify - djm@gnu.ai.mit.edu as well. */ -/* Added void* version for STDC case. This is to be compatible with - the declaration in bison.simple, used for m68k operand parsing. - --KR 1995.08.08 */ -/* Force void* decl for hpux. This is what Bison uses. --KR 1995.08.16 */ - -#ifndef __GNUC__ -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX -/* Indented so that pre-ansi C compilers will ignore it, rather than - choke on it. Some versions of AIX require this to be the first - thing in the file. */ - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -# if !defined (__STDC__) && !defined (__hpux) -extern char *alloca (); -# else -extern void *alloca (); -# endif /* __STDC__, __hpux */ -# endif /* alloca */ -# endif /* _AIX */ -# endif /* HAVE_ALLOCA_H */ -#endif /* __GNUC__ */ - -/* Now, tend to the rest of the configuration. */ - -/* System include files first... */ -#include -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -/* for size_t, pid_t */ -#include -#endif - -#include "getopt.h" -/* The first getopt value for machine-independent long options. - 150 isn't special; it's just an arbitrary non-ASCII char value. */ -#define OPTION_STD_BASE 150 -/* The first getopt value for machine-dependent long options. - 190 gives the standard options room to grow. */ -#define OPTION_MD_BASE 190 - -#ifdef DEBUG -#undef NDEBUG -#endif -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6) -#define __PRETTY_FUNCTION__ ((char*)0) -#endif -#if 0 - -/* Handle lossage with assert.h. */ -#ifndef BROKEN_ASSERT -#include -#else /* BROKEN_ASSERT */ -#ifndef NDEBUG -#define assert(p) ((p) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0)) -#else -#define assert(p) ((p), 0) -#endif -#endif /* BROKEN_ASSERT */ - -#else - -#define assert(P) ((P) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0)) -#undef abort -#define abort() as_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__) - -#endif - -/* Now GNU header files... */ -#include "ansidecl.h" -#ifdef BFD_ASSEMBLER -#include "bfd.h" -#endif -#include "libiberty.h" - -/* Define the standard progress macros. */ -#include "progress.h" - -/* This doesn't get taken care of anywhere. */ -#ifndef __MWERKS__ /* Metrowerks C chokes on the "defined (inline)" */ -#if !defined (__GNUC__) && !defined (inline) -#define inline -#endif -#endif /* !__MWERKS__ */ - -/* Other stuff from config.h. */ -#ifdef NEED_DECLARATION_STRSTR -extern char *strstr (); -#endif -#ifdef NEED_DECLARATION_MALLOC -extern PTR malloc (); -extern PTR realloc (); -#endif -#ifdef NEED_DECLARATION_FREE -extern void free (); -#endif -#ifdef NEED_DECLARATION_ERRNO -extern int errno; -#endif -#ifdef NEED_DECLARATION_ENVIRON -extern char **environ; -#endif - -/* This is needed for VMS. */ -#if ! defined (HAVE_UNLINK) && defined (HAVE_REMOVE) -#define unlink remove -#endif - -/* Hack to make "gcc -Wall" not complain about obstack macros. */ -#if !defined (memcpy) && !defined (bcopy) -#define bcopy(src,dest,size) memcpy (dest, src, size) -#endif - -/* Make Saber happier on obstack.h. */ -#ifdef SABER -#undef __PTR_TO_INT -#define __PTR_TO_INT(P) ((int) (P)) -#undef __INT_TO_PTR -#define __INT_TO_PTR(P) ((char *) (P)) -#endif - -#ifndef __LINE__ -#define __LINE__ "unknown" -#endif /* __LINE__ */ - -#ifndef __FILE__ -#define __FILE__ "unknown" -#endif /* __FILE__ */ - -#ifndef FOPEN_WB -#if defined GO32 || defined __MINGW32__ -#include "fopen-bin.h" -#else -#include "fopen-same.h" -#endif -#endif - -#ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -#define obstack_chunk_alloc xmalloc -#define obstack_chunk_free xfree - -#define xfree free - -#include "asintl.h" - -#define BAD_CASE(val) \ - { \ - as_fatal (_("Case value %ld unexpected at line %d of file \"%s\"\n"), \ - (long) val, __LINE__, __FILE__); \ - } - -#include "flonum.h" - -/* These are assembler-wide concepts */ - -#ifdef BFD_ASSEMBLER -extern bfd *stdoutput; -typedef bfd_vma addressT; -typedef bfd_signed_vma offsetT; -#else -typedef unsigned long addressT; -typedef long offsetT; -#endif - -/* Type of symbol value, etc. For use in prototypes. */ -typedef addressT valueT; - -#ifndef COMMON -#ifdef TEST -#define COMMON /* declare our COMMONs storage here. */ -#else -#define COMMON extern /* our commons live elsewhere */ -#endif -#endif -/* COMMON now defined */ - -#ifdef DEBUG -#ifndef know -#define know(p) assert(p) /* Verify our assumptions! */ -#endif /* not yet defined */ -#else -#define know(p) /* know() checks are no-op.ed */ -#endif - -/* input_scrub.c */ - -/* Supplies sanitised buffers to read.c. - Also understands printing line-number part of error messages. */ - -/* subsegs.c Sub-segments. Also, segment(=expression type)s.*/ - -#ifndef BFD_ASSEMBLER - -#ifdef MANY_SEGMENTS -#include "bfd.h" -#define N_SEGMENTS 40 -#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E39) -#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,\ - SEG_E10,SEG_E11,SEG_E12,SEG_E13,SEG_E14,SEG_E15,SEG_E16,SEG_E17,SEG_E18,SEG_E19,\ - SEG_E20,SEG_E21,SEG_E22,SEG_E23,SEG_E24,SEG_E25,SEG_E26,SEG_E27,SEG_E28,SEG_E29,\ - SEG_E30,SEG_E31,SEG_E32,SEG_E33,SEG_E34,SEG_E35,SEG_E36,SEG_E37,SEG_E38,SEG_E39 -#define SEG_TEXT SEG_E0 -#define SEG_DATA SEG_E1 -#define SEG_BSS SEG_E2 -#define SEG_LAST SEG_E39 -#else -#define N_SEGMENTS 3 -#define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS) -#define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS -#endif - -typedef enum _segT { - SEG_ABSOLUTE = 0, - SEG_LIST, - SEG_UNKNOWN, - SEG_GOOF, /* Only happens if AS has a logic error. */ - /* Invented so we don't crash printing */ - /* error message involving weird segment. */ - SEG_EXPR, /* Intermediate expression values. */ - SEG_DEBUG, /* Debug segment */ - SEG_NTV, /* Transfert vector preload segment */ - SEG_PTV, /* Transfert vector postload segment */ - SEG_REGISTER /* Mythical: a register-valued expression */ -} segT; - -#define SEG_MAXIMUM_ORDINAL (SEG_REGISTER) -#else -typedef asection *segT; -#define SEG_NORMAL(SEG) ((SEG) != absolute_section \ - && (SEG) != undefined_section \ - && (SEG) != reg_section \ - && (SEG) != expr_section) -#endif -typedef int subsegT; - -/* What subseg we are accessing now? */ -COMMON subsegT now_subseg; - -/* Segment our instructions emit to. */ -COMMON segT now_seg; - -#ifdef BFD_ASSEMBLER -#define segment_name(SEG) bfd_get_section_name (stdoutput, SEG) -#else -extern char const *const seg_name[]; -#define segment_name(SEG) seg_name[(int) (SEG)] -#endif - -#ifndef BFD_ASSEMBLER -extern int section_alignment[]; -#endif - -#ifdef BFD_ASSEMBLER -extern segT reg_section, expr_section; -/* Shouldn't these be eliminated someday? */ -extern segT text_section, data_section, bss_section; -#define absolute_section bfd_abs_section_ptr -#define undefined_section bfd_und_section_ptr -#else -#define reg_section SEG_REGISTER -#define expr_section SEG_EXPR -#define text_section SEG_TEXT -#define data_section SEG_DATA -#define bss_section SEG_BSS -#define absolute_section SEG_ABSOLUTE -#define undefined_section SEG_UNKNOWN -#endif - -/* relax() */ - -enum _relax_state { - /* Variable chars to be repeated fr_offset times. - Fr_symbol unused. Used with fr_offset == 0 for a - constant length frag. */ - rs_fill = 1, - - /* Align. The fr_offset field holds the power of 2 to which to - align. The fr_var field holds the number of characters in the - fill pattern. The fr_subtype field holds the maximum number of - bytes to skip when aligning, or 0 if there is no maximum. */ - rs_align, - - /* Align code. The fr_offset field holds the power of 2 to which - to align. This type is only generated by machine specific - code, which is normally responsible for handling the fill - pattern. The fr_subtype field holds the maximum number of - bytes to skip when aligning, or 0 if there is no maximum. */ - rs_align_code, - - /* Test for alignment. Like rs_align, but used by several targets - to warn if data is not properly aligned. */ - rs_align_test, - - /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill - character. */ - rs_org, - -#ifndef WORKING_DOT_WORD - /* JF: gunpoint */ - rs_broken_word, -#endif - - /* machine-specific relaxable (or similarly alterable) instruction */ - rs_machine_dependent, - - /* .space directive with expression operand that needs to be computed - later. Similar to rs_org, but different. - fr_symbol: operand - 1 variable char: fill character */ - rs_space, - - /* A DWARF leb128 value; only ELF uses this. The subtype is 0 for - unsigned, 1 for signed. */ - rs_leb128, - - /* Exception frame information which we may be able to optimize. */ - rs_cfa, - - /* Cross-fragment dwarf2 line number optimization. */ - rs_dwarf2dbg -}; - -typedef enum _relax_state relax_stateT; - -/* This type is used in prototypes, so it can't be a type that will be - widened for argument passing. */ -typedef unsigned int relax_substateT; - -/* Enough bits for address, but still an integer type. - Could be a problem, cross-assembling for 64-bit machines. */ -typedef addressT relax_addressT; - -/* main program "as.c" (command arguments etc) */ - -COMMON unsigned char flag_no_comments; /* -f */ -COMMON unsigned char flag_debug; /* -D */ -COMMON unsigned char flag_signed_overflow_ok; /* -J */ -#ifndef WORKING_DOT_WORD -COMMON unsigned char flag_warn_displacement; /* -K */ -#endif - -/* True if local symbols should be retained. */ -COMMON int flag_keep_locals; /* -L */ - -/* True if we are assembling in MRI mode. */ -COMMON int flag_mri; - -/* Should the data section be made read-only and appended to the text - section? */ -COMMON unsigned char flag_readonly_data_in_text; /* -R */ - -/* True if warnings should be inhibited. */ -COMMON int flag_no_warnings; /* -W */ - -/* True if warnings count as errors. */ -COMMON int flag_fatal_warnings; /* --fatal-warnings */ - -/* True if we should attempt to generate output even if non-fatal errors - are detected. */ -COMMON unsigned char flag_always_generate_output; /* -Z */ - -/* This is true if the assembler should output time and space usage. */ -COMMON unsigned char flag_print_statistics; - -/* True if local absolute symbols are to be stripped. */ -COMMON int flag_strip_local_absolute; - -/* True if we should generate a traditional format object file. */ -COMMON int flag_traditional_format; - -/* TRUE if .note.GNU-stack section with SEC_CODE should be created */ -COMMON int flag_execstack; - -/* TRUE if .note.GNU-stack section with SEC_CODE should be created */ -COMMON int flag_noexecstack; - -/* name of emitted object file */ -COMMON char *out_file_name; - -/* name of file defining extensions to the basic instruction set */ -COMMON char *insttbl_file_name; - -/* TRUE if we need a second pass. */ -COMMON int need_pass_2; - -/* TRUE if we should do no relaxing, and - leave lots of padding. */ -COMMON int linkrelax; - -/* TRUE if we should produce a listing. */ -extern int listing; - -/* Type of debugging information we should generate. We currently support - stabs, ECOFF, and DWARF2. - - NOTE! This means debug information about the assembly source code itself - and _not_ about possible debug information from a high-level language. - This is especially relevant to DWARF2, since the compiler may emit line - number directives that the assembler resolves. */ - -enum debug_info_type { - DEBUG_UNSPECIFIED, - DEBUG_NONE, - DEBUG_STABS, - DEBUG_ECOFF, - DEBUG_DWARF, - DEBUG_DWARF2 -}; - -extern enum debug_info_type debug_type; -extern int use_gnu_debug_info_extensions; - -/* Maximum level of macro nesting. */ -extern int max_macro_nest; - -/* Verbosity level. */ -extern int verbose; - -/* Obstack chunk size. Keep large for efficient space use, make small to - increase malloc calls for monitoring memory allocation. */ -extern int chunksize; - -struct _pseudo_type { - /* assembler mnemonic, lower case, no '.' */ - const char *poc_name; - /* Do the work */ - void (*poc_handler) (int); - /* Value to pass to handler */ - int poc_val; -}; - -typedef struct _pseudo_type pseudo_typeS; - -/* Prefer varargs for non-ANSI compiler, since some will barf if the - ellipsis definition is used with a no-arguments declaration. */ -#if defined (HAVE_VARARGS_H) && !defined (__STDC__) -#undef HAVE_STDARG_H -#endif - -#if defined (HAVE_STDARG_H) -#define USE_STDARG -#endif -#if !defined (USE_STDARG) && defined (HAVE_VARARGS_H) -#define USE_VARARGS -#endif - -#ifdef USE_STDARG -#if (__GNUC__ >= 2) && !defined(VMS) -/* for use with -Wformat */ - -#if __GNUC__ == 2 && __GNUC_MINOR__ < 6 -/* Support for double underscores in attribute names was added in gcc - 2.6, so avoid them if we are using an earlier version. */ -#define __printf__ printf -#define __format__ format -#endif - -#define PRINTF_LIKE(FCN) \ - void FCN (const char *format, ...) \ - __attribute__ ((__format__ (__printf__, 1, 2))) -#define PRINTF_WHERE_LIKE(FCN) \ - void FCN (char *file, unsigned int line, const char *format, ...) \ - __attribute__ ((__format__ (__printf__, 3, 4))) - -#else /* __GNUC__ < 2 || defined(VMS) */ - -#define PRINTF_LIKE(FCN) void FCN (const char *format, ...) -#define PRINTF_WHERE_LIKE(FCN) void FCN (char *file, \ - unsigned int line, \ - const char *format, ...) - -#endif /* __GNUC__ < 2 || defined(VMS) */ - -#else /* ! USE_STDARG */ - -#define PRINTF_LIKE(FCN) void FCN () -#define PRINTF_WHERE_LIKE(FCN) void FCN () - -#endif /* ! USE_STDARG */ - -PRINTF_LIKE (as_bad); -PRINTF_LIKE (as_fatal) ATTRIBUTE_NORETURN; -PRINTF_LIKE (as_tsktsk); -PRINTF_LIKE (as_warn); -PRINTF_WHERE_LIKE (as_bad_where); -PRINTF_WHERE_LIKE (as_warn_where); - -void as_assert (const char *, int, const char *); -void as_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; - -void fprint_value (FILE *file, addressT value); -void sprint_value (char *buf, addressT value); - -int had_errors (void); -int had_warnings (void); - -void print_version_id (void); -char *app_push (void); -char *atof_ieee (char *str, int what_kind, LITTLENUM_TYPE * words); -char *input_scrub_include_file (char *filename, char *position); -extern void input_scrub_insert_line (const char *line); -extern void input_scrub_insert_file (char *path); -char *input_scrub_new_file (char *filename); -char *input_scrub_next_buffer (char **bufp); -int do_scrub_chars (int (*get) (char *, int), char *to, int tolen); -int gen_to_words (LITTLENUM_TYPE * words, int precision, - long exponent_bits); -int had_err (void); -int ignore_input (void); -void cond_finish_check (int); -void cond_exit_macro (int); -int seen_at_least_1_file (void); -void app_pop (char *arg); -void as_howmuch (FILE * stream); -void as_perror (const char *gripe, const char *filename); -void as_where (char **namep, unsigned int *linep); -void bump_line_counters (void); -void do_scrub_begin (int); -void input_scrub_begin (void); -void input_scrub_close (void); -void input_scrub_end (void); -int new_logical_line (char *fname, int line_number); -void subsegs_begin (void); -void subseg_change (segT seg, int subseg); -segT subseg_new (const char *name, subsegT subseg); -segT subseg_force_new (const char *name, subsegT subseg); -void subseg_set (segT seg, subsegT subseg); -#ifdef BFD_ASSEMBLER -segT subseg_get (const char *, int); -#endif -int subseg_text_p (segT); - -void start_dependencies (char *); -void register_dependency (char *); -void print_dependencies (void); - -struct expressionS; -struct fix; -typedef struct symbol symbolS; -struct relax_type; -typedef struct frag fragS; - -#ifdef BFD_ASSEMBLER -/* literal.c */ -valueT add_to_literal_pool (symbolS *, valueT, segT, int); -#endif - -int check_eh_frame (struct expressionS *, unsigned int *); -int eh_frame_estimate_size_before_relax (fragS *); -int eh_frame_relax_frag (fragS *); -void eh_frame_convert_frag (fragS *); - -int generic_force_reloc (struct fix *); - -#include "expr.h" /* Before targ-*.h */ - -/* this one starts the chain of target dependant headers */ -#include "targ-env.h" - -#ifdef OBJ_MAYBE_ELF -#define IS_ELF (OUTPUT_FLAVOR == bfd_target_elf_flavour) -#else -#ifdef OBJ_ELF -#define IS_ELF 1 -#else -#define IS_ELF 0 -#endif -#endif - -#include "write.h" -#include "frags.h" -#include "hash.h" -#include "read.h" -#include "symbols.h" - -#include "tc.h" -#include "obj.h" - -#ifdef USE_EMULATIONS -#include "emul.h" -#endif -#include "listing.h" - -#ifdef TC_M68K -/* True if we are assembling in m68k MRI mode. */ -COMMON int flag_m68k_mri; -#else -#define flag_m68k_mri 0 -#endif - -#ifdef WARN_COMMENTS -COMMON int warn_comment; -COMMON unsigned int found_comment; -COMMON char *found_comment_file; -#endif - -#ifndef NUMBERS_WITH_SUFFIX -#define NUMBERS_WITH_SUFFIX 0 -#endif - -#ifndef LOCAL_LABELS_DOLLAR -#define LOCAL_LABELS_DOLLAR 0 -#endif - -#ifndef LOCAL_LABELS_FB -#define LOCAL_LABELS_FB 0 -#endif - -#ifndef LABELS_WITHOUT_COLONS -#define LABELS_WITHOUT_COLONS 0 -#endif - -#ifndef NO_PSEUDO_DOT -#define NO_PSEUDO_DOT 0 -#endif - -#ifndef TEXT_SECTION_NAME -#define TEXT_SECTION_NAME ".text" -#define DATA_SECTION_NAME ".data" -#define BSS_SECTION_NAME ".bss" -#endif - -#ifndef OCTETS_PER_BYTE_POWER -#define OCTETS_PER_BYTE_POWER 0 -#endif -#ifndef OCTETS_PER_BYTE -#define OCTETS_PER_BYTE (1< - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifdef HAVE_LOCALE_H -# include -#endif - -#ifdef ENABLE_NLS -# include -# 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 diff --git a/gas/atof-generic.c b/gas/atof-generic.c deleted file mode 100644 index 8c599b571..000000000 --- a/gas/atof-generic.c +++ /dev/null @@ -1,630 +0,0 @@ -/* atof_generic.c - turn a string of digits into a Flonum - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include - -#include "as.h" -#include "safe-ctype.h" - -#ifndef FALSE -#define FALSE (0) -#endif -#ifndef TRUE -#define TRUE (1) -#endif - -#ifdef TRACE -static void flonum_print (const FLONUM_TYPE *); -#endif - -#define ASSUME_DECIMAL_MARK_IS_DOT - -/***********************************************************************\ - * * - * Given a string of decimal digits , with optional decimal * - * mark and optional decimal exponent (place value) of the * - * lowest_order decimal digit: produce a floating point * - * number. The number is 'generic' floating point: our * - * caller will encode it for a specific machine architecture. * - * * - * Assumptions * - * uses base (radix) 2 * - * this machine uses 2's complement binary integers * - * target flonums use " " " " * - * target flonums exponents fit in a long * - * * - \***********************************************************************/ - -/* - - Syntax: - - ::= - ::= '+' | '-' | {empty} - ::= - | - | - | - - ::= {empty} - | - - ::= | - ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' - ::= {one character from "string_of_decimal_exponent_marks"} - ::= {one character from "string_of_decimal_marks"} - - */ - -int -atof_generic (/* return pointer to just AFTER number we read. */ - char **address_of_string_pointer, - /* At most one per number. */ - const char *string_of_decimal_marks, - const char *string_of_decimal_exponent_marks, - FLONUM_TYPE *address_of_generic_floating_point_number) -{ - int return_value; /* 0 means OK. */ - char *first_digit; - unsigned int number_of_digits_before_decimal; - unsigned int number_of_digits_after_decimal; - long decimal_exponent; - unsigned int number_of_digits_available; - char digits_sign_char; - - /* - * Scan the input string, abstracting (1)digits (2)decimal mark (3) exponent. - * It would be simpler to modify the string, but we don't; just to be nice - * to caller. - * We need to know how many digits we have, so we can allocate space for - * the digits' value. - */ - - char *p; - char c; - int seen_significant_digit; - -#ifdef ASSUME_DECIMAL_MARK_IS_DOT - assert (string_of_decimal_marks[0] == '.' - && string_of_decimal_marks[1] == 0); -#define IS_DECIMAL_MARK(c) ((c) == '.') -#else -#define IS_DECIMAL_MARK(c) (0 != strchr (string_of_decimal_marks, (c))) -#endif - - first_digit = *address_of_string_pointer; - c = *first_digit; - - if (c == '-' || c == '+') - { - digits_sign_char = c; - first_digit++; - } - else - digits_sign_char = '+'; - - switch (first_digit[0]) - { - case 'n': - case 'N': - if (!strncasecmp ("nan", first_digit, 3)) - { - address_of_generic_floating_point_number->sign = 0; - address_of_generic_floating_point_number->exponent = 0; - address_of_generic_floating_point_number->leader = - address_of_generic_floating_point_number->low; - *address_of_string_pointer = first_digit + 3; - return 0; - } - break; - - case 'i': - case 'I': - if (!strncasecmp ("inf", first_digit, 3)) - { - address_of_generic_floating_point_number->sign = - digits_sign_char == '+' ? 'P' : 'N'; - address_of_generic_floating_point_number->exponent = 0; - address_of_generic_floating_point_number->leader = - address_of_generic_floating_point_number->low; - - first_digit += 3; - if (!strncasecmp ("inity", first_digit, 5)) - first_digit += 5; - - *address_of_string_pointer = first_digit; - - return 0; - } - break; - } - - number_of_digits_before_decimal = 0; - number_of_digits_after_decimal = 0; - decimal_exponent = 0; - seen_significant_digit = 0; - for (p = first_digit; - (((c = *p) != '\0') - && (!c || !IS_DECIMAL_MARK (c)) - && (!c || !strchr (string_of_decimal_exponent_marks, c))); - p++) - { - if (ISDIGIT (c)) - { - if (seen_significant_digit || c > '0') - { - ++number_of_digits_before_decimal; - seen_significant_digit = 1; - } - else - { - first_digit++; - } - } - else - { - break; /* p -> char after pre-decimal digits. */ - } - } /* For each digit before decimal mark. */ - -#ifndef OLD_FLOAT_READS - /* Ignore trailing 0's after the decimal point. The original code here - * (ifdef'd out) does not do this, and numbers like - * 4.29496729600000000000e+09 (2**31) - * come out inexact for some reason related to length of the digit - * string. - */ - if (c && IS_DECIMAL_MARK (c)) - { - unsigned int zeros = 0; /* Length of current string of zeros */ - - for (p++; (c = *p) && ISDIGIT (c); p++) - { - if (c == '0') - { - zeros++; - } - else - { - number_of_digits_after_decimal += 1 + zeros; - zeros = 0; - } - } - } -#else - if (c && IS_DECIMAL_MARK (c)) - { - for (p++; - (((c = *p) != '\0') - && (!c || !strchr (string_of_decimal_exponent_marks, c))); - p++) - { - if (ISDIGIT (c)) - { - /* This may be retracted below. */ - number_of_digits_after_decimal++; - - if ( /* seen_significant_digit || */ c > '0') - { - seen_significant_digit = TRUE; - } - } - else - { - if (!seen_significant_digit) - { - number_of_digits_after_decimal = 0; - } - break; - } - } /* For each digit after decimal mark. */ - } - - while (number_of_digits_after_decimal - && first_digit[number_of_digits_before_decimal - + number_of_digits_after_decimal] == '0') - --number_of_digits_after_decimal; -#endif - - if (flag_m68k_mri) - { - while (c == '_') - c = *++p; - } - if (c && strchr (string_of_decimal_exponent_marks, c)) - { - char digits_exponent_sign_char; - - c = *++p; - if (flag_m68k_mri) - { - while (c == '_') - c = *++p; - } - if (c && strchr ("+-", c)) - { - digits_exponent_sign_char = c; - c = *++p; - } - else - { - digits_exponent_sign_char = '+'; - } - - for (; (c); c = *++p) - { - if (ISDIGIT (c)) - { - decimal_exponent = decimal_exponent * 10 + c - '0'; - /* - * BUG! If we overflow here, we lose! - */ - } - else - { - break; - } - } - - if (digits_exponent_sign_char == '-') - { - decimal_exponent = -decimal_exponent; - } - } - - *address_of_string_pointer = p; - - number_of_digits_available = - number_of_digits_before_decimal + number_of_digits_after_decimal; - return_value = 0; - if (number_of_digits_available == 0) - { - address_of_generic_floating_point_number->exponent = 0; /* Not strictly necessary */ - address_of_generic_floating_point_number->leader - = -1 + address_of_generic_floating_point_number->low; - address_of_generic_floating_point_number->sign = digits_sign_char; - /* We have just concocted (+/-)0.0E0 */ - - } - else - { - int count; /* Number of useful digits left to scan. */ - - LITTLENUM_TYPE *digits_binary_low; - unsigned int precision; - unsigned int maximum_useful_digits; - unsigned int number_of_digits_to_use; - unsigned int more_than_enough_bits_for_digits; - unsigned int more_than_enough_littlenums_for_digits; - unsigned int size_of_digits_in_littlenums; - unsigned int size_of_digits_in_chars; - FLONUM_TYPE power_of_10_flonum; - FLONUM_TYPE digits_flonum; - - precision = (address_of_generic_floating_point_number->high - - address_of_generic_floating_point_number->low - + 1); /* Number of destination littlenums. */ - - /* Includes guard bits (two littlenums worth) */ -#if 0 /* The integer version below is very close, and it doesn't - require floating point support (which is currently buggy on - the Alpha). */ - maximum_useful_digits = (((double) (precision - 2)) - * ((double) (LITTLENUM_NUMBER_OF_BITS)) - / (LOG_TO_BASE_2_OF_10)) - + 2; /* 2 :: guard digits. */ -#else - maximum_useful_digits = (((precision - 2)) - * ( (LITTLENUM_NUMBER_OF_BITS)) - * 1000000 / 3321928) - + 2; /* 2 :: guard digits. */ -#endif - - if (number_of_digits_available > maximum_useful_digits) - { - number_of_digits_to_use = maximum_useful_digits; - } - else - { - number_of_digits_to_use = number_of_digits_available; - } - - /* Cast these to SIGNED LONG first, otherwise, on systems with - LONG wider than INT (such as Alpha OSF/1), unsignedness may - cause unexpected results. */ - decimal_exponent += ((long) number_of_digits_before_decimal - - (long) number_of_digits_to_use); - -#if 0 - more_than_enough_bits_for_digits - = ((((double) number_of_digits_to_use) * LOG_TO_BASE_2_OF_10) + 1); -#else - more_than_enough_bits_for_digits - = (number_of_digits_to_use * 3321928 / 1000000 + 1); -#endif - - more_than_enough_littlenums_for_digits - = (more_than_enough_bits_for_digits - / LITTLENUM_NUMBER_OF_BITS) - + 2; - - /* Compute (digits) part. In "12.34E56" this is the "1234" part. - Arithmetic is exact here. If no digits are supplied then this - part is a 0 valued binary integer. Allocate room to build up - the binary number as littlenums. We want this memory to - disappear when we leave this function. Assume no alignment - problems => (room for n objects) == n * (room for 1 - object). */ - - size_of_digits_in_littlenums = more_than_enough_littlenums_for_digits; - size_of_digits_in_chars = size_of_digits_in_littlenums - * sizeof (LITTLENUM_TYPE); - - digits_binary_low = (LITTLENUM_TYPE *) - alloca (size_of_digits_in_chars); - - memset ((char *) digits_binary_low, '\0', size_of_digits_in_chars); - - /* Digits_binary_low[] is allocated and zeroed. */ - - /* - * Parse the decimal digits as if * digits_low was in the units position. - * Emit a binary number into digits_binary_low[]. - * - * Use a large-precision version of: - * (((1st-digit) * 10 + 2nd-digit) * 10 + 3rd-digit ...) * 10 + last-digit - */ - - for (p = first_digit, count = number_of_digits_to_use; count; p++, --count) - { - c = *p; - if (ISDIGIT (c)) - { - /* - * Multiply by 10. Assume can never overflow. - * Add this digit to digits_binary_low[]. - */ - - long carry; - LITTLENUM_TYPE *littlenum_pointer; - LITTLENUM_TYPE *littlenum_limit; - - littlenum_limit = digits_binary_low - + more_than_enough_littlenums_for_digits - - 1; - - carry = c - '0'; /* char -> binary */ - - for (littlenum_pointer = digits_binary_low; - littlenum_pointer <= littlenum_limit; - littlenum_pointer++) - { - long work; - - work = carry + 10 * (long) (*littlenum_pointer); - *littlenum_pointer = work & LITTLENUM_MASK; - carry = work >> LITTLENUM_NUMBER_OF_BITS; - } - - if (carry != 0) - { - /* - * We have a GROSS internal error. - * This should never happen. - */ - as_fatal (_("failed sanity check")); - } - } - else - { - ++count; /* '.' doesn't alter digits used count. */ - } - } - - /* - * Digits_binary_low[] properly encodes the value of the digits. - * Forget about any high-order littlenums that are 0. - */ - while (digits_binary_low[size_of_digits_in_littlenums - 1] == 0 - && size_of_digits_in_littlenums >= 2) - size_of_digits_in_littlenums--; - - digits_flonum.low = digits_binary_low; - digits_flonum.high = digits_binary_low + size_of_digits_in_littlenums - 1; - digits_flonum.leader = digits_flonum.high; - digits_flonum.exponent = 0; - /* - * The value of digits_flonum . sign should not be important. - * We have already decided the output's sign. - * We trust that the sign won't influence the other parts of the number! - * So we give it a value for these reasons: - * (1) courtesy to humans reading/debugging - * these numbers so they don't get excited about strange values - * (2) in future there may be more meaning attached to sign, - * and what was - * harmless noise may become disruptive, ill-conditioned (or worse) - * input. - */ - digits_flonum.sign = '+'; - - { - /* - * Compute the mantssa (& exponent) of the power of 10. - * If successful, then multiply the power of 10 by the digits - * giving return_binary_mantissa and return_binary_exponent. - */ - - LITTLENUM_TYPE *power_binary_low; - int decimal_exponent_is_negative; - /* This refers to the "-56" in "12.34E-56". */ - /* FALSE: decimal_exponent is positive (or 0) */ - /* TRUE: decimal_exponent is negative */ - FLONUM_TYPE temporary_flonum; - LITTLENUM_TYPE *temporary_binary_low; - unsigned int size_of_power_in_littlenums; - unsigned int size_of_power_in_chars; - - size_of_power_in_littlenums = precision; - /* Precision has a built-in fudge factor so we get a few guard bits. */ - - decimal_exponent_is_negative = decimal_exponent < 0; - if (decimal_exponent_is_negative) - { - decimal_exponent = -decimal_exponent; - } - - /* From now on: the decimal exponent is > 0. Its sign is separate. */ - - size_of_power_in_chars = size_of_power_in_littlenums - * sizeof (LITTLENUM_TYPE) + 2; - - power_binary_low = (LITTLENUM_TYPE *) alloca (size_of_power_in_chars); - temporary_binary_low = (LITTLENUM_TYPE *) alloca (size_of_power_in_chars); - memset ((char *) power_binary_low, '\0', size_of_power_in_chars); - *power_binary_low = 1; - power_of_10_flonum.exponent = 0; - power_of_10_flonum.low = power_binary_low; - power_of_10_flonum.leader = power_binary_low; - power_of_10_flonum.high = power_binary_low + size_of_power_in_littlenums - 1; - power_of_10_flonum.sign = '+'; - temporary_flonum.low = temporary_binary_low; - temporary_flonum.high = temporary_binary_low + size_of_power_in_littlenums - 1; - /* - * (power) == 1. - * Space for temporary_flonum allocated. - */ - - /* - * ... - * - * WHILE more bits - * DO find next bit (with place value) - * multiply into power mantissa - * OD - */ - { - int place_number_limit; - /* Any 10^(2^n) whose "n" exceeds this */ - /* value will fall off the end of */ - /* flonum_XXXX_powers_of_ten[]. */ - int place_number; - const FLONUM_TYPE *multiplicand; /* -> 10^(2^n) */ - - place_number_limit = table_size_of_flonum_powers_of_ten; - - multiplicand = (decimal_exponent_is_negative - ? flonum_negative_powers_of_ten - : flonum_positive_powers_of_ten); - - for (place_number = 1;/* Place value of this bit of exponent. */ - decimal_exponent;/* Quit when no more 1 bits in exponent. */ - decimal_exponent >>= 1, place_number++) - { - if (decimal_exponent & 1) - { - if (place_number > place_number_limit) - { - /* The decimal exponent has a magnitude so great - that our tables can't help us fragment it. - Although this routine is in error because it - can't imagine a number that big, signal an - error as if it is the user's fault for - presenting such a big number. */ - return_value = ERROR_EXPONENT_OVERFLOW; - /* quit out of loop gracefully */ - decimal_exponent = 0; - } - else - { -#ifdef TRACE - printf ("before multiply, place_number = %d., power_of_10_flonum:\n", - place_number); - - flonum_print (&power_of_10_flonum); - (void) putchar ('\n'); -#endif -#ifdef TRACE - printf ("multiplier:\n"); - flonum_print (multiplicand + place_number); - (void) putchar ('\n'); -#endif - flonum_multip (multiplicand + place_number, - &power_of_10_flonum, &temporary_flonum); -#ifdef TRACE - printf ("after multiply:\n"); - flonum_print (&temporary_flonum); - (void) putchar ('\n'); -#endif - flonum_copy (&temporary_flonum, &power_of_10_flonum); -#ifdef TRACE - printf ("after copy:\n"); - flonum_print (&power_of_10_flonum); - (void) putchar ('\n'); -#endif - } /* If this bit of decimal_exponent was computable.*/ - } /* If this bit of decimal_exponent was set. */ - } /* For each bit of binary representation of exponent */ -#ifdef TRACE - printf ("after computing power_of_10_flonum:\n"); - flonum_print (&power_of_10_flonum); - (void) putchar ('\n'); -#endif - } - - } - - /* - * power_of_10_flonum is power of ten in binary (mantissa) , (exponent). - * It may be the number 1, in which case we don't NEED to multiply. - * - * Multiply (decimal digits) by power_of_10_flonum. - */ - - flonum_multip (&power_of_10_flonum, &digits_flonum, address_of_generic_floating_point_number); - /* Assert sign of the number we made is '+'. */ - address_of_generic_floating_point_number->sign = digits_sign_char; - - } - return return_value; -} - -#ifdef TRACE -static void -flonum_print (f) - const FLONUM_TYPE *f; -{ - LITTLENUM_TYPE *lp; - char littlenum_format[10]; - sprintf (littlenum_format, " %%0%dx", sizeof (LITTLENUM_TYPE) * 2); -#define print_littlenum(LP) (printf (littlenum_format, LP)) - printf ("flonum @%p %c e%ld", f, f->sign, f->exponent); - if (f->low < f->high) - for (lp = f->high; lp >= f->low; lp--) - print_littlenum (*lp); - else - for (lp = f->low; lp <= f->high; lp++) - print_littlenum (*lp); - printf ("\n"); - fflush (stdout); -} -#endif - -/* end of atof_generic.c */ diff --git a/gas/bignum-copy.c b/gas/bignum-copy.c deleted file mode 100644 index 56974722f..000000000 --- a/gas/bignum-copy.c +++ /dev/null @@ -1,80 +0,0 @@ -/* bignum_copy.c - copy a bignum - Copyright 1987, 1990, 1991, 1992, 1993, 2000 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "as.h" - -/* - * bignum_copy () - * - * Copy a bignum from in to out. - * If the output is shorter than the input, copy lower-order littlenums. - * Return 0 or the number of significant littlenums dropped. - * Assumes littlenum arrays are densely packed: no unused chars between - * the littlenums. Uses memcpy() to move littlenums, and wants to - * know length (in chars) of the input bignum. - */ - -/* void */ -int -bignum_copy (register LITTLENUM_TYPE *in, - register int in_length, /* in sizeof(littlenum)s */ - register LITTLENUM_TYPE *out, - register int out_length /* in sizeof(littlenum)s */) -{ - int significant_littlenums_dropped; - - if (out_length < in_length) - { - LITTLENUM_TYPE *p; /* -> most significant (non-zero) input - littlenum. */ - - memcpy ((void *) out, (void *) in, - (unsigned int) out_length << LITTLENUM_SHIFT); - for (p = in + in_length - 1; p >= in; --p) - { - if (*p) - break; - } - significant_littlenums_dropped = p - in - in_length + 1; - - if (significant_littlenums_dropped < 0) - { - significant_littlenums_dropped = 0; - } - } - else - { - memcpy ((char *) out, (char *) in, - (unsigned int) in_length << LITTLENUM_SHIFT); - - if (out_length > in_length) - { - memset ((char *) (out + in_length), - '\0', - (unsigned int) (out_length - in_length) << LITTLENUM_SHIFT); - } - - significant_littlenums_dropped = 0; - } - - return (significant_littlenums_dropped); -} /* bignum_copy() */ - -/* end of bignum-copy.c */ diff --git a/gas/bignum.h b/gas/bignum.h deleted file mode 100644 index fbb77ffe7..000000000 --- a/gas/bignum.h +++ /dev/null @@ -1,52 +0,0 @@ -/* bignum.h-arbitrary precision integers - Copyright 1987, 1992 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/***********************************************************************\ - * * - * Arbitrary-precision integer arithmetic. * - * For speed, we work in groups of bits, even though this * - * complicates algorithms. * - * Each group of bits is called a 'littlenum'. * - * A bunch of littlenums representing a (possibly large) * - * integer is called a 'bignum'. * - * Bignums are >= 0. * - * * - \***********************************************************************/ - -#define LITTLENUM_NUMBER_OF_BITS (16) -#define LITTLENUM_RADIX (1 << LITTLENUM_NUMBER_OF_BITS) -#define LITTLENUM_MASK (0xFFFF) -#define LITTLENUM_SHIFT (1) -#define CHARS_PER_LITTLENUM (1 << LITTLENUM_SHIFT) -#ifndef BITS_PER_CHAR -#define BITS_PER_CHAR (8) -#endif - -typedef unsigned short LITTLENUM_TYPE; - -/* JF truncated this to get around a problem with GCC */ -#define LOG_TO_BASE_2_OF_10 (3.3219280948873623478703194294893901758651) -/* WARNING: I haven't checked that the trailing digits are correct! */ - -/* lengths are in sizeof(littlenum)s */ - -int bignum_copy (LITTLENUM_TYPE * in, int in_length, - LITTLENUM_TYPE * out, int out_length); - -/* end of bignum.h */ diff --git a/gas/bit_fix.h b/gas/bit_fix.h deleted file mode 100644 index 1676d2c5f..000000000 --- a/gas/bit_fix.h +++ /dev/null @@ -1,48 +0,0 @@ -/* bit_fix.h - Copyright 1987, 1992, 2000, 2001 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* The bit_fix was implemented to support machines that need variables - to be inserted in bitfields other than 1, 2 and 4 bytes. - Furthermore it gives us a possibility to mask in bits in the symbol - when it's fixed in the objectcode and check the symbols limits. - - The or-mask is used to set the huffman bits in displacements for the - ns32k port. - The acbi, addqi, movqi, cmpqi instruction requires an assembler that - can handle bitfields. Ie. handle an expression, evaluate it and insert - the result in some bitfield. (eg: 5 bits in a short field of an opcode) - */ - -#ifndef __bit_fix_h__ -#define __bit_fix_h__ - -struct bit_fix { - int fx_bit_size; /* Length of bitfield */ - int fx_bit_offset; /* Bit offset to bitfield */ - long fx_bit_base; /* Where do we apply the bitfix. - If this is zero, default is assumed. */ - long fx_bit_base_adj; /* Adjustment of base */ - long fx_bit_max; /* Signextended max for bitfield */ - long fx_bit_min; /* Signextended min for bitfield */ - long fx_bit_add; /* Or mask, used for huffman prefix */ -}; -typedef struct bit_fix bit_fixS; - -#endif /* __bit_fix_h__ */ diff --git a/gas/cgen.c b/gas/cgen.c deleted file mode 100644 index 5ce7f4c99..000000000 --- a/gas/cgen.c +++ /dev/null @@ -1,730 +0,0 @@ -/* GAS interface for targets using CGEN: Cpu tools GENerator. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include -#include "ansidecl.h" -#include "libiberty.h" -#include "bfd.h" -#include "symcat.h" -#include "cgen-desc.h" -#include "as.h" -#include "subsegs.h" -#include "cgen.h" -#include "dwarf2dbg.h" - -static void queue_fixup (int, int, expressionS *); - -/* Opcode table descriptor, must be set by md_begin. */ - -CGEN_CPU_DESC gas_cgen_cpu_desc; - -/* Callback to insert a register into the symbol table. - A target may choose to let GAS parse the registers. - ??? Not currently used. */ - -void -cgen_asm_record_register (name, number) - char *name; - int number; -{ - /* Use symbol_create here instead of symbol_new so we don't try to - output registers into the object file's symbol table. */ - symbol_table_insert (symbol_create (name, reg_section, - number, &zero_address_frag)); -} - -/* We need to keep a list of fixups. We can't simply generate them as - we go, because that would require us to first create the frag, and - that would screw up references to ``.''. - - This is used by cpu's with simple operands. It keeps knowledge of what - an `expressionS' is and what a `fixup' is out of CGEN which for the time - being is preferable. - - OPINDEX is the index in the operand table. - OPINFO is something the caller chooses to help in reloc determination. */ - -struct fixup -{ - int opindex; - int opinfo; - expressionS exp; -}; - -static struct fixup fixups[GAS_CGEN_MAX_FIXUPS]; -static int num_fixups; - -/* Prepare to parse an instruction. - ??? May wish to make this static and delete calls in md_assemble. */ - -void -gas_cgen_init_parse () -{ - num_fixups = 0; -} - -/* Queue a fixup. */ - -static void -queue_fixup (opindex, opinfo, expP) - int opindex; - int opinfo; - expressionS * expP; -{ - /* We need to generate a fixup for this expression. */ - if (num_fixups >= GAS_CGEN_MAX_FIXUPS) - as_fatal (_("too many fixups")); - fixups[num_fixups].exp = *expP; - fixups[num_fixups].opindex = opindex; - fixups[num_fixups].opinfo = opinfo; - ++ num_fixups; -} - -/* The following functions allow fixup chains to be stored, retrieved, - and swapped. They are a generalization of a pre-existing scheme - for storing, restoring and swapping fixup chains that was used by - the m32r port. The functionality is essentially the same, only - instead of only being able to store a single fixup chain, an entire - array of fixup chains can be stored. It is the user's responsibility - to keep track of how many fixup chains have been stored and which - elements of the array they are in. - - The algorithms used are the same as in the old scheme. Other than the - "array-ness" of the whole thing, the functionality is identical to the - old scheme. - - gas_cgen_initialize_saved_fixups_array(): - Sets num_fixups_in_chain to 0 for each element. Call this from - md_begin() if you plan to use these functions and you want the - fixup count in each element to be set to 0 initially. This is - not necessary, but it's included just in case. It performs - the same function for each element in the array of fixup chains - that gas_init_parse() performs for the current fixups. - - gas_cgen_save_fixups (element): - element - element number of the array you wish to store the fixups - to. No mechanism is built in for tracking what element - was last stored to. - - gas_cgen_restore_fixups (element): - element - element number of the array you wish to restore the fixups - from. - - gas_cgen_swap_fixups(int element): - element - swap the current fixups with those in this element number. -*/ - -struct saved_fixups -{ - struct fixup fixup_chain[GAS_CGEN_MAX_FIXUPS]; - int num_fixups_in_chain; -}; - -static struct saved_fixups stored_fixups[MAX_SAVED_FIXUP_CHAINS]; - -void -gas_cgen_initialize_saved_fixups_array () -{ - int i = 0; - - while (i < MAX_SAVED_FIXUP_CHAINS) - stored_fixups[i++].num_fixups_in_chain = 0; -} - -void -gas_cgen_save_fixups (i) - int i; -{ - if (i < 0 || i >= MAX_SAVED_FIXUP_CHAINS) - { - as_fatal ("index into stored_fixups[] out of bounds"); - return; - } - - stored_fixups[i].num_fixups_in_chain = num_fixups; - memcpy (stored_fixups[i].fixup_chain, fixups, - sizeof (fixups[0]) * num_fixups); - num_fixups = 0; -} - -void -gas_cgen_restore_fixups (i) - int i; -{ - if (i < 0 || i >= MAX_SAVED_FIXUP_CHAINS) - { - as_fatal ("index into stored_fixups[] out of bounds"); - return; - } - - num_fixups = stored_fixups[i].num_fixups_in_chain; - memcpy (fixups, stored_fixups[i].fixup_chain, - (sizeof (stored_fixups[i].fixup_chain[0])) * num_fixups); - stored_fixups[i].num_fixups_in_chain = 0; -} - -void -gas_cgen_swap_fixups (i) - int i; -{ - if (i < 0 || i >= MAX_SAVED_FIXUP_CHAINS) - { - as_fatal ("index into stored_fixups[] out of bounds"); - return; - } - - if (num_fixups == 0) - gas_cgen_restore_fixups (i); - - else if (stored_fixups[i].num_fixups_in_chain == 0) - gas_cgen_save_fixups (i); - - else - { - int tmp; - struct fixup tmp_fixup; - - tmp = stored_fixups[i].num_fixups_in_chain; - stored_fixups[i].num_fixups_in_chain = num_fixups; - num_fixups = tmp; - - for (tmp = GAS_CGEN_MAX_FIXUPS; tmp--;) - { - tmp_fixup = stored_fixups[i].fixup_chain [tmp]; - stored_fixups[i].fixup_chain[tmp] = fixups [tmp]; - fixups [tmp] = tmp_fixup; - } - } -} - -/* Default routine to record a fixup. - This is a cover function to fix_new. - It exists because we record INSN with the fixup. - - FRAG and WHERE are their respective arguments to fix_new_exp. - LENGTH is in bits. - OPINFO is something the caller chooses to help in reloc determination. - - At this point we do not use a bfd_reloc_code_real_type for - operands residing in the insn, but instead just use the - operand index. This lets us easily handle fixups for any - operand type. We pick a BFD reloc type in md_apply_fix3. */ - -fixS * -gas_cgen_record_fixup (frag, where, insn, length, operand, opinfo, symbol, offset) - fragS * frag; - int where; - const CGEN_INSN * insn; - int length; - const CGEN_OPERAND * operand; - int opinfo; - symbolS * symbol; - offsetT offset; -{ - fixS *fixP; - - /* It may seem strange to use operand->attrs and not insn->attrs here, - but it is the operand that has a pc relative relocation. */ - fixP = fix_new (frag, where, length / 8, symbol, offset, - CGEN_OPERAND_ATTR_VALUE (operand, CGEN_OPERAND_PCREL_ADDR), - (bfd_reloc_code_real_type) - ((int) BFD_RELOC_UNUSED - + (int) operand->type)); - fixP->fx_cgen.insn = insn; - fixP->fx_cgen.opinfo = opinfo; - - return fixP; -} - -/* Default routine to record a fixup given an expression. - This is a cover function to fix_new_exp. - It exists because we record INSN with the fixup. - - FRAG and WHERE are their respective arguments to fix_new_exp. - LENGTH is in bits. - OPINFO is something the caller chooses to help in reloc determination. - - At this point we do not use a bfd_reloc_code_real_type for - operands residing in the insn, but instead just use the - operand index. This lets us easily handle fixups for any - operand type. We pick a BFD reloc type in md_apply_fix3. */ - -fixS * -gas_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp) - fragS * frag; - int where; - const CGEN_INSN * insn; - int length; - const CGEN_OPERAND * operand; - int opinfo; - expressionS * exp; -{ - fixS *fixP; - - /* It may seem strange to use operand->attrs and not insn->attrs here, - but it is the operand that has a pc relative relocation. */ - fixP = fix_new_exp (frag, where, length / 8, exp, - CGEN_OPERAND_ATTR_VALUE (operand, CGEN_OPERAND_PCREL_ADDR), - (bfd_reloc_code_real_type) - ((int) BFD_RELOC_UNUSED - + (int) operand->type)); - fixP->fx_cgen.insn = insn; - fixP->fx_cgen.opinfo = opinfo; - - return fixP; -} - -/* Used for communication between the next two procedures. */ -static jmp_buf expr_jmp_buf; -static int expr_jmp_buf_p; - -/* Callback for cgen interface. Parse the expression at *STRP. - The result is an error message or NULL for success (in which case - *STRP is advanced past the parsed text). - WANT is an indication of what the caller is looking for. - If WANT == CGEN_ASM_PARSE_INIT the caller is beginning to try to match - a table entry with the insn, reset the queued fixups counter. - An enum cgen_parse_operand_result is stored in RESULTP. - OPINDEX is the operand's table entry index. - OPINFO is something the caller chooses to help in reloc determination. - The resulting value is stored in VALUEP. */ - -const char * -gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP) - CGEN_CPU_DESC cd ATTRIBUTE_UNUSED; - enum cgen_parse_operand_type want; - const char **strP; - int opindex; - int opinfo; - enum cgen_parse_operand_result *resultP; - bfd_vma *valueP; -{ -#ifdef __STDC__ - /* These are volatile to survive the setjmp. */ - char * volatile hold; - enum cgen_parse_operand_result * volatile resultP_1; -#else - static char *hold; - static enum cgen_parse_operand_result *resultP_1; -#endif - const char *errmsg; - expressionS exp; - - if (want == CGEN_PARSE_OPERAND_INIT) - { - gas_cgen_init_parse (); - return NULL; - } - - resultP_1 = resultP; - hold = input_line_pointer; - input_line_pointer = (char *) *strP; - - /* We rely on md_operand to longjmp back to us. - This is done via gas_cgen_md_operand. */ - if (setjmp (expr_jmp_buf) != 0) - { - expr_jmp_buf_p = 0; - input_line_pointer = (char *) hold; - *resultP_1 = CGEN_PARSE_OPERAND_RESULT_ERROR; - return _("illegal operand"); - } - - expr_jmp_buf_p = 1; - expression (&exp); - expr_jmp_buf_p = 0; - errmsg = NULL; - - *strP = input_line_pointer; - input_line_pointer = hold; - - /* FIXME: Need to check `want'. */ - - switch (exp.X_op) - { - case O_illegal: - errmsg = _("illegal operand"); - *resultP = CGEN_PARSE_OPERAND_RESULT_ERROR; - break; - case O_absent: - errmsg = _("missing operand"); - *resultP = CGEN_PARSE_OPERAND_RESULT_ERROR; - break; - case O_constant: - *valueP = exp.X_add_number; - *resultP = CGEN_PARSE_OPERAND_RESULT_NUMBER; - break; - case O_register: - *valueP = exp.X_add_number; - *resultP = CGEN_PARSE_OPERAND_RESULT_REGISTER; - break; - default: - queue_fixup (opindex, opinfo, &exp); - *valueP = 0; - *resultP = CGEN_PARSE_OPERAND_RESULT_QUEUED; - break; - } - - return errmsg; -} - -/* md_operand handler to catch unrecognized expressions and halt the - parsing process so the next entry can be tried. - - ??? This could be done differently by adding code to `expression'. */ - -void -gas_cgen_md_operand (expressionP) - expressionS *expressionP ATTRIBUTE_UNUSED; -{ - /* Don't longjmp if we're not called from within cgen_parse_operand(). */ - if (expr_jmp_buf_p) - longjmp (expr_jmp_buf, 1); -} - -/* Finish assembling instruction INSN. - BUF contains what we've built up so far. - LENGTH is the size of the insn in bits. - RELAX_P is non-zero if relaxable insns should be emitted as such. - Otherwise they're emitted in non-relaxable forms. - The "result" is stored in RESULT if non-NULL. */ - -void -gas_cgen_finish_insn (insn, buf, length, relax_p, result) - const CGEN_INSN *insn; - CGEN_INSN_BYTES_PTR buf; - unsigned int length; - int relax_p; - finished_insnS *result; -{ - int i; - int relax_operand; - char *f; - unsigned int byte_len = length / 8; - - /* ??? Target foo issues various warnings here, so one might want to provide - a hook here. However, our caller is defined in tc-foo.c so there - shouldn't be a need for a hook. */ - - /* Write out the instruction. - It is important to fetch enough space in one call to `frag_more'. - We use (f - frag_now->fr_literal) to compute where we are and we - don't want frag_now to change between calls. - - Relaxable instructions: We need to ensure we allocate enough - space for the largest insn. */ - - if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXED)) - /* These currently shouldn't get here. */ - abort (); - - /* Is there a relaxable insn with the relaxable operand needing a fixup? */ - - relax_operand = -1; - if (relax_p && CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXABLE)) - { - /* Scan the fixups for the operand affected by relaxing - (i.e. the branch address). */ - - for (i = 0; i < num_fixups; ++i) - { - if (CGEN_OPERAND_ATTR_VALUE (cgen_operand_lookup_by_num (gas_cgen_cpu_desc, fixups[i].opindex), - CGEN_OPERAND_RELAX)) - { - relax_operand = i; - break; - } - } - } - - if (relax_operand != -1) - { - int max_len; - fragS *old_frag; - expressionS *exp; - symbolS *sym; - offsetT off; - -#ifdef TC_CGEN_MAX_RELAX - max_len = TC_CGEN_MAX_RELAX (insn, byte_len); -#else - max_len = CGEN_MAX_INSN_SIZE; -#endif - /* Ensure variable part and fixed part are in same fragment. */ - /* FIXME: Having to do this seems like a hack. */ - frag_grow (max_len); - - /* Allocate space for the fixed part. */ - f = frag_more (byte_len); - - /* Create a relaxable fragment for this instruction. */ - old_frag = frag_now; - - exp = &fixups[relax_operand].exp; - sym = exp->X_add_symbol; - off = exp->X_add_number; - if (exp->X_op != O_constant && exp->X_op != O_symbol) - { - /* Handle complex expressions. */ - sym = make_expr_symbol (exp); - off = 0; - } - - frag_var (rs_machine_dependent, - max_len - byte_len /* max chars */, - 0 /* variable part already allocated */, - /* FIXME: When we machine generate the relax table, - machine generate a macro to compute subtype. */ - 1 /* subtype */, - sym, - off, - f); - - /* Record the operand number with the fragment so md_convert_frag - can use gas_cgen_md_record_fixup to record the appropriate reloc. */ - old_frag->fr_cgen.insn = insn; - old_frag->fr_cgen.opindex = fixups[relax_operand].opindex; - old_frag->fr_cgen.opinfo = fixups[relax_operand].opinfo; - if (result) - result->frag = old_frag; - } - else - { - f = frag_more (byte_len); - if (result) - result->frag = frag_now; - } - - /* If we're recording insns as numbers (rather than a string of bytes), - target byte order handling is deferred until now. */ -#if CGEN_INT_INSN_P - cgen_put_insn_value (gas_cgen_cpu_desc, f, length, *buf); -#else - memcpy (f, buf, byte_len); -#endif - - /* Emit DWARF2 debugging information. */ - dwarf2_emit_insn (byte_len); - - /* Create any fixups. */ - for (i = 0; i < num_fixups; ++i) - { - fixS *fixP; - const CGEN_OPERAND *operand = - cgen_operand_lookup_by_num (gas_cgen_cpu_desc, fixups[i].opindex); - - /* Don't create fixups for these. That's done during relaxation. - We don't need to test for CGEN_INSN_RELAXED as they can't get here - (see above). */ - if (relax_p - && CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXABLE) - && CGEN_OPERAND_ATTR_VALUE (operand, CGEN_OPERAND_RELAX)) - continue; - -#ifndef md_cgen_record_fixup_exp -#define md_cgen_record_fixup_exp gas_cgen_record_fixup_exp -#endif - - fixP = md_cgen_record_fixup_exp (frag_now, f - frag_now->fr_literal, - insn, length, operand, - fixups[i].opinfo, - &fixups[i].exp); - if (result) - result->fixups[i] = fixP; - } - - if (result) - { - result->num_fixups = num_fixups; - result->addr = f; - } -} - -/* Apply a fixup to the object code. This is called for all the - fixups we generated by the call to fix_new_exp, above. In the call - above we used a reloc code which was the largest legal reloc code - plus the operand index. Here we undo that to recover the operand - index. At this point all symbol values should be fully resolved, - and we attempt to completely resolve the reloc. If we can not do - that, we determine the correct reloc code and put it back in the fixup. */ - -/* FIXME: This function handles some of the fixups and bfd_install_relocation - handles the rest. bfd_install_relocation (or some other bfd function) - should handle them all. */ - -void -gas_cgen_md_apply_fix3 (fixP, valP, seg) - fixS * fixP; - valueT * valP; - segT seg ATTRIBUTE_UNUSED; -{ - char *where = fixP->fx_frag->fr_literal + fixP->fx_where; - valueT value = * valP; - /* Canonical name, since used a lot. */ - CGEN_CPU_DESC cd = gas_cgen_cpu_desc; - - if (fixP->fx_addsy == (symbolS *) NULL) - fixP->fx_done = 1; - - /* We don't actually support subtracting a symbol. */ - if (fixP->fx_subsy != (symbolS *) NULL) - as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); - - if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED) - { - int opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED; - const CGEN_OPERAND *operand = cgen_operand_lookup_by_num (cd, opindex); - const char *errmsg; - bfd_reloc_code_real_type reloc_type; - CGEN_FIELDS *fields = alloca (CGEN_CPU_SIZEOF_FIELDS (cd)); - const CGEN_INSN *insn = fixP->fx_cgen.insn; - - /* If the reloc has been fully resolved finish the operand here. */ - /* FIXME: This duplicates the capabilities of code in BFD. */ - if (fixP->fx_done - /* FIXME: If partial_inplace isn't set bfd_install_relocation won't - finish the job. Testing for pcrel is a temporary hack. */ - || fixP->fx_pcrel) - { - CGEN_CPU_SET_FIELDS_BITSIZE (cd) (fields, CGEN_INSN_BITSIZE (insn)); - CGEN_CPU_SET_VMA_OPERAND (cd) (cd, opindex, fields, (bfd_vma) value); - -#if CGEN_INT_INSN_P - { - CGEN_INSN_INT insn_value = - cgen_get_insn_value (cd, where, CGEN_INSN_BITSIZE (insn)); - - /* ??? 0 is passed for `pc'. */ - errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, - &insn_value, (bfd_vma) 0); - cgen_put_insn_value (cd, where, CGEN_INSN_BITSIZE (insn), - insn_value); - } -#else - /* ??? 0 is passed for `pc'. */ - errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, where, - (bfd_vma) 0); -#endif - if (errmsg) - as_bad_where (fixP->fx_file, fixP->fx_line, "%s", errmsg); - } - - if (fixP->fx_done) - return; - - /* The operand isn't fully resolved. Determine a BFD reloc value - based on the operand information and leave it to - bfd_install_relocation. Note that this doesn't work when - partial_inplace == false. */ - - reloc_type = md_cgen_lookup_reloc (insn, operand, fixP); - - if (reloc_type != BFD_RELOC_NONE) - fixP->fx_r_type = reloc_type; - else - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("unresolved expression that must be resolved")); - fixP->fx_done = 1; - return; - } - } - else if (fixP->fx_done) - { - /* We're finished with this fixup. Install it because - bfd_install_relocation won't be called to do it. */ - switch (fixP->fx_r_type) - { - case BFD_RELOC_8: - md_number_to_chars (where, value, 1); - break; - case BFD_RELOC_16: - md_number_to_chars (where, value, 2); - break; - case BFD_RELOC_32: - md_number_to_chars (where, value, 4); - break; - case BFD_RELOC_64: - md_number_to_chars (where, value, 8); - break; - default: - as_bad_where (fixP->fx_file, fixP->fx_line, - _("internal error: can't install fix for reloc type %d (`%s')"), - fixP->fx_r_type, bfd_get_reloc_code_name (fixP->fx_r_type)); - break; - } - } - /* else - bfd_install_relocation will be called to finish things up. */ - - /* Tuck `value' away for use by tc_gen_reloc. - See the comment describing fx_addnumber in write.h. - This field is misnamed (or misused :-). */ - fixP->fx_addnumber = value; -} - -/* Translate internal representation of relocation info to BFD target format. - - FIXME: To what extent can we get all relevant targets to use this? */ - -arelent * -gas_cgen_tc_gen_reloc (section, fixP) - asection * section ATTRIBUTE_UNUSED; - fixS * fixP; -{ - arelent *reloc; - - reloc = (arelent *) xmalloc (sizeof (arelent)); - - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type); - if (reloc->howto == (reloc_howto_type *) NULL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("relocation is not supported")); - return NULL; - } - - assert (!fixP->fx_pcrel == !reloc->howto->pc_relative); - - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy); - - /* Use fx_offset for these cases. */ - if (fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY - || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT) - reloc->addend = fixP->fx_offset; - else - reloc->addend = fixP->fx_addnumber; - - reloc->address = fixP->fx_frag->fr_address + fixP->fx_where; - return reloc; -} - -/* Perform any cgen specific initialisation. - Called after gas_cgen_cpu_desc has been created. */ - -void -gas_cgen_begin () -{ - if (flag_signed_overflow_ok) - cgen_set_signed_overflow_ok (gas_cgen_cpu_desc); - else - cgen_clear_signed_overflow_ok (gas_cgen_cpu_desc); -} diff --git a/gas/cgen.h b/gas/cgen.h deleted file mode 100644 index 8cf72af4b..000000000 --- a/gas/cgen.h +++ /dev/null @@ -1,102 +0,0 @@ -/* GAS cgen support. - Copyright 1998, 1999, 2000 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef GAS_CGEN_H -#define GAS_CGEN_H - -/* Opcode table handle. */ -extern CGEN_CPU_DESC gas_cgen_cpu_desc; - -/* Maximum number of fixups in an insn. - If you need to change this, allow target to override and do so there. */ -#ifndef GAS_CGEN_MAX_FIXUPS -#define GAS_CGEN_MAX_FIXUPS 3 -#endif - -/* Struct defining result of gas_cgen_finish_insn. */ -typedef struct { - /* frag containing the insn */ - fragS * frag; - /* Address of insn in frag. */ - char * addr; - /* Number of fixups this insn has. */ - int num_fixups; - /* Array of fixups. */ - fixS * fixups[GAS_CGEN_MAX_FIXUPS]; -} finished_insnS; - -/* Callback for operand parsing. - The result is an error message or NULL for success. - The parsed value is stored in the bfd_vma *. */ -extern const char * gas_cgen_parse_operand - (CGEN_CPU_DESC, enum cgen_parse_operand_type, - const char **, int, int, enum cgen_parse_operand_result *, - bfd_vma *); - -/* Call this from md_assemble to initialize the assembler callback. */ -extern void gas_cgen_init_parse (void); - -/* Routines and macros for saving fixup chains. */ -extern void gas_cgen_save_fixups (int); -extern void gas_cgen_restore_fixups (int); -extern void gas_cgen_swap_fixups (int); -extern void gas_cgen_initialize_saved_fixups_array (void); -#define MAX_SAVED_FIXUP_CHAINS 50 - -/* Add a register to the assembler's hash table. - This makes lets GAS parse registers for us. - ??? This isn't currently used, but it could be in the future. */ -extern void cgen_asm_record_register (char *, int); - -/* After CGEN_SYM (assemble_insn) is done, this is called to - output the insn and record any fixups. */ -extern void gas_cgen_finish_insn (const CGEN_INSN *, - CGEN_INSN_BYTES_PTR, unsigned int, - int, finished_insnS *); - -/* Record a fixup. */ -extern fixS * gas_cgen_record_fixup (fragS *, int, const CGEN_INSN *, - int, const CGEN_OPERAND *, int, - symbolS *, offsetT); -extern fixS * gas_cgen_record_fixup_exp (fragS *, int, const CGEN_INSN *, - int, const CGEN_OPERAND *, int, - expressionS *); - -/* md_apply_fix3 handler */ -extern void gas_cgen_md_apply_fix3 (fixS *, valueT *, segT); - -/* tc_gen_reloc handler */ -extern arelent *gas_cgen_tc_gen_reloc (asection *, fixS *); - -/* Target supplied routine to lookup a reloc. */ -extern bfd_reloc_code_real_type -md_cgen_lookup_reloc (const CGEN_INSN *, const CGEN_OPERAND *, fixS *); - -/* Optional target supplied routine to record a fixup for an expression. */ -extern fixS * -md_cgen_record_fixup_exp (fragS *, int, const CGEN_INSN *, int, - const CGEN_OPERAND *, int, expressionS *); - -extern void gas_cgen_md_operand (expressionS *); - -/* Perform any cgen specific initialisation for gas. */ -extern void gas_cgen_begin (void); - -#endif /* GAS_CGEN_H */ diff --git a/gas/cond.c b/gas/cond.c deleted file mode 100644 index 870a7d5bf..000000000 --- a/gas/cond.c +++ /dev/null @@ -1,542 +0,0 @@ -/* cond.c - conditional assembly pseudo-ops, and .include - Copyright 1990, 1991, 1992, 1993, 1995, 1997, 1998, 2000, 2001 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "as.h" -#include "macro.h" - -#include "obstack.h" - -/* This is allocated to grow and shrink as .ifdef/.endif pairs are - scanned. */ -struct obstack cond_obstack; - -struct file_line { - char *file; - unsigned int line; -}; - -/* We push one of these structures for each .if, and pop it at the - .endif. */ - -struct conditional_frame { - /* The source file & line number of the "if". */ - struct file_line if_file_line; - /* The source file & line of the "else". */ - struct file_line else_file_line; - /* The previous conditional. */ - struct conditional_frame *previous_cframe; - /* Have we seen an else yet? */ - int else_seen; - /* Whether we are currently ignoring input. */ - int ignoring; - /* Whether a conditional at a higher level is ignoring input. - Set also when a branch of an "if .. elseif .." tree has matched - to prevent further matches. */ - int dead_tree; - /* Macro nesting level at which this conditional was created. */ - int macro_nest; -}; - -static void initialize_cframe (struct conditional_frame *cframe); -static char *get_mri_string (int, int *); - -static struct conditional_frame *current_cframe = NULL; - -/* Performs the .ifdef (test_defined == 1) and - the .ifndef (test_defined == 0) pseudo op. */ - -void -s_ifdef (int test_defined) -{ - /* Points to name of symbol. */ - char *name; - /* Points to symbol. */ - symbolS *symbolP; - struct conditional_frame cframe; - char c; - - /* Leading whitespace is part of operand. */ - SKIP_WHITESPACE (); - name = input_line_pointer; - - if (!is_name_beginner (*name)) - { - as_bad (_("invalid identifier for \".ifdef\"")); - obstack_1grow (&cond_obstack, 0); - ignore_rest_of_line (); - return; - } - - c = get_symbol_end (); - symbolP = symbol_find (name); - *input_line_pointer = c; - - initialize_cframe (&cframe); - - if (cframe.dead_tree) - cframe.ignoring = 1; - else - { - int is_defined; - - /* Use the same definition of 'defined' as .equiv so that a symbol - which has been referenced but not yet given a value/address is - considered to be undefined. */ - is_defined = - symbolP != NULL - && S_IS_DEFINED (symbolP) - && S_GET_SEGMENT (symbolP) != reg_section; - - cframe.ignoring = ! (test_defined ^ is_defined); - } - - current_cframe = ((struct conditional_frame *) - obstack_copy (&cond_obstack, &cframe, - sizeof (cframe))); - - if (LISTING_SKIP_COND () - && cframe.ignoring - && (cframe.previous_cframe == NULL - || ! cframe.previous_cframe->ignoring)) - listing_list (2); - - demand_empty_rest_of_line (); -} - -void -s_if (int arg) -{ - expressionS operand; - struct conditional_frame cframe; - int t; - char *stop = NULL; - char stopc; - - if (flag_mri) - stop = mri_comment_field (&stopc); - - /* Leading whitespace is part of operand. */ - SKIP_WHITESPACE (); - - if (current_cframe != NULL && current_cframe->ignoring) - { - operand.X_add_number = 0; - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - } - else - { - expression (&operand); - if (operand.X_op != O_constant) - as_bad (_("non-constant expression in \".if\" statement")); - } - - switch ((operatorT) arg) - { - case O_eq: t = operand.X_add_number == 0; break; - case O_ne: t = operand.X_add_number != 0; break; - case O_lt: t = operand.X_add_number < 0; break; - case O_le: t = operand.X_add_number <= 0; break; - case O_ge: t = operand.X_add_number >= 0; break; - case O_gt: t = operand.X_add_number > 0; break; - default: - abort (); - return; - } - - /* If the above error is signaled, this will dispatch - using an undefined result. No big deal. */ - initialize_cframe (&cframe); - cframe.ignoring = cframe.dead_tree || ! t; - current_cframe = ((struct conditional_frame *) - obstack_copy (&cond_obstack, &cframe, sizeof (cframe))); - - if (LISTING_SKIP_COND () - && cframe.ignoring - && (cframe.previous_cframe == NULL - || ! cframe.previous_cframe->ignoring)) - listing_list (2); - - if (flag_mri) - mri_comment_end (stop, stopc); - - demand_empty_rest_of_line (); -} - -/* Get a string for the MRI IFC or IFNC pseudo-ops. */ - -static char * -get_mri_string (int terminator, int *len) -{ - char *ret; - char *s; - - SKIP_WHITESPACE (); - s = ret = input_line_pointer; - if (*input_line_pointer == '\'') - { - ++s; - ++input_line_pointer; - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - { - *s++ = *input_line_pointer++; - if (s[-1] == '\'') - { - if (*input_line_pointer != '\'') - break; - ++input_line_pointer; - } - } - SKIP_WHITESPACE (); - } - else - { - while (*input_line_pointer != terminator - && ! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - s = input_line_pointer; - while (s > ret && (s[-1] == ' ' || s[-1] == '\t')) - --s; - } - - *len = s - ret; - return ret; -} - -/* The MRI IFC and IFNC pseudo-ops. */ - -void -s_ifc (int arg) -{ - char *stop = NULL; - char stopc; - char *s1, *s2; - int len1, len2; - int res; - struct conditional_frame cframe; - - if (flag_mri) - stop = mri_comment_field (&stopc); - - s1 = get_mri_string (',', &len1); - - if (*input_line_pointer != ',') - as_bad (_("bad format for ifc or ifnc")); - else - ++input_line_pointer; - - s2 = get_mri_string (';', &len2); - - res = len1 == len2 && strncmp (s1, s2, len1) == 0; - - initialize_cframe (&cframe); - cframe.ignoring = cframe.dead_tree || ! (res ^ arg); - current_cframe = ((struct conditional_frame *) - obstack_copy (&cond_obstack, &cframe, sizeof (cframe))); - - if (LISTING_SKIP_COND () - && cframe.ignoring - && (cframe.previous_cframe == NULL - || ! cframe.previous_cframe->ignoring)) - listing_list (2); - - if (flag_mri) - mri_comment_end (stop, stopc); - - demand_empty_rest_of_line (); -} - -void -s_elseif (int arg) -{ - if (current_cframe == NULL) - { - as_bad (_("\".elseif\" without matching \".if\"")); - } - else if (current_cframe->else_seen) - { - as_bad (_("\".elseif\" after \".else\"")); - as_bad_where (current_cframe->else_file_line.file, - current_cframe->else_file_line.line, - _("here is the previous \"else\"")); - as_bad_where (current_cframe->if_file_line.file, - current_cframe->if_file_line.line, - _("here is the previous \"if\"")); - } - else - { - as_where (¤t_cframe->else_file_line.file, - ¤t_cframe->else_file_line.line); - - current_cframe->dead_tree |= !current_cframe->ignoring; - current_cframe->ignoring = current_cframe->dead_tree; - } - - if (current_cframe == NULL || current_cframe->ignoring) - { - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - - if (current_cframe == NULL) - return; - } - else - { - expressionS operand; - int t; - - /* Leading whitespace is part of operand. */ - SKIP_WHITESPACE (); - - expression (&operand); - if (operand.X_op != O_constant) - as_bad (_("non-constant expression in \".elseif\" statement")); - - switch ((operatorT) arg) - { - case O_eq: t = operand.X_add_number == 0; break; - case O_ne: t = operand.X_add_number != 0; break; - case O_lt: t = operand.X_add_number < 0; break; - case O_le: t = operand.X_add_number <= 0; break; - case O_ge: t = operand.X_add_number >= 0; break; - case O_gt: t = operand.X_add_number > 0; break; - default: - abort (); - return; - } - - current_cframe->ignoring = current_cframe->dead_tree || ! t; - } - - if (LISTING_SKIP_COND () - && (current_cframe->previous_cframe == NULL - || ! current_cframe->previous_cframe->ignoring)) - { - if (! current_cframe->ignoring) - listing_list (1); - else - listing_list (2); - } - - demand_empty_rest_of_line (); -} - -void -s_endif (int arg ATTRIBUTE_UNUSED) -{ - struct conditional_frame *hold; - - if (current_cframe == NULL) - { - as_bad (_("\".endif\" without \".if\"")); - } - else - { - if (LISTING_SKIP_COND () - && current_cframe->ignoring - && (current_cframe->previous_cframe == NULL - || ! current_cframe->previous_cframe->ignoring)) - listing_list (1); - - hold = current_cframe; - current_cframe = current_cframe->previous_cframe; - obstack_free (&cond_obstack, hold); - } /* if one pop too many */ - - if (flag_mri) - { - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - } - - demand_empty_rest_of_line (); -} - -void -s_else (int arg ATTRIBUTE_UNUSED) -{ - if (current_cframe == NULL) - { - as_bad (_("\".else\" without matching \".if\"")); - } - else if (current_cframe->else_seen) - { - as_bad (_("duplicate \"else\"")); - as_bad_where (current_cframe->else_file_line.file, - current_cframe->else_file_line.line, - _("here is the previous \"else\"")); - as_bad_where (current_cframe->if_file_line.file, - current_cframe->if_file_line.line, - _("here is the previous \"if\"")); - } - else - { - as_where (¤t_cframe->else_file_line.file, - ¤t_cframe->else_file_line.line); - - current_cframe->ignoring = - current_cframe->dead_tree | !current_cframe->ignoring; - - if (LISTING_SKIP_COND () - && (current_cframe->previous_cframe == NULL - || ! current_cframe->previous_cframe->ignoring)) - { - if (! current_cframe->ignoring) - listing_list (1); - else - listing_list (2); - } - - current_cframe->else_seen = 1; - } - - if (flag_mri) - { - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - } - - demand_empty_rest_of_line (); -} - -void -s_ifeqs (int arg) -{ - char *s1, *s2; - int len1, len2; - int res; - struct conditional_frame cframe; - - s1 = demand_copy_C_string (&len1); - - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - as_bad (_(".ifeqs syntax error")); - ignore_rest_of_line (); - return; - } - - ++input_line_pointer; - - s2 = demand_copy_C_string (&len2); - - res = len1 == len2 && strncmp (s1, s2, len1) == 0; - - initialize_cframe (&cframe); - cframe.ignoring = cframe.dead_tree || ! (res ^ arg); - current_cframe = ((struct conditional_frame *) - obstack_copy (&cond_obstack, &cframe, sizeof (cframe))); - - if (LISTING_SKIP_COND () - && cframe.ignoring - && (cframe.previous_cframe == NULL - || ! cframe.previous_cframe->ignoring)) - listing_list (2); - - demand_empty_rest_of_line (); -} - -int -ignore_input (void) -{ - char *s; - - s = input_line_pointer; - - if (NO_PSEUDO_DOT || flag_m68k_mri) - { - if (s[-1] != '.') - --s; - } - else - { - if (s[-1] != '.') - return (current_cframe != NULL) && (current_cframe->ignoring); - } - - /* We cannot ignore certain pseudo ops. */ - if (((s[0] == 'i' - || s[0] == 'I') - && (!strncasecmp (s, "if", 2) - || !strncasecmp (s, "ifdef", 5) - || !strncasecmp (s, "ifndef", 6))) - || ((s[0] == 'e' - || s[0] == 'E') - && (!strncasecmp (s, "else", 4) - || !strncasecmp (s, "endif", 5) - || !strncasecmp (s, "endc", 4)))) - return 0; - - return (current_cframe != NULL) && (current_cframe->ignoring); -} - -static void -initialize_cframe (struct conditional_frame *cframe) -{ - memset (cframe, 0, sizeof (*cframe)); - as_where (&cframe->if_file_line.file, - &cframe->if_file_line.line); - cframe->previous_cframe = current_cframe; - cframe->dead_tree = current_cframe != NULL && current_cframe->ignoring; - cframe->macro_nest = macro_nest; -} - -/* Give an error if a conditional is unterminated inside a macro or - the assembly as a whole. If NEST is non negative, we are being - called because of the end of a macro expansion. If NEST is - negative, we are being called at the of the input files. */ - -void -cond_finish_check (int nest) -{ - if (current_cframe != NULL && current_cframe->macro_nest >= nest) - { - if (nest >= 0) - as_bad (_("end of macro inside conditional")); - else - as_bad (_("end of file inside conditional")); - as_bad_where (current_cframe->if_file_line.file, - current_cframe->if_file_line.line, - _("here is the start of the unterminated conditional")); - if (current_cframe->else_seen) - as_bad_where (current_cframe->else_file_line.file, - current_cframe->else_file_line.line, - _("here is the \"else\" of the unterminated conditional")); - } -} - -/* This function is called when we exit out of a macro. We assume - that any conditionals which began within the macro are correctly - nested, and just pop them off the stack. */ - -void -cond_exit_macro (int nest) -{ - while (current_cframe != NULL && current_cframe->macro_nest >= nest) - { - struct conditional_frame *hold; - - hold = current_cframe; - current_cframe = current_cframe->previous_cframe; - obstack_free (&cond_obstack, hold); - } -} diff --git a/gas/config-gas.com b/gas/config-gas.com deleted file mode 100644 index cf5248af5..000000000 --- a/gas/config-gas.com +++ /dev/null @@ -1,186 +0,0 @@ -$!config-gas.com -$! This file sets things up to build gas on a VMS system to generate object -$! files for a VMS system. We do not use the configure script, since we -$! do not have /bin/sh to execute it. -$! -$! -$ gas_host="vms" -$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2 -$ arch = f$element(arch_indx,"|","|VAX|Alpha|") -$ if arch.eqs."VAX" -$ then -$ cpu_type="vax" -$ obj_format="vms" -$ atof="vax" -$ else -$ cpu_type="alpha" -$ obj_format="evax" -$ atof="ieee" -$ endif -$ emulation="generic" -$! -$ DELETE = "delete/noConfirm" -$ ECHO = "write sys$output" -$! -$! Target specific information -$ call make "targ-cpu.h" "[.config]tc-''cpu_type'.h" -$ call make "targ-env.h" "[.config]te-''emulation'.h" -$! -$! Code to handle the object file format. -$ call make "obj-format.h" "[.config]obj-''obj_format'.h" -$! -$! (not currently used for vax or alpha) -$ call make "itbl-cpu.h" "[.config]itbl-''cpu_type'.h" -$! -$! -$! Create the file version.opt, which helps identify the executable. -$! -$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ -$search CONFIGURE.IN "AM_INIT_AUTOMAKE"/Exact/Output=config-gas-tmp.tmp -$open ifile$ config-gas-tmp.tmp -$read ifile$ line -$close ifile$ -$DELETE config-gas-tmp.tmp;* -$! Discard "AM_INIT_AUTOMAKE(gas, " and ")" parts. -$ijk=f$locate(",",line)+2 -$line=f$extract(ijk,f$length(line)-ijk,line) -$ijk=f$locate(")",line) -$line=f$extract(0,ijk,line) -$! -$ if f$search("version.opt").nes."" then DELETE version.opt;* -$copy _NL: version.opt -$open/Append ifile$ version.opt -$write ifile$ "identification="+""""+line+"""" -$close ifile$ -$! -$! Now write config.h. -$! -$ if f$search("config.h").nes."" then DELETE config.h;* -$copy _NL: config.h -$open/Append ifile$ config.h -$write ifile$ "/* config.h. Generated by config-gas.com. */ -$write ifile$ "#ifndef VERSION" -$write ifile$ "#define VERSION """,line,"""" -$write ifile$ "#endif" -$write ifile$ "/*--*/" -$if arch .eqs. "VAX" -$then -$append [.config]vms-conf.h ifile$: -$else -$ append [.config]vms-a-conf.h ifile$: -$endif -$close ifile$ -$ECHO "Created config.h." -$! -$! Check for, and possibly make, header file . -$! -$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;* -$!can't use simple `#include HDR' with `gcc /Define="HDR="' -$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug) -$ create tmp-chk-h.c -int tmp_chk_h; /* guarantee non-empty output */ -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_UNIXIO_H -#include -#endif -#ifdef HAVE_UNIXLIB_H -#include -#endif -$ on warning then continue -$ CHECK = "call tmp_chk_h" -$ CHECK "HAVE_STDIO_H" -$ if .not.$status -$ then type sys$input: - -? could not compile . - - If you're compiling with DEC C or VAX C, create config.status as an - empty file and start gnu make again. - - If you're compiling with GNU C, there is some setup problem and - gas configuration cannot proceed. - -$ DELETE tmp-chk-h.c;* -$ exit %x002C -$ endif -$! -$ CHECK "HAVE_UNISTD_H" -$ if .not.$status -$ then -$ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$ -$ CHECK "HAVE_UNIXIO_H" -$ got_unixio = ($status .and. 1) -$ CHECK "HAVE_UNIXLIB_H" -$ got_unixlib = ($status .and. 1) -$ create []unistd.h !with rudimentary contents -/* substitute for building gas */ -#ifndef UNISTD_H -#define UNISTD_H - -$ open/Append hfile$ []unistd.h -$ if got_unixio -$ then write hfile$ "#include " -$ else append sys$input: hfile$: -/* some of the routines normally prototyped in */ -extern int creat(), open(), close(), read(), write(); -extern int access(), dup(), dup2(), fstat(), stat(); -extern long lseek(); -$ endif -$ write hfile$ "" -$ if got_unixlib -$ then write hfile$ "#include " -$ else append sys$input: hfile$: -/* some of the routines normally prototyped in */ -extern char *sbrk(), *getcwd(), *cuserid(); -extern int brk(), chdir(), chmod(), chown(), mkdir(); -extern unsigned getuid(), umask(); -$ endif -$ append sys$input: hfile$: - -#endif /*UNISTD_H*/ -$ close hfile$ -$ ECHO "Created ""[]unistd.h""." -$ endif !gcc '#include ' failed -$ DELETE tmp-chk-h.c;* -$ -$tmp_chk_h: subroutine -$ set noOn -$ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE") -$ write sys$output "Checking for ''hname'." -$ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;* -$ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc -$ define/noLog sys$output _NL: ! driver's use of multiple image activation -$ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c -$!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly -$ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000 -$ deassign sys$error !restore, more or less -$ deassign sys$output -$ if ok then DELETE tmp-chk-h.obj;* -$ exit ok -$ endsubroutine !tmp_chk_h -$ -$! -$! Done -$! -$ if f$search("config.status") .nes. "" then DELETE config.status;* -$ open/write cfile []config.status -$ write cfile "Links are now set up for use with a "+arch+" running VMS." -$ close cfile -$ type []config.status -$exit -$! -$! -$make: subroutine -$ if f$search(p1).nes."" then DELETE 'p1';* -$ create 'p1' -$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ -$ open/Append ifile$ 'p1' -$ write ifile$ "#include ""''f$string(p2 - "[.config]")'""" -$ close ifile$ -$ ECHO "Created ''p1' for ''p2'." -$endsubroutine !make diff --git a/gas/config.in b/gas/config.in deleted file mode 100644 index fe2bc3fbc..000000000 --- a/gas/config.in +++ /dev/null @@ -1,282 +0,0 @@ -/* config.in. Generated automatically from configure.in by autoheader. */ - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* 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 if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* 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 run-time. - 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 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if lex declares yytext as a char * by default, not a char[]. */ -#undef YYTEXT_POINTER - -/* Define if you have the __argz_count function. */ -#undef HAVE___ARGZ_COUNT - -/* Define if you have the __argz_next function. */ -#undef HAVE___ARGZ_NEXT - -/* Define if you have the __argz_stringify function. */ -#undef HAVE___ARGZ_STRINGIFY - -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT - -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the munmap function. */ -#undef HAVE_MUNMAP - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if you have the remove function. */ -#undef HAVE_REMOVE - -/* Define if you have the sbrk function. */ -#undef HAVE_SBRK - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setlocale function. */ -#undef HAVE_SETLOCALE - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the strchr function. */ -#undef HAVE_STRCHR - -/* Define if you have the unlink function. */ -#undef HAVE_UNLINK - -/* Define if you have the header file. */ -#undef HAVE_ARGZ_H - -/* Define if you have the header file. */ -#undef HAVE_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define if you have the header file. */ -#undef HAVE_NL_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_STDARG_H - -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the header file. */ -#undef HAVE_VALUES_H - -/* Define if you have the header file. */ -#undef HAVE_VARARGS_H - -/* Name of package */ -#undef PACKAGE - -/* Version number of package */ -#undef VERSION - -/* Define if defaulting to ELF on SCO 5. */ -#undef SCO_ELF - -/* Using strict COFF? */ -#undef STRICTCOFF - -/* Define if default target is PowerPC Solaris. */ -#undef TARGET_SOLARIS_COMMENT - -/* Define as 1 if big endian. */ -#undef TARGET_BYTES_BIG_ENDIAN - -/* Default CPU for MIPS targets. */ -#undef MIPS_CPU_STRING_DEFAULT - -/* Allow use of E_MIPS_ABI_O32 on MIPS targets. */ -#undef USE_E_MIPS_ABI_O32 - -/* Generate 64-bit code by default on MIPS targets. */ -#undef MIPS_DEFAULT_64BIT - -/* Choose a default ABI for MIPS targets. */ -#undef MIPS_DEFAULT_ABI - -/* Default architecture. */ -#undef DEFAULT_ARCH - -/* Using cgen code? */ -#undef USING_CGEN - -/* Using i386 COFF? */ -#undef I386COFF - -/* Using m68k COFF? */ -#undef M68KCOFF - -/* Using m88k COFF? */ -#undef M88KCOFF - -/* a.out support? */ -#undef OBJ_MAYBE_AOUT - -/* b.out support? */ -#undef OBJ_MAYBE_BOUT - -/* COFF support? */ -#undef OBJ_MAYBE_COFF - -/* ECOFF support? */ -#undef OBJ_MAYBE_ECOFF - -/* ELF support? */ -#undef OBJ_MAYBE_ELF - -/* generic support? */ -#undef OBJ_MAYBE_GENERIC - -/* HP300 support? */ -#undef OBJ_MAYBE_HP300 - -/* IEEE support? */ -#undef OBJ_MAYBE_IEEE - -/* SOM support? */ -#undef OBJ_MAYBE_SOM - -/* VMS support? */ -#undef OBJ_MAYBE_VMS - -/* Use emulation support? */ -#undef USE_EMULATIONS - -/* Supported emulations. */ -#undef EMULATIONS - -/* Default emulation. */ -#undef DEFAULT_EMULATION - -/* old COFF support? */ -#undef MANY_SEGMENTS - -/* Use BFD interface? */ -#undef BFD_ASSEMBLER - -/* Target alias. */ -#undef TARGET_ALIAS - -/* Canonical target. */ -#undef TARGET_CANONICAL - -/* Target CPU. */ -#undef TARGET_CPU - -/* Target vendor. */ -#undef TARGET_VENDOR - -/* Target OS. */ -#undef TARGET_OS - -/* Define if you have the stpcpy function */ -#undef HAVE_STPCPY - -/* Define if your locale.h file contains LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - -/* Define to 1 if NLS is requested */ -#undef ENABLE_NLS - -/* Define as 1 if you have gettext and don't want to use GNU gettext. */ -#undef HAVE_GETTEXT - -/* Compiling cross-assembler? */ -#undef CROSS_COMPILE - -/* assert broken? */ -#undef BROKEN_ASSERT - -/* Define if strstr is not declared in system header files. */ -#undef NEED_DECLARATION_STRSTR - -/* Define if malloc is not declared in system header files. */ -#undef NEED_DECLARATION_MALLOC - -/* Define if free is not declared in system header files. */ -#undef NEED_DECLARATION_FREE - -/* Define if sbrk is not declared in system header files. */ -#undef NEED_DECLARATION_SBRK - -/* Define if environ is not declared in system header files. */ -#undef NEED_DECLARATION_ENVIRON - -/* Define if errno is not declared in system header files. */ -#undef NEED_DECLARATION_ERRNO - diff --git a/gas/config/aout_gnu.h b/gas/config/aout_gnu.h deleted file mode 100644 index 0942fd34a..000000000 --- a/gas/config/aout_gnu.h +++ /dev/null @@ -1,450 +0,0 @@ -/* This file is aout_gnu.h - - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 2000 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef __A_OUT_GNU_H__ -#define __A_OUT_GNU_H__ - -/* There are two main flavours of a.out, one which uses the standard - relocations, and one which uses extended relocations. - - Today, the extended reloc uses are - TC_SPARC, TC_A29K - - each must define the enum reloc_type - -*/ - -#define USE_EXTENDED_RELOC (defined(TC_SPARC) || defined(TC_A29K)) - -#if defined(TC_SPARC) || defined(TC_A29K) -enum reloc_type - { - RELOC_8, RELOC_16, RELOC_32,/* simple relocations */ - RELOC_DISP8, RELOC_DISP16, RELOC_DISP32, /* pc-rel displacement */ - RELOC_WDISP30, RELOC_WDISP22, - RELOC_HI22, RELOC_22, - RELOC_13, RELOC_LO10, - RELOC_SFA_BASE, RELOC_SFA_OFF13, - RELOC_BASE10, RELOC_BASE13, RELOC_BASE22, /* P.I.C. (base-relative) */ - RELOC_PC10, RELOC_PC22, /* for some sort of pc-rel P.I.C. (?) */ - RELOC_JMP_TBL, /* P.I.C. jump table */ - RELOC_SEGOFF16, /* reputedly for shared libraries somehow */ - RELOC_GLOB_DAT, RELOC_JMP_SLOT, RELOC_RELATIVE, - RELOC_10, RELOC_11, - RELOC_WDISP2_14, - RELOC_WDISP19, - RELOC_HHI22, - RELOC_HLO10, - - /* 29K relocation types */ - RELOC_JUMPTARG, RELOC_CONST, RELOC_CONSTH, - - RELOC_WDISP14, RELOC_WDISP21, - - NO_RELOC - }; - -#endif /* TC_SPARC or TC_A29K */ - -#define __GNU_EXEC_MACROS__ - -#ifndef __STRUCT_EXEC_OVERRIDE__ - -/* This is the layout on disk of a Unix V7, Berkeley, SunOS, Vax Ultrix - "struct exec". Don't assume that on this machine, the "struct exec" - will lay out the same sizes or alignments. */ - -struct exec_bytes - { - unsigned char a_info[4]; - unsigned char a_text[4]; - unsigned char a_data[4]; - unsigned char a_bss[4]; - unsigned char a_syms[4]; - unsigned char a_entry[4]; - unsigned char a_trsize[4]; - unsigned char a_drsize[4]; - }; - -/* How big the "struct exec" is on disk */ -#define EXEC_BYTES_SIZE (8 * 4) - -/* This is the layout in memory of a "struct exec" while we process it. */ - -struct exec -{ - unsigned long a_info; /* Use macros N_MAGIC, etc for access */ - unsigned a_text; /* length of text, in bytes */ - unsigned a_data; /* length of data, in bytes */ - unsigned a_bss; /* length of uninitialized data area for file, in bytes */ - unsigned a_syms; /* length of symbol table data in file, in bytes */ - unsigned a_entry; /* start address */ - unsigned a_trsize; /* length of relocation info for text, in bytes */ - unsigned a_drsize; /* length of relocation info for data, in bytes */ -}; - -#endif /* __STRUCT_EXEC_OVERRIDE__ */ - -/* these go in the N_MACHTYPE field */ -/* These symbols could be defined by code from Suns...punt 'em */ -#undef M_UNKNOWN -#undef M_68010 -#undef M_68020 -#undef M_SPARC -enum machine_type - { - M_UNKNOWN = 0, - M_68010 = 1, - M_68020 = 2, - M_SPARC = 3, - /* skip a bunch so we don't run into any of sun's numbers */ - M_386 = 100, - M_29K = 101, - M_RS6000 = 102, /* IBM RS/6000 */ - M_VAX4K_NETBSD = 150, - /* HP/BSD formats */ - M_HP200 = 200, /* hp200 (68010) BSD binary */ - M_HP300 = 300, /* hp300 (68020+68881) BSD binary */ - M_HPUX23 = 0x020C /* hp200/300 HPUX binary */ - }; - -#define N_MAGIC(exec) ((exec).a_info & 0xffff) -#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff)) -#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff) -#define N_SET_INFO(exec, magic, type, flags) \ - ((exec).a_info = ((magic) & 0xffff) \ - | (((int)(type) & 0xff) << 16) \ - | (((flags) & 0xff) << 24)) -#define N_SET_MAGIC(exec, magic) \ - ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff))) - -#define N_SET_MACHTYPE(exec, machtype) \ - ((exec).a_info = \ - ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16)) - -#define N_SET_FLAGS(exec, flags) \ - ((exec).a_info = \ - ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24)) - -/* Code indicating object file or impure executable. */ -#ifndef OMAGIC -#define OMAGIC 0407 -#endif -/* Code indicating pure executable. */ -#define NMAGIC 0410 -/* Code indicating demand-paged executable. */ -#define ZMAGIC 0413 - -/* Virtual Address of text segment from the a.out file. For OMAGIC, - (almost always "unlinked .o's" these days), should be zero. - For linked files, should reflect reality if we know it. */ - -#ifndef N_TXTADDR -#define N_TXTADDR(x) (N_MAGIC(x)==OMAGIC? 0 : TEXT_START_ADDR) -#endif - -#ifndef N_BADMAG -#define N_BADMAG(x) (N_MAGIC(x) != OMAGIC \ - && N_MAGIC(x) != NMAGIC \ - && N_MAGIC(x) != ZMAGIC) -#endif - -/* By default, segment size is constant. But on some machines, it can - be a function of the a.out header (e.g. machine type). */ -#ifndef N_SEGSIZE -#define N_SEGSIZE(x) SEGMENT_SIZE -#endif - -/* This complexity is for encapsulated COFF support */ -#ifndef _N_HDROFF -#define _N_HDROFF(x) (N_SEGSIZE(x) - sizeof (struct exec)) -#endif - -#ifndef N_TXTOFF -#define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? \ - _N_HDROFF((x)) + sizeof (struct exec) : \ - sizeof (struct exec)) -#endif - -#ifndef N_DATOFF -#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text ) -#endif - -#ifndef N_TRELOFF -#define N_TRELOFF(x) ( N_DATOFF(x) + (x).a_data ) -#endif - -#ifndef N_DRELOFF -#define N_DRELOFF(x) ( N_TRELOFF(x) + (x).a_trsize ) -#endif - -#ifndef N_SYMOFF -#define N_SYMOFF(x) ( N_DRELOFF(x) + (x).a_drsize ) -#endif - -#ifndef N_STROFF -#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms ) -#endif - -/* Address of text segment in memory after it is loaded. */ -#ifndef N_TXTADDR -#define N_TXTADDR(x) 0 -#endif - -#ifndef N_DATADDR -#define N_DATADDR(x) \ - (N_MAGIC(x)==OMAGIC? (N_TXTADDR(x)+(x).a_text) \ - : (N_SEGSIZE(x) + ((N_TXTADDR(x)+(x).a_text-1) & ~(N_SEGSIZE(x)-1)))) -#endif - -/* Address of bss segment in memory after it is loaded. */ -#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data) - -struct nlist - { - union - { - char *n_name; - struct nlist *n_next; - long n_strx; - } - n_un; - unsigned char n_type; - char n_other; - short n_desc; - unsigned long n_value; - }; - -#define N_UNDF 0 -#define N_ABS 2 -#define N_TEXT 4 -#define N_DATA 6 -#define N_BSS 8 -#define N_COMM 0x12 /* common (visible in shared lib commons) */ -#define N_FN 0x1F /* File name of a .o file */ - -/* Note: N_EXT can only usefully be OR-ed with N_UNDF, N_ABS, N_TEXT, - N_DATA, or N_BSS. When the low-order bit of other types is set, - (e.g. N_WARNING versus N_FN), they are two different types. */ -#define N_EXT 1 -#define N_TYPE 036 -#define N_STAB 0340 - -/* The following type indicates the definition of a symbol as being - an indirect reference to another symbol. The other symbol - appears as an undefined reference, immediately following this symbol. - - Indirection is asymmetrical. The other symbol's value will be used - to satisfy requests for the indirect symbol, but not vice versa. - If the other symbol does not have a definition, libraries will - be searched to find a definition. */ - -#define N_INDR 0xa - -/* The following symbols refer to set elements. - All the N_SET[ATDB] symbols with the same name form one set. - Space is allocated for the set in the text section, and each set - element's value is stored into one word of the space. - The first word of the space is the length of the set (number of elements). - - The address of the set is made into an N_SETV symbol - whose name is the same as the name of the set. - This symbol acts like a N_DATA global symbol - in that it can satisfy undefined external references. */ - -/* These appear as input to LD, in a .o file. */ -#define N_SETA 0x14 /* Absolute set element symbol */ -#define N_SETT 0x16 /* Text set element symbol */ -#define N_SETD 0x18 /* Data set element symbol */ -#define N_SETB 0x1A /* Bss set element symbol */ - -/* This is output from LD. */ -#define N_SETV 0x1C /* Pointer to set vector in data area. */ - -/* Warning symbol. The text gives a warning message, the next symbol - in the table will be undefined. When the symbol is referenced, the - message is printed. */ - -#define N_WARNING 0x1e - -/* Weak symbols. These are a GNU extension to the a.out format. The - semantics are those of ELF weak symbols. Weak symbols are always - externally visible. The N_WEAK? values are squeezed into the - available slots. The value of a N_WEAKU symbol is 0. The values - of the other types are the definitions. */ -#define N_WEAKU 0x0d /* Weak undefined symbol. */ -#define N_WEAKA 0x0e /* Weak absolute symbol. */ -#define N_WEAKT 0x0f /* Weak text symbol. */ -#define N_WEAKD 0x10 /* Weak data symbol. */ -#define N_WEAKB 0x11 /* Weak bss symbol. */ - -/* This structure describes a single relocation to be performed. - The text-relocation section of the file is a vector of these structures, - all of which apply to the text section. - Likewise, the data-relocation section applies to the data section. */ - -/* The following enum and struct were borrowed from SunOS's - /usr/include/sun4/a.out.h and extended to handle - other machines. It is currently used on SPARC and AMD 29000. - - reloc_ext_bytes is how it looks on disk. reloc_info_extended is - how we might process it on a native host. */ -#if USE_EXTENDED_RELOC - -struct reloc_ext_bytes - { - unsigned char r_address[4]; - unsigned char r_index[3]; - unsigned char r_bits[1]; - unsigned char r_addend[4]; - }; - -#define RELOC_EXT_BITS_EXTERN_BIG 0x80 -#define RELOC_EXT_BITS_EXTERN_LITTLE 0x01 - -#define RELOC_EXT_BITS_TYPE_BIG 0x1F -#define RELOC_EXT_BITS_TYPE_SH_BIG 0 -#define RELOC_EXT_BITS_TYPE_LITTLE 0xF8 -#define RELOC_EXT_BITS_TYPE_SH_LITTLE 3 - -#define RELOC_EXT_SIZE 12 /* Bytes per relocation entry */ - -struct reloc_info_extended -{ - unsigned long r_address; - unsigned int r_index:24; -# define r_symbolnum r_index - unsigned r_extern:1; - unsigned:2; - /* RS/6000 compiler does not support enum bitfield - enum reloc_type r_type:5; */ - enum reloc_type r_type; - long int r_addend; -}; - -#else - -/* The standard, old-fashioned, Berkeley compatible relocation struct */ - -#ifdef TC_I860 -/* NOTE: three bits max, see struct reloc_info_i860.r_type */ -enum i860_reloc_type - { - NO_RELOC = 0, BRADDR, LOW0, LOW1, LOW2, LOW3, LOW4, SPLIT0, SPLIT1, SPLIT2, RELOC_32, - }; - -typedef enum i860_reloc_type reloc_type; - -/* NOTE: two bits max, see reloc_info_i860.r_type */ -enum highlow_type - { - NO_SPEC = 0, PAIR, HIGH, HIGHADJ, - }; - -struct reloc_info_i860 -{ - unsigned long r_address; - /* - * Using bit fields here is a bad idea because the order is not portable. :-( - */ - unsigned int r_symbolnum:24; - unsigned int r_pcrel:1; - unsigned int r_extern:1; - /* combining the two field simplifies the argument passing in "new_fix()" */ - /* and is compatible with the existing Sparc #ifdef's */ - /* r_type: highlow_type - bits 5,4; reloc_type - bits 3-0 */ - unsigned int r_type:6; - long r_addend; -}; - -#endif /* TC_I860 */ - -struct reloc_std_bytes - { - unsigned char r_address[4]; - unsigned char r_index[3]; - unsigned char r_bits[1]; - }; - -#define RELOC_STD_BITS_PCREL_BIG 0x80 -#define RELOC_STD_BITS_PCREL_LITTLE 0x01 - -#define RELOC_STD_BITS_LENGTH_BIG 0x60 -#define RELOC_STD_BITS_LENGTH_SH_BIG 5 /* To shift to units place */ -#define RELOC_STD_BITS_LENGTH_LITTLE 0x06 -#define RELOC_STD_BITS_LENGTH_SH_LITTLE 1 - -#define RELOC_STD_BITS_EXTERN_BIG 0x10 -#define RELOC_STD_BITS_EXTERN_LITTLE 0x08 - -#define RELOC_STD_BITS_BASEREL_BIG 0x08 -#define RELOC_STD_BITS_BASEREL_LITTLE 0x08 - -#define RELOC_STD_BITS_JMPTABLE_BIG 0x04 -#define RELOC_STD_BITS_JMPTABLE_LITTLE 0x04 - -#define RELOC_STD_BITS_RELATIVE_BIG 0x02 -#define RELOC_STD_BITS_RELATIVE_LITTLE 0x02 - -#define RELOC_STD_SIZE 8 /* Bytes per relocation entry */ - -#endif /* USE_EXTENDED_RELOC */ - -#ifndef CUSTOM_RELOC_FORMAT -struct relocation_info -{ - /* Address (within segment) to be relocated. */ - int r_address; - /* The meaning of r_symbolnum depends on r_extern. */ - unsigned int r_symbolnum:24; - /* Nonzero means value is a pc-relative offset - and it should be relocated for changes in its own address - as well as for changes in the symbol or section specified. */ - unsigned int r_pcrel:1; - /* Length (as exponent of 2) of the field to be relocated. - Thus, a value of 2 indicates 1<<2 bytes. */ - unsigned int r_length:2; - /* 1 => relocate with value of symbol. - r_symbolnum is the index of the symbol - in file's the symbol table. - 0 => relocate with the address of a segment. - r_symbolnum is N_TEXT, N_DATA, N_BSS or N_ABS - (the N_EXT bit may be set also, but signifies nothing). */ - unsigned int r_extern:1; - /* The next three bits are for SunOS shared libraries, and seem to - be undocumented. */ -#ifdef TC_NS32K - unsigned int r_bsr:1; - unsigned int r_disp:2; -#else - unsigned int r_baserel:1; /* Linkage table relative */ - unsigned int r_jmptable:1; /* pc-relative to jump table */ - unsigned int r_relative:1; /* "relative relocation" */ -#endif /* TC_NS32K */ - /* unused */ - unsigned int r_pad:1; /* Padding -- set to zero */ -}; - -#endif /* CUSTOM_RELOC_FORMAT */ - -#endif /* __A_OUT_GNU_H__ */ - -/* end of aout_gnu.h */ diff --git a/gas/config/atof-ieee.c b/gas/config/atof-ieee.c deleted file mode 100644 index 0ad39c9b3..000000000 --- a/gas/config/atof-ieee.c +++ /dev/null @@ -1,734 +0,0 @@ -/* atof_ieee.c - turn a Flonum into an IEEE floating point number - Copyright 1987, 1992, 1994, 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "as.h" - -/* Flonums returned here. */ -extern FLONUM_TYPE generic_floating_point_number; - -static int next_bits PARAMS ((int)); -static void unget_bits PARAMS ((int)); -static void make_invalid_floating_point_number PARAMS ((LITTLENUM_TYPE *)); - -extern const char EXP_CHARS[]; -/* Precision in LittleNums. */ -/* Don't count the gap in the m68k extended precision format. */ -#define MAX_PRECISION (5) -#define F_PRECISION (2) -#define D_PRECISION (4) -#define X_PRECISION (5) -#define P_PRECISION (5) - -/* Length in LittleNums of guard bits. */ -#define GUARD (2) - -#ifndef TC_LARGEST_EXPONENT_IS_NORMAL -#define TC_LARGEST_EXPONENT_IS_NORMAL(PRECISION) 0 -#endif - -static const unsigned long mask[] = -{ - 0x00000000, - 0x00000001, - 0x00000003, - 0x00000007, - 0x0000000f, - 0x0000001f, - 0x0000003f, - 0x0000007f, - 0x000000ff, - 0x000001ff, - 0x000003ff, - 0x000007ff, - 0x00000fff, - 0x00001fff, - 0x00003fff, - 0x00007fff, - 0x0000ffff, - 0x0001ffff, - 0x0003ffff, - 0x0007ffff, - 0x000fffff, - 0x001fffff, - 0x003fffff, - 0x007fffff, - 0x00ffffff, - 0x01ffffff, - 0x03ffffff, - 0x07ffffff, - 0x0fffffff, - 0x1fffffff, - 0x3fffffff, - 0x7fffffff, - 0xffffffff, -}; - -static int bits_left_in_littlenum; -static int littlenums_left; -static LITTLENUM_TYPE *littlenum_pointer; - -static int -next_bits (number_of_bits) - int number_of_bits; -{ - int return_value; - - if (!littlenums_left) - return (0); - if (number_of_bits >= bits_left_in_littlenum) - { - return_value = mask[bits_left_in_littlenum] & *littlenum_pointer; - number_of_bits -= bits_left_in_littlenum; - return_value <<= number_of_bits; - - if (--littlenums_left) - { - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS - number_of_bits; - --littlenum_pointer; - return_value |= - (*littlenum_pointer >> bits_left_in_littlenum) - & mask[number_of_bits]; - } - } - else - { - bits_left_in_littlenum -= number_of_bits; - return_value = - mask[number_of_bits] & (*littlenum_pointer >> bits_left_in_littlenum); - } - return return_value; -} - -/* Num had better be less than LITTLENUM_NUMBER_OF_BITS. */ - -static void -unget_bits (num) - int num; -{ - if (!littlenums_left) - { - ++littlenum_pointer; - ++littlenums_left; - bits_left_in_littlenum = num; - } - else if (bits_left_in_littlenum + num > LITTLENUM_NUMBER_OF_BITS) - { - bits_left_in_littlenum = - num - (LITTLENUM_NUMBER_OF_BITS - bits_left_in_littlenum); - ++littlenum_pointer; - ++littlenums_left; - } - else - bits_left_in_littlenum += num; -} - -static void -make_invalid_floating_point_number (words) - LITTLENUM_TYPE *words; -{ - as_bad (_("cannot create floating-point number")); - /* Zero the leftmost bit. */ - words[0] = (LITTLENUM_TYPE) ((unsigned) -1) >> 1; - words[1] = (LITTLENUM_TYPE) -1; - words[2] = (LITTLENUM_TYPE) -1; - words[3] = (LITTLENUM_TYPE) -1; - words[4] = (LITTLENUM_TYPE) -1; - words[5] = (LITTLENUM_TYPE) -1; -} - -/* Warning: This returns 16-bit LITTLENUMs. It is up to the caller to - figure out any alignment problems and to conspire for the - bytes/word to be emitted in the right order. Bigendians beware! */ - -/* Note that atof-ieee always has X and P precisions enabled. it is up - to md_atof to filter them out if the target machine does not support - them. */ - -/* Returns pointer past text consumed. */ - -char * -atof_ieee (str, what_kind, words) - char *str; /* Text to convert to binary. */ - int what_kind; /* 'd', 'f', 'g', 'h'. */ - LITTLENUM_TYPE *words; /* Build the binary here. */ -{ - /* Extra bits for zeroed low-order bits. - The 1st MAX_PRECISION are zeroed, the last contain flonum bits. */ - static LITTLENUM_TYPE bits[MAX_PRECISION + MAX_PRECISION + GUARD]; - char *return_value; - /* Number of 16-bit words in the format. */ - int precision; - long exponent_bits; - FLONUM_TYPE save_gen_flonum; - - /* We have to save the generic_floating_point_number because it - contains storage allocation about the array of LITTLENUMs where - the value is actually stored. We will allocate our own array of - littlenums below, but have to restore the global one on exit. */ - save_gen_flonum = generic_floating_point_number; - - return_value = str; - generic_floating_point_number.low = bits + MAX_PRECISION; - generic_floating_point_number.high = NULL; - generic_floating_point_number.leader = NULL; - generic_floating_point_number.exponent = 0; - generic_floating_point_number.sign = '\0'; - - /* Use more LittleNums than seems necessary: the highest flonum may - have 15 leading 0 bits, so could be useless. */ - - memset (bits, '\0', sizeof (LITTLENUM_TYPE) * MAX_PRECISION); - - switch (what_kind) - { - case 'f': - case 'F': - case 's': - case 'S': - precision = F_PRECISION; - exponent_bits = 8; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - precision = D_PRECISION; - exponent_bits = 11; - break; - - case 'x': - case 'X': - case 'e': - case 'E': - precision = X_PRECISION; - exponent_bits = 15; - break; - - case 'p': - case 'P': - - precision = P_PRECISION; - exponent_bits = -1; - break; - - default: - make_invalid_floating_point_number (words); - return (NULL); - } - - generic_floating_point_number.high - = generic_floating_point_number.low + precision - 1 + GUARD; - - if (atof_generic (&return_value, ".", EXP_CHARS, - &generic_floating_point_number)) - { - make_invalid_floating_point_number (words); - return (NULL); - } - gen_to_words (words, precision, exponent_bits); - - /* Restore the generic_floating_point_number's storage alloc (and - everything else). */ - generic_floating_point_number = save_gen_flonum; - - return return_value; -} - -/* Turn generic_floating_point_number into a real float/double/extended. */ - -int -gen_to_words (words, precision, exponent_bits) - LITTLENUM_TYPE *words; - int precision; - long exponent_bits; -{ - int return_value = 0; - - long exponent_1; - long exponent_2; - long exponent_3; - long exponent_4; - int exponent_skippage; - LITTLENUM_TYPE word1; - LITTLENUM_TYPE *lp; - LITTLENUM_TYPE *words_end; - - words_end = words + precision; -#ifdef TC_M68K - if (precision == X_PRECISION) - /* On the m68k the extended precision format has a gap of 16 bits - between the exponent and the mantissa. */ - words_end++; -#endif - - if (generic_floating_point_number.low > generic_floating_point_number.leader) - { - /* 0.0e0 seen. */ - if (generic_floating_point_number.sign == '+') - words[0] = 0x0000; - else - words[0] = 0x8000; - memset (&words[1], '\0', - (words_end - words - 1) * sizeof (LITTLENUM_TYPE)); - return return_value; - } - - /* NaN: Do the right thing. */ - if (generic_floating_point_number.sign == 0) - { - if (TC_LARGEST_EXPONENT_IS_NORMAL (precision)) - as_warn ("NaNs are not supported by this target\n"); - if (precision == F_PRECISION) - { - words[0] = 0x7fff; - words[1] = 0xffff; - } - else if (precision == X_PRECISION) - { -#ifdef TC_M68K - words[0] = 0x7fff; - words[1] = 0; - words[2] = 0xffff; - words[3] = 0xffff; - words[4] = 0xffff; - words[5] = 0xffff; -#else /* ! TC_M68K */ -#ifdef TC_I386 - words[0] = 0xffff; - words[1] = 0xc000; - words[2] = 0; - words[3] = 0; - words[4] = 0; -#else /* ! TC_I386 */ - abort (); -#endif /* ! TC_I386 */ -#endif /* ! TC_M68K */ - } - else - { - words[0] = 0x7fff; - words[1] = 0xffff; - words[2] = 0xffff; - words[3] = 0xffff; - } - return return_value; - } - else if (generic_floating_point_number.sign == 'P') - { - if (TC_LARGEST_EXPONENT_IS_NORMAL (precision)) - as_warn ("Infinities are not supported by this target\n"); - - /* +INF: Do the right thing. */ - if (precision == F_PRECISION) - { - words[0] = 0x7f80; - words[1] = 0; - } - else if (precision == X_PRECISION) - { -#ifdef TC_M68K - words[0] = 0x7fff; - words[1] = 0; - words[2] = 0; - words[3] = 0; - words[4] = 0; - words[5] = 0; -#else /* ! TC_M68K */ -#ifdef TC_I386 - words[0] = 0x7fff; - words[1] = 0x8000; - words[2] = 0; - words[3] = 0; - words[4] = 0; -#else /* ! TC_I386 */ - abort (); -#endif /* ! TC_I386 */ -#endif /* ! TC_M68K */ - } - else - { - words[0] = 0x7ff0; - words[1] = 0; - words[2] = 0; - words[3] = 0; - } - return return_value; - } - else if (generic_floating_point_number.sign == 'N') - { - if (TC_LARGEST_EXPONENT_IS_NORMAL (precision)) - as_warn ("Infinities are not supported by this target\n"); - - /* Negative INF. */ - if (precision == F_PRECISION) - { - words[0] = 0xff80; - words[1] = 0x0; - } - else if (precision == X_PRECISION) - { -#ifdef TC_M68K - words[0] = 0xffff; - words[1] = 0; - words[2] = 0; - words[3] = 0; - words[4] = 0; - words[5] = 0; -#else /* ! TC_M68K */ -#ifdef TC_I386 - words[0] = 0xffff; - words[1] = 0x8000; - words[2] = 0; - words[3] = 0; - words[4] = 0; -#else /* ! TC_I386 */ - abort (); -#endif /* ! TC_I386 */ -#endif /* ! TC_M68K */ - } - else - { - words[0] = 0xfff0; - words[1] = 0x0; - words[2] = 0x0; - words[3] = 0x0; - } - return return_value; - } - - /* The floating point formats we support have: - Bit 15 is sign bit. - Bits 14:n are excess-whatever exponent. - Bits n-1:0 (if any) are most significant bits of fraction. - Bits 15:0 of the next word(s) are the next most significant bits. - - So we need: number of bits of exponent, number of bits of - mantissa. */ - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS; - littlenum_pointer = generic_floating_point_number.leader; - littlenums_left = (1 - + generic_floating_point_number.leader - - generic_floating_point_number.low); - - /* Seek (and forget) 1st significant bit. */ - for (exponent_skippage = 0; !next_bits (1); ++exponent_skippage);; - exponent_1 = (generic_floating_point_number.exponent - + generic_floating_point_number.leader - + 1 - - generic_floating_point_number.low); - - /* Radix LITTLENUM_RADIX, point just higher than - generic_floating_point_number.leader. */ - exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS; - - /* Radix 2. */ - exponent_3 = exponent_2 - exponent_skippage; - - /* Forget leading zeros, forget 1st bit. */ - exponent_4 = exponent_3 + ((1 << (exponent_bits - 1)) - 2); - - /* Offset exponent. */ - lp = words; - - /* Word 1. Sign, exponent and perhaps high bits. */ - word1 = ((generic_floating_point_number.sign == '+') - ? 0 - : (1 << (LITTLENUM_NUMBER_OF_BITS - 1))); - - /* Assume 2's complement integers. */ - if (exponent_4 <= 0) - { - int prec_bits; - int num_bits; - - unget_bits (1); - num_bits = -exponent_4; - prec_bits = - LITTLENUM_NUMBER_OF_BITS * precision - (exponent_bits + 1 + num_bits); -#ifdef TC_I386 - if (precision == X_PRECISION && exponent_bits == 15) - { - /* On the i386 a denormalized extended precision float is - shifted down by one, effectively decreasing the exponent - bias by one. */ - prec_bits -= 1; - num_bits += 1; - } -#endif - - if (num_bits >= LITTLENUM_NUMBER_OF_BITS - exponent_bits) - { - /* Bigger than one littlenum. */ - num_bits -= (LITTLENUM_NUMBER_OF_BITS - 1) - exponent_bits; - *lp++ = word1; - if (num_bits + exponent_bits + 1 - > precision * LITTLENUM_NUMBER_OF_BITS) - { - /* Exponent overflow. */ - make_invalid_floating_point_number (words); - return return_value; - } -#ifdef TC_M68K - if (precision == X_PRECISION && exponent_bits == 15) - *lp++ = 0; -#endif - while (num_bits >= LITTLENUM_NUMBER_OF_BITS) - { - num_bits -= LITTLENUM_NUMBER_OF_BITS; - *lp++ = 0; - } - if (num_bits) - *lp++ = next_bits (LITTLENUM_NUMBER_OF_BITS - (num_bits)); - } - else - { - if (precision == X_PRECISION && exponent_bits == 15) - { - *lp++ = word1; -#ifdef TC_M68K - *lp++ = 0; -#endif - *lp++ = next_bits (LITTLENUM_NUMBER_OF_BITS - num_bits); - } - else - { - word1 |= next_bits ((LITTLENUM_NUMBER_OF_BITS - 1) - - (exponent_bits + num_bits)); - *lp++ = word1; - } - } - while (lp < words_end) - *lp++ = next_bits (LITTLENUM_NUMBER_OF_BITS); - - /* Round the mantissa up, but don't change the number. */ - if (next_bits (1)) - { - --lp; - if (prec_bits >= LITTLENUM_NUMBER_OF_BITS) - { - int n = 0; - int tmp_bits; - - n = 0; - tmp_bits = prec_bits; - while (tmp_bits > LITTLENUM_NUMBER_OF_BITS) - { - if (lp[n] != (LITTLENUM_TYPE) - 1) - break; - --n; - tmp_bits -= LITTLENUM_NUMBER_OF_BITS; - } - if (tmp_bits > LITTLENUM_NUMBER_OF_BITS - || (lp[n] & mask[tmp_bits]) != mask[tmp_bits] - || (prec_bits != (precision * LITTLENUM_NUMBER_OF_BITS - - exponent_bits - 1) -#ifdef TC_I386 - /* An extended precision float with only the integer - bit set would be invalid. That must be converted - to the smallest normalized number. */ - && !(precision == X_PRECISION - && prec_bits == (precision * LITTLENUM_NUMBER_OF_BITS - - exponent_bits - 2)) -#endif - )) - { - unsigned long carry; - - for (carry = 1; carry && (lp >= words); lp--) - { - carry = *lp + carry; - *lp = carry; - carry >>= LITTLENUM_NUMBER_OF_BITS; - } - } - else - { - /* This is an overflow of the denormal numbers. We - need to forget what we have produced, and instead - generate the smallest normalized number. */ - lp = words; - word1 = ((generic_floating_point_number.sign == '+') - ? 0 - : (1 << (LITTLENUM_NUMBER_OF_BITS - 1))); - word1 |= (1 - << ((LITTLENUM_NUMBER_OF_BITS - 1) - - exponent_bits)); - *lp++ = word1; -#ifdef TC_I386 - /* Set the integer bit in the extended precision format. - This cannot happen on the m68k where the mantissa - just overflows into the integer bit above. */ - if (precision == X_PRECISION) - *lp++ = 1 << (LITTLENUM_NUMBER_OF_BITS - 1); -#endif - while (lp < words_end) - *lp++ = 0; - } - } - else - *lp += 1; - } - - return return_value; - } - else if ((unsigned long) exponent_4 > mask[exponent_bits] - || (! TC_LARGEST_EXPONENT_IS_NORMAL (precision) - && (unsigned long) exponent_4 == mask[exponent_bits])) - { - /* Exponent overflow. Lose immediately. */ - - /* We leave return_value alone: admit we read the - number, but return a floating exception - because we can't encode the number. */ - make_invalid_floating_point_number (words); - return return_value; - } - else - { - word1 |= (exponent_4 << ((LITTLENUM_NUMBER_OF_BITS - 1) - exponent_bits)) - | next_bits ((LITTLENUM_NUMBER_OF_BITS - 1) - exponent_bits); - } - - *lp++ = word1; - - /* X_PRECISION is special: on the 68k, it has 16 bits of zero in the - middle. Either way, it is then followed by a 1 bit. */ - if (exponent_bits == 15 && precision == X_PRECISION) - { -#ifdef TC_M68K - *lp++ = 0; -#endif - *lp++ = (1 << (LITTLENUM_NUMBER_OF_BITS - 1) - | next_bits (LITTLENUM_NUMBER_OF_BITS - 1)); - } - - /* The rest of the words are just mantissa bits. */ - while (lp < words_end) - *lp++ = next_bits (LITTLENUM_NUMBER_OF_BITS); - - if (next_bits (1)) - { - unsigned long carry; - /* Since the NEXT bit is a 1, round UP the mantissa. - The cunning design of these hidden-1 floats permits - us to let the mantissa overflow into the exponent, and - it 'does the right thing'. However, we lose if the - highest-order bit of the lowest-order word flips. - Is that clear? */ - - /* #if (sizeof(carry)) < ((sizeof(bits[0]) * BITS_PER_CHAR) + 2) - Please allow at least 1 more bit in carry than is in a LITTLENUM. - We need that extra bit to hold a carry during a LITTLENUM carry - propagation. Another extra bit (kept 0) will assure us that we - don't get a sticky sign bit after shifting right, and that - permits us to propagate the carry without any masking of bits. - #endif */ - for (carry = 1, lp--; carry; lp--) - { - carry = *lp + carry; - *lp = carry; - carry >>= LITTLENUM_NUMBER_OF_BITS; - if (lp == words) - break; - } - if (precision == X_PRECISION && exponent_bits == 15) - { - /* Extended precision numbers have an explicit integer bit - that we may have to restore. */ - if (lp == words) - { -#ifdef TC_M68K - /* On the m68k there is a gap of 16 bits. We must - explicitly propagate the carry into the exponent. */ - words[0] += words[1]; - words[1] = 0; - lp++; -#endif - /* Put back the integer bit. */ - lp[1] |= 1 << (LITTLENUM_NUMBER_OF_BITS - 1); - } - } - if ((word1 ^ *words) & (1 << (LITTLENUM_NUMBER_OF_BITS - 1))) - { - /* We leave return_value alone: admit we read the number, - but return a floating exception because we can't encode - the number. */ - *words &= ~(1 << (LITTLENUM_NUMBER_OF_BITS - 1)); -#if 0 - make_invalid_floating_point_number (words); - return return_value; -#endif - } - } - return return_value; -} - -#if 0 -/* Unused. */ -/* This routine is a real kludge. Someone really should do it better, - but I'm too lazy, and I don't understand this stuff all too well - anyway. (JF) */ - -static void -int_to_gen (x) - long x; -{ - char buf[20]; - char *bufp; - - sprintf (buf, "%ld", x); - bufp = &buf[0]; - if (atof_generic (&bufp, ".", EXP_CHARS, &generic_floating_point_number)) - as_bad (_("Error converting number to floating point (Exponent overflow?)")); -} -#endif - -#ifdef TEST -char * -print_gen (gen) - FLONUM_TYPE *gen; -{ - FLONUM_TYPE f; - LITTLENUM_TYPE arr[10]; - double dv; - float fv; - static char sbuf[40]; - - if (gen) - { - f = generic_floating_point_number; - generic_floating_point_number = *gen; - } - gen_to_words (&arr[0], 4, 11); - memcpy (&dv, &arr[0], sizeof (double)); - sprintf (sbuf, "%x %x %x %x %.14G ", arr[0], arr[1], arr[2], arr[3], dv); - gen_to_words (&arr[0], 2, 8); - memcpy (&fv, &arr[0], sizeof (float)); - sprintf (sbuf + strlen (sbuf), "%x %x %.12g\n", arr[0], arr[1], fv); - - if (gen) - generic_floating_point_number = f; - - return (sbuf); -} - -#endif diff --git a/gas/config/atof-tahoe.c b/gas/config/atof-tahoe.c deleted file mode 100644 index 11bea1004..000000000 --- a/gas/config/atof-tahoe.c +++ /dev/null @@ -1,415 +0,0 @@ -/* atof_tahoe.c - turn a string into a Tahoe floating point number - Copyright 1987, 1993, 2000 Free Software Foundation, Inc. - -/* This is really a simplified version of atof_vax.c. I glommed it wholesale - and then shaved it down. I don't even know how it works. (Don't you find - my honesty refreshing? Devon E Bowen - - I don't allow uppercase letters in the precision descriptors. - i.e. 'f' and 'd' are allowed but 'F' and 'D' aren't. */ - -#include "as.h" - -/* Precision in LittleNums. */ -#define MAX_PRECISION (4) -#define D_PRECISION (4) -#define F_PRECISION (2) - -/* Precision in chars. */ -#define D_PRECISION_CHARS (8) -#define F_PRECISION_CHARS (4) - -/* Length in LittleNums of guard bits. */ -#define GUARD (2) - -static const long int mask[] = -{ - 0x00000000, - 0x00000001, - 0x00000003, - 0x00000007, - 0x0000000f, - 0x0000001f, - 0x0000003f, - 0x0000007f, - 0x000000ff, - 0x000001ff, - 0x000003ff, - 0x000007ff, - 0x00000fff, - 0x00001fff, - 0x00003fff, - 0x00007fff, - 0x0000ffff, - 0x0001ffff, - 0x0003ffff, - 0x0007ffff, - 0x000fffff, - 0x001fffff, - 0x003fffff, - 0x007fffff, - 0x00ffffff, - 0x01ffffff, - 0x03ffffff, - 0x07ffffff, - 0x0fffffff, - 0x1fffffff, - 0x3fffffff, - 0x7fffffff, - 0xffffffff -}; - -/* Shared between flonum_gen2tahoe and next_bits. */ -static int bits_left_in_littlenum; -static LITTLENUM_TYPE *littlenum_pointer; -static LITTLENUM_TYPE *littlenum_end; - -#if __STDC__ == 1 - -int flonum_gen2tahoe (int format_letter, FLONUM_TYPE * f, - LITTLENUM_TYPE * words); - -#else /* not __STDC__ */ - -int flonum_gen2tahoe (); - -#endif /* not __STDC__ */ - -static int -next_bits (number_of_bits) - int number_of_bits; -{ - int return_value; - - if (littlenum_pointer < littlenum_end) - return 0; - if (number_of_bits >= bits_left_in_littlenum) - { - return_value = mask[bits_left_in_littlenum] & *littlenum_pointer; - number_of_bits -= bits_left_in_littlenum; - return_value <<= number_of_bits; - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS - number_of_bits; - littlenum_pointer--; - if (littlenum_pointer >= littlenum_end) - return_value |= ((*littlenum_pointer) >> (bits_left_in_littlenum)) & - mask[number_of_bits]; - } - else - { - bits_left_in_littlenum -= number_of_bits; - return_value = mask[number_of_bits] & - ((*littlenum_pointer) >> bits_left_in_littlenum); - } - return return_value; -} - -static void -make_invalid_floating_point_number (words) - LITTLENUM_TYPE *words; -{ - /* Floating Reserved Operand Code. */ - *words = 0x8000; -} - -static int /* 0 means letter is OK. */ -what_kind_of_float (letter, precisionP, exponent_bitsP) - /* In: lowercase please. What kind of float? */ - char letter; - - /* Number of 16-bit words in the float. */ - int *precisionP; - - /* Number of exponent bits. */ - long int *exponent_bitsP; -{ - int retval; /* 0: OK. */ - - retval = 0; - switch (letter) - { - case 'f': - *precisionP = F_PRECISION; - *exponent_bitsP = 8; - break; - - case 'd': - *precisionP = D_PRECISION; - *exponent_bitsP = 8; - break; - - default: - retval = 69; - break; - } - return (retval); -} - -/* Warning: This returns 16-bit LITTLENUMs, because that is what the - VAX thinks in. It is up to the caller to figure out any alignment - problems and to conspire for the bytes/word to be emitted in the - right order. Bigendians beware! */ - -char * /* Return pointer past text consumed. */ -atof_tahoe (str, what_kind, words) - char *str; /* Text to convert to binary. */ - char what_kind; /* 'd', 'f', 'g', 'h' */ - LITTLENUM_TYPE *words; /* Build the binary here. */ -{ - FLONUM_TYPE f; - LITTLENUM_TYPE bits[MAX_PRECISION + MAX_PRECISION + GUARD]; - /* Extra bits for zeroed low-order bits. */ - /* The 1st MAX_PRECISION are zeroed, the last contain flonum bits. */ - char *return_value; - int precision; /* Number of 16-bit words in the format. */ - long int exponent_bits; - - return_value = str; - f.low = bits + MAX_PRECISION; - f.high = NULL; - f.leader = NULL; - f.exponent = NULL; - f.sign = '\0'; - - if (what_kind_of_float (what_kind, &precision, &exponent_bits)) - { - /* We lost. */ - return_value = NULL; - make_invalid_floating_point_number (words); - } - if (return_value) - { - memset (bits, '\0', sizeof (LITTLENUM_TYPE) * MAX_PRECISION); - - /* Use more LittleNums than seems necessary: - the highest flonum may have 15 leading 0 bits, so could be - useless. */ - f.high = f.low + precision - 1 + GUARD; - - if (atof_generic (&return_value, ".", "eE", &f)) - { - make_invalid_floating_point_number (words); - /* We lost. */ - return_value = NULL; - } - else - { - if (flonum_gen2tahoe (what_kind, &f, words)) - return_value = NULL; - } - } - return return_value; -} - -/* In: a flonum, a Tahoe floating point format. - Out: a Tahoe floating-point bit pattern. */ - -int /* 0: OK. */ -flonum_gen2tahoe (format_letter, f, words) - char format_letter; /* One of 'd' 'f'. */ - FLONUM_TYPE *f; - LITTLENUM_TYPE *words; /* Deliver answer here. */ -{ - LITTLENUM_TYPE *lp; - int precision; - long int exponent_bits; - int return_value; /* 0 == OK. */ - - return_value = - what_kind_of_float (format_letter, &precision, &exponent_bits); - if (return_value != 0) - { - make_invalid_floating_point_number (words); - } - else - { - if (f->low > f->leader) - { - /* 0.0e0 seen. */ - memset (words, '\0', sizeof (LITTLENUM_TYPE) * precision); - } - else - { - long int exponent_1; - long int exponent_2; - long int exponent_3; - long int exponent_4; - int exponent_skippage; - LITTLENUM_TYPE word1; - - /* JF: Deal with new Nan, +Inf and -Inf codes. */ - if (f->sign != '-' && f->sign != '+') - { - make_invalid_floating_point_number (words); - return return_value; - } - /* All tahoe floating_point formats have: - Bit 15 is sign bit. - Bits 14:n are excess-whatever exponent. - Bits n-1:0 (if any) are most significant bits of fraction. - Bits 15:0 of the next word are the next most significant bits. - And so on for each other word. - - So we need: number of bits of exponent, number of bits of - mantissa. */ - - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS; - littlenum_pointer = f->leader; - littlenum_end = f->low; - - /* Seek (and forget) 1st significant bit. */ - for (exponent_skippage = 0; - !next_bits (1); - exponent_skippage++) - ; - - exponent_1 = f->exponent + f->leader + 1 - f->low; - - /* Radix LITTLENUM_RADIX, point just higher than f -> leader. */ - exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS; - - /* Radix 2. */ - exponent_3 = exponent_2 - exponent_skippage; - - /* Forget leading zeros, forget 1st bit. */ - exponent_4 = exponent_3 + (1 << (exponent_bits - 1)); - - /* Offset exponent. */ - - if (exponent_4 & ~mask[exponent_bits]) - { - /* Exponent overflow. Lose immediately. */ - - make_invalid_floating_point_number (words); - - /* We leave return_value alone: admit we read the - number, but return a floating exception because we - can't encode the number. */ - } - else - { - lp = words; - - /* Word 1. Sign, exponent and perhaps high bits. */ - /* Assume 2's complement integers. */ - word1 = ((exponent_4 & mask[exponent_bits]) - << (15 - exponent_bits)) - | ((f->sign == '+') ? 0 : 0x8000) - | next_bits (15 - exponent_bits); - *lp++ = word1; - - /* The rest of the words are just mantissa bits. */ - for (; lp < words + precision; lp++) - *lp = next_bits (LITTLENUM_NUMBER_OF_BITS); - - if (next_bits (1)) - { - /* Since the NEXT bit is a 1, round UP the mantissa. - The cunning design of these hidden-1 floats permits - us to let the mantissa overflow into the exponent, and - it 'does the right thing'. However, we lose if the - highest-order bit of the lowest-order word flips. - Is that clear? */ - - unsigned long int carry; - - /* #if (sizeof(carry)) < ((sizeof(bits[0]) * - BITS_PER_CHAR) + 2) Please allow at least 1 more - bit in carry than is in a LITTLENUM. We need - that extra bit to hold a carry during a LITTLENUM - carry propagation. Another extra bit (kept 0) - will assure us that we don't get a sticky sign - bit after shifting right, and that permits us to - propagate the carry without any masking of bits. - #endif */ - for (carry = 1, lp--; - carry && (lp >= words); - lp--) - { - carry = *lp + carry; - *lp = carry; - carry >>= LITTLENUM_NUMBER_OF_BITS; - } - - if ((word1 ^ *words) - & (1 << (LITTLENUM_NUMBER_OF_BITS - 1))) - { - make_invalid_floating_point_number (words); - /* We leave return_value alone: admit we read - the number, but return a floating exception - because we can't encode the number. */ - } - } /* if (we needed to round up) */ - } /* if (exponent overflow) */ - } /* if (0.0e0) */ - } /* if (float_type was OK) */ - return return_value; -} - -/* In: input_line_pointer -> the 1st character of a floating-point - * number. - * 1 letter denoting the type of statement that wants a - * binary floating point number returned. - * Address of where to build floating point literal. - * Assumed to be 'big enough'. - * Address of where to return size of literal (in chars). - * - * Out: Input_line_pointer -> of next char after floating number. - * Error message, or 0. - * Floating point literal. - * Number of chars we used for the literal. */ - -char * -md_atof (what_statement_type, literalP, sizeP) - char what_statement_type; - char *literalP; - int *sizeP; -{ - LITTLENUM_TYPE words[MAX_PRECISION]; - register char kind_of_float; - register int number_of_chars; - register LITTLENUM_TYPE *littlenum_pointer; - - switch (what_statement_type) - { - case 'f': /* .ffloat */ - case 'd': /* .dfloat */ - kind_of_float = what_statement_type; - break; - - default: - kind_of_float = 0; - break; - } - - if (kind_of_float) - { - register LITTLENUM_TYPE *limit; - - input_line_pointer = atof_tahoe (input_line_pointer, - kind_of_float, - words); - /* The atof_tahoe() builds up 16-bit numbers. - Since the assembler may not be running on - a different-endian machine, be very careful about - converting words to chars. */ - number_of_chars = (kind_of_float == 'f' ? F_PRECISION_CHARS : - (kind_of_float == 'd' ? D_PRECISION_CHARS : 0)); - know (number_of_chars <= MAX_PRECISION * sizeof (LITTLENUM_TYPE)); - limit = words + (number_of_chars / sizeof (LITTLENUM_TYPE)); - for (littlenum_pointer = words; - littlenum_pointer < limit; - littlenum_pointer++) - { - md_number_to_chars (literalP, *littlenum_pointer, - sizeof (LITTLENUM_TYPE)); - literalP += sizeof (LITTLENUM_TYPE); - } - } - else - { - number_of_chars = 0; - } - - *sizeP = number_of_chars; - return kind_of_float ? 0 : _("Bad call to md_atof()"); -} diff --git a/gas/config/atof-vax.c b/gas/config/atof-vax.c deleted file mode 100644 index 7c9f04e7f..000000000 --- a/gas/config/atof-vax.c +++ /dev/null @@ -1,517 +0,0 @@ -/* atof_vax.c - turn a Flonum into a VAX floating point number - Copyright 1987, 1992, 1993, 1995, 1997, 1999, 2000 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "as.h" - -static int atof_vax_sizeof PARAMS ((int)); -static int next_bits PARAMS ((int)); -static void make_invalid_floating_point_number PARAMS ((LITTLENUM_TYPE *)); -static int what_kind_of_float PARAMS ((int, int *, long *)); -static char *atof_vax PARAMS ((char *, int, LITTLENUM_TYPE *)); - -/* Precision in LittleNums. */ -#define MAX_PRECISION (8) -#define H_PRECISION (8) -#define G_PRECISION (4) -#define D_PRECISION (4) -#define F_PRECISION (2) - -/* Length in LittleNums of guard bits. */ -#define GUARD (2) - -int flonum_gen2vax PARAMS ((int format_letter, FLONUM_TYPE * f, - LITTLENUM_TYPE * words)); - -/* Number of chars in flonum type 'letter'. */ -static int -atof_vax_sizeof (letter) - int letter; -{ - int return_value; - - /* - * Permitting uppercase letters is probably a bad idea. - * Please use only lower-cased letters in case the upper-cased - * ones become unsupported! - */ - switch (letter) - { - case 'f': - case 'F': - return_value = 4; - break; - - case 'd': - case 'D': - case 'g': - case 'G': - return_value = 8; - break; - - case 'h': - case 'H': - return_value = 16; - break; - - default: - return_value = 0; - break; - } - return (return_value); -} /* atof_vax_sizeof */ - -static const long mask[] = -{ - 0x00000000, - 0x00000001, - 0x00000003, - 0x00000007, - 0x0000000f, - 0x0000001f, - 0x0000003f, - 0x0000007f, - 0x000000ff, - 0x000001ff, - 0x000003ff, - 0x000007ff, - 0x00000fff, - 0x00001fff, - 0x00003fff, - 0x00007fff, - 0x0000ffff, - 0x0001ffff, - 0x0003ffff, - 0x0007ffff, - 0x000fffff, - 0x001fffff, - 0x003fffff, - 0x007fffff, - 0x00ffffff, - 0x01ffffff, - 0x03ffffff, - 0x07ffffff, - 0x0fffffff, - 0x1fffffff, - 0x3fffffff, - 0x7fffffff, - 0xffffffff -}; - - -/* Shared between flonum_gen2vax and next_bits */ -static int bits_left_in_littlenum; -static LITTLENUM_TYPE *littlenum_pointer; -static LITTLENUM_TYPE *littlenum_end; - -static int -next_bits (number_of_bits) - int number_of_bits; -{ - int return_value; - - if (littlenum_pointer < littlenum_end) - return 0; - if (number_of_bits >= bits_left_in_littlenum) - { - return_value = mask[bits_left_in_littlenum] & *littlenum_pointer; - number_of_bits -= bits_left_in_littlenum; - return_value <<= number_of_bits; - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS - number_of_bits; - littlenum_pointer--; - if (littlenum_pointer >= littlenum_end) - return_value |= ((*littlenum_pointer) >> (bits_left_in_littlenum)) & mask[number_of_bits]; - } - else - { - bits_left_in_littlenum -= number_of_bits; - return_value = mask[number_of_bits] & ((*littlenum_pointer) >> bits_left_in_littlenum); - } - return (return_value); -} - -static void -make_invalid_floating_point_number (words) - LITTLENUM_TYPE *words; -{ - *words = 0x8000; /* Floating Reserved Operand Code */ -} - -static int /* 0 means letter is OK. */ -what_kind_of_float (letter, precisionP, exponent_bitsP) - int letter; /* In: lowercase please. What kind of float? */ - int *precisionP; /* Number of 16-bit words in the float. */ - long *exponent_bitsP; /* Number of exponent bits. */ -{ - int retval; /* 0: OK. */ - - retval = 0; - switch (letter) - { - case 'f': - *precisionP = F_PRECISION; - *exponent_bitsP = 8; - break; - - case 'd': - *precisionP = D_PRECISION; - *exponent_bitsP = 8; - break; - - case 'g': - *precisionP = G_PRECISION; - *exponent_bitsP = 11; - break; - - case 'h': - *precisionP = H_PRECISION; - *exponent_bitsP = 15; - break; - - default: - retval = 69; - break; - } - return (retval); -} - -/***********************************************************************\ - * * - * Warning: this returns 16-bit LITTLENUMs, because that is * - * what the VAX thinks in. It is up to the caller to figure * - * out any alignment problems and to conspire for the bytes/word * - * to be emitted in the right order. Bigendians beware! * - * * - \***********************************************************************/ - -static char * /* Return pointer past text consumed. */ -atof_vax (str, what_kind, words) - char *str; /* Text to convert to binary. */ - int what_kind; /* 'd', 'f', 'g', 'h' */ - LITTLENUM_TYPE *words; /* Build the binary here. */ -{ - FLONUM_TYPE f; - LITTLENUM_TYPE bits[MAX_PRECISION + MAX_PRECISION + GUARD]; - /* Extra bits for zeroed low-order bits. */ - /* The 1st MAX_PRECISION are zeroed, */ - /* the last contain flonum bits. */ - char *return_value; - int precision; /* Number of 16-bit words in the format. */ - long exponent_bits; - - return_value = str; - f.low = bits + MAX_PRECISION; - f.high = NULL; - f.leader = NULL; - f.exponent = 0; - f.sign = '\0'; - - if (what_kind_of_float (what_kind, &precision, &exponent_bits)) - { - return_value = NULL; /* We lost. */ - make_invalid_floating_point_number (words); - } - - if (return_value) - { - memset (bits, '\0', sizeof (LITTLENUM_TYPE) * MAX_PRECISION); - - /* Use more LittleNums than seems */ - /* necessary: the highest flonum may have */ - /* 15 leading 0 bits, so could be useless. */ - f.high = f.low + precision - 1 + GUARD; - - if (atof_generic (&return_value, ".", "eE", &f)) - { - make_invalid_floating_point_number (words); - return_value = NULL; /* we lost */ - } - else - { - if (flonum_gen2vax (what_kind, &f, words)) - { - return_value = NULL; - } - } - } - return (return_value); -} /* atof_vax() */ - -/* - * In: a flonum, a vax floating point format. - * Out: a vax floating-point bit pattern. - */ - -int /* 0: OK. */ -flonum_gen2vax (format_letter, f, words) - int format_letter; /* One of 'd' 'f' 'g' 'h'. */ - FLONUM_TYPE *f; - LITTLENUM_TYPE *words; /* Deliver answer here. */ -{ - LITTLENUM_TYPE *lp; - int precision; - long exponent_bits; - int return_value; /* 0 == OK. */ - - return_value = what_kind_of_float (format_letter, &precision, &exponent_bits); - - if (return_value != 0) - { - make_invalid_floating_point_number (words); - } - else - { - if (f->low > f->leader) - { - /* 0.0e0 seen. */ - memset (words, '\0', sizeof (LITTLENUM_TYPE) * precision); - } - else - { - long exponent_1; - long exponent_2; - long exponent_3; - long exponent_4; - int exponent_skippage; - LITTLENUM_TYPE word1; - - /* JF: Deal with new Nan, +Inf and -Inf codes */ - if (f->sign != '-' && f->sign != '+') - { - make_invalid_floating_point_number (words); - return return_value; - } - /* - * All vaxen floating_point formats (so far) have: - * Bit 15 is sign bit. - * Bits 14:n are excess-whatever exponent. - * Bits n-1:0 (if any) are most significant bits of fraction. - * Bits 15:0 of the next word are the next most significant bits. - * And so on for each other word. - * - * All this to be compatible with a KF11?? (Which is still faster - * than lots of vaxen I can think of, but it also has higher - * maintenance costs ... sigh). - * - * So we need: number of bits of exponent, number of bits of - * mantissa. - */ - -#ifdef NEVER /******* This zeroing seems redundant - Dean 3may86 **********/ - /* - * No matter how few bits we got back from the atof() - * routine, add enough zero littlenums so the rest of the - * code won't run out of "significant" bits in the mantissa. - */ - { - LITTLENUM_TYPE *ltp; - for (ltp = f->leader + 1; - ltp <= f->low + precision; - ltp++) - { - *ltp = 0; - } - } -#endif - - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS; - littlenum_pointer = f->leader; - littlenum_end = f->low; - /* Seek (and forget) 1st significant bit */ - for (exponent_skippage = 0; - !next_bits (1); - exponent_skippage++);; - - exponent_1 = f->exponent + f->leader + 1 - f->low; - /* Radix LITTLENUM_RADIX, point just higher than f->leader. */ - exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS; - /* Radix 2. */ - exponent_3 = exponent_2 - exponent_skippage; - /* Forget leading zeros, forget 1st bit. */ - exponent_4 = exponent_3 + (1 << (exponent_bits - 1)); - /* Offset exponent. */ - - if (exponent_4 & ~mask[exponent_bits]) - { - /* - * Exponent overflow. Lose immediately. - */ - - make_invalid_floating_point_number (words); - - /* - * We leave return_value alone: admit we read the - * number, but return a floating exception - * because we can't encode the number. - */ - } - else - { - lp = words; - - /* Word 1. Sign, exponent and perhaps high bits. */ - /* Assume 2's complement integers. */ - word1 = (((exponent_4 & mask[exponent_bits]) << (15 - exponent_bits)) - | ((f->sign == '+') ? 0 : 0x8000) - | next_bits (15 - exponent_bits)); - *lp++ = word1; - - /* The rest of the words are just mantissa bits. */ - for (; lp < words + precision; lp++) - { - *lp = next_bits (LITTLENUM_NUMBER_OF_BITS); - } - - if (next_bits (1)) - { - /* - * Since the NEXT bit is a 1, round UP the mantissa. - * The cunning design of these hidden-1 floats permits - * us to let the mantissa overflow into the exponent, and - * it 'does the right thing'. However, we lose if the - * highest-order bit of the lowest-order word flips. - * Is that clear? - */ - - unsigned long carry; - - /* - #if (sizeof(carry)) < ((sizeof(bits[0]) * BITS_PER_CHAR) + 2) - Please allow at least 1 more bit in carry than is in a LITTLENUM. - We need that extra bit to hold a carry during a LITTLENUM carry - propagation. Another extra bit (kept 0) will assure us that we - don't get a sticky sign bit after shifting right, and that - permits us to propagate the carry without any masking of bits. - #endif - */ - for (carry = 1, lp--; - carry && (lp >= words); - lp--) - { - carry = *lp + carry; - *lp = carry; - carry >>= LITTLENUM_NUMBER_OF_BITS; - } - - if ((word1 ^ *words) & (1 << (LITTLENUM_NUMBER_OF_BITS - 1))) - { - make_invalid_floating_point_number (words); - /* - * We leave return_value alone: admit we read the - * number, but return a floating exception - * because we can't encode the number. - */ - } - } /* if (we needed to round up) */ - } /* if (exponent overflow) */ - } /* if (0.0e0) */ - } /* if (float_type was OK) */ - return (return_value); -} /* flonum_gen2vax() */ - -/* JF this used to be in vax.c but this looks like a better place for it */ - -/* - * md_atof() - * - * In: input_line_pointer->the 1st character of a floating-point - * number. - * 1 letter denoting the type of statement that wants a - * binary floating point number returned. - * Address of where to build floating point literal. - * Assumed to be 'big enough'. - * Address of where to return size of literal (in chars). - * - * Out: Input_line_pointer->of next char after floating number. - * Error message, or 0. - * Floating point literal. - * Number of chars we used for the literal. - */ - -#define MAXIMUM_NUMBER_OF_LITTLENUMS (8) /* For .hfloats. */ - -char * -md_atof (what_statement_type, literalP, sizeP) - int what_statement_type; - char *literalP; - int *sizeP; -{ - LITTLENUM_TYPE words[MAXIMUM_NUMBER_OF_LITTLENUMS]; - register char kind_of_float; - register int number_of_chars; - register LITTLENUM_TYPE *littlenumP; - - switch (what_statement_type) - { - case 'F': /* .float */ - case 'f': /* .ffloat */ - kind_of_float = 'f'; - break; - - case 'D': /* .double */ - case 'd': /* .dfloat */ - kind_of_float = 'd'; - break; - - case 'g': /* .gfloat */ - kind_of_float = 'g'; - break; - - case 'h': /* .hfloat */ - kind_of_float = 'h'; - break; - - default: - kind_of_float = 0; - break; - }; - - if (kind_of_float) - { - register LITTLENUM_TYPE *limit; - - input_line_pointer = atof_vax (input_line_pointer, - kind_of_float, - words); - /* - * The atof_vax() builds up 16-bit numbers. - * Since the assembler may not be running on - * a little-endian machine, be very careful about - * converting words to chars. - */ - number_of_chars = atof_vax_sizeof (kind_of_float); - know (number_of_chars <= MAXIMUM_NUMBER_OF_LITTLENUMS * sizeof (LITTLENUM_TYPE)); - limit = words + (number_of_chars / sizeof (LITTLENUM_TYPE)); - for (littlenumP = words; littlenumP < limit; littlenumP++) - { - md_number_to_chars (literalP, *littlenumP, sizeof (LITTLENUM_TYPE)); - literalP += sizeof (LITTLENUM_TYPE); - }; - } - else - { - number_of_chars = 0; - }; - - *sizeP = number_of_chars; - return kind_of_float ? NULL : _("Bad call to md_atof()"); -} - -/* end of atof-vax.c */ diff --git a/gas/config/e-crisaout.c b/gas/config/e-crisaout.c deleted file mode 100644 index 4f2344957..000000000 --- a/gas/config/e-crisaout.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *crisaout_bfd_name PARAMS ((void)); - -static const char * -crisaout_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name crisaout_bfd_name -#define emul_format &aout_format_ops - -#define emul_name "crisaout" -#define emul_struct_name crisaout -#define emul_default_endian 0 -#include "emul-target.h" diff --git a/gas/config/e-criself.c b/gas/config/e-criself.c deleted file mode 100644 index f0dc48e0e..000000000 --- a/gas/config/e-criself.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *criself_bfd_name PARAMS ((void)); - -static const char * -criself_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name criself_bfd_name -#define emul_format &elf_format_ops - -#define emul_name "criself" -#define emul_struct_name criself -#define emul_default_endian 0 -#include "emul-target.h" diff --git a/gas/config/e-i386aout.c b/gas/config/e-i386aout.c deleted file mode 100644 index f8435ab35..000000000 --- a/gas/config/e-i386aout.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *i386aout_bfd_name PARAMS ((void)); - -static const char * -i386aout_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name i386aout_bfd_name -#define emul_format &aout_format_ops - -#define emul_name "i386aout" -#define emul_struct_name i386aout -#define emul_default_endian 0 -#include "emul-target.h" diff --git a/gas/config/e-i386coff.c b/gas/config/e-i386coff.c deleted file mode 100644 index f6510a465..000000000 --- a/gas/config/e-i386coff.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *i386coff_bfd_name PARAMS ((void)); - -static const char * -i386coff_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name i386coff_bfd_name -#define emul_format &coff_format_ops - -#define emul_name "i386coff" -#define emul_struct_name i386coff -#define emul_default_endian 0 -#include "emul-target.h" diff --git a/gas/config/e-i386elf.c b/gas/config/e-i386elf.c deleted file mode 100644 index e11fc3da2..000000000 --- a/gas/config/e-i386elf.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *i386elf_bfd_name PARAMS ((void)); - -static const char * -i386elf_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name i386elf_bfd_name -#define emul_format &elf_format_ops - -#define emul_name "i386elf" -#define emul_struct_name i386elf -#define emul_default_endian 0 -#include "emul-target.h" diff --git a/gas/config/e-mipsecoff.c b/gas/config/e-mipsecoff.c deleted file mode 100644 index be2f71b7d..000000000 --- a/gas/config/e-mipsecoff.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *mipsecoff_bfd_name PARAMS ((void)); - -static const char * -mipsecoff_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name mipsecoff_bfd_name -#define emul_format &ecoff_format_ops - -#define emul_name "mipsbecoff" -#define emul_struct_name mipsbecoff -#define emul_default_endian 1 -#include "emul-target.h" - -#undef emul_name -#undef emul_struct_name -#undef emul_default_endian - -#define emul_name "mipslecoff" -#define emul_struct_name mipslecoff -#define emul_default_endian 0 -#include "emul-target.h" - -#undef emul_name -#undef emul_struct_name -#undef emul_default_endian - -#define emul_name "mipsecoff" -#define emul_struct_name mipsecoff -#define emul_default_endian 2 -#include "emul-target.h" diff --git a/gas/config/e-mipself.c b/gas/config/e-mipself.c deleted file mode 100644 index eea72f516..000000000 --- a/gas/config/e-mipself.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "as.h" -#include "emul.h" - -static const char *mipself_bfd_name PARAMS ((void)); - -static const char * -mipself_bfd_name () -{ - abort (); - return NULL; -} - -#define emul_bfd_name mipself_bfd_name -#define emul_format &elf_format_ops - -#define emul_name "mipsbelf" -#define emul_struct_name mipsbelf -#define emul_default_endian 1 -#include "emul-target.h" - -#undef emul_name -#undef emul_struct_name -#undef emul_default_endian - -#define emul_name "mipslelf" -#define emul_struct_name mipslelf -#define emul_default_endian 0 -#include "emul-target.h" - -#undef emul_name -#undef emul_struct_name -#undef emul_default_endian - -#define emul_name "mipself" -#define emul_struct_name mipself -#define emul_default_endian 2 -#include "emul-target.h" diff --git a/gas/config/itbl-mips.h b/gas/config/itbl-mips.h deleted file mode 100644 index 8ecb9ecc4..000000000 --- a/gas/config/itbl-mips.h +++ /dev/null @@ -1,47 +0,0 @@ - -/* itbl-mips.h - - Copyright 1997 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Defines for Mips itbl cop support */ - -#include "opcode/mips.h" - -/* Values for processors will be from 0 to NUMBER_OF_PROCESSORS-1 */ -#define NUMBER_OF_PROCESSORS 4 -#define MAX_BITPOS 31 - -/* Mips specifics */ -#define MIPS_OPCODE_COP0 (0x21) /* COPz+CO, bits 31-25: 0100zz1 */ -#define MIPS_ENCODE_COP_NUM(z) ((MIPS_OPCODE_COP0|z<<1)<<25) -#define MIPS_IS_COP_INSN(insn) ((MIPS_OPCODE_COP0&(insn>>25)) \ - == MIPS_OPCODE_COP0) -#define MIPS_DECODE_COP_NUM(insn) ((~MIPS_OPCODE_COP0&(insn>>25))>>1) -#define MIPS_DECODE_COP_COFUN(insn) ((~MIPS_ENCODE_COP_NUM(3))&(insn)) - -/* definitions required by generic code */ -#define ITBL_IS_INSN(insn) MIPS_IS_COP_INSN(insn) -#define ITBL_DECODE_PNUM(insn) MIPS_DECODE_COP_NUM(insn) -#define ITBL_ENCODE_PNUM(pnum) MIPS_ENCODE_COP_NUM(pnum) - -#define ITBL_OPCODE_STRUCT mips_opcode -#define ITBL_OPCODES mips_opcodes -#define ITBL_NUM_OPCODES NUMOPCODES -#define ITBL_NUM_MACROS M_NUM_MACROS diff --git a/gas/config/m68k-parse.h b/gas/config/m68k-parse.h deleted file mode 100644 index c82e69fc6..000000000 --- a/gas/config/m68k-parse.h +++ /dev/null @@ -1,334 +0,0 @@ -/* m68k-parse.h -- header file for m68k assembler - Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, - 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef M68K_PARSE_H -#define M68K_PARSE_H - -/* This header file defines things which are shared between the - operand parser in m68k.y and the m68k assembler proper in - tc-m68k.c. */ - -/* The various m68k registers. */ - -/* DATA and ADDR have to be contiguous, so that reg-DATA gives - 0-7==data reg, 8-15==addr reg for operands that take both types. - - We don't use forms like "ADDR0 = ADDR" here because this file is - likely to be used on an Apollo, and the broken Apollo compiler - gives an `undefined variable' error if we do that, according to - troy@cbme.unsw.edu.au. */ - -#define DATA DATA0 -#define ADDR ADDR0 -#define SP ADDR7 -#define BAD BAD0 -#define BAC BAC0 - -enum m68k_register -{ - DATA0 = 1, /* 1- 8 == data registers 0-7 */ - DATA1, - DATA2, - DATA3, - DATA4, - DATA5, - DATA6, - DATA7, - - ADDR0, - ADDR1, - ADDR2, - ADDR3, - ADDR4, - ADDR5, - ADDR6, - ADDR7, - - FP0, /* Eight FP registers */ - FP1, - FP2, - FP3, - FP4, - FP5, - FP6, - FP7, - - COP0, /* Co-processor #0-#7 */ - COP1, - COP2, - COP3, - COP4, - COP5, - COP6, - COP7, - - PC, /* Program counter */ - ZPC, /* Hack for Program space, but 0 addressing */ - SR, /* Status Reg */ - CCR, /* Condition code Reg */ - ACC, /* Accumulator Reg */ - MACSR, /* MAC Status Reg */ - MASK, /* Modulus Reg */ - - /* These have to be grouped together for the movec instruction to work. */ - USP, /* User Stack Pointer */ - ISP, /* Interrupt stack pointer */ - SFC, - DFC, - CACR, - VBR, - CAAR, - MSP, - ITT0, - ITT1, - DTT0, - DTT1, - MMUSR, - TC, - SRP, - URP, - BUSCR, /* 68060 added these. */ - PCR, - ROMBAR, /* mcf5200 added these. */ - RAMBAR0, - RAMBAR1, - MMUBAR, /* mcfv4e added these. */ - ROMBAR1, /* mcfv4e added these. */ - MPCR, EDRAMBAR, SECMBAR, /* mcfv4e added these. */ - PCR1U0, PCR1L0, PCR1U1, PCR1L1,/* mcfv4e added these. */ - PCR2U0, PCR2L0, PCR2U1, PCR2L1,/* mcfv4e added these. */ - PCR3U0, PCR3L0, PCR3U1, PCR3L1,/* mcfv4e added these. */ - MBAR0, MBAR1, /* mcfv4e added these. */ - ACR0, ACR1, ACR2, ACR3, /* mcf5200 added these. */ - FLASHBAR, RAMBAR, /* mcf528x added these. */ - MBAR, -#define last_movec_reg MBAR - /* End of movec ordering constraints. */ - - FPI, - FPS, - FPC, - - DRP, /* 68851 or 68030 MMU regs */ - CRP, - CAL, - VAL, - SCC, - AC, - BAD0, - BAD1, - BAD2, - BAD3, - BAD4, - BAD5, - BAD6, - BAD7, - BAC0, - BAC1, - BAC2, - BAC3, - BAC4, - BAC5, - BAC6, - BAC7, - PSR, /* aka MMUSR on 68030 (but not MMUSR on 68040) - and ACUSR on 68ec030 */ - PCSR, - - IC, /* instruction cache token */ - DC, /* data cache token */ - NC, /* no cache token */ - BC, /* both caches token */ - - TT0, /* 68030 access control unit regs */ - TT1, - - ZDATA0, /* suppressed data registers. */ - ZDATA1, - ZDATA2, - ZDATA3, - ZDATA4, - ZDATA5, - ZDATA6, - ZDATA7, - - ZADDR0, /* suppressed address registers. */ - ZADDR1, - ZADDR2, - ZADDR3, - ZADDR4, - ZADDR5, - ZADDR6, - ZADDR7, - - /* Upper and lower half of data and address registers. Order *must* - be DATAxL, ADDRxL, DATAxU, ADDRxU. */ - DATA0L, /* lower half of data registers */ - DATA1L, - DATA2L, - DATA3L, - DATA4L, - DATA5L, - DATA6L, - DATA7L, - - ADDR0L, /* lower half of address registers */ - ADDR1L, - ADDR2L, - ADDR3L, - ADDR4L, - ADDR5L, - ADDR6L, - ADDR7L, - - DATA0U, /* upper half of data registers */ - DATA1U, - DATA2U, - DATA3U, - DATA4U, - DATA5U, - DATA6U, - DATA7U, - - ADDR0U, /* upper half of address registers */ - ADDR1U, - ADDR2U, - ADDR3U, - ADDR4U, - ADDR5U, - ADDR6U, - ADDR7U, -}; - -/* Size information. */ - -enum m68k_size -{ - /* Unspecified. */ - SIZE_UNSPEC, - - /* Byte. */ - SIZE_BYTE, - - /* Word (2 bytes). */ - SIZE_WORD, - - /* Longword (4 bytes). */ - SIZE_LONG -}; - -/* The structure used to hold information about an index register. */ - -struct m68k_indexreg -{ - /* The index register itself. */ - enum m68k_register reg; - - /* The size to use. */ - enum m68k_size size; - - /* The value to scale by. */ - int scale; -}; - -#ifdef OBJ_ELF -/* The type of a PIC expression. */ - -enum pic_relocation -{ - pic_none, /* not pic */ - pic_plt_pcrel, /* @PLTPC */ - pic_got_pcrel, /* @GOTPC */ - pic_plt_off, /* @PLT */ - pic_got_off /* @GOT */ -}; -#endif - -/* The structure used to hold information about an expression. */ - -struct m68k_exp -{ - /* The size to use. */ - enum m68k_size size; - -#ifdef OBJ_ELF - /* The type of pic relocation if any. */ - enum pic_relocation pic_reloc; -#endif - - /* The expression itself. */ - expressionS exp; -}; - -/* The operand modes. */ - -enum m68k_operand_type -{ - IMMED = 1, - ABSL, - DREG, - AREG, - FPREG, - CONTROL, - AINDR, - AINC, - ADEC, - DISP, - BASE, - POST, - PRE, - REGLST -}; - -/* The structure used to hold a parsed operand. */ - -struct m68k_op -{ - /* The type of operand. */ - enum m68k_operand_type mode; - - /* The main register. */ - enum m68k_register reg; - - /* The register mask for mode REGLST. */ - unsigned long mask; - - /* An error message. */ - const char *error; - - /* The index register. */ - struct m68k_indexreg index; - - /* The displacement. */ - struct m68k_exp disp; - - /* The outer displacement. */ - struct m68k_exp odisp; -}; - -#endif /* ! defined (M68K_PARSE_H) */ - -/* The parsing function. */ - -extern int m68k_ip_op PARAMS ((char *, struct m68k_op *)); - -/* Whether register prefixes are optional. */ -extern int flag_reg_prefix_optional; diff --git a/gas/config/m68k-parse.y b/gas/config/m68k-parse.y deleted file mode 100644 index 813bfaad2..000000000 --- a/gas/config/m68k-parse.y +++ /dev/null @@ -1,1062 +0,0 @@ -/* m68k.y -- bison grammar for m68k operand parsing - Copyright 1995, 1996, 1997, 1998, 2001 Free Software Foundation, Inc. - Written by Ken Raeburn and Ian Lance Taylor, Cygnus Support - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* This file holds a bison grammar to parse m68k operands. The m68k - has a complicated operand syntax, and gas supports two main - variations of it. Using a grammar is probably overkill, but at - least it makes clear exactly what we do support. */ - -%{ - -#include "as.h" -#include "tc-m68k.h" -#include "m68k-parse.h" -#include "safe-ctype.h" - -/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, - etc), as well as gratuitously global symbol names If other parser - generators (bison, byacc, etc) produce additional global names that - conflict at link time, then those parser generators need to be - fixed instead of adding those names to this list. */ - -#define yymaxdepth m68k_maxdepth -#define yyparse m68k_parse -#define yylex m68k_lex -#define yyerror m68k_error -#define yylval m68k_lval -#define yychar m68k_char -#define yydebug m68k_debug -#define yypact m68k_pact -#define yyr1 m68k_r1 -#define yyr2 m68k_r2 -#define yydef m68k_def -#define yychk m68k_chk -#define yypgo m68k_pgo -#define yyact m68k_act -#define yyexca m68k_exca -#define yyerrflag m68k_errflag -#define yynerrs m68k_nerrs -#define yyps m68k_ps -#define yypv m68k_pv -#define yys m68k_s -#define yy_yys m68k_yys -#define yystate m68k_state -#define yytmp m68k_tmp -#define yyv m68k_v -#define yy_yyv m68k_yyv -#define yyval m68k_val -#define yylloc m68k_lloc -#define yyreds m68k_reds /* With YYDEBUG defined */ -#define yytoks m68k_toks /* With YYDEBUG defined */ -#define yylhs m68k_yylhs -#define yylen m68k_yylen -#define yydefred m68k_yydefred -#define yydgoto m68k_yydgoto -#define yysindex m68k_yysindex -#define yyrindex m68k_yyrindex -#define yygindex m68k_yygindex -#define yytable m68k_yytable -#define yycheck m68k_yycheck - -#ifndef YYDEBUG -#define YYDEBUG 1 -#endif - -/* Internal functions. */ - -static enum m68k_register m68k_reg_parse PARAMS ((char **)); -static int yylex PARAMS ((void)); -static void yyerror PARAMS ((const char *)); - -/* The parser sets fields pointed to by this global variable. */ -static struct m68k_op *op; - -%} - -%union -{ - struct m68k_indexreg indexreg; - enum m68k_register reg; - struct m68k_exp exp; - unsigned long mask; - int onereg; -} - -%token DR AR FPR FPCR LPC ZAR ZDR LZPC CREG -%token INDEXREG -%token EXPR - -%type zireg zdireg -%type zadr zdr apc zapc zpc optzapc optczapc -%type optcexpr optexprc -%type reglist ireglist reglistpair -%type reglistreg - -%% - -/* An operand. */ - -operand: - generic_operand - | motorola_operand - | mit_operand - ; - -/* A generic operand. */ - -generic_operand: - DR - { - op->mode = DREG; - op->reg = $1; - } - | AR - { - op->mode = AREG; - op->reg = $1; - } - | FPR - { - op->mode = FPREG; - op->reg = $1; - } - | FPCR - { - op->mode = CONTROL; - op->reg = $1; - } - | CREG - { - op->mode = CONTROL; - op->reg = $1; - } - | EXPR - { - op->mode = ABSL; - op->disp = $1; - } - | '#' EXPR - { - op->mode = IMMED; - op->disp = $2; - } - | '&' EXPR - { - op->mode = IMMED; - op->disp = $2; - } - | reglist - { - op->mode = REGLST; - op->mask = $1; - } - ; - -/* An operand in Motorola syntax. This includes MRI syntax as well, - which may or may not be different in that it permits commutativity - of index and base registers, and permits an offset expression to - appear inside or outside of the parentheses. */ - -motorola_operand: - '(' AR ')' - { - op->mode = AINDR; - op->reg = $2; - } - | '(' AR ')' '+' - { - op->mode = AINC; - op->reg = $2; - } - | '-' '(' AR ')' - { - op->mode = ADEC; - op->reg = $3; - } - | '(' EXPR ',' zapc ')' - { - op->reg = $4; - op->disp = $2; - if (($4 >= ZADDR0 && $4 <= ZADDR7) - || $4 == ZPC) - op->mode = BASE; - else - op->mode = DISP; - } - | '(' zapc ',' EXPR ')' - { - op->reg = $2; - op->disp = $4; - if (($2 >= ZADDR0 && $2 <= ZADDR7) - || $2 == ZPC) - op->mode = BASE; - else - op->mode = DISP; - } - | EXPR '(' zapc ')' - { - op->reg = $3; - op->disp = $1; - if (($3 >= ZADDR0 && $3 <= ZADDR7) - || $3 == ZPC) - op->mode = BASE; - else - op->mode = DISP; - } - | '(' LPC ')' - { - op->mode = DISP; - op->reg = $2; - } - | '(' ZAR ')' - { - op->mode = BASE; - op->reg = $2; - } - | '(' LZPC ')' - { - op->mode = BASE; - op->reg = $2; - } - | '(' EXPR ',' zapc ',' zireg ')' - { - op->mode = BASE; - op->reg = $4; - op->disp = $2; - op->index = $6; - } - | '(' EXPR ',' zapc ',' zpc ')' - { - if ($4 == PC || $4 == ZPC) - yyerror (_("syntax error")); - op->mode = BASE; - op->reg = $6; - op->disp = $2; - op->index.reg = $4; - op->index.size = SIZE_UNSPEC; - op->index.scale = 1; - } - | '(' EXPR ',' zdireg optczapc ')' - { - op->mode = BASE; - op->reg = $5; - op->disp = $2; - op->index = $4; - } - | '(' zdireg ',' EXPR ')' - { - op->mode = BASE; - op->disp = $4; - op->index = $2; - } - | EXPR '(' zapc ',' zireg ')' - { - op->mode = BASE; - op->reg = $3; - op->disp = $1; - op->index = $5; - } - | '(' zapc ',' zireg ')' - { - op->mode = BASE; - op->reg = $2; - op->index = $4; - } - | EXPR '(' zapc ',' zpc ')' - { - if ($3 == PC || $3 == ZPC) - yyerror (_("syntax error")); - op->mode = BASE; - op->reg = $5; - op->disp = $1; - op->index.reg = $3; - op->index.size = SIZE_UNSPEC; - op->index.scale = 1; - } - | '(' zapc ',' zpc ')' - { - if ($2 == PC || $2 == ZPC) - yyerror (_("syntax error")); - op->mode = BASE; - op->reg = $4; - op->index.reg = $2; - op->index.size = SIZE_UNSPEC; - op->index.scale = 1; - } - | EXPR '(' zdireg optczapc ')' - { - op->mode = BASE; - op->reg = $4; - op->disp = $1; - op->index = $3; - } - | '(' zdireg optczapc ')' - { - op->mode = BASE; - op->reg = $3; - op->index = $2; - } - | '(' '[' EXPR optczapc ']' ',' zireg optcexpr ')' - { - op->mode = POST; - op->reg = $4; - op->disp = $3; - op->index = $7; - op->odisp = $8; - } - | '(' '[' EXPR optczapc ']' optcexpr ')' - { - op->mode = POST; - op->reg = $4; - op->disp = $3; - op->odisp = $6; - } - | '(' '[' zapc ']' ',' zireg optcexpr ')' - { - op->mode = POST; - op->reg = $3; - op->index = $6; - op->odisp = $7; - } - | '(' '[' zapc ']' optcexpr ')' - { - op->mode = POST; - op->reg = $3; - op->odisp = $5; - } - | '(' '[' EXPR ',' zapc ',' zireg ']' optcexpr ')' - { - op->mode = PRE; - op->reg = $5; - op->disp = $3; - op->index = $7; - op->odisp = $9; - } - | '(' '[' zapc ',' zireg ']' optcexpr ')' - { - op->mode = PRE; - op->reg = $3; - op->index = $5; - op->odisp = $7; - } - | '(' '[' EXPR ',' zapc ',' zpc ']' optcexpr ')' - { - if ($5 == PC || $5 == ZPC) - yyerror (_("syntax error")); - op->mode = PRE; - op->reg = $7; - op->disp = $3; - op->index.reg = $5; - op->index.size = SIZE_UNSPEC; - op->index.scale = 1; - op->odisp = $9; - } - | '(' '[' zapc ',' zpc ']' optcexpr ')' - { - if ($3 == PC || $3 == ZPC) - yyerror (_("syntax error")); - op->mode = PRE; - op->reg = $5; - op->index.reg = $3; - op->index.size = SIZE_UNSPEC; - op->index.scale = 1; - op->odisp = $7; - } - | '(' '[' optexprc zdireg optczapc ']' optcexpr ')' - { - op->mode = PRE; - op->reg = $5; - op->disp = $3; - op->index = $4; - op->odisp = $7; - } - ; - -/* An operand in MIT syntax. */ - -mit_operand: - optzapc '@' - { - /* We use optzapc to avoid a shift/reduce conflict. */ - if ($1 < ADDR0 || $1 > ADDR7) - yyerror (_("syntax error")); - op->mode = AINDR; - op->reg = $1; - } - | optzapc '@' '+' - { - /* We use optzapc to avoid a shift/reduce conflict. */ - if ($1 < ADDR0 || $1 > ADDR7) - yyerror (_("syntax error")); - op->mode = AINC; - op->reg = $1; - } - | optzapc '@' '-' - { - /* We use optzapc to avoid a shift/reduce conflict. */ - if ($1 < ADDR0 || $1 > ADDR7) - yyerror (_("syntax error")); - op->mode = ADEC; - op->reg = $1; - } - | optzapc '@' '(' EXPR ')' - { - op->reg = $1; - op->disp = $4; - if (($1 >= ZADDR0 && $1 <= ZADDR7) - || $1 == ZPC) - op->mode = BASE; - else - op->mode = DISP; - } - | optzapc '@' '(' optexprc zireg ')' - { - op->mode = BASE; - op->reg = $1; - op->disp = $4; - op->index = $5; - } - | optzapc '@' '(' EXPR ')' '@' '(' optexprc zireg ')' - { - op->mode = POST; - op->reg = $1; - op->disp = $4; - op->index = $9; - op->odisp = $8; - } - | optzapc '@' '(' EXPR ')' '@' '(' EXPR ')' - { - op->mode = POST; - op->reg = $1; - op->disp = $4; - op->odisp = $8; - } - | optzapc '@' '(' optexprc zireg ')' '@' '(' EXPR ')' - { - op->mode = PRE; - op->reg = $1; - op->disp = $4; - op->index = $5; - op->odisp = $9; - } - ; - -/* An index register, possibly suppressed, which need not have a size - or scale. */ - -zireg: - INDEXREG - | zadr - { - $$.reg = $1; - $$.size = SIZE_UNSPEC; - $$.scale = 1; - } - ; - -/* A register which may be an index register, but which may not be an - address register. This nonterminal is used to avoid ambiguity when - trying to parse something like (0,d5,a6) as compared to (0,a6,d5). */ - -zdireg: - INDEXREG - | zdr - { - $$.reg = $1; - $$.size = SIZE_UNSPEC; - $$.scale = 1; - } - ; - -/* An address or data register, or a suppressed address or data - register. */ - -zadr: - zdr - | AR - | ZAR - ; - -/* A data register which may be suppressed. */ - -zdr: - DR - | ZDR - ; - -/* Either an address register or the PC. */ - -apc: - AR - | LPC - ; - -/* Either an address register, or the PC, or a suppressed address - register, or a suppressed PC. */ - -zapc: - apc - | LZPC - | ZAR - ; - -/* An optional zapc. */ - -optzapc: - /* empty */ - { - $$ = ZADDR0; - } - | zapc - ; - -/* The PC, optionally suppressed. */ - -zpc: - LPC - | LZPC - ; - -/* ',' zapc when it may be omitted. */ - -optczapc: - /* empty */ - { - $$ = ZADDR0; - } - | ',' zapc - { - $$ = $2; - } - ; - -/* ',' EXPR when it may be omitted. */ - -optcexpr: - /* empty */ - { - $$.exp.X_op = O_absent; - $$.size = SIZE_UNSPEC; - } - | ',' EXPR - { - $$ = $2; - } - ; - -/* EXPR ',' when it may be omitted. */ - -optexprc: - /* empty */ - { - $$.exp.X_op = O_absent; - $$.size = SIZE_UNSPEC; - } - | EXPR ',' - { - $$ = $1; - } - ; - -/* A register list for the movem instruction. */ - -reglist: - reglistpair - | reglistpair '/' ireglist - { - $$ = $1 | $3; - } - | reglistreg '/' ireglist - { - $$ = (1 << $1) | $3; - } - ; - -/* We use ireglist when we know we are looking at a reglist, and we - can safely reduce a simple register to reglistreg. If we permitted - reglist to reduce to reglistreg, it would be ambiguous whether a - plain register were a DREG/AREG/FPREG or a REGLST. */ - -ireglist: - reglistreg - { - $$ = 1 << $1; - } - | reglistpair - | reglistpair '/' ireglist - { - $$ = $1 | $3; - } - | reglistreg '/' ireglist - { - $$ = (1 << $1) | $3; - } - ; - -reglistpair: - reglistreg '-' reglistreg - { - if ($1 <= $3) - $$ = (1 << ($3 + 1)) - 1 - ((1 << $1) - 1); - else - $$ = (1 << ($1 + 1)) - 1 - ((1 << $3) - 1); - } - ; - -reglistreg: - DR - { - $$ = $1 - DATA0; - } - | AR - { - $$ = $1 - ADDR0 + 8; - } - | FPR - { - $$ = $1 - FP0 + 16; - } - | FPCR - { - if ($1 == FPI) - $$ = 24; - else if ($1 == FPS) - $$ = 25; - else - $$ = 26; - } - ; - -%% - -/* The string to parse is stored here, and modified by yylex. */ - -static char *str; - -/* The original string pointer. */ - -static char *strorig; - -/* If *CCP could be a register, return the register number and advance - *CCP. Otherwise don't change *CCP, and return 0. */ - -static enum m68k_register -m68k_reg_parse (ccp) - register char **ccp; -{ - char *start = *ccp; - char c; - char *p; - symbolS *symbolp; - - if (flag_reg_prefix_optional) - { - if (*start == REGISTER_PREFIX) - start++; - p = start; - } - else - { - if (*start != REGISTER_PREFIX) - return 0; - p = start + 1; - } - - if (! is_name_beginner (*p)) - return 0; - - p++; - while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*') - p++; - - c = *p; - *p = 0; - symbolp = symbol_find (start); - *p = c; - - if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section) - { - *ccp = p; - return S_GET_VALUE (symbolp); - } - - /* In MRI mode, something like foo.bar can be equated to a register - name. */ - while (flag_mri && c == '.') - { - ++p; - while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*') - p++; - c = *p; - *p = '\0'; - symbolp = symbol_find (start); - *p = c; - if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section) - { - *ccp = p; - return S_GET_VALUE (symbolp); - } - } - - return 0; -} - -/* The lexer. */ - -static int -yylex () -{ - enum m68k_register reg; - char *s; - int parens; - int c = 0; - int tail = 0; - char *hold; - - if (*str == ' ') - ++str; - - if (*str == '\0') - return 0; - - /* Various special characters are just returned directly. */ - switch (*str) - { - case '@': - /* In MRI mode, this can be the start of an octal number. */ - if (flag_mri) - { - if (ISDIGIT (str[1]) - || ((str[1] == '+' || str[1] == '-') - && ISDIGIT (str[2]))) - break; - } - /* Fall through. */ - case '#': - case '&': - case ',': - case ')': - case '/': - case '[': - case ']': - return *str++; - case '+': - /* It so happens that a '+' can only appear at the end of an - operand. If it appears anywhere else, it must be a unary - plus on an expression. */ - if (str[1] == '\0') - return *str++; - break; - case '-': - /* A '-' can only appear in -(ar), rn-rn, or ar@-. If it - appears anywhere else, it must be a unary minus on an - expression. */ - if (str[1] == '\0') - return *str++; - s = str + 1; - if (*s == '(') - ++s; - if (m68k_reg_parse (&s) != 0) - return *str++; - break; - case '(': - /* A '(' can only appear in `(reg)', `(expr,...', `([', `@(', or - `)('. If it appears anywhere else, it must be starting an - expression. */ - if (str[1] == '[' - || (str > strorig - && (str[-1] == '@' - || str[-1] == ')'))) - return *str++; - s = str + 1; - if (m68k_reg_parse (&s) != 0) - return *str++; - /* Check for the case of '(expr,...' by scanning ahead. If we - find a comma outside of balanced parentheses, we return '('. - If we find an unbalanced right parenthesis, then presumably - the '(' really starts an expression. */ - parens = 0; - for (s = str + 1; *s != '\0'; s++) - { - if (*s == '(') - ++parens; - else if (*s == ')') - { - if (parens == 0) - break; - --parens; - } - else if (*s == ',' && parens == 0) - { - /* A comma can not normally appear in an expression, so - this is a case of '(expr,...'. */ - return *str++; - } - } - } - - /* See if it's a register. */ - - reg = m68k_reg_parse (&str); - if (reg != 0) - { - int ret; - - yylval.reg = reg; - - if (reg >= DATA0 && reg <= DATA7) - ret = DR; - else if (reg >= ADDR0 && reg <= ADDR7) - ret = AR; - else if (reg >= FP0 && reg <= FP7) - return FPR; - else if (reg == FPI - || reg == FPS - || reg == FPC) - return FPCR; - else if (reg == PC) - return LPC; - else if (reg >= ZDATA0 && reg <= ZDATA7) - ret = ZDR; - else if (reg >= ZADDR0 && reg <= ZADDR7) - ret = ZAR; - else if (reg == ZPC) - return LZPC; - else - return CREG; - - /* If we get here, we have a data or address register. We - must check for a size or scale; if we find one, we must - return INDEXREG. */ - - s = str; - - if (*s != '.' && *s != ':' && *s != '*') - return ret; - - yylval.indexreg.reg = reg; - - if (*s != '.' && *s != ':') - yylval.indexreg.size = SIZE_UNSPEC; - else - { - ++s; - switch (*s) - { - case 'w': - case 'W': - yylval.indexreg.size = SIZE_WORD; - ++s; - break; - case 'l': - case 'L': - yylval.indexreg.size = SIZE_LONG; - ++s; - break; - default: - yyerror (_("illegal size specification")); - yylval.indexreg.size = SIZE_UNSPEC; - break; - } - } - - yylval.indexreg.scale = 1; - - if (*s == '*' || *s == ':') - { - expressionS scale; - - ++s; - - hold = input_line_pointer; - input_line_pointer = s; - expression (&scale); - s = input_line_pointer; - input_line_pointer = hold; - - if (scale.X_op != O_constant) - yyerror (_("scale specification must resolve to a number")); - else - { - switch (scale.X_add_number) - { - case 1: - case 2: - case 4: - case 8: - yylval.indexreg.scale = scale.X_add_number; - break; - default: - yyerror (_("invalid scale value")); - break; - } - } - } - - str = s; - - return INDEXREG; - } - - /* It must be an expression. Before we call expression, we need to - look ahead to see if there is a size specification. We must do - that first, because otherwise foo.l will be treated as the symbol - foo.l, rather than as the symbol foo with a long size - specification. The grammar requires that all expressions end at - the end of the operand, or with ',', '(', ']', ')'. */ - - parens = 0; - for (s = str; *s != '\0'; s++) - { - if (*s == '(') - { - if (parens == 0 - && s > str - && (s[-1] == ')' || ISALNUM (s[-1]))) - break; - ++parens; - } - else if (*s == ')') - { - if (parens == 0) - break; - --parens; - } - else if (parens == 0 - && (*s == ',' || *s == ']')) - break; - } - - yylval.exp.size = SIZE_UNSPEC; - if (s <= str + 2 - || (s[-2] != '.' && s[-2] != ':')) - tail = 0; - else - { - switch (s[-1]) - { - case 's': - case 'S': - case 'b': - case 'B': - yylval.exp.size = SIZE_BYTE; - break; - case 'w': - case 'W': - yylval.exp.size = SIZE_WORD; - break; - case 'l': - case 'L': - yylval.exp.size = SIZE_LONG; - break; - default: - break; - } - if (yylval.exp.size != SIZE_UNSPEC) - tail = 2; - } - -#ifdef OBJ_ELF - { - /* Look for @PLTPC, etc. */ - char *cp; - - yylval.exp.pic_reloc = pic_none; - cp = s - tail; - if (cp - 6 > str && cp[-6] == '@') - { - if (strncmp (cp - 6, "@PLTPC", 6) == 0) - { - yylval.exp.pic_reloc = pic_plt_pcrel; - tail += 6; - } - else if (strncmp (cp - 6, "@GOTPC", 6) == 0) - { - yylval.exp.pic_reloc = pic_got_pcrel; - tail += 6; - } - } - else if (cp - 4 > str && cp[-4] == '@') - { - if (strncmp (cp - 4, "@PLT", 4) == 0) - { - yylval.exp.pic_reloc = pic_plt_off; - tail += 4; - } - else if (strncmp (cp - 4, "@GOT", 4) == 0) - { - yylval.exp.pic_reloc = pic_got_off; - tail += 4; - } - } - } -#endif - - if (tail != 0) - { - c = s[-tail]; - s[-tail] = 0; - } - - hold = input_line_pointer; - input_line_pointer = str; - expression (&yylval.exp.exp); - str = input_line_pointer; - input_line_pointer = hold; - - if (tail != 0) - { - s[-tail] = c; - str = s; - } - - return EXPR; -} - -/* Parse an m68k operand. This is the only function which is called - from outside this file. */ - -int -m68k_ip_op (s, oparg) - char *s; - struct m68k_op *oparg; -{ - memset (oparg, 0, sizeof *oparg); - oparg->error = NULL; - oparg->index.reg = ZDATA0; - oparg->index.scale = 1; - oparg->disp.exp.X_op = O_absent; - oparg->odisp.exp.X_op = O_absent; - - str = strorig = s; - op = oparg; - - return yyparse (); -} - -/* The error handler. */ - -static void -yyerror (s) - const char *s; -{ - op->error = s; -} diff --git a/gas/config/m88k-opcode.h b/gas/config/m88k-opcode.h deleted file mode 100644 index 8055b5e43..000000000 --- a/gas/config/m88k-opcode.h +++ /dev/null @@ -1,559 +0,0 @@ -/* m88k-opcode.h -- Instruction information for the Motorola 88000 - Contributed by Devon Bowen of Buffalo University - and Torbjorn Granlund of the Swedish Institute of Computer Science. - Copyright 1989, 1990, 1991, 1993, 2000 Free Software Foundation, Inc. - -This file is part of GAS, the GNU Assembler. - -GAS is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GAS is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GAS; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if !defined(__STDC__) && !defined(const) -#define const -#endif - -/* - Character codes for op_spec field below. - Reserved for self-matching: [ ] , - - d = GRF Destination register (21:5) - x = XRF register prefix. Makes next d, 1, or 2, match an extended register. - 1 = Source register 1 (16:5) - 2 = Source register 2 (0:5) - 3 = Both source registers (same value) (0:5 and 16:5) - I = IMM16 (0:16) - b = bit field spec. (0:10) - p = 16 bit pc displ. (0:16) - P = 26 bit pc displ. (0:26) - B = bb0/bb1 condition (21:5) - M = bcnd condition (21:5) - f = fcr (5:6) - c = cr (5:6) - V = VEC9 (0:9) - o = O6 field of "prot" insn (10:7) - ? = Give warning for this insn/operand combination - */ - -/* instruction descriptor structure */ - -struct m88k_opcode -{ - unsigned int opcode; - char *name; - char *op_spec; -}; - -/* and introducing... the Motorola 88100 and 88110 instruction sets... */ - -/* By default, include the 88110 instructions. */ -#define MC88110 - -#if defined (MC88110) -#define _MC88100(OPCODE,MNEM,OP_SPEC) -#define _MC88110(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC}, -#else -#define _MC88100(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC}, -#define _MC88110(OPCODE,MNEM,OP_SPEC) -#endif - -#define _MC88xxx(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC}, - -/* Equal mnemonics must be adjacent. - More specific operand specification must go before more general. - For example, "d,1,2" must go before "d,1,I" as a register for s2 - would otherwise be considered a variable name. */ - -static struct m88k_opcode m88k_opcodes[] = -{ - /* Opcode Mnemonic Opspec */ - - _MC88xxx (0xf4007000, "add", "d,1,2") - _MC88xxx (0x70000000, "add", "d,1,I") - _MC88xxx (0xf4007200, "add.ci", "d,1,2") - _MC88xxx (0xf4007300, "add.cio", "d,1,2") - _MC88xxx (0xf4007100, "add.co", "d,1,2") - _MC88xxx (0xf4006000, "addu", "d,1,2") - _MC88xxx (0x60000000, "addu", "d,1,I") - _MC88xxx (0xf4006200, "addu.ci", "d,1,2") - _MC88xxx (0xf4006300, "addu.cio", "d,1,2") - _MC88xxx (0xf4006100, "addu.co", "d,1,2") - _MC88xxx (0xf4004000, "and", "d,1,2") - _MC88xxx (0x40000000, "and", "d,1,I") - _MC88xxx (0xf4004400, "and.c", "d,1,2") - _MC88xxx (0x44000000, "and.u", "d,1,I") - _MC88xxx (0xd0000000, "bb0", "B,1,p") - _MC88xxx (0xd4000000, "bb0.n", "B,1,p") - _MC88xxx (0xd8000000, "bb1", "B,1,p") - _MC88xxx (0xdc000000, "bb1.n", "B,1,p") - _MC88xxx (0xe8000000, "bcnd", "M,1,p") - _MC88xxx (0xec000000, "bcnd.n", "M,1,p") - _MC88xxx (0xc0000000, "br", "P") - _MC88xxx (0xc4000000, "br.n", "P") - _MC88xxx (0xc8000000, "bsr", "P") - _MC88xxx (0xcc000000, "bsr.n", "P") - _MC88xxx (0xf4008000, "clr", "d,1,2") - _MC88xxx (0xf0008000, "clr", "d,1,b") - _MC88xxx (0xf4007c00, "cmp", "d,1,2") - _MC88xxx (0x7c000000, "cmp", "d,1,I") - _MC88xxx (0xf4007800, "div", "d,1,2") - _MC88xxx (0x78000000, "div", "d,1,I") - _MC88xxx (0xf4007800, "divs", "d,1,2") - _MC88xxx (0x78000000, "divs", "d,1,I") - _MC88110 (0xf4006900, "divu.d", "d,1,2") - _MC88xxx (0xf4006800, "divu", "d,1,2") - _MC88xxx (0x68000000, "divu", "d,1,I") - _MC88xxx (0xf4009000, "ext", "d,1,2") - _MC88xxx (0xf0009000, "ext", "d,1,b") - _MC88xxx (0xf4009800, "extu", "d,1,2") - _MC88xxx (0xf0009800, "extu", "d,1,b") - _MC88xxx (0x84002800, "fadd.sss", "d,1,2") - _MC88110 (0x8400a800, "fadd.sss", "xd,x1,x2") - _MC88xxx (0x84002880, "fadd.ssd", "d,1,2") - _MC88110 (0x8400a820, "fadd.ssd", "xd,x1,x2") - _MC88110 (0x8400a840, "fadd.ssx", "xd,x1,x2") - _MC88xxx (0x84002a00, "fadd.sds", "d,1,2") - _MC88110 (0x8400a880, "fadd.sds", "xd,x1,x2") - _MC88xxx (0x84002a80, "fadd.sdd", "d,1,2") - _MC88110 (0x8400a8a0, "fadd.sdd", "xd,x1,x2") - _MC88110 (0x8400a8c0, "fadd.sdx", "xd,x1,x2") - _MC88110 (0x8400a900, "fadd.sxs", "xd,x1,x2") - _MC88110 (0x8400a920, "fadd.sxd", "xd,x1,x2") - _MC88110 (0x8400a940, "fadd.sxx", "xd,x1,x2") - _MC88xxx (0x84002820, "fadd.dss", "d,1,2") - _MC88110 (0x8400aa00, "fadd.dss", "xd,x1,x2") - _MC88xxx (0x840028a0, "fadd.dsd", "d,1,2") - _MC88110 (0x8400aa20, "fadd.dsd", "xd,x1,x2") - _MC88110 (0x8400aa40, "fadd.dsx", "xd,x1,x2") - _MC88xxx (0x84002a20, "fadd.dds", "d,1,2") - _MC88110 (0x8400aa80, "fadd.dds", "xd,x1,x2") - _MC88xxx (0x84002aa0, "fadd.ddd", "d,1,2") - _MC88110 (0x8400aaa0, "fadd.ddd", "xd,x1,x2") - _MC88110 (0x8400aac0, "fadd.ddx", "xd,x1,x2") - _MC88110 (0x8400ab00, "fadd.dxs", "xd,x1,x2") - _MC88110 (0x8400ab20, "fadd.dxd", "xd,x1,x2") - _MC88110 (0x8400ab40, "fadd.dxx", "xd,x1,x2") - _MC88110 (0x8400ac00, "fadd.xss", "xd,x1,x2") - _MC88110 (0x8400ac20, "fadd.xsd", "xd,x1,x2") - _MC88110 (0x8400ac40, "fadd.xsx", "xd,x1,x2") - _MC88110 (0x8400ac80, "fadd.xds", "xd,x1,x2") - _MC88110 (0x8400aca0, "fadd.xdd", "xd,x1,x2") - _MC88110 (0x8400acc0, "fadd.xdx", "xd,x1,x2") - _MC88110 (0x8400ad00, "fadd.xxs", "xd,x1,x2") - _MC88110 (0x8400ad20, "fadd.xxd", "xd,x1,x2") - _MC88110 (0x8400ad40, "fadd.xxx", "xd,x1,x2") - _MC88xxx (0x84003a80, "fcmp.sdd", "d,1,2") - _MC88110 (0x8400ba80, "fcmp.sdd", "d,x1,x2") - _MC88xxx (0x84003a00, "fcmp.sds", "d,1,2") - _MC88110 (0x8400ba00, "fcmp.sds", "d,x1,x2") - _MC88110 (0x8400bb00, "fcmp.sdx", "d,x1,x2") - _MC88xxx (0x84003880, "fcmp.ssd", "d,1,2") - _MC88110 (0x8400b880, "fcmp.ssd", "d,x1,x2") - _MC88xxx (0x84003800, "fcmp.sss", "d,1,2") - _MC88110 (0x8400b800, "fcmp.sss", "d,x1,x2") - _MC88110 (0x8400b900, "fcmp.ssx", "d,x1,x2") - _MC88110 (0x8400bc80, "fcmp.sxd", "d,x1,x2") - _MC88110 (0x8400bc00, "fcmp.sxs", "d,x1,x2") - _MC88110 (0x8400bd00, "fcmp.sxx", "d,x1,x2") - _MC88110 (0x84003aa0, "fcmpu.sdd", "d,1,2") - _MC88110 (0x8400baa0, "fcmpu.sdd", "d,x1,x2") - _MC88110 (0x84003a20, "fcmpu.sds", "d,1,2") - _MC88110 (0x8400ba20, "fcmpu.sds", "d,x1,x2") - _MC88110 (0x8400bb20, "fcmpu.sdx", "d,x1,x2") - _MC88110 (0x840038a0, "fcmpu.ssd", "d,1,2") - _MC88110 (0x8400b8a0, "fcmpu.ssd", "d,x1,x2") - _MC88110 (0x84003820, "fcmpu.sss", "d,1,2") - _MC88110 (0x8400b820, "fcmpu.sss", "d,x1,x2") - _MC88110 (0x8400b920, "fcmpu.ssx", "d,x1,x2") - _MC88110 (0x8400bca0, "fcmpu.sxd", "d,x1,x2") - _MC88110 (0x8400bc20, "fcmpu.sxs", "d,x1,x2") - _MC88110 (0x8400bd20, "fcmpu.sxx", "d,x1,x2") - _MC88110 (0x84000880, "fcvt.ds", "d,2") - _MC88110 (0x84008880, "fcvt.ds", "xd,x2") - _MC88110 (0x840088c0, "fcvt.dx", "xd,x2") - _MC88110 (0x84000820, "fcvt.sd", "d,2") - _MC88110 (0x84008820, "fcvt.sd", "xd,x2") - _MC88110 (0x84008840, "fcvt.sx", "xd,x2") - _MC88110 (0x84008920, "fcvt.xd", "xd,x2") - _MC88110 (0x84008900, "fcvt.xs", "xd,x2") - _MC88xxx (0x84007000, "fdiv.sss", "d,1,2") - _MC88110 (0x8400f000, "fdiv.sss", "xd,x1,x2") - _MC88xxx (0x84007080, "fdiv.ssd", "d,1,2") - _MC88110 (0x8400f020, "fdiv.ssd", "xd,x1,x2") - _MC88110 (0x8400f040, "fdiv.ssx", "xd,x1,x2") - _MC88xxx (0x84007200, "fdiv.sds", "d,1,2") - _MC88110 (0x8400f080, "fdiv.sds", "xd,x1,x2") - _MC88xxx (0x84007280, "fdiv.sdd", "d,1,2") - _MC88110 (0x8400f0a0, "fdiv.sdd", "xd,x1,x2") - _MC88110 (0x8400f0c0, "fdiv.sdx", "xd,x1,x2") - _MC88110 (0x8400f100, "fdiv.sxs", "xd,x1,x2") - _MC88110 (0x8400f120, "fdiv.sxd", "xd,x1,x2") - _MC88110 (0x8400f140, "fdiv.sxx", "xd,x1,x2") - _MC88xxx (0x84007020, "fdiv.dss", "d,1,2") - _MC88110 (0x8400f200, "fdiv.dss", "xd,x1,x2") - _MC88xxx (0x840070a0, "fdiv.dsd", "d,1,2") - _MC88110 (0x8400f220, "fdiv.dsd", "xd,x1,x2") - _MC88110 (0x8400f240, "fdiv.dsx", "xd,x1,x2") - _MC88xxx (0x84007220, "fdiv.dds", "d,1,2") - _MC88110 (0x8400f280, "fdiv.dds", "xd,x1,x2") - _MC88xxx (0x840072a0, "fdiv.ddd", "d,1,2") - _MC88110 (0x8400f2a0, "fdiv.ddd", "xd,x1,x2") - _MC88110 (0x8400f2c0, "fdiv.ddx", "xd,x1,x2") - _MC88110 (0x8400f300, "fdiv.dxs", "xd,x1,x2") - _MC88110 (0x8400f320, "fdiv.dxd", "xd,x1,x2") - _MC88110 (0x8400f340, "fdiv.dxx", "xd,x1,x2") - _MC88110 (0x8400f400, "fdiv.xss", "xd,x1,x2") - _MC88110 (0x8400f420, "fdiv.xsd", "xd,x1,x2") - _MC88110 (0x8400f440, "fdiv.xsx", "xd,x1,x2") - _MC88110 (0x8400f480, "fdiv.xds", "xd,x1,x2") - _MC88110 (0x8400f4a0, "fdiv.xdd", "xd,x1,x2") - _MC88110 (0x8400f4c0, "fdiv.xdx", "xd,x1,x2") - _MC88110 (0x8400f500, "fdiv.xxs", "xd,x1,x2") - _MC88110 (0x8400f520, "fdiv.xxd", "xd,x1,x2") - _MC88110 (0x8400f540, "fdiv.xxx", "xd,x1,x2") - _MC88xxx (0xf400ec00, "ff0", "d,2") - _MC88xxx (0xf400e800, "ff1", "d,2") - _MC88xxx (0x80004800, "fldcr", "d,f") - _MC88xxx (0x84002020, "flt.ds", "d,2") - _MC88110 (0x84002220, "flt.ds", "xd,2") - _MC88xxx (0x84002000, "flt.ss", "d,2") - _MC88110 (0x84002200, "flt.ss", "xd,2") - _MC88110 (0x84002240, "flt.xs", "xd,2") - _MC88xxx (0x84000000, "fmul.sss", "d,1,2") - _MC88110 (0x84008000, "fmul.sss", "xd,x1,x2") - _MC88xxx (0x84000080, "fmul.ssd", "d,1,2") - _MC88110 (0x84008020, "fmul.ssd", "xd,x1,x2") - _MC88110 (0x84008040, "fmul.ssx", "xd,x1,x2") - _MC88xxx (0x84000200, "fmul.sds", "d,1,2") - _MC88110 (0x84008080, "fmul.sds", "xd,x1,x2") - _MC88xxx (0x84000280, "fmul.sdd", "d,1,2") - _MC88110 (0x840080a0, "fmul.sdd", "xd,x1,x2") - _MC88110 (0x840080c0, "fmul.sdx", "xd,x1,x2") - _MC88110 (0x84008100, "fmul.sxs", "xd,x1,x2") - _MC88110 (0x84008120, "fmul.sxd", "xd,x1,x2") - _MC88110 (0x84008140, "fmul.sxx", "xd,x1,x2") - _MC88xxx (0x84000020, "fmul.dss", "d,1,2") - _MC88110 (0x84008200, "fmul.dss", "xd,x1,x2") - _MC88xxx (0x840000a0, "fmul.dsd", "d,1,2") - _MC88110 (0x84008220, "fmul.dsd", "xd,x1,x2") - _MC88110 (0x84008240, "fmul.dsx", "xd,x1,x2") - _MC88xxx (0x84000220, "fmul.dds", "d,1,2") - _MC88110 (0x84008280, "fmul.dds", "xd,x1,x2") - _MC88xxx (0x840002a0, "fmul.ddd", "d,1,2") - _MC88110 (0x840082a0, "fmul.ddd", "xd,x1,x2") - _MC88110 (0x840082c0, "fmul.ddx", "xd,x1,x2") - _MC88110 (0x84008300, "fmul.dxs", "xd,x1,x2") - _MC88110 (0x84008320, "fmul.dxd", "xd,x1,x2") - _MC88110 (0x84008340, "fmul.dxx", "xd,x1,x2") - _MC88110 (0x84008400, "fmul.xss", "xd,x1,x2") - _MC88110 (0x84008420, "fmul.xsd", "xd,x1,x2") - _MC88110 (0x84008440, "fmul.xsx", "xd,x1,x2") - _MC88110 (0x84008480, "fmul.xds", "xd,x1,x2") - _MC88110 (0x840084a0, "fmul.xdd", "xd,x1,x2") - _MC88110 (0x840084c0, "fmul.xdx", "xd,x1,x2") - _MC88110 (0x84008500, "fmul.xxs", "xd,x1,x2") - _MC88110 (0x84008520, "fmul.xxd", "xd,x1,x2") - _MC88110 (0x84008540, "fmul.xxx", "xd,x1,x2") - _MC88110 (0x840078a0, "fsqrt.dd", "d,2") - _MC88110 (0x8400f8a0, "fsqrt.dd", "xd,x2") - _MC88110 (0x84007880, "fsqrt.ds", "d,2") - _MC88110 (0x8400f880, "fsqrt.ds", "xd,x2") - _MC88110 (0x8400f8c0, "fsqrt.dx", "xd,x2") - _MC88110 (0x84007820, "fsqrt.sd", "d,2") - _MC88110 (0x8400f820, "fsqrt.sd", "xd,x2") - _MC88110 (0x84007800, "fsqrt.ss", "d,2") - _MC88110 (0x8400f800, "fsqrt.ss", "xd,x2") - _MC88110 (0x8400f840, "fsqrt.sx", "xd,x2") - _MC88110 (0x8400f920, "fsqrt.xd", "xd,x2") - _MC88110 (0x8400f900, "fsqrt.xs", "xd,x2") - _MC88110 (0x8400f940, "fsqrt.xx", "xd,x2") - _MC88xxx (0x80008800, "fstcr", "3,f") - _MC88xxx (0x84003000, "fsub.sss", "d,1,2") - _MC88110 (0x8400b000, "fsub.sss", "xd,x1,x2") - _MC88xxx (0x84003080, "fsub.ssd", "d,1,2") - _MC88110 (0x8400b020, "fsub.ssd", "xd,x1,x2") - _MC88110 (0x8400b040, "fsub.ssx", "xd,x1,x2") - _MC88xxx (0x84003200, "fsub.sds", "d,1,2") - _MC88110 (0x8400b080, "fsub.sds", "xd,x1,x2") - _MC88xxx (0x84003280, "fsub.sdd", "d,1,2") - _MC88110 (0x8400b0a0, "fsub.sdd", "xd,x1,x2") - _MC88110 (0x8400b0c0, "fsub.sdx", "xd,x1,x2") - _MC88110 (0x8400b100, "fsub.sxs", "xd,x1,x2") - _MC88110 (0x8400b120, "fsub.sxd", "xd,x1,x2") - _MC88110 (0x8400b140, "fsub.sxx", "xd,x1,x2") - _MC88xxx (0x84003020, "fsub.dss", "d,1,2") - _MC88110 (0x8400b200, "fsub.dss", "xd,x1,x2") - _MC88xxx (0x840030a0, "fsub.dsd", "d,1,2") - _MC88110 (0x8400b220, "fsub.dsd", "xd,x1,x2") - _MC88110 (0x8400b240, "fsub.dsx", "xd,x1,x2") - _MC88xxx (0x84003220, "fsub.dds", "d,1,2") - _MC88110 (0x8400b280, "fsub.dds", "xd,x1,x2") - _MC88xxx (0x840032a0, "fsub.ddd", "d,1,2") - _MC88110 (0x8400b2a0, "fsub.ddd", "xd,x1,x2") - _MC88110 (0x8400b2c0, "fsub.ddx", "xd,x1,x2") - _MC88110 (0x8400b300, "fsub.dxs", "xd,x1,x2") - _MC88110 (0x8400b320, "fsub.dxd", "xd,x1,x2") - _MC88110 (0x8400b340, "fsub.dxx", "xd,x1,x2") - _MC88110 (0x8400b400, "fsub.xss", "xd,x1,x2") - _MC88110 (0x8400b420, "fsub.xsd", "xd,x1,x2") - _MC88110 (0x8400b440, "fsub.xsx", "xd,x1,x2") - _MC88110 (0x8400b480, "fsub.xds", "xd,x1,x2") - _MC88110 (0x8400b4a0, "fsub.xdd", "xd,x1,x2") - _MC88110 (0x8400b4c0, "fsub.xdx", "xd,x1,x2") - _MC88110 (0x8400b500, "fsub.xxs", "xd,x1,x2") - _MC88110 (0x8400b520, "fsub.xxd", "xd,x1,x2") - _MC88110 (0x8400b540, "fsub.xxx", "xd,x1,x2") - _MC88xxx (0x8000c800, "fxcr", "d,3,f") - _MC88xxx (0x8400fc01, "illop1", "") - _MC88xxx (0x8400fc02, "illop2", "") - _MC88xxx (0x8400fc03, "illop3", "") - _MC88xxx (0x84004880, "int.sd", "d,2") - _MC88110 (0x8400c880, "int.sd", "d,x2") - _MC88xxx (0x84004800, "int.ss", "d,2") - _MC88110 (0x8400c800, "int.ss", "d,x2") - _MC88110 (0x8400c900, "int.sx", "d,x2") - _MC88xxx (0xf400c000, "jmp", "2") - _MC88xxx (0xf400c400, "jmp.n", "2") - _MC88xxx (0xf400c800, "jsr", "2") - _MC88xxx (0xf400cc00, "jsr.n", "2") - _MC88xxx (0xf4001400, "ld", "d,1,2") - _MC88xxx (0xf4001600, "ld", "d,1[2]") - _MC88xxx (0x14000000, "ld", "d,1,I") - _MC88110 (0xf0001600, "ld", "xd,1[2]") - _MC88110 (0xf0001400, "ld", "xd,1,2") - _MC88110 (0x04000000, "ld", "xd,1,I") - _MC88xxx (0xf4001e00, "ld.b", "d,1[2]") - _MC88xxx (0xf4001c00, "ld.b", "d,1,2") - _MC88xxx (0x1c000000, "ld.b", "d,1,I") - _MC88xxx (0xf4001d00, "ld.b.usr", "d,1,2") - _MC88xxx (0xf4001f00, "ld.b.usr", "d,1[2]") - _MC88xxx (0xf4000e00, "ld.bu", "d,1[2]") - _MC88xxx (0xf4000c00, "ld.bu", "d,1,2") - _MC88xxx (0x0c000000, "ld.bu", "d,1,I") - _MC88xxx (0xf4000d00, "ld.bu.usr", "d,1,2") - _MC88xxx (0xf4000f00, "ld.bu.usr", "d,1[2]") - _MC88xxx (0xf4001200, "ld.d", "d,1[2]") - _MC88xxx (0xf4001000, "ld.d", "d,1,2") - _MC88xxx (0x10000000, "ld.d", "d,1,I") - _MC88110 (0xf0001200, "ld.d", "xd,1[2]") - _MC88110 (0xf0001000, "ld.d", "xd,1,2") - _MC88110 (0x00000000, "ld.d", "xd,1,I") - _MC88xxx (0xf4001100, "ld.d.usr", "d,1,2") - _MC88xxx (0xf4001300, "ld.d.usr", "d,1[2]") - _MC88110 (0xf0001100, "ld.d.usr", "xd,1,2") - _MC88110 (0xf0001300, "ld.d.usr", "xd,1[2]") - _MC88xxx (0xf4001a00, "ld.h", "d,1[2]") - _MC88xxx (0xf4001800, "ld.h", "d,1,2") - _MC88xxx (0x18000000, "ld.h", "d,1,I") - _MC88xxx (0xf4001900, "ld.h.usr", "d,1,2") - _MC88xxx (0xf4001b00, "ld.h.usr", "d,1[2]") - _MC88xxx (0xf4000a00, "ld.hu", "d,1[2]") - _MC88xxx (0xf4000800, "ld.hu", "d,1,2") - _MC88xxx (0x08000000, "ld.hu", "d,1,I") - _MC88xxx (0xf4000900, "ld.hu.usr", "d,1,2") - _MC88xxx (0xf4000b00, "ld.hu.usr", "d,1[2]") - _MC88xxx (0xf4001500, "ld.usr", "d,1,2") - _MC88xxx (0xf4001700, "ld.usr", "d,1[2]") - _MC88110 (0xf0001500, "ld.usr", "xd,1,2") - _MC88110 (0xf0001700, "ld.usr", "xd,1[2]") - _MC88110 (0xf0001a00, "ld.x", "xd,1[2]") - _MC88110 (0xf0001800, "ld.x", "xd,1,2") - _MC88110 (0x3c000000, "ld.x", "xd,1,I") - _MC88110 (0xf0001900, "ld.x.usr", "xd,1,2") - _MC88110 (0xf0001b00, "ld.x.usr", "xd,1[2]") - _MC88xxx (0xf4003600, "lda", "d,1[2]") - _MC88xxx (0xf4006000, "lda", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda", "?d,1,I") /* Output addu */ - _MC88xxx (0xf4006000, "lda.b", "?d,1[2]") /* Output addu */ - _MC88xxx (0xf4006000, "lda.b", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda.b", "?d,1,I") /* Output addu */ - _MC88xxx (0xf4003200, "lda.d", "d,1[2]") - _MC88xxx (0xf4006000, "lda.d", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda.d", "?d,1,I") /* Output addu */ - _MC88110 (0xf4003e00, "lda.x", "d,1[2]") - _MC88xxx (0xf4003a00, "lda.h", "d,1[2]") - _MC88xxx (0xf4006000, "lda.h", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda.h", "?d,1,I") /* Output addu */ - _MC88xxx (0x80004000, "ldcr", "d,c") - _MC88xxx (0xf400a000, "mak", "d,1,2") - _MC88xxx (0xf000a000, "mak", "d,1,b") - _MC88xxx (0x48000000, "mask", "d,1,I") - _MC88xxx (0x4c000000, "mask.u", "d,1,I") - _MC88110 (0x8400c000, "mov.s", "d,x2") - _MC88110 (0x84004200, "mov.s", "xd,2") - _MC88110 (0x8400c080, "mov.d", "d,x2") - _MC88110 (0x84004280, "mov.d", "xd,2") - _MC88110 (0x8400c300, "mov", "xd,x2") - _MC88xxx (0xf4006c00, "mul", "d,1,2") - _MC88xxx (0x6c000000, "mul", "d,1,I") - _MC88xxx (0xf4006e00, "muls", "d,1,2") - _MC88xxx (0x6c000000, "muls", "d,1,I") - _MC88xxx (0xf4006c00, "mulu", "d,1,2") /* synonym for mul */ - _MC88xxx (0x6c000000, "mulu", "d,1,I") /* synonym for mul */ - _MC88110 (0xf4006d00, "mulu.d", "d,1,2") - _MC88xxx (0x84005080, "nint.sd", "d,2") - _MC88110 (0x8400d080, "nint.sd", "d,x2") - _MC88xxx (0x84005000, "nint.ss", "d,2") - _MC88110 (0x8400d000, "nint.ss", "d,x2") - _MC88110 (0x8400d100, "nint.sx", "d,x2") - _MC88xxx (0xf4005800, "or", "d,1,2") - _MC88xxx (0x58000000, "or", "d,1,I") - _MC88xxx (0xf4005c00, "or.c", "d,1,2") - _MC88xxx (0x5c000000, "or.u", "d,1,I") - _MC88110 (0x88002020, "padd.b", "d,1,2") - _MC88110 (0x88002040, "padd.h", "d,1,2") - _MC88110 (0x88002060, "padd", "d,1,2") - _MC88110 (0x880020a0, "padds.u.b", "d,1,2") - _MC88110 (0x880020c0, "padds.u.h", "d,1,2") - _MC88110 (0x880020e0, "padds.u", "d,1,2") - _MC88110 (0x88002120, "padds.us.b", "d,1,2") - _MC88110 (0x88002140, "padds.us.h", "d,1,2") - _MC88110 (0x88002160, "padds.us", "d,1,2") - _MC88110 (0x880021a0, "padds.s.b", "d,1,2") - _MC88110 (0x880021c0, "padds.s.h", "d,1,2") - _MC88110 (0x880021e0, "padds.s", "d,1,2") - _MC88110 (0x88003860, "pcmp", "d,1,2") - _MC88110 (0x88000000, "pmul", "d,1,2") - _MC88110 (0x88006420, "ppack.32.b", "d,1,2") - _MC88110 (0x88006240, "ppack.16.h", "d,1,2") - _MC88110 (0x88006440, "ppack.32.h", "d,1,2") - _MC88110 (0x88006160, "ppack.8", "d,1,2") - _MC88110 (0x88006260, "ppack.16", "d,1,2") - _MC88110 (0x88006460, "ppack.32", "d,1,2") - _MC88110 (0x88007800, "prot", "d,1,2") - _MC88110 (0x88007000, "prot", "d,1,o") - _MC88110 (0x88003020, "psub.b", "d,1,2") - _MC88110 (0x88003040, "psub.h", "d,1,2") - _MC88110 (0x88003060, "psub", "d,1,2") - _MC88110 (0x880030a0, "psubs.u.b", "d,1,2") - _MC88110 (0x880030c0, "psubs.u.h", "d,1,2") - _MC88110 (0x880030e0, "psubs.u", "d,1,2") - _MC88110 (0x88003120, "psubs.us.b", "d,1,2") - _MC88110 (0x88003140, "psubs.us.h", "d,1,2") - _MC88110 (0x88003160, "psubs.us", "d,1,2") - _MC88110 (0x880031a0, "psubs.s.b", "d,1,2") - _MC88110 (0x880031c0, "psubs.s.h", "d,1,2") - _MC88110 (0x880031e0, "psubs.s", "d,1,2") - _MC88110 (0x88006800, "punpk.n", "d,1") - _MC88110 (0x88006820, "punpk.b", "d,1") - _MC88110 (0x88006840, "punpk.h", "d,1") - _MC88xxx (0xf400a800, "rot", "d,1,2") - _MC88xxx (0xf000a800, "rot", "d,1,b") - _MC88xxx (0xf400fc00, "rte", "") - _MC88xxx (0xf4008800, "set", "d,1,2") - _MC88xxx (0xf0008800, "set", "d,1,b") - _MC88xxx (0xf4002600, "st", "d,1[2]") - _MC88xxx (0xf4002400, "st", "d,1,2") - _MC88xxx (0x24000000, "st", "d,1,I") - _MC88110 (0xf0002600, "st", "xd,1[2]") - _MC88110 (0xf0002400, "st", "xd,1,2") - _MC88110 (0x34000000, "st", "xd,1,I") - _MC88xxx (0xf4002e00, "st.b", "d,1[2]") - _MC88xxx (0xf4002c00, "st.b", "d,1,2") - _MC88xxx (0x2c000000, "st.b", "d,1,I") - _MC88xxx (0xf4002d00, "st.b.usr", "d,1,2") - _MC88xxx (0xf4002f00, "st.b.usr", "d,1[2]") - _MC88110 (0xf4002d80, "st.b.usr.wt", "d,1,2") - _MC88110 (0xf4002f80, "st.b.usr.wt", "d,1[2]") - _MC88110 (0xf4002c80, "st.b.wt", "d,1,2") - _MC88110 (0xf4002e80, "st.b.wt", "d,1[2]") - _MC88xxx (0xf4002200, "st.d", "d,1[2]") - _MC88xxx (0xf4002000, "st.d", "d,1,2") - _MC88xxx (0x20000000, "st.d", "d,1,I") - _MC88110 (0xf0002200, "st.d", "xd,1[2]") - _MC88110 (0xf0002000, "st.d", "xd,1,2") - _MC88110 (0x30000000, "st.d", "xd,1,I") - _MC88xxx (0xf4002100, "st.d.usr", "d,1,2") - _MC88xxx (0xf4002300, "st.d.usr", "d,1[2]") - _MC88110 (0xf0002100, "st.d.usr", "xd,1,2") - _MC88110 (0xf0002300, "st.d.usr", "xd,1[2]") - _MC88110 (0xf4002180, "st.d.usr.wt", "d,1,2") - _MC88110 (0xf4002380, "st.d.usr.wt", "d,1[2]") - _MC88110 (0xf0002180, "st.d.usr.wt", "xd,1,2") - _MC88110 (0xf0002380, "st.d.usr.wt", "xd,1[2]") - _MC88110 (0xf4002080, "st.d.wt", "d,1,2") - _MC88110 (0xf4002280, "st.d.wt", "d,1[2]") - _MC88110 (0xf0002080, "st.d.wt", "xd,1,2") - _MC88110 (0xf0002280, "st.d.wt", "xd,1[2]") - _MC88xxx (0xf4002a00, "st.h", "d,1[2]") - _MC88xxx (0xf4002800, "st.h", "d,1,2") - _MC88xxx (0x28000000, "st.h", "d,1,I") - _MC88xxx (0xf4002900, "st.h.usr", "d,1,2") - _MC88xxx (0xf4002b00, "st.h.usr", "d,1[2]") - _MC88110 (0xf4002980, "st.h.usr.wt", "d,1,2") - _MC88110 (0xf4002b80, "st.h.usr.wt", "d,1[2]") - _MC88110 (0xf4002880, "st.h.wt", "d,1,2") - _MC88110 (0xf4002a80, "st.h.wt", "d,1[2]") - _MC88xxx (0xf4002500, "st.usr", "d,1,2") - _MC88xxx (0xf4002700, "st.usr", "d,1[2]") - _MC88110 (0xf0002500, "st.usr", "xd,1,2") - _MC88110 (0xf0002700, "st.usr", "xd,1[2]") - _MC88110 (0xf4002580, "st.usr.wt", "d,1,2") - _MC88110 (0xf4002780, "st.usr.wt", "d,1[2]") - _MC88110 (0xf0002580, "st.usr.wt", "xd,1,2") - _MC88110 (0xf0002780, "st.usr.wt", "xd,1[2]") - _MC88110 (0xf4002480, "st.wt", "d,1,2") - _MC88110 (0xf4002680, "st.wt", "d,1[2]") - _MC88110 (0xf0002480, "st.wt", "xd,1,2") - _MC88110 (0xf0002680, "st.wt", "xd,1[2]") - _MC88110 (0xf0002a00, "st.x", "xd,1[2]") - _MC88110 (0xf0002800, "st.x", "xd,1,2") - _MC88110 (0x38000000, "st.x", "xd,1,I") - _MC88110 (0xf0002900, "st.x.usr", "xd,1,2") - _MC88110 (0xf0002b00, "st.x.usr", "xd,1[2]") - _MC88110 (0xf0002980, "st.x.usr.wt", "xd,1,2") - _MC88110 (0xf0002b80, "st.x.usr.wt", "xd,1[2]") - _MC88110 (0xf0002880, "st.x.wt", "xd,1,2") - _MC88110 (0xf0002a80, "st.x.wt", "xd,1[2]") - _MC88xxx (0x80008000, "stcr", "3,c") - _MC88xxx (0xf4007400, "sub", "d,1,2") - _MC88xxx (0x74000000, "sub", "d,1,I") - _MC88xxx (0xf4007600, "sub.ci", "d,1,2") - _MC88xxx (0xf4007700, "sub.cio", "d,1,2") - _MC88xxx (0xf4007500, "sub.co", "d,1,2") - _MC88xxx (0xf4006400, "subu", "d,1,2") - _MC88xxx (0x64000000, "subu", "d,1,I") - _MC88xxx (0xf4006600, "subu.ci", "d,1,2") - _MC88xxx (0xf4006700, "subu.cio", "d,1,2") - _MC88xxx (0xf4006500, "subu.co", "d,1,2") - _MC88xxx (0xf000d000, "tb0", "B,1,V") - _MC88xxx (0xf000d800, "tb1", "B,1,V") - _MC88xxx (0xf400f800, "tbnd", "1,2") - _MC88xxx (0xf8000000, "tbnd", "1,I") - _MC88xxx (0xf000e800, "tcnd", "M,1,V") - _MC88xxx (0x84005880, "trnc.sd", "d,2") - _MC88110 (0x8400d880, "trnc.sd", "d,x2") - _MC88xxx (0x84005800, "trnc.ss", "d,2") - _MC88110 (0x8400d800, "trnc.ss", "d,x2") - _MC88110 (0x8400d900, "trnc.sx", "d,x2") - _MC88xxx (0x8000c000, "xcr", "d,3,c") - _MC88xxx (0xf4000600, "xmem", "d,1[2]") - _MC88xxx (0xf4000400, "xmem", "d,1,2") - _MC88100 (0x04000000, "xmem", "?d,1,I") - _MC88xxx (0xf4000200, "xmem.bu", "d,1[2]") - _MC88xxx (0xf4000000, "xmem.bu", "d,1,2") - _MC88100 (0x00000000, "xmem.bu", "?d,1,I") - _MC88xxx (0xf4000300, "xmem.bu.usr", "d,1[2]") - _MC88xxx (0xf4000100, "xmem.bu.usr", "d,1,2") - _MC88100 (0x00000100, "xmem.bu.usr", "?d,1,I") - _MC88xxx (0xf4000700, "xmem.usr", "d,1[2]") - _MC88xxx (0xf4000500, "xmem.usr", "d,1,2") - _MC88100 (0x04000100, "xmem.usr", "?d,1,I") - _MC88xxx (0xf4005000, "xor", "d,1,2") - _MC88xxx (0x50000000, "xor", "d,1,I") - _MC88xxx (0xf4005400, "xor.c", "d,1,2") - _MC88xxx (0x54000000, "xor.u", "d,1,I") - _MC88xxx (0x00000000, "", 0) -}; - -#define NUMOPCODES ((sizeof m88k_opcodes)/(sizeof m88k_opcodes[0])) diff --git a/gas/config/obj-aout.c b/gas/config/obj-aout.c deleted file mode 100644 index 6e5fd2919..000000000 --- a/gas/config/obj-aout.c +++ /dev/null @@ -1,707 +0,0 @@ -/* a.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, - 2001, 2002 Free Software Foundation, Inc. - -This file is part of GAS, the GNU Assembler. - -GAS is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as -published by the Free Software Foundation; either version 2, -or (at your option) any later version. - -GAS is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See -the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GAS; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#define OBJ_HEADER "obj-aout.h" - -#include "as.h" -#ifdef BFD_ASSEMBLER -#undef NO_RELOC -#include "aout/aout64.h" -#endif -#include "obstack.h" - -#ifndef BFD_ASSEMBLER -/* in: segT out: N_TYPE bits */ -const short seg_N_TYPE[] = -{ - N_ABS, - N_TEXT, - N_DATA, - N_BSS, - N_UNDF, /* unknown */ - N_UNDF, /* error */ - N_UNDF, /* expression */ - N_UNDF, /* debug */ - N_UNDF, /* ntv */ - N_UNDF, /* ptv */ - N_REGISTER, /* register */ -}; - -const segT N_TYPE_seg[N_TYPE + 2] = -{ /* N_TYPE == 0x1E = 32-2 */ - SEG_UNKNOWN, /* N_UNDF == 0 */ - SEG_GOOF, - SEG_ABSOLUTE, /* N_ABS == 2 */ - SEG_GOOF, - SEG_TEXT, /* N_TEXT == 4 */ - SEG_GOOF, - SEG_DATA, /* N_DATA == 6 */ - SEG_GOOF, - SEG_BSS, /* N_BSS == 8 */ - SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_REGISTER, /* dummy N_REGISTER for regs = 30 */ - SEG_GOOF, -}; -#endif - -static void obj_aout_line PARAMS ((int)); -static void obj_aout_weak PARAMS ((int)); -static void obj_aout_type PARAMS ((int)); - -const pseudo_typeS aout_pseudo_table[] = -{ - {"line", obj_aout_line, 0}, /* source code line number */ - {"ln", obj_aout_line, 0}, /* coff line number that we use anyway */ - - {"weak", obj_aout_weak, 0}, /* mark symbol as weak. */ - - {"type", obj_aout_type, 0}, - - /* coff debug pseudos (ignored) */ - {"def", s_ignore, 0}, - {"dim", s_ignore, 0}, - {"endef", s_ignore, 0}, - {"ident", s_ignore, 0}, - {"line", s_ignore, 0}, - {"ln", s_ignore, 0}, - {"scl", s_ignore, 0}, - {"size", s_ignore, 0}, - {"tag", s_ignore, 0}, - {"val", s_ignore, 0}, - {"version", s_ignore, 0}, - - {"optim", s_ignore, 0}, /* For sun386i cc (?) */ - - /* other stuff */ - {"ABORT", s_abort, 0}, - - {NULL, NULL, 0} /* end sentinel */ -}; /* aout_pseudo_table */ - -#ifdef BFD_ASSEMBLER - -void -obj_aout_frob_symbol (sym, punt) - symbolS *sym; - int *punt ATTRIBUTE_UNUSED; -{ - flagword flags; - asection *sec; - int desc, type, other; - - flags = symbol_get_bfdsym (sym)->flags; - desc = aout_symbol (symbol_get_bfdsym (sym))->desc; - type = aout_symbol (symbol_get_bfdsym (sym))->type; - other = aout_symbol (symbol_get_bfdsym (sym))->other; - sec = S_GET_SEGMENT (sym); - - /* Only frob simple symbols this way right now. */ - if (! (type & ~ (N_TYPE | N_EXT))) - { - if (type == (N_UNDF | N_EXT) - && sec == &bfd_abs_section) - { - sec = bfd_und_section_ptr; - S_SET_SEGMENT (sym, sec); - } - - if ((type & N_TYPE) != N_INDR - && (type & N_TYPE) != N_SETA - && (type & N_TYPE) != N_SETT - && (type & N_TYPE) != N_SETD - && (type & N_TYPE) != N_SETB - && type != N_WARNING - && (sec == &bfd_abs_section - || sec == &bfd_und_section)) - return; - if (flags & BSF_EXPORT) - type |= N_EXT; - - switch (type & N_TYPE) - { - case N_SETA: - case N_SETT: - case N_SETD: - case N_SETB: - /* Set the debugging flag for constructor symbols so that - BFD leaves them alone. */ - symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING; - - /* You can't put a common symbol in a set. The way a set - element works is that the symbol has a definition and a - name, and the linker adds the definition to the set of - that name. That does not work for a common symbol, - because the linker can't tell which common symbol the - user means. FIXME: Using as_bad here may be - inappropriate, since the user may want to force a - particular type without regard to the semantics of sets; - on the other hand, we certainly don't want anybody to be - mislead into thinking that their code will work. */ - if (S_IS_COMMON (sym)) - as_bad (_("Attempt to put a common symbol into set %s"), - S_GET_NAME (sym)); - /* Similarly, you can't put an undefined symbol in a set. */ - else if (! S_IS_DEFINED (sym)) - as_bad (_("Attempt to put an undefined symbol into set %s"), - S_GET_NAME (sym)); - - break; - case N_INDR: - /* Put indirect symbols in the indirect section. */ - S_SET_SEGMENT (sym, bfd_ind_section_ptr); - symbol_get_bfdsym (sym)->flags |= BSF_INDIRECT; - if (type & N_EXT) - { - symbol_get_bfdsym (sym)->flags |= BSF_EXPORT; - symbol_get_bfdsym (sym)->flags &=~ BSF_LOCAL; - } - break; - case N_WARNING: - /* Mark warning symbols. */ - symbol_get_bfdsym (sym)->flags |= BSF_WARNING; - break; - } - } - else - { - symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING; - } - - aout_symbol (symbol_get_bfdsym (sym))->type = type; - - /* Double check weak symbols. */ - if (S_IS_WEAK (sym)) - { - if (S_IS_COMMON (sym)) - as_bad (_("Symbol `%s' can not be both weak and common"), - S_GET_NAME (sym)); - } -} - -void -obj_aout_frob_file_before_fix () -{ - /* Relocation processing may require knowing the VMAs of the sections. - Since writing to a section will cause the BFD back end to compute the - VMAs, fake it out here.... */ - bfd_byte b = 0; - bfd_boolean x = TRUE; - if (bfd_section_size (stdoutput, text_section) != 0) - { - x = bfd_set_section_contents (stdoutput, text_section, &b, (file_ptr) 0, - (bfd_size_type) 1); - } - else if (bfd_section_size (stdoutput, data_section) != 0) - { - x = bfd_set_section_contents (stdoutput, data_section, &b, (file_ptr) 0, - (bfd_size_type) 1); - } - assert (x); -} - -#else /* ! BFD_ASSEMBLER */ - -/* Relocation. */ - -/* - * emit_relocations() - * - * Crawl along a fixS chain. Emit the segment's relocations. - */ -void -obj_emit_relocations (where, fixP, segment_address_in_file) - char **where; - fixS *fixP; /* Fixup chain for this segment. */ - relax_addressT segment_address_in_file; -{ - for (; fixP; fixP = fixP->fx_next) - if (fixP->fx_done == 0) - { - symbolS *sym; - - sym = fixP->fx_addsy; - while (sym->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) - sym = sym->sy_value.X_add_symbol; - fixP->fx_addsy = sym; - - if (! sym->sy_resolved && ! S_IS_DEFINED (sym)) - { - char *file; - unsigned int line; - - if (expr_symbol_where (sym, &file, &line)) - as_bad_where (file, line, _("unresolved relocation")); - else - as_bad (_("bad relocation: symbol `%s' not in symbol table"), - S_GET_NAME (sym)); - } - - tc_aout_fix_to_chars (*where, fixP, segment_address_in_file); - *where += md_reloc_size; - } -} - -#ifndef obj_header_append -/* Aout file generation & utilities */ -void -obj_header_append (where, headers) - char **where; - object_headers *headers; -{ - tc_headers_hook (headers); - -#ifdef CROSS_COMPILE - md_number_to_chars (*where, headers->header.a_info, sizeof (headers->header.a_info)); - *where += sizeof (headers->header.a_info); - md_number_to_chars (*where, headers->header.a_text, sizeof (headers->header.a_text)); - *where += sizeof (headers->header.a_text); - md_number_to_chars (*where, headers->header.a_data, sizeof (headers->header.a_data)); - *where += sizeof (headers->header.a_data); - md_number_to_chars (*where, headers->header.a_bss, sizeof (headers->header.a_bss)); - *where += sizeof (headers->header.a_bss); - md_number_to_chars (*where, headers->header.a_syms, sizeof (headers->header.a_syms)); - *where += sizeof (headers->header.a_syms); - md_number_to_chars (*where, headers->header.a_entry, sizeof (headers->header.a_entry)); - *where += sizeof (headers->header.a_entry); - md_number_to_chars (*where, headers->header.a_trsize, sizeof (headers->header.a_trsize)); - *where += sizeof (headers->header.a_trsize); - md_number_to_chars (*where, headers->header.a_drsize, sizeof (headers->header.a_drsize)); - *where += sizeof (headers->header.a_drsize); - -#else /* CROSS_COMPILE */ - - append (where, (char *) &headers->header, sizeof (headers->header)); -#endif /* CROSS_COMPILE */ - -} -#endif /* ! defined (obj_header_append) */ - -void -obj_symbol_to_chars (where, symbolP) - char **where; - symbolS *symbolP; -{ - md_number_to_chars ((char *) &(S_GET_OFFSET (symbolP)), S_GET_OFFSET (symbolP), sizeof (S_GET_OFFSET (symbolP))); - md_number_to_chars ((char *) &(S_GET_DESC (symbolP)), S_GET_DESC (symbolP), sizeof (S_GET_DESC (symbolP))); - md_number_to_chars ((char *) &(symbolP->sy_symbol.n_value), S_GET_VALUE (symbolP), sizeof (symbolP->sy_symbol.n_value)); - - append (where, (char *) &symbolP->sy_symbol, sizeof (obj_symbol_type)); -} - -void -obj_emit_symbols (where, symbol_rootP) - char **where; - symbolS *symbol_rootP; -{ - symbolS *symbolP; - - /* Emit all symbols left in the symbol chain. */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Used to save the offset of the name. It is used to point - to the string in memory but must be a file offset. */ - register char *temp; - - temp = S_GET_NAME (symbolP); - S_SET_OFFSET (symbolP, symbolP->sy_name_offset); - - /* Any symbol still undefined and is not a dbg symbol is made N_EXT. */ - if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP)) - S_SET_EXTERNAL (symbolP); - - /* Adjust the type of a weak symbol. */ - if (S_GET_WEAK (symbolP)) - { - switch (S_GET_TYPE (symbolP)) - { - case N_UNDF: S_SET_TYPE (symbolP, N_WEAKU); break; - case N_ABS: S_SET_TYPE (symbolP, N_WEAKA); break; - case N_TEXT: S_SET_TYPE (symbolP, N_WEAKT); break; - case N_DATA: S_SET_TYPE (symbolP, N_WEAKD); break; - case N_BSS: S_SET_TYPE (symbolP, N_WEAKB); break; - default: as_bad (_("%s: bad type for weak symbol"), temp); break; - } - } - - obj_symbol_to_chars (where, symbolP); - S_SET_NAME (symbolP, temp); - } -} - -#endif /* ! BFD_ASSEMBLER */ - -static void -obj_aout_line (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* Assume delimiter is part of expression. - BSD4.2 as fails with delightful bug, so we - are not being incompatible here. */ - new_logical_line ((char *) NULL, (int) (get_absolute_expression ())); - demand_empty_rest_of_line (); -} /* obj_aout_line() */ - -/* Handle .weak. This is a GNU extension. */ - -static void -obj_aout_weak (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *name; - int c; - symbolS *symbolP; - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - S_SET_WEAK (symbolP); - if (c == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - demand_empty_rest_of_line (); -} - -/* Handle .type. On {Net,Open}BSD, this is used to set the n_other field, - which is then apparently used when doing dynamic linking. Older - versions of gas ignored the .type pseudo-op, so we also ignore it if - we can't parse it. */ - -static void -obj_aout_type (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *name; - int c; - symbolS *sym; - - name = input_line_pointer; - c = get_symbol_end (); - sym = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - { - ++input_line_pointer; - SKIP_WHITESPACE (); - if (*input_line_pointer == '@') - { - ++input_line_pointer; - if (strncmp (input_line_pointer, "object", 6) == 0) -#ifdef BFD_ASSEMBLER - aout_symbol (symbol_get_bfdsym (sym))->other = 1; -#else - S_SET_OTHER (sym, 1); -#endif - else if (strncmp (input_line_pointer, "function", 8) == 0) -#ifdef BFD_ASSEMBLER - aout_symbol (symbol_get_bfdsym (sym))->other = 2; -#else - S_SET_OTHER (sym, 2); -#endif - } - } - - /* Ignore everything else on the line. */ - s_ignore (0); -} - -#ifndef BFD_ASSEMBLER - -void -obj_crawl_symbol_chain (headers) - object_headers *headers; -{ - symbolS *symbolP; - symbolS **symbolPP; - int symbol_number = 0; - - tc_crawl_symbol_chain (headers); - - symbolPP = &symbol_rootP; /*->last symbol chain link. */ - while ((symbolP = *symbolPP) != NULL) - { - if (symbolP->sy_mri_common) - { - if (S_IS_EXTERNAL (symbolP)) - as_bad (_("%s: global symbols not supported in common sections"), - S_GET_NAME (symbolP)); - *symbolPP = symbol_next (symbolP); - continue; - } - - if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA)) - { - S_SET_SEGMENT (symbolP, SEG_TEXT); - } /* if pushing data into text */ - - resolve_symbol_value (symbolP); - - /* Skip symbols which were equated to undefined or common - symbols. Also skip defined uncommon symbols which can - be resolved since in this case they should have been - resolved to a non-symbolic constant. */ - if (symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbolP) - || S_IS_COMMON (symbolP) - || symbol_resolved_p (symbolP))) - { - *symbolPP = symbol_next (symbolP); - continue; - } - - /* OK, here is how we decide which symbols go out into the brave - new symtab. Symbols that do are: - - * symbols with no name (stabd's?) - * symbols with debug info in their N_TYPE - - Symbols that don't are: - * symbols that are registers - * symbols with \1 as their 3rd character (numeric labels) - * "local labels" as defined by S_LOCAL_NAME(name) if the -L - switch was passed to gas. - - All other symbols are output. We complain if a deleted - symbol was marked external. */ - - if (!S_IS_REGISTER (symbolP) - && (!S_GET_NAME (symbolP) - || S_IS_DEBUG (symbolP) - || !S_IS_DEFINED (symbolP) - || S_IS_EXTERNAL (symbolP) - || (S_GET_NAME (symbolP)[0] != '\001' - && (flag_keep_locals || !S_LOCAL_NAME (symbolP))))) - { - symbolP->sy_number = symbol_number++; - - /* The + 1 after strlen account for the \0 at the - end of each string */ - if (!S_IS_STABD (symbolP)) - { - /* Ordinary case. */ - symbolP->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (symbolP)) + 1; - } - else /* .Stabd case. */ - symbolP->sy_name_offset = 0; - symbolPP = &symbolP->sy_next; - } - else - { - if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP)) - /* This warning should never get triggered any more. - Well, maybe if you're doing twisted things with - register names... */ - { - as_bad (_("Local symbol %s never defined."), decode_local_label_name (S_GET_NAME (symbolP))); - } /* oops. */ - - /* Unhook it from the chain */ - *symbolPP = symbol_next (symbolP); - } /* if this symbol should be in the output */ - } /* for each symbol */ - - H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number); -} - -/* - * Find strings by crawling along symbol table chain. - */ - -void -obj_emit_strings (where) - char **where; -{ - symbolS *symbolP; - -#ifdef CROSS_COMPILE - /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK */ - md_number_to_chars (*where, string_byte_count, sizeof (string_byte_count)); - *where += sizeof (string_byte_count); -#else /* CROSS_COMPILE */ - append (where, (char *) &string_byte_count, (unsigned long) sizeof (string_byte_count)); -#endif /* CROSS_COMPILE */ - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - if (S_GET_NAME (symbolP)) - append (&next_object_file_charP, S_GET_NAME (symbolP), - (unsigned long) (strlen (S_GET_NAME (symbolP)) + 1)); - } /* walk symbol chain */ -} - -#ifndef AOUT_VERSION -#define AOUT_VERSION 0 -#endif - -void -obj_pre_write_hook (headers) - object_headers *headers; -{ - H_SET_DYNAMIC (headers, 0); - H_SET_VERSION (headers, AOUT_VERSION); - H_SET_MACHTYPE (headers, AOUT_MACHTYPE); - tc_aout_pre_write_hook (headers); -} - -#endif /* ! BFD_ASSEMBLER */ - -#ifdef BFD_ASSEMBLER - -/* Support for an AOUT emulation. */ - -static void aout_pop_insert PARAMS ((void)); -static int obj_aout_s_get_other PARAMS ((symbolS *)); -static void obj_aout_s_set_other PARAMS ((symbolS *, int)); -static int obj_aout_s_get_desc PARAMS ((symbolS *)); -static void obj_aout_s_set_desc PARAMS ((symbolS *, int)); -static int obj_aout_s_get_type PARAMS ((symbolS *)); -static void obj_aout_s_set_type PARAMS ((symbolS *, int)); -static int obj_aout_separate_stab_sections PARAMS ((void)); -static int obj_aout_sec_sym_ok_for_reloc PARAMS ((asection *)); -static void obj_aout_process_stab PARAMS ((segT, int, const char *, int, int, int)); - -static void -aout_pop_insert () -{ - pop_insert (aout_pseudo_table); -} - -static int -obj_aout_s_get_other (sym) - symbolS *sym; -{ - return aout_symbol (symbol_get_bfdsym (sym))->other; -} - -static void -obj_aout_s_set_other (sym, o) - symbolS *sym; - int o; -{ - aout_symbol (symbol_get_bfdsym (sym))->other = o; -} - -static int -obj_aout_sec_sym_ok_for_reloc (sec) - asection *sec ATTRIBUTE_UNUSED; -{ - return obj_sec_sym_ok_for_reloc (sec); -} - -static void -obj_aout_process_stab (seg, w, s, t, o, d) - segT seg ATTRIBUTE_UNUSED; - int w; - const char *s; - int t; - int o; - int d; -{ - aout_process_stab (w, s, t, o, d); -} - -static int -obj_aout_s_get_desc (sym) - symbolS *sym; -{ - return aout_symbol (symbol_get_bfdsym (sym))->desc; -} - -static void -obj_aout_s_set_desc (sym, d) - symbolS *sym; - int d; -{ - aout_symbol (symbol_get_bfdsym (sym))->desc = d; -} - -static int -obj_aout_s_get_type (sym) - symbolS *sym; -{ - return aout_symbol (symbol_get_bfdsym (sym))->type; -} - -static void -obj_aout_s_set_type (sym, t) - symbolS *sym; - int t; -{ - aout_symbol (symbol_get_bfdsym (sym))->type = t; -} - -static int -obj_aout_separate_stab_sections () -{ - return 0; -} - -/* When changed, make sure these table entries match the single-format - definitions in obj-aout.h. */ -const struct format_ops aout_format_ops = -{ - bfd_target_aout_flavour, - 1, /* dfl_leading_underscore */ - 0, /* emit_section_symbols */ - 0, /* begin */ - 0, /* app_file */ - obj_aout_frob_symbol, - 0, /* frob_file */ - 0, /* frob_file_before_adjust */ - obj_aout_frob_file_before_fix, - 0, /* frob_file_after_relocs */ - 0, /* s_get_size */ - 0, /* s_set_size */ - 0, /* s_get_align */ - 0, /* s_set_align */ - obj_aout_s_get_other, - obj_aout_s_set_other, - obj_aout_s_get_desc, - obj_aout_s_set_desc, - obj_aout_s_get_type, - obj_aout_s_set_type, - 0, /* copy_symbol_attributes */ - 0, /* generate_asm_lineno */ - obj_aout_process_stab, - obj_aout_separate_stab_sections, - 0, /* init_stab_section */ - obj_aout_sec_sym_ok_for_reloc, - aout_pop_insert, - 0, /* ecoff_set_ext */ - 0, /* read_begin_hook */ - 0 /* symbol_new_hook */ -}; -#endif /* BFD_ASSEMBLER */ diff --git a/gas/config/obj-aout.h b/gas/config/obj-aout.h deleted file mode 100644 index 23a2907ac..000000000 --- a/gas/config/obj-aout.h +++ /dev/null @@ -1,256 +0,0 @@ -/* obj-aout.h, a.out object file format for gas, the assembler. - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, - 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, - or (at your option) any later version. - - GAS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Tag to validate a.out object file format processing */ -#define OBJ_AOUT 1 - -#include "targ-cpu.h" - -#ifdef BFD_ASSEMBLER - -#include "bfd/libaout.h" - -#define OUTPUT_FLAVOR bfd_target_aout_flavour - -#else /* ! BFD_ASSEMBLER */ - -#ifndef VMS -#include "aout_gnu.h" /* Needed to define struct nlist. Sigh. */ -#else -#include "a_out.h" -#endif - -#ifndef AOUT_MACHTYPE -#define AOUT_MACHTYPE 0 -#endif /* AOUT_MACHTYPE */ - -extern const short seg_N_TYPE[]; -extern const segT N_TYPE_seg[]; - -#ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (OMAGIC) -#endif /* DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE */ - -#endif /* ! BFD_ASSEMBLER */ - -extern const pseudo_typeS aout_pseudo_table[]; - -#ifndef obj_pop_insert -#define obj_pop_insert() pop_insert (aout_pseudo_table) -#endif - -/* SYMBOL TABLE */ -/* Symbol table entry data type */ - -typedef struct nlist obj_symbol_type; /* Symbol table entry */ - -/* Symbol table macros and constants */ - -#ifdef BFD_ASSEMBLER - -#define S_SET_OTHER(S,V) \ - (aout_symbol (symbol_get_bfdsym (S))->other = (V)) -#define S_SET_TYPE(S,T) \ - (aout_symbol (symbol_get_bfdsym (S))->type = (T)) -#define S_SET_DESC(S,D) \ - (aout_symbol (symbol_get_bfdsym (S))->desc = (D)) -#define S_GET_OTHER(S) \ - (aout_symbol (symbol_get_bfdsym (S))->other) -#define S_GET_TYPE(S) \ - (aout_symbol (symbol_get_bfdsym (S))->type) -#define S_GET_DESC(S) \ - (aout_symbol (symbol_get_bfdsym (S))->desc) - -asection *text_section, *data_section, *bss_section; - -#define obj_frob_symbol(S,PUNT) obj_aout_frob_symbol (S, &PUNT) -#define obj_frob_file_before_fix() obj_aout_frob_file_before_fix () -extern void obj_aout_frob_symbol PARAMS ((symbolS *, int *)); -extern void obj_aout_frob_file_before_fix PARAMS ((void)); - -#define obj_sec_sym_ok_for_reloc(SEC) (1) - -#else - -/* We use the sy_obj field to record whether a symbol is weak. */ -#define OBJ_SYMFIELD_TYPE char - -/* - * Macros to extract information from a symbol table entry. - * This syntactic indirection allows independence regarding a.out or coff. - * The argument (s) of all these macros is a pointer to a symbol table entry. - */ - -/* True if the symbol is external */ -#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT) - -/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */ -#define S_IS_DEFINED(s) \ - (S_GET_TYPE (s) != N_UNDF || S_GET_DESC (s) != 0) - -#define S_IS_COMMON(s) \ - (S_GET_TYPE (s) == N_UNDF && S_GET_VALUE (s) != 0) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s))) - -#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER) - -/* True if a debug special symbol entry */ -#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB) -/* True if a symbol is local symbol name */ -#define S_IS_LOCAL(s) \ - ((S_GET_NAME (s) \ - && !S_IS_DEBUG (s) \ - && (strchr (S_GET_NAME (s), '\001') != NULL \ - || strchr (S_GET_NAME (s), '\002') != NULL \ - || (S_LOCAL_NAME(s) && !flag_keep_locals))) \ - || (flag_strip_local_absolute \ - && ! S_IS_EXTERNAL(s) \ - && S_GET_SEGMENT (s) == absolute_section)) -/* True if a symbol is not defined in this file */ -#define S_IS_EXTERN(s) ((s)->sy_symbol.n_type & N_EXT) -/* True if the symbol has been generated because of a .stabd directive */ -#define S_IS_STABD(s) (S_GET_NAME(s) == (char *)0) - -/* Accessors */ -/* The name of the symbol */ -#define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name) -/* The pointer to the string table */ -#define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx) -/* The type of the symbol */ -#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE) -/* The numeric value of the segment */ -#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)]) -/* The n_other expression value */ -#define S_GET_OTHER(s) ((s)->sy_symbol.n_other) -/* The n_desc expression value */ -#define S_GET_DESC(s) ((s)->sy_symbol.n_desc) -/* Whether the symbol is weak. */ -#define S_GET_WEAK(s) ((s)->sy_obj) - -/* Modifiers */ -/* Assume that a symbol cannot be simultaneously in more than on segment */ -/* set segment */ -#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type|=SEGMENT_TO_SYMBOL_TYPE(seg)) -/* The symbol is external */ -#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT) -/* The symbol is not external */ -#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT) -/* Set the name of the symbol */ -#define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v)) -/* Set the offset in the string table */ -#define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v)) -/* Set the n_type field */ -#define S_SET_TYPE(s,t) ((s)->sy_symbol.n_type = (t)) -/* Set the n_other expression value */ -#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v)) -/* Set the n_desc expression value */ -#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v)) -/* Mark the symbol as weak. This causes n_type to be adjusted when - the symbol is written out. */ -#define S_SET_WEAK(s) ((s)->sy_obj = 1) - -/* File header macro and type definition */ - -#define H_GET_FILE_SIZE(h) (H_GET_HEADER_SIZE(h) \ - + H_GET_TEXT_SIZE(h) \ - + H_GET_DATA_SIZE(h) \ - + H_GET_SYMBOL_TABLE_SIZE(h) \ - + H_GET_TEXT_RELOCATION_SIZE(h) \ - + H_GET_DATA_RELOCATION_SIZE(h) \ - + H_GET_STRING_SIZE(h)) - -#define H_GET_HEADER_SIZE(h) (EXEC_BYTES_SIZE) -#define H_GET_TEXT_SIZE(h) ((h)->header.a_text) -#define H_GET_DATA_SIZE(h) ((h)->header.a_data) -#define H_GET_BSS_SIZE(h) ((h)->header.a_bss) -#define H_GET_TEXT_RELOCATION_SIZE(h) ((h)->header.a_trsize) -#define H_GET_DATA_RELOCATION_SIZE(h) ((h)->header.a_drsize) -#define H_GET_SYMBOL_TABLE_SIZE(h) ((h)->header.a_syms) -#define H_GET_ENTRY_POINT(h) ((h)->header.a_entry) -#define H_GET_STRING_SIZE(h) ((h)->string_table_size) -#define H_GET_LINENO_SIZE(h) (0) - -#define H_GET_DYNAMIC(h) ((h)->header.a_info >> 31) -#define H_GET_VERSION(h) (((h)->header.a_info >> 24) & 0x7f) -#define H_GET_MACHTYPE(h) (((h)->header.a_info >> 16) & 0xff) -#define H_GET_MAGIC_NUMBER(h) ((h)->header.a_info & 0xffff) - -#define H_SET_DYNAMIC(h,v) ((h)->header.a_info = (((v) << 31) \ - | (H_GET_VERSION(h) << 24) \ - | (H_GET_MACHTYPE(h) << 16) \ - | (H_GET_MAGIC_NUMBER(h)))) - -#define H_SET_VERSION(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC(h) << 31) \ - | ((v) << 24) \ - | (H_GET_MACHTYPE(h) << 16) \ - | (H_GET_MAGIC_NUMBER(h)))) - -#define H_SET_MACHTYPE(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC(h) << 31) \ - | (H_GET_VERSION(h) << 24) \ - | ((v) << 16) \ - | (H_GET_MAGIC_NUMBER(h)))) - -#define H_SET_MAGIC_NUMBER(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC(h) << 31) \ - | (H_GET_VERSION(h) << 24) \ - | (H_GET_MACHTYPE(h) << 16) \ - | ((v)))) - -#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = md_section_align(SEG_TEXT, (v))) -#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = md_section_align(SEG_DATA, (v))) -#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = md_section_align(SEG_BSS, (v))) - -#define H_SET_RELOCATION_SIZE(h,t,d) (H_SET_TEXT_RELOCATION_SIZE((h),(t)),\ - H_SET_DATA_RELOCATION_SIZE((h),(d))) - -#define H_SET_TEXT_RELOCATION_SIZE(h,v) ((h)->header.a_trsize = (v)) -#define H_SET_DATA_RELOCATION_SIZE(h,v) ((h)->header.a_drsize = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * 12) - -#define H_SET_ENTRY_POINT(h,v) ((h)->header.a_entry = (v)) -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) - -typedef struct - { - struct exec header; /* a.out header */ - long string_table_size; /* names + '\0' + sizeof (int) */ - } - -object_headers; - -/* line numbering stuff. */ -#define OBJ_EMIT_LINENO(a, b, c) {;} - -struct fix; -void tc_aout_fix_to_chars PARAMS ((char *where, struct fix *fixP, relax_addressT segment_address)); - -#endif - -#define obj_read_begin_hook() {;} -#define obj_symbol_new_hook(s) {;} - -#define EMIT_SECTION_SYMBOLS 0 - -#define AOUT_STABS diff --git a/gas/config/obj-bout.c b/gas/config/obj-bout.c deleted file mode 100644 index 88ea0f1c7..000000000 --- a/gas/config/obj-bout.c +++ /dev/null @@ -1,354 +0,0 @@ -/* b.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, - or (at your option) any later version. - - GAS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "as.h" -#include "obstack.h" - -/* In: segT Out: N_TYPE bits */ -const short seg_N_TYPE[] = -{ - N_ABS, - N_TEXT, - N_DATA, - N_BSS, - N_UNDF, /* unknown */ - N_UNDF, /* error */ - N_UNDF, /* expression */ - N_UNDF, /* debug */ - N_UNDF, /* ntv */ - N_UNDF, /* ptv */ - N_REGISTER, /* register */ -}; - -const segT N_TYPE_seg[N_TYPE + 2] = -{ /* N_TYPE == 0x1E = 32-2 */ - SEG_UNKNOWN, /* N_UNDF == 0 */ - SEG_GOOF, - SEG_ABSOLUTE, /* N_ABS == 2 */ - SEG_GOOF, - SEG_TEXT, /* N_TEXT == 4 */ - SEG_GOOF, - SEG_DATA, /* N_DATA == 6 */ - SEG_GOOF, - SEG_BSS, /* N_BSS == 8 */ - SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_REGISTER, /* dummy N_REGISTER for regs = 30 */ - SEG_GOOF, -}; - -static void obj_bout_line PARAMS ((int)); - -const pseudo_typeS obj_pseudo_table[] = -{ - {"line", obj_bout_line, 0}, /* Source code line number. */ - -/* coff debugging directives. Currently ignored silently. */ - {"def", s_ignore, 0}, - {"dim", s_ignore, 0}, - {"endef", s_ignore, 0}, - {"ln", s_ignore, 0}, - {"scl", s_ignore, 0}, - {"size", s_ignore, 0}, - {"tag", s_ignore, 0}, - {"type", s_ignore, 0}, - {"val", s_ignore, 0}, - -/* other stuff we don't handle */ - {"ABORT", s_ignore, 0}, - {"ident", s_ignore, 0}, - - {NULL, NULL, 0} /* End sentinel. */ -}; - -/* Relocation. */ - -/* Crawl along a fixS chain. Emit the segment's relocations. */ - -void -obj_emit_relocations (where, fixP, segment_address_in_file) - char **where; - fixS *fixP; /* Fixup chain for this segment. */ - relax_addressT segment_address_in_file; -{ - for (; fixP; fixP = fixP->fx_next) - { - if (fixP->fx_done == 0 - || fixP->fx_r_type != NO_RELOC) - { - symbolS *sym; - - sym = fixP->fx_addsy; - while (sym->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) - sym = sym->sy_value.X_add_symbol; - fixP->fx_addsy = sym; - - tc_bout_fix_to_chars (*where, fixP, segment_address_in_file); - *where += sizeof (struct relocation_info); - } /* if there's a symbol */ - } /* for each fixup */ -} - -/* Aout file generation & utilities . */ - -/* Convert a lvalue to machine dependent data. */ - -void -obj_header_append (where, headers) - char **where; - object_headers *headers; -{ - /* Always leave in host byte order. */ - - headers->header.a_talign = section_alignment[SEG_TEXT]; - - /* Force to at least 2. */ - if (headers->header.a_talign < 2) - { - headers->header.a_talign = 2; - } - - headers->header.a_dalign = section_alignment[SEG_DATA]; - headers->header.a_balign = section_alignment[SEG_BSS]; - - headers->header.a_tload = 0; - headers->header.a_dload = - md_section_align (SEG_DATA, H_GET_TEXT_SIZE (headers)); - - headers->header.a_relaxable = linkrelax; - -#ifdef CROSS_COMPILE - md_number_to_chars (*where, headers->header.a_magic, sizeof (headers->header.a_magic)); - *where += sizeof (headers->header.a_magic); - md_number_to_chars (*where, headers->header.a_text, sizeof (headers->header.a_text)); - *where += sizeof (headers->header.a_text); - md_number_to_chars (*where, headers->header.a_data, sizeof (headers->header.a_data)); - *where += sizeof (headers->header.a_data); - md_number_to_chars (*where, headers->header.a_bss, sizeof (headers->header.a_bss)); - *where += sizeof (headers->header.a_bss); - md_number_to_chars (*where, headers->header.a_syms, sizeof (headers->header.a_syms)); - *where += sizeof (headers->header.a_syms); - md_number_to_chars (*where, headers->header.a_entry, sizeof (headers->header.a_entry)); - *where += sizeof (headers->header.a_entry); - md_number_to_chars (*where, headers->header.a_trsize, sizeof (headers->header.a_trsize)); - *where += sizeof (headers->header.a_trsize); - md_number_to_chars (*where, headers->header.a_drsize, sizeof (headers->header.a_drsize)); - *where += sizeof (headers->header.a_drsize); - md_number_to_chars (*where, headers->header.a_tload, sizeof (headers->header.a_tload)); - *where += sizeof (headers->header.a_tload); - md_number_to_chars (*where, headers->header.a_dload, sizeof (headers->header.a_dload)); - *where += sizeof (headers->header.a_dload); - md_number_to_chars (*where, headers->header.a_talign, sizeof (headers->header.a_talign)); - *where += sizeof (headers->header.a_talign); - md_number_to_chars (*where, headers->header.a_dalign, sizeof (headers->header.a_dalign)); - *where += sizeof (headers->header.a_dalign); - md_number_to_chars (*where, headers->header.a_balign, sizeof (headers->header.a_balign)); - *where += sizeof (headers->header.a_balign); - md_number_to_chars (*where, headers->header.a_relaxable, sizeof (headers->header.a_relaxable)); - *where += sizeof (headers->header.a_relaxable); -#else /* ! CROSS_COMPILE */ - append (where, (char *) &headers->header, sizeof (headers->header)); -#endif /* ! CROSS_COMPILE */ -} - -void -obj_symbol_to_chars (where, symbolP) - char **where; - symbolS *symbolP; -{ - md_number_to_chars ((char *) &(S_GET_OFFSET (symbolP)), - S_GET_OFFSET (symbolP), - sizeof (S_GET_OFFSET (symbolP))); - - md_number_to_chars ((char *) &(S_GET_DESC (symbolP)), - S_GET_DESC (symbolP), - sizeof (S_GET_DESC (symbolP))); - - md_number_to_chars ((char *) &symbolP->sy_symbol.n_value, - S_GET_VALUE (symbolP), - sizeof (symbolP->sy_symbol.n_value)); - - append (where, (char *) &symbolP->sy_symbol, sizeof (obj_symbol_type)); -} - -void -obj_emit_symbols (where, symbol_rootP) - char **where; - symbolS *symbol_rootP; -{ - symbolS *symbolP; - - /* Emit all symbols left in the symbol chain. */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Used to save the offset of the name. It is used to point to - the string in memory but must be a file offset. */ - char *temp; - - temp = S_GET_NAME (symbolP); - S_SET_OFFSET (symbolP, symbolP->sy_name_offset); - - /* Any symbol still undefined and is not a dbg symbol is made N_EXT. */ - if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP)) - S_SET_EXTERNAL (symbolP); - - obj_symbol_to_chars (where, symbolP); - S_SET_NAME (symbolP, temp); - } -} - -void -obj_symbol_new_hook (symbolP) - symbolS *symbolP; -{ - S_SET_OTHER (symbolP, 0); - S_SET_DESC (symbolP, 0); -} - -static void -obj_bout_line (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* Assume delimiter is part of expression. */ - /* BSD4.2 as fails with delightful bug, so we are not being - incompatible here. */ - new_logical_line ((char *) NULL, (int) (get_absolute_expression ())); - demand_empty_rest_of_line (); -} - -void -obj_read_begin_hook () -{ -} - -void -obj_crawl_symbol_chain (headers) - object_headers *headers; -{ - symbolS **symbolPP; - symbolS *symbolP; - int symbol_number = 0; - - tc_crawl_symbol_chain (headers); - - symbolPP = &symbol_rootP; /* -> last symbol chain link. */ - while ((symbolP = *symbolPP) != NULL) - { - if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA)) - { - S_SET_SEGMENT (symbolP, SEG_TEXT); - } /* if pushing data into text */ - - resolve_symbol_value (symbolP); - - /* Skip symbols which were equated to undefined or common - symbols. */ - if (symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP))) - { - *symbolPP = symbol_next (symbolP); - continue; - } - - /* OK, here is how we decide which symbols go out into the - brave new symtab. Symbols that do are: - - * symbols with no name (stabd's?) - * symbols with debug info in their N_TYPE - - Symbols that don't are: - * symbols that are registers - * symbols with \1 as their 3rd character (numeric labels) - * "local labels" as defined by S_LOCAL_NAME(name) - if the -L switch was passed to gas. - - All other symbols are output. We complain if a deleted - symbol was marked external. */ - - if (1 - && !S_IS_REGISTER (symbolP) - && (!S_GET_NAME (symbolP) - || S_IS_DEBUG (symbolP) -#ifdef TC_I960 - /* FIXME-SOON this ifdef seems highly dubious to me. xoxorich. */ - || !S_IS_DEFINED (symbolP) - || S_IS_EXTERNAL (symbolP) -#endif /* TC_I960 */ - || (S_GET_NAME (symbolP)[0] != '\001' - && (flag_keep_locals || !S_LOCAL_NAME (symbolP))))) - { - symbolP->sy_number = symbol_number++; - - /* The + 1 after strlen account for the \0 at the end of - each string. */ - if (!S_IS_STABD (symbolP)) - { - /* Ordinary case. */ - symbolP->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (symbolP)) + 1; - } - else /* .Stabd case. */ - symbolP->sy_name_offset = 0; - symbolPP = &(symbolP->sy_next); - } - else - { - if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP)) - { - as_bad (_("Local symbol %s never defined"), - S_GET_NAME (symbolP)); - } /* Oops. */ - - /* Unhook it from the chain. */ - *symbolPP = symbol_next (symbolP); - } /* if this symbol should be in the output */ - } /* for each symbol */ - - H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number); -} - -/* Find strings by crawling along symbol table chain. */ - -void -obj_emit_strings (where) - char **where; -{ - symbolS *symbolP; - -#ifdef CROSS_COMPILE - /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK */ - md_number_to_chars (*where, string_byte_count, sizeof (string_byte_count)); - *where += sizeof (string_byte_count); -#else /* CROSS_COMPILE */ - append (where, (char *) &string_byte_count, - (unsigned long) sizeof (string_byte_count)); -#endif /* CROSS_COMPILE */ - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - if (S_GET_NAME (symbolP)) - append (where, S_GET_NAME (symbolP), - (unsigned long) (strlen (S_GET_NAME (symbolP)) + 1)); - } /* Walk symbol chain. */ -} diff --git a/gas/config/obj-bout.h b/gas/config/obj-bout.h deleted file mode 100644 index aaa9d9beb..000000000 --- a/gas/config/obj-bout.h +++ /dev/null @@ -1,319 +0,0 @@ -/* b.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, - 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, - or (at your option) any later version. - - GAS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - the GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with GAS; see the file COPYING. If not, write - to the Free Software Foundation, 59 Temple Place - Suite 330, Cambridge, MA - 02139, USA. */ - -/* - * This file is a modified version of 'a.out.h'. It is to be used in all GNU - * tools modified to support the i80960 b.out format (or tools that operate on - * object files created by such tools). - * - * All i80960 development is done in a CROSS-DEVELOPMENT environment. I.e., - * object code is generated on, and executed under the direction of a symbolic - * debugger running on, a host system. We do not want to be subject to the - * vagaries of which host it is or whether it supports COFF or a.out format, or - * anything else. We DO want to: - * - * o always generate the same format object files, regardless of host. - * - * o have an 'a.out' header that we can modify for our own purposes - * (the 80960 is typically an embedded processor and may require - * enhanced linker support that the normal a.out.h header can't - * accommodate). - * - * As for byte-ordering, the following rules apply: - * - * o Text and data that is actually downloaded to the target is always - * in i80960 (little-endian) order. - * - * o All other numbers (in the header, symbols, relocation directives) - * are in host byte-order: object files CANNOT be lifted from a - * little-end host and used on a big-endian (or vice versa) without - * modification. - * ==> THIS IS NO LONGER TRUE USING BFD. WE CAN GENERATE ANY BYTE ORDER - * FOR THE HEADER, AND READ ANY BYTE ORDER. PREFERENCE WOULD BE TO - * USE LITTLE-ENDIAN BYTE ORDER THROUGHOUT, REGARDLESS OF HOST. <== - * - * o The downloader ('comm960') takes care to generate a pseudo-header - * with correct (i80960) byte-ordering before shipping text and data - * off to the NINDY monitor in the target systems. Symbols and - * relocation info are never sent to the target. - */ - -#define OBJ_BOUT 1 - -#define OUTPUT_FLAVOR bfd_target_aout_flavour - -#include "targ-cpu.h" - -#define OBJ_DEFAULT_OUTPUT_FILE_NAME "b.out" - -extern const short seg_N_TYPE[]; -extern const segT N_TYPE_seg[]; - -#define BMAGIC 0415 -/* We don't accept the following (see N_BADMAG macro). - * They're just here so GNU code will compile. - */ -#define OMAGIC 0407 /* old impure format */ -#define NMAGIC 0410 /* read-only text */ -#define ZMAGIC 0413 /* demand load format */ - -#ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (BMAGIC) -#endif /* DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE */ - -/* FILE HEADER - * All 'lengths' are given as a number of bytes. - * All 'alignments' are for relinkable files only; an alignment of - * 'n' indicates the corresponding segment must begin at an - * address that is a multiple of (2**n). - */ -struct exec - { - /* Standard stuff */ - unsigned long a_magic; /* Identifies this as a b.out file */ - unsigned long a_text; /* Length of text */ - unsigned long a_data; /* Length of data */ - unsigned long a_bss; /* Length of runtime uninitialized data area */ - unsigned long a_syms; /* Length of symbol table */ - unsigned long a_entry; /* Runtime start address */ - unsigned long a_trsize; /* Length of text relocation info */ - unsigned long a_drsize; /* Length of data relocation info */ - - /* Added for i960 */ - unsigned long a_tload; /* Text runtime load address */ - unsigned long a_dload; /* Data runtime load address */ - unsigned char a_talign; /* Alignment of text segment */ - unsigned char a_dalign; /* Alignment of data segment */ - unsigned char a_balign; /* Alignment of bss segment */ - unsigned char a_relaxable; /* Contains enough info to relax */ - }; - -#define N_BADMAG(x) (((x).a_magic)!=BMAGIC) -#define N_TXTOFF(x) ( sizeof (struct exec) ) -#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text ) -#define N_TROFF(x) ( N_DATOFF(x) + (x).a_data ) -#define N_DROFF(x) ( N_TROFF(x) + (x).a_trsize ) -#define N_SYMOFF(x) ( N_DROFF(x) + (x).a_drsize ) -#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms ) - -/* A single entry in the symbol table - */ -struct nlist - { - union - { - char *n_name; - struct nlist *n_next; - long n_strx; /* Index into string table */ - } - n_un; - unsigned char n_type; /* See below */ - char n_other; /* Used in i80960 support -- see below */ - short n_desc; - unsigned long n_value; - }; - -typedef struct nlist obj_symbol_type; - -/* Legal values of n_type - */ -#define N_UNDF 0 /* Undefined symbol */ -#define N_ABS 2 /* Absolute symbol */ -#define N_TEXT 4 /* Text symbol */ -#define N_DATA 6 /* Data symbol */ -#define N_BSS 8 /* BSS symbol */ -#define N_FN 31 /* Filename symbol */ - -#define N_EXT 1 /* External symbol (OR'd in with one of above) */ -#define N_TYPE 036 /* Mask for all the type bits */ -#define N_STAB 0340 /* Mask for all bits used for SDB entries */ - -#ifndef CUSTOM_RELOC_FORMAT -struct relocation_info - { - int r_address; /* File address of item to be relocated */ - unsigned - r_index:24, /* Index of symbol on which relocation is based*/ - r_pcrel:1, /* 1 => relocate PC-relative; else absolute - * On i960, pc-relative implies 24-bit - * address, absolute implies 32-bit. - */ - r_length:2, /* Number of bytes to relocate: - * 0 => 1 byte - * 1 => 2 bytes - * 2 => 4 bytes -- only value used for i960 - */ - r_extern:1, r_bsr:1, /* Something for the GNU NS32K assembler */ - r_disp:1, /* Something for the GNU NS32K assembler */ - r_callj:1, /* 1 if relocation target is an i960 'callj' */ - nuthin:1; /* Unused */ - }; - -#endif /* CUSTOM_RELOC_FORMAT */ - -/* - * Macros to extract information from a symbol table entry. - * This syntactic indirection allows independence regarding a.out or coff. - * The argument (s) of all these macros is a pointer to a symbol table entry. - */ - -/* Predicates */ -/* True if the symbol is external */ -#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT) - -/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */ -#define S_IS_DEFINED(s) ((S_GET_TYPE(s) != N_UNDF) || (S_GET_DESC(s) != 0)) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s))) - -#define S_IS_COMMON(s) \ - (S_GET_TYPE (s) == N_UNDF && S_GET_VALUE (s) != 0) - -#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER) - -/* True if a debug special symbol entry */ -#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB) -/* True if a symbol is local symbol name */ -#define S_IS_LOCAL(s) \ - ((S_GET_NAME (s) \ - && !S_IS_DEBUG (s) \ - && (strchr (S_GET_NAME (s), '\001') != NULL \ - || strchr (S_GET_NAME (s), '\002') != NULL \ - || (S_LOCAL_NAME(s) && !flag_keep_locals))) \ - || (flag_strip_local_absolute \ - && !S_IS_EXTERNAL(s) \ - && S_GET_SEGMENT(s) == absolute_section)) -/* True if a symbol is not defined in this file */ -#define S_IS_EXTERN(s) ((s)->sy_symbol.n_type & N_EXT) -/* True if the symbol has been generated because of a .stabd directive */ -#define S_IS_STABD(s) (S_GET_NAME(s) == NULL) - -/* Accessors */ -/* The name of the symbol */ -#define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name) -/* The pointer to the string table */ -#define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx) -/* The type of the symbol */ -#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE) -/* The numeric value of the segment */ -#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)]) -/* The n_other expression value */ -#define S_GET_OTHER(s) ((s)->sy_symbol.n_other) -/* The n_desc expression value */ -#define S_GET_DESC(s) ((s)->sy_symbol.n_desc) - -/* Modifiers */ -/* Assume that a symbol cannot be simultaneously in more than on segment */ -/* set segment */ -#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type|=SEGMENT_TO_SYMBOL_TYPE(seg)) -/* The symbol is external */ -#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT) -/* The symbol is not external */ -#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT) -/* Set the name of the symbol */ -#define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v)) -/* Set the offset in the string table */ -#define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v)) -/* Set the n_other expression value */ -#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v)) -/* Set the n_desc expression value */ -#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v)) -/* Set the n_type value */ -#define S_SET_TYPE(s,v) ((s)->sy_symbol.n_type = (v)) - -/* File header macro and type definition */ - -#define H_GET_FILE_SIZE(h) (sizeof (struct exec) + \ - H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h) + \ - H_GET_SYMBOL_TABLE_SIZE(h) + \ - H_GET_TEXT_RELOCATION_SIZE(h) + \ - H_GET_DATA_RELOCATION_SIZE(h) + \ - (h)->string_table_size) - -#define H_GET_HEADER_SIZE(h) (sizeof (struct exec)) -#define H_GET_TEXT_SIZE(h) ((h)->header.a_text) -#define H_GET_DATA_SIZE(h) ((h)->header.a_data) -#define H_GET_BSS_SIZE(h) ((h)->header.a_bss) -#define H_GET_TEXT_RELOCATION_SIZE(h) ((h)->header.a_trsize) -#define H_GET_DATA_RELOCATION_SIZE(h) ((h)->header.a_drsize) -#define H_GET_SYMBOL_TABLE_SIZE(h) ((h)->header.a_syms) -#define H_GET_MAGIC_NUMBER(h) ((h)->header.a_info) -#define H_GET_ENTRY_POINT(h) ((h)->header.a_entry) -#define H_GET_STRING_SIZE(h) ((h)->string_table_size) -#define H_GET_LINENO_SIZE(h) (0) - -#ifdef EXEC_MACHINE_TYPE -#define H_GET_MACHINE_TYPE(h) ((h)->header.a_machtype) -#endif /* EXEC_MACHINE_TYPE */ -#ifdef EXEC_VERSION -#define H_GET_VERSION(h) ((h)->header.a_version) -#endif /* EXEC_VERSION */ - -#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = (v)) -#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = (v)) -#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = (v)) - -#define H_SET_RELOCATION_SIZE(h,t,d) (H_SET_TEXT_RELOCATION_SIZE((h),(t)),\ - H_SET_DATA_RELOCATION_SIZE((h),(d))) - -#define H_SET_TEXT_RELOCATION_SIZE(h,v) ((h)->header.a_trsize = (v)) -#define H_SET_DATA_RELOCATION_SIZE(h,v) ((h)->header.a_drsize = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * \ - sizeof (struct nlist)) - -#define H_SET_MAGIC_NUMBER(h,v) ((h)->header.a_magic = (v)) - -#define H_SET_ENTRY_POINT(h,v) ((h)->header.a_entry = (v)) -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) -#ifdef EXEC_MACHINE_TYPE -#define H_SET_MACHINE_TYPE(h,v) ((h)->header.a_machtype = (v)) -#endif /* EXEC_MACHINE_TYPE */ -#ifdef EXEC_VERSION -#define H_SET_VERSION(h,v) ((h)->header.a_version = (v)) -#endif /* EXEC_VERSION */ - -typedef struct - { - struct exec header; /* a.out header */ - long string_table_size; /* names + '\0' + sizeof (int) */ - } - -object_headers; - -/* unused hooks. */ -#define OBJ_EMIT_LINENO(a, b, c) {;} -#define obj_pre_write_hook(a) {;} - -#if __STDC__ -struct fix; -#endif -extern void tc_aout_fix_to_chars PARAMS ((char *where, - struct fix *fixP, - relax_addressT segment_address)); -extern void tc_bout_fix_to_chars PARAMS ((char *where, - struct fix *fixP, - relax_addressT segment_address)); - -#define AOUT_STABS diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c deleted file mode 100644 index bd08c2b5f..000000000 --- a/gas/config/obj-coff.c +++ /dev/null @@ -1,4690 +0,0 @@ -/* coff object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. - - This file is part of GAS. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define OBJ_HEADER "obj-coff.h" - -#include "as.h" -#include "obstack.h" -#include "subsegs.h" - -/* I think this is probably always correct. */ -#ifndef KEEP_RELOC_INFO -#define KEEP_RELOC_INFO -#endif - -/* The BFD_ASSEMBLER version of obj_coff_section will use this macro to set - a new section's attributes when a directive has no valid flags or the - "w" flag is used. This default should be appropriate for most. */ -#ifndef TC_COFF_SECTION_DEFAULT_ATTRIBUTES -#define TC_COFF_SECTION_DEFAULT_ATTRIBUTES (SEC_LOAD | SEC_DATA) -#endif - -/* This is used to hold the symbol built by a sequence of pseudo-ops - from .def and .endef. */ -static symbolS *def_symbol_in_progress; - -typedef struct - { - unsigned long chunk_size; - unsigned long element_size; - unsigned long size; - char *data; - unsigned long pointer; - } -stack; - -static stack *stack_init PARAMS ((unsigned long, unsigned long)); -static char *stack_push PARAMS ((stack *, char *)); -static char *stack_pop PARAMS ((stack *)); -static void tag_init PARAMS ((void)); -static void tag_insert PARAMS ((const char *, symbolS *)); -static symbolS *tag_find PARAMS ((char *)); -static symbolS *tag_find_or_make PARAMS ((char *)); -static void obj_coff_bss PARAMS ((int)); -static void obj_coff_weak PARAMS ((int)); -const char *s_get_name PARAMS ((symbolS * s)); -static void obj_coff_ln PARAMS ((int)); -static void obj_coff_def PARAMS ((int)); -static void obj_coff_endef PARAMS ((int)); -static void obj_coff_dim PARAMS ((int)); -static void obj_coff_line PARAMS ((int)); -static void obj_coff_size PARAMS ((int)); -static void obj_coff_scl PARAMS ((int)); -static void obj_coff_tag PARAMS ((int)); -static void obj_coff_val PARAMS ((int)); -static void obj_coff_type PARAMS ((int)); -static void obj_coff_ident PARAMS ((int)); -#ifdef BFD_ASSEMBLER -static void obj_coff_loc PARAMS((int)); -#endif - -/* stack stuff */ - -static stack * -stack_init (chunk_size, element_size) - unsigned long chunk_size; - unsigned long element_size; -{ - stack *st; - - st = (stack *) malloc (sizeof (stack)); - if (!st) - return 0; - st->data = malloc (chunk_size); - if (!st->data) - { - free (st); - return 0; - } - st->pointer = 0; - st->size = chunk_size; - st->chunk_size = chunk_size; - st->element_size = element_size; - return st; -} - -#if 0 -/* Not currently used. */ -static void -stack_delete (st) - stack *st; -{ - free (st->data); - free (st); -} -#endif - -static char * -stack_push (st, element) - stack *st; - char *element; -{ - if (st->pointer + st->element_size >= st->size) - { - st->size += st->chunk_size; - if ((st->data = xrealloc (st->data, st->size)) == (char *) 0) - return (char *) 0; - } - memcpy (st->data + st->pointer, element, st->element_size); - st->pointer += st->element_size; - return st->data + st->pointer; -} - -static char * -stack_pop (st) - stack *st; -{ - if (st->pointer < st->element_size) - { - st->pointer = 0; - return (char *) 0; - } - st->pointer -= st->element_size; - return st->data + st->pointer; -} - -/* - * Maintain a list of the tagnames of the structures. - */ - -static struct hash_control *tag_hash; - -static void -tag_init () -{ - tag_hash = hash_new (); -} - -static void -tag_insert (name, symbolP) - const char *name; - symbolS *symbolP; -{ - const char *error_string; - - if ((error_string = hash_jam (tag_hash, name, (char *) symbolP))) - { - as_fatal (_("Inserting \"%s\" into structure table failed: %s"), - name, error_string); - } -} - -static symbolS * -tag_find (name) - char *name; -{ -#ifdef STRIP_UNDERSCORE - if (*name == '_') - name++; -#endif /* STRIP_UNDERSCORE */ - return (symbolS *) hash_find (tag_hash, name); -} - -static symbolS * -tag_find_or_make (name) - char *name; -{ - symbolS *symbolP; - - if ((symbolP = tag_find (name)) == NULL) - { - symbolP = symbol_new (name, undefined_section, - 0, &zero_address_frag); - - tag_insert (S_GET_NAME (symbolP), symbolP); -#ifdef BFD_ASSEMBLER - symbol_table_insert (symbolP); -#endif - } /* not found */ - - return symbolP; -} - -/* We accept the .bss directive to set the section for backward - compatibility with earlier versions of gas. */ - -static void -obj_coff_bss (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (*input_line_pointer == '\n') - subseg_new (".bss", get_absolute_expression ()); - else - s_lcomm (0); -} - -/* Handle .weak. This is a GNU extension. */ - -static void -obj_coff_weak (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *name; - int c; - symbolS *symbolP; - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - -#if defined BFD_ASSEMBLER || defined S_SET_WEAK - S_SET_WEAK (symbolP); -#endif - -#ifdef TE_PE - S_SET_STORAGE_CLASS (symbolP, C_NT_WEAK); -#else - S_SET_STORAGE_CLASS (symbolP, C_WEAKEXT); -#endif - - if (c == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - - demand_empty_rest_of_line (); -} - -#ifdef BFD_ASSEMBLER - -static segT fetch_coff_debug_section PARAMS ((void)); -static void SA_SET_SYM_TAGNDX PARAMS ((symbolS *, symbolS *)); -static int S_GET_DATA_TYPE PARAMS ((symbolS *)); -void c_symbol_merge PARAMS ((symbolS *, symbolS *)); -static void add_lineno PARAMS ((fragS *, addressT, int)); - -#define GET_FILENAME_STRING(X) \ -((char*) (&((X)->sy_symbol.ost_auxent->x_file.x_n.x_offset))[1]) - -/* @@ Ick. */ -static segT -fetch_coff_debug_section () -{ - static segT debug_section; - if (!debug_section) - { - const asymbol *s; - s = bfd_make_debug_symbol (stdoutput, (char *) 0, 0); - assert (s != 0); - debug_section = s->section; - } - return debug_section; -} - -void -SA_SET_SYM_ENDNDX (sym, val) - symbolS *sym; - symbolS *val; -{ - combined_entry_type *entry, *p; - - entry = &coffsymbol (symbol_get_bfdsym (sym))->native[1]; - p = coffsymbol (symbol_get_bfdsym (val))->native; - entry->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.p = p; - entry->fix_end = 1; -} - -static void -SA_SET_SYM_TAGNDX (sym, val) - symbolS *sym; - symbolS *val; -{ - combined_entry_type *entry, *p; - - entry = &coffsymbol (symbol_get_bfdsym (sym))->native[1]; - p = coffsymbol (symbol_get_bfdsym (val))->native; - entry->u.auxent.x_sym.x_tagndx.p = p; - entry->fix_tag = 1; -} - -static int -S_GET_DATA_TYPE (sym) - symbolS *sym; -{ - return coffsymbol (symbol_get_bfdsym (sym))->native->u.syment.n_type; -} - -int -S_SET_DATA_TYPE (sym, val) - symbolS *sym; - int val; -{ - coffsymbol (symbol_get_bfdsym (sym))->native->u.syment.n_type = val; - return val; -} - -int -S_GET_STORAGE_CLASS (sym) - symbolS *sym; -{ - return coffsymbol (symbol_get_bfdsym (sym))->native->u.syment.n_sclass; -} - -int -S_SET_STORAGE_CLASS (sym, val) - symbolS *sym; - int val; -{ - coffsymbol (symbol_get_bfdsym (sym))->native->u.syment.n_sclass = val; - return val; -} - -/* Merge a debug symbol containing debug information into a normal symbol. */ - -void -c_symbol_merge (debug, normal) - symbolS *debug; - symbolS *normal; -{ - S_SET_DATA_TYPE (normal, S_GET_DATA_TYPE (debug)); - S_SET_STORAGE_CLASS (normal, S_GET_STORAGE_CLASS (debug)); - - if (S_GET_NUMBER_AUXILIARY (debug) > S_GET_NUMBER_AUXILIARY (normal)) - { - /* take the most we have */ - S_SET_NUMBER_AUXILIARY (normal, S_GET_NUMBER_AUXILIARY (debug)); - } - - if (S_GET_NUMBER_AUXILIARY (debug) > 0) - { - /* Move all the auxiliary information. */ - memcpy (SYM_AUXINFO (normal), SYM_AUXINFO (debug), - (S_GET_NUMBER_AUXILIARY (debug) - * sizeof (*SYM_AUXINFO (debug)))); - } - - /* Move the debug flags. */ - SF_SET_DEBUG_FIELD (normal, SF_GET_DEBUG_FIELD (debug)); -} - -void -c_dot_file_symbol (filename) - const char *filename; -{ - symbolS *symbolP; - - /* BFD converts filename to a .file symbol with an aux entry. It - also handles chaining. */ - symbolP = symbol_new (filename, bfd_abs_section_ptr, 0, &zero_address_frag); - - S_SET_STORAGE_CLASS (symbolP, C_FILE); - S_SET_NUMBER_AUXILIARY (symbolP, 1); - - symbol_get_bfdsym (symbolP)->flags = BSF_DEBUGGING; - -#ifndef NO_LISTING - { - extern int listing; - if (listing) - { - listing_source_file (filename); - } - } -#endif - - /* Make sure that the symbol is first on the symbol chain */ - if (symbol_rootP != symbolP) - { - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_insert (symbolP, symbol_rootP, &symbol_rootP, &symbol_lastP); - } /* if not first on the list */ -} - -/* Line number handling */ - -struct line_no { - struct line_no *next; - fragS *frag; - alent l; -}; - -int coff_line_base; - -/* Symbol of last function, which we should hang line#s off of. */ -static symbolS *line_fsym; - -#define in_function() (line_fsym != 0) -#define clear_function() (line_fsym = 0) -#define set_function(F) (line_fsym = (F), coff_add_linesym (F)) - - -void -coff_obj_symbol_new_hook (symbolP) - symbolS *symbolP; -{ - long sz = (OBJ_COFF_MAX_AUXENTRIES + 1) * sizeof (combined_entry_type); - char * s = (char *) xmalloc (sz); - - memset (s, 0, sz); - coffsymbol (symbol_get_bfdsym (symbolP))->native = (combined_entry_type *) s; - - S_SET_DATA_TYPE (symbolP, T_NULL); - S_SET_STORAGE_CLASS (symbolP, 0); - S_SET_NUMBER_AUXILIARY (symbolP, 0); - - if (S_IS_STRING (symbolP)) - SF_SET_STRING (symbolP); - - if (S_IS_LOCAL (symbolP)) - SF_SET_LOCAL (symbolP); -} - - -/* - * Handle .ln directives. - */ - -static symbolS *current_lineno_sym; -static struct line_no *line_nos; -/* @@ Blindly assume all .ln directives will be in the .text section... */ -int coff_n_line_nos; - -static void -add_lineno (frag, offset, num) - fragS *frag; - addressT offset; - int num; -{ - struct line_no *new_line = - (struct line_no *) xmalloc (sizeof (struct line_no)); - if (!current_lineno_sym) - { - abort (); - } - -#ifndef OBJ_XCOFF - /* The native aix assembler accepts negative line number */ - - if (num <= 0) - { - /* Zero is used as an end marker in the file. */ - as_warn (_("Line numbers must be positive integers\n")); - num = 1; - } -#endif /* OBJ_XCOFF */ - new_line->next = line_nos; - new_line->frag = frag; - new_line->l.line_number = num; - new_line->l.u.offset = offset; - line_nos = new_line; - coff_n_line_nos++; -} - -void -coff_add_linesym (sym) - symbolS *sym; -{ - if (line_nos) - { - coffsymbol (symbol_get_bfdsym (current_lineno_sym))->lineno = - (alent *) line_nos; - coff_n_line_nos++; - line_nos = 0; - } - current_lineno_sym = sym; -} - -static void -obj_coff_ln (appline) - int appline; -{ - int l; - - if (! appline && def_symbol_in_progress != NULL) - { - as_warn (_(".ln pseudo-op inside .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - l = get_absolute_expression (); - - /* If there is no lineno symbol, treat a .ln - directive as if it were a .appline directive. */ - if (appline || current_lineno_sym == NULL) - new_logical_line ((char *) NULL, l - 1); - else - add_lineno (frag_now, frag_now_fix (), l); - -#ifndef NO_LISTING - { - extern int listing; - - if (listing) - { - if (! appline) - l += coff_line_base - 1; - listing_source_line (l); - } - } -#endif - - demand_empty_rest_of_line (); -} - -/* .loc is essentially the same as .ln; parse it for assembler - compatibility. */ - -static void -obj_coff_loc (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int lineno; - - /* FIXME: Why do we need this check? We need it for ECOFF, but why - do we need it for COFF? */ - if (now_seg != text_section) - { - as_warn (_(".loc outside of .text")); - demand_empty_rest_of_line (); - return; - } - - if (def_symbol_in_progress != NULL) - { - as_warn (_(".loc pseudo-op inside .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - /* Skip the file number. */ - SKIP_WHITESPACE (); - get_absolute_expression (); - SKIP_WHITESPACE (); - - lineno = get_absolute_expression (); - -#ifndef NO_LISTING - { - extern int listing; - - if (listing) - { - lineno += coff_line_base - 1; - listing_source_line (lineno); - } - } -#endif - - demand_empty_rest_of_line (); - - add_lineno (frag_now, frag_now_fix (), lineno); -} - -/* Handle the .ident pseudo-op. */ - -static void -obj_coff_ident (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - segT current_seg = now_seg; - subsegT current_subseg = now_subseg; - -#ifdef TE_PE - { - segT sec; - - /* We could put it in .comment, but that creates an extra section - that shouldn't be loaded into memory, which requires linker - changes... For now, until proven otherwise, use .rdata. */ - sec = subseg_new (".rdata$zzz", 0); - bfd_set_section_flags (stdoutput, sec, - ((SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_DATA) - & bfd_applicable_section_flags (stdoutput))); - } -#else - subseg_new (".comment", 0); -#endif - - stringer (1); - subseg_set (current_seg, current_subseg); -} - -/* - * def() - * - * Handle .def directives. - * - * One might ask : why can't we symbol_new if the symbol does not - * already exist and fill it with debug information. Because of - * the C_EFCN special symbol. It would clobber the value of the - * function symbol before we have a chance to notice that it is - * a C_EFCN. And a second reason is that the code is more clear this - * way. (at least I think it is :-). - * - */ - -#define SKIP_SEMI_COLON() while (*input_line_pointer++ != ';') -#define SKIP_WHITESPACES() while (*input_line_pointer == ' ' || \ - *input_line_pointer == '\t') \ - input_line_pointer++; - -static void -obj_coff_def (what) - int what ATTRIBUTE_UNUSED; -{ - char name_end; /* Char after the end of name */ - char *symbol_name; /* Name of the debug symbol */ - char *symbol_name_copy; /* Temporary copy of the name */ - unsigned int symbol_name_length; - - if (def_symbol_in_progress != NULL) - { - as_warn (_(".def pseudo-op used inside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - SKIP_WHITESPACES (); - - symbol_name = input_line_pointer; -#ifdef STRIP_UNDERSCORE - if (symbol_name[0] == '_' && symbol_name[1] != 0) - symbol_name++; -#endif /* STRIP_UNDERSCORE */ - - name_end = get_symbol_end (); - symbol_name_length = strlen (symbol_name); - symbol_name_copy = xmalloc (symbol_name_length + 1); - strcpy (symbol_name_copy, symbol_name); -#ifdef tc_canonicalize_symbol_name - symbol_name_copy = tc_canonicalize_symbol_name (symbol_name_copy); -#endif - - /* Initialize the new symbol */ - def_symbol_in_progress = symbol_make (symbol_name_copy); - symbol_set_frag (def_symbol_in_progress, &zero_address_frag); - S_SET_VALUE (def_symbol_in_progress, 0); - - if (S_IS_STRING (def_symbol_in_progress)) - SF_SET_STRING (def_symbol_in_progress); - - *input_line_pointer = name_end; - - demand_empty_rest_of_line (); -} - -unsigned int dim_index; - -static void -obj_coff_endef (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - symbolS *symbolP = NULL; - - /* DIM BUG FIX sac@cygnus.com */ - dim_index = 0; - if (def_symbol_in_progress == NULL) - { - as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - /* Set the section number according to storage class. */ - switch (S_GET_STORAGE_CLASS (def_symbol_in_progress)) - { - case C_STRTAG: - case C_ENTAG: - case C_UNTAG: - SF_SET_TAG (def_symbol_in_progress); - /* intentional fallthrough */ - case C_FILE: - case C_TPDEF: - SF_SET_DEBUG (def_symbol_in_progress); - S_SET_SEGMENT (def_symbol_in_progress, fetch_coff_debug_section ()); - break; - - case C_EFCN: - SF_SET_LOCAL (def_symbol_in_progress); /* Do not emit this symbol. */ - /* intentional fallthrough */ - case C_BLOCK: - SF_SET_PROCESS (def_symbol_in_progress); /* Will need processing before writing */ - /* intentional fallthrough */ - case C_FCN: - { - const char *name; - S_SET_SEGMENT (def_symbol_in_progress, text_section); - - name = S_GET_NAME (def_symbol_in_progress); - if (name[0] == '.' && name[2] == 'f' && name[3] == '\0') - { - switch (name[1]) - { - case 'b': - /* .bf */ - if (! in_function ()) - as_warn (_("`%s' symbol without preceding function"), name); - /* Will need relocating. */ - SF_SET_PROCESS (def_symbol_in_progress); - clear_function (); - break; -#ifdef TE_PE - case 'e': - /* .ef */ - /* The MS compilers output the actual endline, not the - function-relative one... we want to match without - changing the assembler input. */ - SA_SET_SYM_LNNO (def_symbol_in_progress, - (SA_GET_SYM_LNNO (def_symbol_in_progress) - + coff_line_base)); - break; -#endif - } - } - } - break; - -#ifdef C_AUTOARG - case C_AUTOARG: -#endif /* C_AUTOARG */ - case C_AUTO: - case C_REG: - case C_ARG: - case C_REGPARM: - case C_FIELD: - - /* According to the COFF documentation: - - http://osr5doc.sco.com:1996/topics/COFF_SectNumFld.html - - A special section number (-2) marks symbolic debugging symbols, - including structure/union/enumeration tag names, typedefs, and - the name of the file. A section number of -1 indicates that the - symbol has a value but is not relocatable. Examples of - absolute-valued symbols include automatic and register variables, - function arguments, and .eos symbols. - - But from Ian Lance Taylor: - - http://sources.redhat.com/ml/binutils/2000-08/msg00202.html - - the actual tools all marked them as section -1. So the GNU COFF - assembler follows historical COFF assemblers. - - However, it causes problems for djgpp - - http://sources.redhat.com/ml/binutils/2000-08/msg00210.html - - By defining STRICTCOFF, a COFF port can make the assembler to - follow the documented behavior. */ -#ifdef STRICTCOFF - case C_MOS: - case C_MOE: - case C_MOU: - case C_EOS: -#endif - SF_SET_DEBUG (def_symbol_in_progress); - S_SET_SEGMENT (def_symbol_in_progress, absolute_section); - break; - -#ifndef STRICTCOFF - case C_MOS: - case C_MOE: - case C_MOU: - case C_EOS: - S_SET_SEGMENT (def_symbol_in_progress, absolute_section); - break; -#endif - - case C_EXT: - case C_WEAKEXT: -#ifdef TE_PE - case C_NT_WEAK: -#endif - case C_STAT: - case C_LABEL: - /* Valid but set somewhere else (s_comm, s_lcomm, colon) */ - break; - - default: - case C_USTATIC: - case C_EXTDEF: - case C_ULABEL: - as_warn (_("unexpected storage class %d"), - S_GET_STORAGE_CLASS (def_symbol_in_progress)); - break; - } /* switch on storage class */ - - /* Now that we have built a debug symbol, try to find if we should - merge with an existing symbol or not. If a symbol is C_EFCN or - absolute_section or untagged SEG_DEBUG it never merges. We also - don't merge labels, which are in a different namespace, nor - symbols which have not yet been defined since they are typically - unique, nor do we merge tags with non-tags. */ - - /* Two cases for functions. Either debug followed by definition or - definition followed by debug. For definition first, we will - merge the debug symbol into the definition. For debug first, the - lineno entry MUST point to the definition function or else it - will point off into space when obj_crawl_symbol_chain() merges - the debug symbol into the real symbol. Therefor, let's presume - the debug symbol is a real function reference. */ - - /* FIXME-SOON If for some reason the definition label/symbol is - never seen, this will probably leave an undefined symbol at link - time. */ - - if (S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_EFCN - || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_LABEL - || (!strcmp (bfd_get_section_name (stdoutput, - S_GET_SEGMENT (def_symbol_in_progress)), - "*DEBUG*") - && !SF_GET_TAG (def_symbol_in_progress)) - || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section - || ! symbol_constant_p (def_symbol_in_progress) - || (symbolP = symbol_find_base (S_GET_NAME (def_symbol_in_progress), - DO_NOT_STRIP)) == NULL - || SF_GET_TAG (def_symbol_in_progress) != SF_GET_TAG (symbolP)) - { - /* If it already is at the end of the symbol list, do nothing */ - if (def_symbol_in_progress != symbol_lastP) - { - symbol_remove (def_symbol_in_progress, &symbol_rootP, &symbol_lastP); - symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP, - &symbol_lastP); - } - } - else - { - /* This symbol already exists, merge the newly created symbol - into the old one. This is not mandatory. The linker can - handle duplicate symbols correctly. But I guess that it save - a *lot* of space if the assembly file defines a lot of - symbols. [loic] */ - - /* The debug entry (def_symbol_in_progress) is merged into the - previous definition. */ - - c_symbol_merge (def_symbol_in_progress, symbolP); - symbol_remove (def_symbol_in_progress, &symbol_rootP, &symbol_lastP); - - def_symbol_in_progress = symbolP; - - if (SF_GET_FUNCTION (def_symbol_in_progress) - || SF_GET_TAG (def_symbol_in_progress) - || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_STAT) - { - /* For functions, and tags, and static symbols, the symbol - *must* be where the debug symbol appears. Move the - existing symbol to the current place. */ - /* If it already is at the end of the symbol list, do nothing */ - if (def_symbol_in_progress != symbol_lastP) - { - symbol_remove (def_symbol_in_progress, &symbol_rootP, &symbol_lastP); - symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP, &symbol_lastP); - } - } - } - - if (SF_GET_TAG (def_symbol_in_progress)) - { - symbolS *oldtag; - - oldtag = symbol_find_base (S_GET_NAME (def_symbol_in_progress), - DO_NOT_STRIP); - if (oldtag == NULL || ! SF_GET_TAG (oldtag)) - tag_insert (S_GET_NAME (def_symbol_in_progress), - def_symbol_in_progress); - } - - if (SF_GET_FUNCTION (def_symbol_in_progress)) - { - know (sizeof (def_symbol_in_progress) <= sizeof (long)); - set_function (def_symbol_in_progress); - SF_SET_PROCESS (def_symbol_in_progress); - - if (symbolP == NULL) - { - /* That is, if this is the first time we've seen the - function... */ - symbol_table_insert (def_symbol_in_progress); - } /* definition follows debug */ - } /* Create the line number entry pointing to the function being defined */ - - def_symbol_in_progress = NULL; - demand_empty_rest_of_line (); -} - -static void -obj_coff_dim (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int dim_index; - - if (def_symbol_in_progress == NULL) - { - as_warn (_(".dim pseudo-op used outside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - - for (dim_index = 0; dim_index < DIMNUM; dim_index++) - { - SKIP_WHITESPACES (); - SA_SET_SYM_DIMEN (def_symbol_in_progress, dim_index, - get_absolute_expression ()); - - switch (*input_line_pointer) - { - case ',': - input_line_pointer++; - break; - - default: - as_warn (_("badly formed .dim directive ignored")); - /* intentional fallthrough */ - case '\n': - case ';': - dim_index = DIMNUM; - break; - } - } - - demand_empty_rest_of_line (); -} - -static void -obj_coff_line (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int this_base; - - if (def_symbol_in_progress == NULL) - { - /* Probably stabs-style line? */ - obj_coff_ln (0); - return; - } - - this_base = get_absolute_expression (); - if (!strcmp (".bf", S_GET_NAME (def_symbol_in_progress))) - coff_line_base = this_base; - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - SA_SET_SYM_LNNO (def_symbol_in_progress, this_base); - - demand_empty_rest_of_line (); - -#ifndef NO_LISTING - if (strcmp (".bf", S_GET_NAME (def_symbol_in_progress)) == 0) - { - extern int listing; - - if (listing) - listing_source_line ((unsigned int) this_base); - } -#endif -} - -static void -obj_coff_size (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".size pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - SA_SET_SYM_SIZE (def_symbol_in_progress, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -static void -obj_coff_scl (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".scl pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - S_SET_STORAGE_CLASS (def_symbol_in_progress, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -static void -obj_coff_tag (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *symbol_name; - char name_end; - - if (def_symbol_in_progress == NULL) - { - as_warn (_(".tag pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - symbol_name = input_line_pointer; - name_end = get_symbol_end (); - -#ifdef tc_canonicalize_symbol_name - symbol_name = tc_canonicalize_symbol_name (symbol_name); -#endif - - /* Assume that the symbol referred to by .tag is always defined. - This was a bad assumption. I've added find_or_make. xoxorich. */ - SA_SET_SYM_TAGNDX (def_symbol_in_progress, - tag_find_or_make (symbol_name)); - if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L) - { - as_warn (_("tag not found for .tag %s"), symbol_name); - } /* not defined */ - - SF_SET_TAGGED (def_symbol_in_progress); - *input_line_pointer = name_end; - - demand_empty_rest_of_line (); -} - -static void -obj_coff_type (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".type pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - S_SET_DATA_TYPE (def_symbol_in_progress, get_absolute_expression ()); - - if (ISFCN (S_GET_DATA_TYPE (def_symbol_in_progress)) && - S_GET_STORAGE_CLASS (def_symbol_in_progress) != C_TPDEF) - { - SF_SET_FUNCTION (def_symbol_in_progress); - } /* is a function */ - - demand_empty_rest_of_line (); -} - -static void -obj_coff_val (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".val pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } /* if not inside .def/.endef */ - - if (is_name_beginner (*input_line_pointer)) - { - char *symbol_name = input_line_pointer; - char name_end = get_symbol_end (); - -#ifdef tc_canonicalize_symbol_name - symbol_name = tc_canonicalize_symbol_name (symbol_name); -#endif - if (!strcmp (symbol_name, ".")) - { - symbol_set_frag (def_symbol_in_progress, frag_now); - S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); - /* If the .val is != from the .def (e.g. statics) */ - } - else if (strcmp (S_GET_NAME (def_symbol_in_progress), symbol_name)) - { - expressionS exp; - - exp.X_op = O_symbol; - exp.X_add_symbol = symbol_find_or_make (symbol_name); - exp.X_op_symbol = NULL; - exp.X_add_number = 0; - symbol_set_value_expression (def_symbol_in_progress, &exp); - - /* If the segment is undefined when the forward reference is - resolved, then copy the segment id from the forward - symbol. */ - SF_SET_GET_SEGMENT (def_symbol_in_progress); - - /* FIXME: gcc can generate address expressions here in - unusual cases (search for "obscure" in sdbout.c). We - just ignore the offset here, thus generating incorrect - debugging information. We ignore the rest of the line - just below. */ - } - /* Otherwise, it is the name of a non debug symbol and its value - will be calculated later. */ - *input_line_pointer = name_end; - } - else - { - S_SET_VALUE (def_symbol_in_progress, get_absolute_expression ()); - } /* if symbol based */ - - demand_empty_rest_of_line (); -} - -void -coff_obj_read_begin_hook () -{ - /* These had better be the same. Usually 18 bytes. */ -#ifndef BFD_HEADERS - know (sizeof (SYMENT) == sizeof (AUXENT)); - know (SYMESZ == AUXESZ); -#endif - tag_init (); -} - -symbolS *coff_last_function; -#ifndef OBJ_XCOFF -static symbolS *coff_last_bf; -#endif - -void -coff_frob_symbol (symp, punt) - symbolS *symp; - int *punt; -{ - static symbolS *last_tagP; - static stack *block_stack; - static symbolS *set_end; - symbolS *next_set_end = NULL; - - if (symp == &abs_symbol) - { - *punt = 1; - return; - } - - if (current_lineno_sym) - coff_add_linesym ((symbolS *) 0); - - if (!block_stack) - block_stack = stack_init (512, sizeof (symbolS*)); - - if (S_IS_WEAK (symp)) - { -#ifdef TE_PE - S_SET_STORAGE_CLASS (symp, C_NT_WEAK); -#else - S_SET_STORAGE_CLASS (symp, C_WEAKEXT); -#endif - } - - if (!S_IS_DEFINED (symp) - && !S_IS_WEAK (symp) - && S_GET_STORAGE_CLASS (symp) != C_STAT) - S_SET_STORAGE_CLASS (symp, C_EXT); - - if (!SF_GET_DEBUG (symp)) - { - symbolS * real; - - if (!SF_GET_LOCAL (symp) - && !SF_GET_STATICS (symp) - && S_GET_STORAGE_CLASS (symp) != C_LABEL - && symbol_constant_p(symp) - && (real = symbol_find_base (S_GET_NAME (symp), DO_NOT_STRIP)) - && S_GET_STORAGE_CLASS (real) == C_NULL - && real != symp) - { - c_symbol_merge (symp, real); - *punt = 1; - return; - } - - if (!S_IS_DEFINED (symp) && !SF_GET_LOCAL (symp)) - { - assert (S_GET_VALUE (symp) == 0); - S_SET_EXTERNAL (symp); - } - else if (S_GET_STORAGE_CLASS (symp) == C_NULL) - { - if (S_GET_SEGMENT (symp) == text_section - && symp != seg_info (text_section)->sym) - S_SET_STORAGE_CLASS (symp, C_LABEL); - else - S_SET_STORAGE_CLASS (symp, C_STAT); - } - - if (SF_GET_PROCESS (symp)) - { - if (S_GET_STORAGE_CLASS (symp) == C_BLOCK) - { - if (!strcmp (S_GET_NAME (symp), ".bb")) - stack_push (block_stack, (char *) &symp); - else - { - symbolS *begin; - - begin = *(symbolS **) stack_pop (block_stack); - if (begin == 0) - as_warn (_("mismatched .eb")); - else - next_set_end = begin; - } - } - - if (coff_last_function == 0 && SF_GET_FUNCTION (symp)) - { - union internal_auxent *auxp; - - coff_last_function = symp; - if (S_GET_NUMBER_AUXILIARY (symp) < 1) - S_SET_NUMBER_AUXILIARY (symp, 1); - auxp = SYM_AUXENT (symp); - memset (auxp->x_sym.x_fcnary.x_ary.x_dimen, 0, - sizeof (auxp->x_sym.x_fcnary.x_ary.x_dimen)); - } - - if (S_GET_STORAGE_CLASS (symp) == C_EFCN) - { - if (coff_last_function == 0) - as_fatal (_("C_EFCN symbol out of scope")); - SA_SET_SYM_FSIZE (coff_last_function, - (long) (S_GET_VALUE (symp) - - S_GET_VALUE (coff_last_function))); - next_set_end = coff_last_function; - coff_last_function = 0; - } - } - - if (S_IS_EXTERNAL (symp)) - S_SET_STORAGE_CLASS (symp, C_EXT); - else if (SF_GET_LOCAL (symp)) - *punt = 1; - - if (SF_GET_FUNCTION (symp)) - symbol_get_bfdsym (symp)->flags |= BSF_FUNCTION; - - /* more ... */ - } - - /* Double check weak symbols. */ - if (S_IS_WEAK (symp) && S_IS_COMMON (symp)) - as_bad (_("Symbol `%s' can not be both weak and common"), - S_GET_NAME (symp)); - - if (SF_GET_TAG (symp)) - last_tagP = symp; - else if (S_GET_STORAGE_CLASS (symp) == C_EOS) - next_set_end = last_tagP; - -#ifdef OBJ_XCOFF - /* This is pretty horrible, but we have to set *punt correctly in - order to call SA_SET_SYM_ENDNDX correctly. */ - if (! symbol_used_in_reloc_p (symp) - && ((symbol_get_bfdsym (symp)->flags & BSF_SECTION_SYM) != 0 - || (! S_IS_EXTERNAL (symp) - && ! symbol_get_tc (symp)->output - && S_GET_STORAGE_CLASS (symp) != C_FILE))) - *punt = 1; -#endif - - if (set_end != (symbolS *) NULL - && ! *punt - && ((symbol_get_bfdsym (symp)->flags & BSF_NOT_AT_END) != 0 - || (S_IS_DEFINED (symp) - && ! S_IS_COMMON (symp) - && (! S_IS_EXTERNAL (symp) || SF_GET_FUNCTION (symp))))) - { - SA_SET_SYM_ENDNDX (set_end, symp); - set_end = NULL; - } - - if (next_set_end != NULL) - { - if (set_end != NULL) - as_warn ("Warning: internal error: forgetting to set endndx of %s", - S_GET_NAME (set_end)); - set_end = next_set_end; - } - -#ifndef OBJ_XCOFF - if (! *punt - && S_GET_STORAGE_CLASS (symp) == C_FCN - && strcmp (S_GET_NAME (symp), ".bf") == 0) - { - if (coff_last_bf != NULL) - SA_SET_SYM_ENDNDX (coff_last_bf, symp); - coff_last_bf = symp; - } -#endif - if (coffsymbol (symbol_get_bfdsym (symp))->lineno) - { - int i; - struct line_no *lptr; - alent *l; - - lptr = (struct line_no *) coffsymbol (symbol_get_bfdsym (symp))->lineno; - for (i = 0; lptr; lptr = lptr->next) - i++; - lptr = (struct line_no *) coffsymbol (symbol_get_bfdsym (symp))->lineno; - - /* We need i entries for line numbers, plus 1 for the first - entry which BFD will override, plus 1 for the last zero - entry (a marker for BFD). */ - l = (alent *) xmalloc ((i + 2) * sizeof (alent)); - coffsymbol (symbol_get_bfdsym (symp))->lineno = l; - l[i + 1].line_number = 0; - l[i + 1].u.sym = NULL; - for (; i > 0; i--) - { - if (lptr->frag) - lptr->l.u.offset += lptr->frag->fr_address / OCTETS_PER_BYTE; - l[i] = lptr->l; - lptr = lptr->next; - } - } -} - -void -coff_adjust_section_syms (abfd, sec, x) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; - PTR x ATTRIBUTE_UNUSED; -{ - symbolS *secsym; - segment_info_type *seginfo = seg_info (sec); - int nlnno, nrelocs = 0; - - /* RS/6000 gas creates a .debug section manually in ppc_frob_file in - tc-ppc.c. Do not get confused by it. */ - if (seginfo == NULL) - return; - - if (!strcmp (sec->name, ".text")) - nlnno = coff_n_line_nos; - else - nlnno = 0; - { - /* @@ Hope that none of the fixups expand to more than one reloc - entry... */ - fixS *fixp = seginfo->fix_root; - while (fixp) - { - if (! fixp->fx_done) - nrelocs++; - fixp = fixp->fx_next; - } - } - if (bfd_get_section_size_before_reloc (sec) == 0 - && nrelocs == 0 - && nlnno == 0 - && sec != text_section - && sec != data_section - && sec != bss_section) - return; - secsym = section_symbol (sec); - /* This is an estimate; we'll plug in the real value using - SET_SECTION_RELOCS later */ - SA_SET_SCN_NRELOC (secsym, nrelocs); - SA_SET_SCN_NLINNO (secsym, nlnno); -} - -void -coff_frob_file_after_relocs () -{ - bfd_map_over_sections (stdoutput, coff_adjust_section_syms, (char*) 0); -} - -/* Implement the .section pseudo op: - .section name {, "flags"} - ^ ^ - | +--- optional flags: 'b' for bss - | 'i' for info - +-- section name 'l' for lib - 'n' for noload - 'o' for over - 'w' for data - 'd' (apparently m88k for data) - 'x' for text - 'r' for read-only data - 's' for shared data (PE) - But if the argument is not a quoted string, treat it as a - subsegment number. - - Note the 'a' flag is silently ignored. This allows the same - .section directive to be parsed in both ELF and COFF formats. */ - -void -obj_coff_section (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* Strip out the section name */ - char *section_name; - char c; - char *name; - unsigned int exp; - flagword flags, oldflags; - asection *sec; - - if (flag_mri) - { - char type; - - s_mri_sect (&type); - return; - } - - section_name = input_line_pointer; - c = get_symbol_end (); - - name = xmalloc (input_line_pointer - section_name + 1); - strcpy (name, section_name); - - *input_line_pointer = c; - - SKIP_WHITESPACE (); - - exp = 0; - flags = SEC_NO_FLAGS; - - if (*input_line_pointer == ',') - { - ++input_line_pointer; - SKIP_WHITESPACE (); - if (*input_line_pointer != '"') - exp = get_absolute_expression (); - else - { - ++input_line_pointer; - while (*input_line_pointer != '"' - && ! is_end_of_line[(unsigned char) *input_line_pointer]) - { - switch (*input_line_pointer) - { - case 'b': flags |= SEC_ALLOC; flags &=~ SEC_LOAD; break; - case 'n': flags &=~ SEC_LOAD; flags |= SEC_NEVER_LOAD; break; - - case 's': flags |= SEC_SHARED; /* fall through */ - case 'd': flags |= SEC_DATA | SEC_LOAD; /* fall through */ - case 'w': flags &=~ SEC_READONLY; break; - - case 'a': break; /* For compatibility with ELF. */ - case 'x': flags |= SEC_CODE | SEC_LOAD; break; - case 'r': flags |= SEC_DATA | SEC_LOAD | SEC_READONLY; break; - - case 'i': /* STYP_INFO */ - case 'l': /* STYP_LIB */ - case 'o': /* STYP_OVER */ - as_warn (_("unsupported section attribute '%c'"), - *input_line_pointer); - break; - - default: - as_warn(_("unknown section attribute '%c'"), - *input_line_pointer); - break; - } - ++input_line_pointer; - } - if (*input_line_pointer == '"') - ++input_line_pointer; - } - } - - sec = subseg_new (name, (subsegT) exp); - - oldflags = bfd_get_section_flags (stdoutput, sec); - if (oldflags == SEC_NO_FLAGS) - { - /* Set section flags for a new section just created by subseg_new. - Provide a default if no flags were parsed. */ - if (flags == SEC_NO_FLAGS) - flags = TC_COFF_SECTION_DEFAULT_ATTRIBUTES; - -#ifdef COFF_LONG_SECTION_NAMES - /* Add SEC_LINK_ONCE and SEC_LINK_DUPLICATES_DISCARD to .gnu.linkonce - sections so adjust_reloc_syms in write.c will correctly handle - relocs which refer to non-local symbols in these sections. */ - if (strncmp (name, ".gnu.linkonce", sizeof (".gnu.linkonce") - 1) == 0) - flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD; -#endif - - if (! bfd_set_section_flags (stdoutput, sec, flags)) - as_warn (_("error setting flags for \"%s\": %s"), - bfd_section_name (stdoutput, sec), - bfd_errmsg (bfd_get_error ())); - } - else if (flags != SEC_NO_FLAGS) - { - /* This section's attributes have already been set. Warn if the - attributes don't match. */ - flagword matchflags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE - | SEC_DATA | SEC_SHARED | SEC_NEVER_LOAD); - if ((flags ^ oldflags) & matchflags) - as_warn (_("Ignoring changed section attributes for %s"), name); - } - - demand_empty_rest_of_line (); -} - -void -coff_adjust_symtab () -{ - if (symbol_rootP == NULL - || S_GET_STORAGE_CLASS (symbol_rootP) != C_FILE) - c_dot_file_symbol ("fake"); -} - -void -coff_frob_section (sec) - segT sec; -{ - segT strsec; - char *p; - fragS *fragp; - bfd_vma size, n_entries, mask; - bfd_vma align_power = (bfd_vma)sec->alignment_power + OCTETS_PER_BYTE_POWER; - - /* The COFF back end in BFD requires that all section sizes be - rounded up to multiples of the corresponding section alignments, - supposedly because standard COFF has no other way of encoding alignment - for sections. If your COFF flavor has a different way of encoding - section alignment, then skip this step, as TICOFF does. */ - size = bfd_get_section_size_before_reloc (sec); - mask = ((bfd_vma) 1 << align_power) - 1; -#if !defined(TICOFF) - if (size & mask) - { - bfd_vma new_size; - fragS *last; - - new_size = (size + mask) & ~mask; - bfd_set_section_size (stdoutput, sec, new_size); - - /* If the size had to be rounded up, add some padding in - the last non-empty frag. */ - fragp = seg_info (sec)->frchainP->frch_root; - last = seg_info (sec)->frchainP->frch_last; - while (fragp->fr_next != last) - fragp = fragp->fr_next; - last->fr_address = size; - fragp->fr_offset += new_size - size; - } -#endif - - /* If the section size is non-zero, the section symbol needs an aux - entry associated with it, indicating the size. We don't know - all the values yet; coff_frob_symbol will fill them in later. */ -#ifndef TICOFF - if (size != 0 - || sec == text_section - || sec == data_section - || sec == bss_section) -#endif - { - symbolS *secsym = section_symbol (sec); - - S_SET_STORAGE_CLASS (secsym, C_STAT); - S_SET_NUMBER_AUXILIARY (secsym, 1); - SF_SET_STATICS (secsym); - SA_SET_SCN_SCNLEN (secsym, size); - } - - /* @@ these should be in a "stabs.h" file, or maybe as.h */ -#ifndef STAB_SECTION_NAME -#define STAB_SECTION_NAME ".stab" -#endif -#ifndef STAB_STRING_SECTION_NAME -#define STAB_STRING_SECTION_NAME ".stabstr" -#endif - if (strcmp (STAB_STRING_SECTION_NAME, sec->name)) - return; - - strsec = sec; - sec = subseg_get (STAB_SECTION_NAME, 0); - /* size is already rounded up, since other section will be listed first */ - size = bfd_get_section_size_before_reloc (strsec); - - n_entries = bfd_get_section_size_before_reloc (sec) / 12 - 1; - - /* Find first non-empty frag. It should be large enough. */ - fragp = seg_info (sec)->frchainP->frch_root; - while (fragp && fragp->fr_fix == 0) - fragp = fragp->fr_next; - assert (fragp != 0 && fragp->fr_fix >= 12); - - /* Store the values. */ - p = fragp->fr_literal; - bfd_h_put_16 (stdoutput, n_entries, (bfd_byte *) p + 6); - bfd_h_put_32 (stdoutput, size, (bfd_byte *) p + 8); -} - -void -obj_coff_init_stab_section (seg) - segT seg; -{ - char *file; - char *p; - char *stabstr_name; - unsigned int stroff; - - /* Make space for this first symbol. */ - p = frag_more (12); - /* Zero it out. */ - memset (p, 0, 12); - as_where (&file, (unsigned int *) NULL); - stabstr_name = (char *) xmalloc (strlen (seg->name) + 4); - strcpy (stabstr_name, seg->name); - strcat (stabstr_name, "str"); - stroff = get_stab_string_offset (file, stabstr_name); - know (stroff == 1); - md_number_to_chars (p, stroff, 4); -} - -#ifdef DEBUG -/* for debugging */ -const char * -s_get_name (s) - symbolS *s; -{ - return ((s == NULL) ? "(NULL)" : S_GET_NAME (s)); -} - -void -symbol_dump () -{ - symbolS *symbolP; - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - printf (_("0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"), - (unsigned long) symbolP, - S_GET_NAME(symbolP), - (long) S_GET_DATA_TYPE(symbolP), - S_GET_STORAGE_CLASS(symbolP), - (int) S_GET_SEGMENT(symbolP)); - } -} - -#endif /* DEBUG */ - -#else /* not BFD_ASSEMBLER */ - -#include "frags.h" -/* This is needed because we include internal bfd things. */ -#include - -#include "libbfd.h" -#include "libcoff.h" - -#ifdef TE_PE -#include "coff/pe.h" -#endif - -/* The NOP_OPCODE is for the alignment fill value. Fill with nop so - that we can stick sections together without causing trouble. */ -#ifndef NOP_OPCODE -#define NOP_OPCODE 0x00 -#endif - -/* The zeroes if symbol name is longer than 8 chars */ -#define S_SET_ZEROES(s,v) ((s)->sy_symbol.ost_entry.n_zeroes = (v)) - -#define MIN(a,b) ((a) < (b)? (a) : (b)) - -/* This vector is used to turn a gas internal segment number into a - section number suitable for insertion into a coff symbol table. - This must correspond to seg_info_off_by_4. */ - -const short seg_N_TYPE[] = -{ /* in: segT out: N_TYPE bits */ - C_ABS_SECTION, - 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, - C_UNDEF_SECTION, /* SEG_UNKNOWN */ - C_UNDEF_SECTION, /* SEG_GOOF */ - C_UNDEF_SECTION, /* SEG_EXPR */ - C_DEBUG_SECTION, /* SEG_DEBUG */ - C_NTV_SECTION, /* SEG_NTV */ - C_PTV_SECTION, /* SEG_PTV */ - C_REGISTER_SECTION, /* SEG_REGISTER */ -}; - -int function_lineoff = -1; /* Offset in line#s where the last function - started (the odd entry for line #0) */ - -/* Structure used to keep the filenames which - are too long around so that we can stick them - into the string table. */ -struct filename_list -{ - char *filename; - struct filename_list *next; -}; - -static struct filename_list *filename_list_head; -static struct filename_list *filename_list_tail; - -static symbolS *last_line_symbol; - -/* Add 4 to the real value to get the index and compensate the - negatives. This vector is used by S_GET_SEGMENT to turn a coff - section number into a segment number. */ - -bfd *abfd; -static symbolS *previous_file_symbol; -static int line_base; - -void c_symbol_merge PARAMS ((symbolS *, symbolS *)); -symbolS *c_section_symbol PARAMS ((char *, int)); -void obj_coff_section PARAMS ((int)); -void do_relocs_for PARAMS ((bfd *, object_headers *, unsigned long *)); -char * symbol_to_chars PARAMS ((bfd *, char *, symbolS *)); -void w_strings PARAMS ((char *)); - -static void fixup_segment PARAMS ((segment_info_type *, segT)); -static void fixup_mdeps PARAMS ((fragS *, object_headers *, segT)); -static void fill_section PARAMS ((bfd *, object_headers *, unsigned long *)); -static int c_line_new PARAMS ((symbolS *, long, int, fragS *)); -static void w_symbols PARAMS ((bfd *, char *, symbolS *)); -static void adjust_stab_section PARAMS ((bfd *, segT)); -static void obj_coff_lcomm PARAMS ((int)); -static void obj_coff_text PARAMS ((int)); -static void obj_coff_data PARAMS ((int)); -static unsigned int count_entries_in_chain PARAMS ((unsigned int)); -static void coff_header_append PARAMS ((bfd *, object_headers *)); -static unsigned int yank_symbols PARAMS ((void)); -static unsigned int glue_symbols PARAMS ((symbolS **, symbolS **)); -static unsigned int tie_tags PARAMS ((void)); -static void crawl_symbols PARAMS ((object_headers *, bfd *)); -static void do_linenos_for PARAMS ((bfd *, object_headers *, unsigned long *)); -static void remove_subsegs PARAMS ((void)); - - - -/* When not using BFD_ASSEMBLER, we permit up to 40 sections. - - This array maps a COFF section number into a gas section number. - Because COFF uses negative section numbers, you must add 4 to the - COFF section number when indexing into this array; this is done via - the SEG_INFO_FROM_SECTION_NUMBER macro. This must correspond to - seg_N_TYPE. */ - -static const segT seg_info_off_by_4[] = -{ - SEG_PTV, - SEG_NTV, - SEG_DEBUG, - SEG_ABSOLUTE, - SEG_UNKNOWN, - SEG_E0, SEG_E1, SEG_E2, SEG_E3, SEG_E4, - SEG_E5, SEG_E6, SEG_E7, SEG_E8, SEG_E9, - SEG_E10, SEG_E11, SEG_E12, SEG_E13, SEG_E14, - SEG_E15, SEG_E16, SEG_E17, SEG_E18, SEG_E19, - SEG_E20, SEG_E21, SEG_E22, SEG_E23, SEG_E24, - SEG_E25, SEG_E26, SEG_E27, SEG_E28, SEG_E29, - SEG_E30, SEG_E31, SEG_E32, SEG_E33, SEG_E34, - SEG_E35, SEG_E36, SEG_E37, SEG_E38, SEG_E39, - (segT) 40, - (segT) 41, - (segT) 42, - (segT) 43, - (segT) 44, - (segT) 45, - (segT) 0, - (segT) 0, - (segT) 0, - SEG_REGISTER -}; - -#define SEG_INFO_FROM_SECTION_NUMBER(x) (seg_info_off_by_4[(x)+4]) - -static relax_addressT relax_align PARAMS ((relax_addressT, long)); - -static relax_addressT -relax_align (address, alignment) - relax_addressT address; - long alignment; -{ - relax_addressT mask; - relax_addressT new_address; - - mask = ~((~0) << alignment); - new_address = (address + mask) & (~mask); - return (new_address - address); -} - -segT -s_get_segment (x) - symbolS * x; -{ - return SEG_INFO_FROM_SECTION_NUMBER (x->sy_symbol.ost_entry.n_scnum); -} - -static unsigned int size_section PARAMS ((bfd *, unsigned int)); - -/* Calculate the size of the frag chain and fill in the section header - to contain all of it, also fill in the addr of the sections. */ - -static unsigned int -size_section (abfd, idx) - bfd *abfd ATTRIBUTE_UNUSED; - unsigned int idx; -{ - - unsigned int size = 0; - fragS *frag = segment_info[idx].frchainP->frch_root; - - while (frag) - { - size = frag->fr_address; - if (frag->fr_address != size) - { - fprintf (stderr, _("Out of step\n")); - size = frag->fr_address; - } - - switch (frag->fr_type) - { -#ifdef TC_COFF_SIZEMACHDEP - case rs_machine_dependent: - size += TC_COFF_SIZEMACHDEP (frag); - break; -#endif - case rs_space: - case rs_fill: - case rs_org: - size += frag->fr_fix; - size += frag->fr_offset * frag->fr_var; - break; - case rs_align: - case rs_align_code: - case rs_align_test: - { - addressT off; - - size += frag->fr_fix; - off = relax_align (size, frag->fr_offset); - if (frag->fr_subtype != 0 && off > frag->fr_subtype) - off = 0; - size += off; - } - break; - default: - BAD_CASE (frag->fr_type); - break; - } - frag = frag->fr_next; - } - segment_info[idx].scnhdr.s_size = size; - return size; -} - -static unsigned int -count_entries_in_chain (idx) - unsigned int idx; -{ - unsigned int nrelocs; - fixS *fixup_ptr; - - /* Count the relocations. */ - fixup_ptr = segment_info[idx].fix_root; - nrelocs = 0; - while (fixup_ptr != (fixS *) NULL) - { - if (fixup_ptr->fx_done == 0 && TC_COUNT_RELOC (fixup_ptr)) - { -#if defined(TC_A29K) || defined(TC_OR32) - if (fixup_ptr->fx_r_type == RELOC_CONSTH) - nrelocs += 2; - else - nrelocs++; -#else - nrelocs++; -#endif - } - - fixup_ptr = fixup_ptr->fx_next; - } - return nrelocs; -} - -#ifdef TE_AUX - -static int compare_external_relocs PARAMS ((const PTR, const PTR)); - -/* AUX's ld expects relocations to be sorted. */ - -static int -compare_external_relocs (x, y) - const PTR x; - const PTR y; -{ - struct external_reloc *a = (struct external_reloc *) x; - struct external_reloc *b = (struct external_reloc *) y; - bfd_vma aadr = bfd_getb32 (a->r_vaddr); - bfd_vma badr = bfd_getb32 (b->r_vaddr); - return (aadr < badr ? -1 : badr < aadr ? 1 : 0); -} - -#endif - -/* Output all the relocations for a section. */ - -void -do_relocs_for (abfd, h, file_cursor) - bfd * abfd; - object_headers * h; - unsigned long *file_cursor; -{ - unsigned int nrelocs; - unsigned int idx; - unsigned long reloc_start = *file_cursor; - - for (idx = SEG_E0; idx < SEG_LAST; idx++) - { - if (segment_info[idx].scnhdr.s_name[0]) - { - struct external_reloc *ext_ptr; - struct external_reloc *external_reloc_vec; - unsigned int external_reloc_size; - unsigned int base = segment_info[idx].scnhdr.s_paddr; - fixS *fix_ptr = segment_info[idx].fix_root; - nrelocs = count_entries_in_chain (idx); - - if (nrelocs) - /* Bypass this stuff if no relocs. This also incidentally - avoids a SCO bug, where free(malloc(0)) tends to crash. */ - { - external_reloc_size = nrelocs * RELSZ; - external_reloc_vec = - (struct external_reloc *) malloc (external_reloc_size); - - ext_ptr = external_reloc_vec; - - /* Fill in the internal coff style reloc struct from the - internal fix list. */ - while (fix_ptr) - { - struct internal_reloc intr; - - /* Only output some of the relocations. */ - if (fix_ptr->fx_done == 0 && TC_COUNT_RELOC (fix_ptr)) - { -#ifdef TC_RELOC_MANGLE - TC_RELOC_MANGLE (&segment_info[idx], fix_ptr, &intr, - base); -#else - symbolS *dot; - symbolS *symbol_ptr = fix_ptr->fx_addsy; - - intr.r_type = TC_COFF_FIX2RTYPE (fix_ptr); - intr.r_vaddr = - base + fix_ptr->fx_frag->fr_address + fix_ptr->fx_where; - -#ifdef TC_KEEP_FX_OFFSET - intr.r_offset = fix_ptr->fx_offset; -#else - intr.r_offset = 0; -#endif - - while (symbol_ptr->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbol_ptr) - || S_IS_COMMON (symbol_ptr))) - { - symbolS *n; - - /* We must avoid looping, as that can occur - with a badly written program. */ - n = symbol_ptr->sy_value.X_add_symbol; - if (n == symbol_ptr) - break; - symbol_ptr = n; - } - - /* Turn the segment of the symbol into an offset. */ - if (symbol_ptr) - { - resolve_symbol_value (symbol_ptr); - if (! symbol_ptr->sy_resolved) - { - char *file; - unsigned int line; - - if (expr_symbol_where (symbol_ptr, &file, &line)) - as_bad_where (file, line, - _("unresolved relocation")); - else - as_bad (_("bad relocation: symbol `%s' not in symbol table"), - S_GET_NAME (symbol_ptr)); - } - - dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; - if (dot) - intr.r_symndx = dot->sy_number; - else - intr.r_symndx = symbol_ptr->sy_number; - } - else - intr.r_symndx = -1; -#endif - (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr); - ext_ptr++; -#if defined(TC_A29K) - /* The 29k has a special kludge for the high 16 bit - reloc. Two relocations are emitted, R_IHIHALF, - and R_IHCONST. The second one doesn't contain a - symbol, but uses the value for offset. */ - if (intr.r_type == R_IHIHALF) - { - /* Now emit the second bit. */ - intr.r_type = R_IHCONST; - intr.r_symndx = fix_ptr->fx_addnumber; - (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr); - ext_ptr++; - } -#endif -#if defined(TC_OR32) - /* The or32 has a special kludge for the high 16 bit - reloc. Two relocations are emitted, R_IHIHALF, - and R_IHCONST. The second one doesn't contain a - symbol, but uses the value for offset. */ - if (intr.r_type == R_IHIHALF) - { - /* Now emit the second bit. */ - intr.r_type = R_IHCONST; - intr.r_symndx = fix_ptr->fx_addnumber; - (void) bfd_coff_swap_reloc_out (abfd, & intr, ext_ptr); - ext_ptr ++; - } -#endif - } - - fix_ptr = fix_ptr->fx_next; - } -#ifdef TE_AUX - /* Sort the reloc table. */ - qsort ((PTR) external_reloc_vec, nrelocs, - sizeof (struct external_reloc), compare_external_relocs); -#endif - /* Write out the reloc table. */ - bfd_bwrite ((PTR) external_reloc_vec, - (bfd_size_type) external_reloc_size, abfd); - free (external_reloc_vec); - - /* Fill in section header info. */ - segment_info[idx].scnhdr.s_relptr = *file_cursor; - *file_cursor += external_reloc_size; - segment_info[idx].scnhdr.s_nreloc = nrelocs; - } - else - { - /* No relocs. */ - segment_info[idx].scnhdr.s_relptr = 0; - } - } - } - - /* Set relocation_size field in file headers. */ - H_SET_RELOCATION_SIZE (h, *file_cursor - reloc_start, 0); -} - -/* Run through a frag chain and write out the data to go with it, fill - in the scnhdrs with the info on the file positions. */ - -static void -fill_section (abfd, h, file_cursor) - bfd * abfd; - object_headers *h ATTRIBUTE_UNUSED; - unsigned long *file_cursor; -{ - unsigned int i; - unsigned int paddr = 0; - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - unsigned int offset = 0; - struct internal_scnhdr *s = &(segment_info[i].scnhdr); - - PROGRESS (1); - - if (s->s_name[0]) - { - fragS *frag = segment_info[i].frchainP->frch_root; - char *buffer = NULL; - - if (s->s_size == 0) - s->s_scnptr = 0; - else - { - buffer = xmalloc (s->s_size); - s->s_scnptr = *file_cursor; - } - know (s->s_paddr == paddr); - - if (strcmp (s->s_name, ".text") == 0) - s->s_flags |= STYP_TEXT; - else if (strcmp (s->s_name, ".data") == 0) - s->s_flags |= STYP_DATA; - else if (strcmp (s->s_name, ".bss") == 0) - { - s->s_scnptr = 0; - s->s_flags |= STYP_BSS; - - /* @@ Should make the i386 and a29k coff targets define - COFF_NOLOAD_PROBLEM, and have only one test here. */ -#ifndef TC_I386 -#ifndef TC_A29K -#ifndef TC_OR32 -#ifndef COFF_NOLOAD_PROBLEM - /* Apparently the SVR3 linker (and exec syscall) and UDI - mondfe progrem are confused by noload sections. */ - s->s_flags |= STYP_NOLOAD; -#endif -#endif -#endif -#endif - } - else if (strcmp (s->s_name, ".lit") == 0) - s->s_flags = STYP_LIT | STYP_TEXT; - else if (strcmp (s->s_name, ".init") == 0) - s->s_flags |= STYP_TEXT; - else if (strcmp (s->s_name, ".fini") == 0) - s->s_flags |= STYP_TEXT; - else if (strncmp (s->s_name, ".comment", 8) == 0) - s->s_flags |= STYP_INFO; - - while (frag) - { - unsigned int fill_size; - switch (frag->fr_type) - { - case rs_machine_dependent: - if (frag->fr_fix) - { - memcpy (buffer + frag->fr_address, - frag->fr_literal, - (unsigned int) frag->fr_fix); - offset += frag->fr_fix; - } - - break; - case rs_space: - case rs_fill: - case rs_align: - case rs_align_code: - case rs_align_test: - case rs_org: - if (frag->fr_fix) - { - memcpy (buffer + frag->fr_address, - frag->fr_literal, - (unsigned int) frag->fr_fix); - offset += frag->fr_fix; - } - - fill_size = frag->fr_var; - if (fill_size && frag->fr_offset > 0) - { - unsigned int count; - unsigned int off = frag->fr_fix; - for (count = frag->fr_offset; count; count--) - { - if (fill_size + frag->fr_address + off <= s->s_size) - { - memcpy (buffer + frag->fr_address + off, - frag->fr_literal + frag->fr_fix, - fill_size); - off += fill_size; - offset += fill_size; - } - } - } - break; - case rs_broken_word: - break; - default: - abort (); - } - frag = frag->fr_next; - } - - if (s->s_size != 0) - { - if (s->s_scnptr != 0) - { - bfd_bwrite (buffer, s->s_size, abfd); - *file_cursor += s->s_size; - } - free (buffer); - } - paddr += s->s_size; - } - } -} - -/* Coff file generation & utilities. */ - -static void -coff_header_append (abfd, h) - bfd * abfd; - object_headers * h; -{ - unsigned int i; - char buffer[1000]; - char buffero[1000]; -#ifdef COFF_LONG_SECTION_NAMES - unsigned long string_size = 4; -#endif - - bfd_seek (abfd, (file_ptr) 0, 0); - -#ifndef OBJ_COFF_OMIT_OPTIONAL_HEADER - H_SET_MAGIC_NUMBER (h, COFF_MAGIC); - H_SET_VERSION_STAMP (h, 0); - H_SET_ENTRY_POINT (h, 0); - H_SET_TEXT_START (h, segment_info[SEG_E0].frchainP->frch_root->fr_address); - H_SET_DATA_START (h, segment_info[SEG_E1].frchainP->frch_root->fr_address); - H_SET_SIZEOF_OPTIONAL_HEADER (h, bfd_coff_swap_aouthdr_out(abfd, &h->aouthdr, - buffero)); -#else /* defined (OBJ_COFF_OMIT_OPTIONAL_HEADER) */ - H_SET_SIZEOF_OPTIONAL_HEADER (h, 0); -#endif /* defined (OBJ_COFF_OMIT_OPTIONAL_HEADER) */ - - i = bfd_coff_swap_filehdr_out (abfd, &h->filehdr, buffer); - - bfd_bwrite (buffer, (bfd_size_type) i, abfd); - bfd_bwrite (buffero, (bfd_size_type) H_GET_SIZEOF_OPTIONAL_HEADER (h), abfd); - - for (i = SEG_E0; i < SEG_LAST; i++) - { - if (segment_info[i].scnhdr.s_name[0]) - { - unsigned int size; - -#ifdef COFF_LONG_SECTION_NAMES - /* Support long section names as found in PE. This code - must coordinate with that in write_object_file and - w_strings. */ - if (strlen (segment_info[i].name) > SCNNMLEN) - { - memset (segment_info[i].scnhdr.s_name, 0, SCNNMLEN); - sprintf (segment_info[i].scnhdr.s_name, "/%lu", string_size); - string_size += strlen (segment_info[i].name) + 1; - } -#endif - size = bfd_coff_swap_scnhdr_out (abfd, - &(segment_info[i].scnhdr), - buffer); - if (size == 0) - as_bad (_("bfd_coff_swap_scnhdr_out failed")); - bfd_bwrite (buffer, (bfd_size_type) size, abfd); - } - } -} - -char * -symbol_to_chars (abfd, where, symbolP) - bfd * abfd; - char *where; - symbolS * symbolP; -{ - unsigned int numaux = symbolP->sy_symbol.ost_entry.n_numaux; - unsigned int i; - valueT val; - - /* Turn any symbols with register attributes into abs symbols. */ - if (S_GET_SEGMENT (symbolP) == reg_section) - S_SET_SEGMENT (symbolP, absolute_section); - - /* At the same time, relocate all symbols to their output value. */ -#ifndef TE_PE - val = (segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_paddr - + S_GET_VALUE (symbolP)); -#else - val = S_GET_VALUE (symbolP); -#endif - - S_SET_VALUE (symbolP, val); - - symbolP->sy_symbol.ost_entry.n_value = val; - - where += bfd_coff_swap_sym_out (abfd, &symbolP->sy_symbol.ost_entry, - where); - - for (i = 0; i < numaux; i++) - { - where += bfd_coff_swap_aux_out (abfd, - &symbolP->sy_symbol.ost_auxent[i], - S_GET_DATA_TYPE (symbolP), - S_GET_STORAGE_CLASS (symbolP), - i, numaux, where); - } - - return where; -} - -void -coff_obj_symbol_new_hook (symbolP) - symbolS *symbolP; -{ - char underscore = 0; /* Symbol has leading _ */ - - /* Effective symbol. */ - /* Store the pointer in the offset. */ - S_SET_ZEROES (symbolP, 0L); - S_SET_DATA_TYPE (symbolP, T_NULL); - S_SET_STORAGE_CLASS (symbolP, 0); - S_SET_NUMBER_AUXILIARY (symbolP, 0); - /* Additional information. */ - symbolP->sy_symbol.ost_flags = 0; - /* Auxiliary entries. */ - memset ((char *) &symbolP->sy_symbol.ost_auxent[0], 0, AUXESZ); - - if (S_IS_STRING (symbolP)) - SF_SET_STRING (symbolP); - if (!underscore && S_IS_LOCAL (symbolP)) - SF_SET_LOCAL (symbolP); -} - -/* Handle .ln directives. */ - -static void -obj_coff_ln (appline) - int appline; -{ - int l; - - if (! appline && def_symbol_in_progress != NULL) - { - /* Wrong context. */ - as_warn (_(".ln pseudo-op inside .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - l = get_absolute_expression (); - c_line_new (0, frag_now_fix (), l, frag_now); - - if (appline) - new_logical_line ((char *) NULL, l - 1); - -#ifndef NO_LISTING - { - extern int listing; - - if (listing) - { - if (! appline) - l += line_base - 1; - listing_source_line ((unsigned int) l); - } - - } -#endif - demand_empty_rest_of_line (); -} - -/* Handle .def directives. - - One might ask : why can't we symbol_new if the symbol does not - already exist and fill it with debug information. Because of - the C_EFCN special symbol. It would clobber the value of the - function symbol before we have a chance to notice that it is - a C_EFCN. And a second reason is that the code is more clear this - way. (at least I think it is :-). */ - -#define SKIP_SEMI_COLON() while (*input_line_pointer++ != ';') -#define SKIP_WHITESPACES() while (*input_line_pointer == ' ' || \ - *input_line_pointer == '\t') \ - input_line_pointer++; - -static void -obj_coff_def (what) - int what ATTRIBUTE_UNUSED; -{ - char name_end; /* Char after the end of name. */ - char *symbol_name; /* Name of the debug symbol. */ - char *symbol_name_copy; /* Temporary copy of the name. */ - unsigned int symbol_name_length; - - if (def_symbol_in_progress != NULL) - { - as_warn (_(".def pseudo-op used inside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - SKIP_WHITESPACES (); - - def_symbol_in_progress = (symbolS *) obstack_alloc (¬es, sizeof (*def_symbol_in_progress)); - memset (def_symbol_in_progress, 0, sizeof (*def_symbol_in_progress)); - - symbol_name = input_line_pointer; - name_end = get_symbol_end (); - symbol_name_length = strlen (symbol_name); - symbol_name_copy = xmalloc (symbol_name_length + 1); - strcpy (symbol_name_copy, symbol_name); -#ifdef tc_canonicalize_symbol_name - symbol_name_copy = tc_canonicalize_symbol_name (symbol_name_copy); -#endif - - /* Initialize the new symbol. */ -#ifdef STRIP_UNDERSCORE - S_SET_NAME (def_symbol_in_progress, (*symbol_name_copy == '_' - ? symbol_name_copy + 1 - : symbol_name_copy)); -#else /* STRIP_UNDERSCORE */ - S_SET_NAME (def_symbol_in_progress, symbol_name_copy); -#endif /* STRIP_UNDERSCORE */ - /* free(symbol_name_copy); */ - def_symbol_in_progress->sy_name_offset = (unsigned long) ~0; - def_symbol_in_progress->sy_number = ~0; - def_symbol_in_progress->sy_frag = &zero_address_frag; - S_SET_VALUE (def_symbol_in_progress, 0); - - if (S_IS_STRING (def_symbol_in_progress)) - SF_SET_STRING (def_symbol_in_progress); - - *input_line_pointer = name_end; - - demand_empty_rest_of_line (); -} - -unsigned int dim_index; - -static void -obj_coff_endef (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - symbolS *symbolP = 0; - /* DIM BUG FIX sac@cygnus.com */ - dim_index = 0; - if (def_symbol_in_progress == NULL) - { - as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - /* Set the section number according to storage class. */ - switch (S_GET_STORAGE_CLASS (def_symbol_in_progress)) - { - case C_STRTAG: - case C_ENTAG: - case C_UNTAG: - SF_SET_TAG (def_symbol_in_progress); - /* Intentional fallthrough. */ - - case C_FILE: - case C_TPDEF: - SF_SET_DEBUG (def_symbol_in_progress); - S_SET_SEGMENT (def_symbol_in_progress, SEG_DEBUG); - break; - - case C_EFCN: - /* Do not emit this symbol. */ - SF_SET_LOCAL (def_symbol_in_progress); - /* Intentional fallthrough. */ - - case C_BLOCK: - /* Will need processing before writing. */ - SF_SET_PROCESS (def_symbol_in_progress); - /* Intentional fallthrough. */ - - case C_FCN: - S_SET_SEGMENT (def_symbol_in_progress, SEG_E0); - - if (strcmp (S_GET_NAME (def_symbol_in_progress), ".bf") == 0) - { /* .bf */ - if (function_lineoff < 0) - fprintf (stderr, _("`.bf' symbol without preceding function\n")); - - SA_GET_SYM_LNNOPTR (last_line_symbol) = function_lineoff; - - SF_SET_PROCESS (last_line_symbol); - SF_SET_ADJ_LNNOPTR (last_line_symbol); - SF_SET_PROCESS (def_symbol_in_progress); - function_lineoff = -1; - } - - /* Value is always set to . */ - def_symbol_in_progress->sy_frag = frag_now; - S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); - break; - -#ifdef C_AUTOARG - case C_AUTOARG: -#endif /* C_AUTOARG */ - case C_AUTO: - case C_REG: - case C_MOS: - case C_MOE: - case C_MOU: - case C_ARG: - case C_REGPARM: - case C_FIELD: - case C_EOS: - SF_SET_DEBUG (def_symbol_in_progress); - S_SET_SEGMENT (def_symbol_in_progress, absolute_section); - break; - - case C_EXT: - case C_WEAKEXT: -#ifdef TE_PE - case C_NT_WEAK: -#endif - case C_STAT: - case C_LABEL: - /* Valid but set somewhere else (s_comm, s_lcomm, colon). */ - break; - - case C_USTATIC: - case C_EXTDEF: - case C_ULABEL: - as_warn (_("unexpected storage class %d"), S_GET_STORAGE_CLASS (def_symbol_in_progress)); - break; - } - - /* Now that we have built a debug symbol, try to find if we should - merge with an existing symbol or not. If a symbol is C_EFCN or - absolute_section or untagged SEG_DEBUG it never merges. We also - don't merge labels, which are in a different namespace, nor - symbols which have not yet been defined since they are typically - unique, nor do we merge tags with non-tags. */ - - /* Two cases for functions. Either debug followed by definition or - definition followed by debug. For definition first, we will - merge the debug symbol into the definition. For debug first, the - lineno entry MUST point to the definition function or else it - will point off into space when crawl_symbols() merges the debug - symbol into the real symbol. Therefor, let's presume the debug - symbol is a real function reference. */ - - /* FIXME-SOON If for some reason the definition label/symbol is - never seen, this will probably leave an undefined symbol at link - time. */ - - if (S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_EFCN - || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_LABEL - || (S_GET_SEGMENT (def_symbol_in_progress) == SEG_DEBUG - && !SF_GET_TAG (def_symbol_in_progress)) - || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section - || def_symbol_in_progress->sy_value.X_op != O_constant - || (symbolP = symbol_find_base (S_GET_NAME (def_symbol_in_progress), DO_NOT_STRIP)) == NULL - || (SF_GET_TAG (def_symbol_in_progress) != SF_GET_TAG (symbolP))) - { - symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP, - &symbol_lastP); - } - else - { - /* This symbol already exists, merge the newly created symbol - into the old one. This is not mandatory. The linker can - handle duplicate symbols correctly. But I guess that it save - a *lot* of space if the assembly file defines a lot of - symbols. [loic] */ - - /* The debug entry (def_symbol_in_progress) is merged into the - previous definition. */ - - c_symbol_merge (def_symbol_in_progress, symbolP); - /* FIXME-SOON Should *def_symbol_in_progress be free'd? xoxorich. */ - def_symbol_in_progress = symbolP; - - if (SF_GET_FUNCTION (def_symbol_in_progress) - || SF_GET_TAG (def_symbol_in_progress) - || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_STAT) - { - /* For functions, and tags, and static symbols, the symbol - *must* be where the debug symbol appears. Move the - existing symbol to the current place. */ - /* If it already is at the end of the symbol list, do nothing. */ - if (def_symbol_in_progress != symbol_lastP) - { - symbol_remove (def_symbol_in_progress, &symbol_rootP, - &symbol_lastP); - symbol_append (def_symbol_in_progress, symbol_lastP, - &symbol_rootP, &symbol_lastP); - } - } - } - - if (SF_GET_TAG (def_symbol_in_progress)) - { - symbolS *oldtag; - - oldtag = symbol_find_base (S_GET_NAME (def_symbol_in_progress), - DO_NOT_STRIP); - if (oldtag == NULL || ! SF_GET_TAG (oldtag)) - tag_insert (S_GET_NAME (def_symbol_in_progress), - def_symbol_in_progress); - } - - if (SF_GET_FUNCTION (def_symbol_in_progress)) - { - know (sizeof (def_symbol_in_progress) <= sizeof (long)); - function_lineoff - = c_line_new (def_symbol_in_progress, 0, 0, &zero_address_frag); - - SF_SET_PROCESS (def_symbol_in_progress); - - if (symbolP == NULL) - { - /* That is, if this is the first time we've seen the - function... */ - symbol_table_insert (def_symbol_in_progress); - } - } - - def_symbol_in_progress = NULL; - demand_empty_rest_of_line (); -} - -static void -obj_coff_dim (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int dim_index; - - if (def_symbol_in_progress == NULL) - { - as_warn (_(".dim pseudo-op used outside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - - for (dim_index = 0; dim_index < DIMNUM; dim_index++) - { - SKIP_WHITESPACES (); - SA_SET_SYM_DIMEN (def_symbol_in_progress, dim_index, - get_absolute_expression ()); - - switch (*input_line_pointer) - { - case ',': - input_line_pointer++; - break; - - default: - as_warn (_("badly formed .dim directive ignored")); - /* Intentional fallthrough. */ - - case '\n': - case ';': - dim_index = DIMNUM; - break; - } - } - - demand_empty_rest_of_line (); -} - -static void -obj_coff_line (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int this_base; - const char *name; - - if (def_symbol_in_progress == NULL) - { - obj_coff_ln (0); - return; - } - - name = S_GET_NAME (def_symbol_in_progress); - this_base = get_absolute_expression (); - - /* Only .bf symbols indicate the use of a new base line number; the - line numbers associated with .ef, .bb, .eb are relative to the - start of the containing function. */ - if (!strcmp (".bf", name)) - { -#if 0 /* XXX Can we ever have line numbers going backwards? */ - if (this_base > line_base) -#endif - line_base = this_base; - -#ifndef NO_LISTING - { - extern int listing; - if (listing) - listing_source_line ((unsigned int) line_base); - } -#endif - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - SA_SET_SYM_LNNO (def_symbol_in_progress, this_base); - - demand_empty_rest_of_line (); -} - -static void -obj_coff_size (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".size pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - SA_SET_SYM_SIZE (def_symbol_in_progress, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -static void -obj_coff_scl (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".scl pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_STORAGE_CLASS (def_symbol_in_progress, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -static void -obj_coff_tag (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *symbol_name; - char name_end; - - if (def_symbol_in_progress == NULL) - { - as_warn (_(".tag pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - symbol_name = input_line_pointer; - name_end = get_symbol_end (); -#ifdef tc_canonicalize_symbol_name - symbol_name = tc_canonicalize_symbol_name (symbol_name); -#endif - - /* Assume that the symbol referred to by .tag is always defined. - This was a bad assumption. I've added find_or_make. xoxorich. */ - SA_SET_SYM_TAGNDX (def_symbol_in_progress, - (long) tag_find_or_make (symbol_name)); - if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L) - as_warn (_("tag not found for .tag %s"), symbol_name); - - SF_SET_TAGGED (def_symbol_in_progress); - *input_line_pointer = name_end; - - demand_empty_rest_of_line (); -} - -static void -obj_coff_type (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".type pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_DATA_TYPE (def_symbol_in_progress, get_absolute_expression ()); - - if (ISFCN (S_GET_DATA_TYPE (def_symbol_in_progress)) && - S_GET_STORAGE_CLASS (def_symbol_in_progress) != C_TPDEF) - SF_SET_FUNCTION (def_symbol_in_progress); - - demand_empty_rest_of_line (); -} - -static void -obj_coff_val (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".val pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - if (is_name_beginner (*input_line_pointer)) - { - char *symbol_name = input_line_pointer; - char name_end = get_symbol_end (); - -#ifdef tc_canonicalize_symbol_name - symbol_name = tc_canonicalize_symbol_name (symbol_name); -#endif - - if (!strcmp (symbol_name, ".")) - { - def_symbol_in_progress->sy_frag = frag_now; - S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); - /* If the .val is != from the .def (e.g. statics). */ - } - else if (strcmp (S_GET_NAME (def_symbol_in_progress), symbol_name)) - { - def_symbol_in_progress->sy_value.X_op = O_symbol; - def_symbol_in_progress->sy_value.X_add_symbol = - symbol_find_or_make (symbol_name); - def_symbol_in_progress->sy_value.X_op_symbol = NULL; - def_symbol_in_progress->sy_value.X_add_number = 0; - - /* If the segment is undefined when the forward reference is - resolved, then copy the segment id from the forward - symbol. */ - SF_SET_GET_SEGMENT (def_symbol_in_progress); - - /* FIXME: gcc can generate address expressions here in - unusual cases (search for "obscure" in sdbout.c). We - just ignore the offset here, thus generating incorrect - debugging information. We ignore the rest of the line - just below. */ - } - /* Otherwise, it is the name of a non debug symbol and - its value will be calculated later. */ - *input_line_pointer = name_end; - - /* FIXME: this is to avoid an error message in the - FIXME case mentioned just above. */ - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - } - else - { - S_SET_VALUE (def_symbol_in_progress, - (valueT) get_absolute_expression ()); - } /* if symbol based */ - - demand_empty_rest_of_line (); -} - -#ifdef TE_PE - -/* Handle the .linkonce pseudo-op. This is parsed by s_linkonce in - read.c, which then calls this object file format specific routine. */ - -void -obj_coff_pe_handle_link_once (type) - enum linkonce_type type; -{ - seg_info (now_seg)->scnhdr.s_flags |= IMAGE_SCN_LNK_COMDAT; - - /* We store the type in the seg_info structure, and use it to set up - the auxiliary entry for the section symbol in c_section_symbol. */ - seg_info (now_seg)->linkonce = type; -} - -#endif /* TE_PE */ - -void -coff_obj_read_begin_hook () -{ - /* These had better be the same. Usually 18 bytes. */ -#ifndef BFD_HEADERS - know (sizeof (SYMENT) == sizeof (AUXENT)); - know (SYMESZ == AUXESZ); -#endif - tag_init (); -} - -/* This function runs through the symbol table and puts all the - externals onto another chain. */ - -/* The chain of globals. */ -symbolS *symbol_globalP; -symbolS *symbol_global_lastP; - -/* The chain of externals. */ -symbolS *symbol_externP; -symbolS *symbol_extern_lastP; - -stack *block_stack; -symbolS *last_functionP; -static symbolS *last_bfP; -symbolS *last_tagP; - -static unsigned int -yank_symbols () -{ - symbolS *symbolP; - unsigned int symbol_number = 0; - unsigned int last_file_symno = 0; - - struct filename_list *filename_list_scan = filename_list_head; - - for (symbolP = symbol_rootP; - symbolP; - symbolP = symbolP ? symbol_next (symbolP) : symbol_rootP) - { - if (symbolP->sy_mri_common) - { - if (S_GET_STORAGE_CLASS (symbolP) == C_EXT -#ifdef TE_PE - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK -#endif - || S_GET_STORAGE_CLASS (symbolP) == C_WEAKEXT) - as_bad (_("%s: global symbols not supported in common sections"), - S_GET_NAME (symbolP)); - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - continue; - } - - if (!SF_GET_DEBUG (symbolP)) - { - /* Debug symbols do not need all this rubbish. */ - symbolS *real_symbolP; - - /* L* and C_EFCN symbols never merge. */ - if (!SF_GET_LOCAL (symbolP) - && !SF_GET_STATICS (symbolP) - && S_GET_STORAGE_CLASS (symbolP) != C_LABEL - && symbolP->sy_value.X_op == O_constant - && (real_symbolP = symbol_find_base (S_GET_NAME (symbolP), DO_NOT_STRIP)) - && real_symbolP != symbolP) - { - /* FIXME-SOON: where do dups come from? - Maybe tag references before definitions? xoxorich. */ - /* Move the debug data from the debug symbol to the - real symbol. Do NOT do the opposite (i.e. move from - real symbol to debug symbol and remove real symbol from the - list.) Because some pointers refer to the real symbol - whereas no pointers refer to the debug symbol. */ - c_symbol_merge (symbolP, real_symbolP); - /* Replace the current symbol by the real one. */ - /* The symbols will never be the last or the first - because : 1st symbol is .file and 3 last symbols are - .text, .data, .bss. */ - symbol_remove (real_symbolP, &symbol_rootP, &symbol_lastP); - symbol_insert (real_symbolP, symbolP, &symbol_rootP, &symbol_lastP); - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbolP = real_symbolP; - } - - if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_E1)) - S_SET_SEGMENT (symbolP, SEG_E0); - - resolve_symbol_value (symbolP); - - if (S_GET_STORAGE_CLASS (symbolP) == C_NULL) - { - if (!S_IS_DEFINED (symbolP) && !SF_GET_LOCAL (symbolP)) - { - S_SET_EXTERNAL (symbolP); - } - - else if (S_GET_SEGMENT (symbolP) == SEG_E0) - S_SET_STORAGE_CLASS (symbolP, C_LABEL); - - else - S_SET_STORAGE_CLASS (symbolP, C_STAT); - } - - /* Mainly to speed up if not -g. */ - if (SF_GET_PROCESS (symbolP)) - { - /* Handle the nested blocks auxiliary info. */ - if (S_GET_STORAGE_CLASS (symbolP) == C_BLOCK) - { - if (!strcmp (S_GET_NAME (symbolP), ".bb")) - stack_push (block_stack, (char *) &symbolP); - else - { - /* .eb */ - symbolS *begin_symbolP; - - begin_symbolP = *(symbolS **) stack_pop (block_stack); - if (begin_symbolP == (symbolS *) 0) - as_warn (_("mismatched .eb")); - else - SA_SET_SYM_ENDNDX (begin_symbolP, symbol_number + 2); - } - } - /* If we are able to identify the type of a function, and we - are out of a function (last_functionP == 0) then, the - function symbol will be associated with an auxiliary - entry. */ - if (last_functionP == (symbolS *) 0 && - SF_GET_FUNCTION (symbolP)) - { - last_functionP = symbolP; - - if (S_GET_NUMBER_AUXILIARY (symbolP) < 1) - S_SET_NUMBER_AUXILIARY (symbolP, 1); - - /* Clobber possible stale .dim information. */ -#if 0 - /* Iffed out by steve - this fries the lnnoptr info too. */ - bzero (symbolP->sy_symbol.ost_auxent[0].x_sym.x_fcnary.x_ary.x_dimen, - sizeof (symbolP->sy_symbol.ost_auxent[0].x_sym.x_fcnary.x_ary.x_dimen)); -#endif - } - if (S_GET_STORAGE_CLASS (symbolP) == C_FCN) - { - if (strcmp (S_GET_NAME (symbolP), ".bf") == 0) - { - if (last_bfP != NULL) - SA_SET_SYM_ENDNDX (last_bfP, symbol_number); - last_bfP = symbolP; - } - } - else if (S_GET_STORAGE_CLASS (symbolP) == C_EFCN) - { - /* I don't even know if this is needed for sdb. But - the standard assembler generates it, so... */ - if (last_functionP == (symbolS *) 0) - as_fatal (_("C_EFCN symbol out of scope")); - SA_SET_SYM_FSIZE (last_functionP, - (long) (S_GET_VALUE (symbolP) - - S_GET_VALUE (last_functionP))); - SA_SET_SYM_ENDNDX (last_functionP, symbol_number); - last_functionP = (symbolS *) 0; - } - } - } - else if (SF_GET_TAG (symbolP)) - { - /* First descriptor of a structure must point to - the first slot after the structure description. */ - last_tagP = symbolP; - - } - else if (S_GET_STORAGE_CLASS (symbolP) == C_EOS) - { - /* +2 take in account the current symbol. */ - SA_SET_SYM_ENDNDX (last_tagP, symbol_number + 2); - } - else if (S_GET_STORAGE_CLASS (symbolP) == C_FILE) - { - /* If the filename was too long to fit in the - auxent, put it in the string table. */ - if (SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 - && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) - { - SA_SET_FILE_FNAME_OFFSET (symbolP, string_byte_count); - string_byte_count += strlen (filename_list_scan->filename) + 1; - filename_list_scan = filename_list_scan->next; - } - if (S_GET_VALUE (symbolP)) - { - S_SET_VALUE (symbolP, last_file_symno); - last_file_symno = symbol_number; - } - } - -#ifdef tc_frob_coff_symbol - tc_frob_coff_symbol (symbolP); -#endif - - /* We must put the external symbols apart. The loader - does not bomb if we do not. But the references in - the endndx field for a .bb symbol are not corrected - if an external symbol is removed between .bb and .be. - I.e in the following case : - [20] .bb endndx = 22 - [21] foo external - [22] .be - ld will move the symbol 21 to the end of the list but - endndx will still be 22 instead of 21. */ - - if (SF_GET_LOCAL (symbolP)) - { - /* Remove C_EFCN and LOCAL (L...) symbols. */ - /* Next pointer remains valid. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - - } - else if (symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP))) - { - /* Skip symbols which were equated to undefined or common - symbols. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - } - else if (!S_IS_DEFINED (symbolP) - && !S_IS_DEBUG (symbolP) - && !SF_GET_STATICS (symbolP) - && (S_GET_STORAGE_CLASS (symbolP) == C_EXT -#ifdef TE_PE - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK -#endif - || S_GET_STORAGE_CLASS (symbolP) == C_WEAKEXT)) - { - /* If external, Remove from the list. */ - symbolS *hold = symbol_previous (symbolP); - - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_clear_list_pointers (symbolP); - symbol_append (symbolP, symbol_extern_lastP, &symbol_externP, &symbol_extern_lastP); - symbolP = hold; - } - else if (! S_IS_DEBUG (symbolP) - && ! SF_GET_STATICS (symbolP) - && ! SF_GET_FUNCTION (symbolP) - && (S_GET_STORAGE_CLASS (symbolP) == C_EXT -#ifdef TE_PE - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK -#endif - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK)) - { - symbolS *hold = symbol_previous (symbolP); - - /* The O'Reilly COFF book says that defined global symbols - come at the end of the symbol table, just before - undefined global symbols. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_clear_list_pointers (symbolP); - symbol_append (symbolP, symbol_global_lastP, &symbol_globalP, - &symbol_global_lastP); - symbolP = hold; - } - else - { - if (SF_GET_STRING (symbolP)) - { - symbolP->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (symbolP)) + 1; - } - else - { - symbolP->sy_name_offset = 0; - } - - symbolP->sy_number = symbol_number; - symbol_number += 1 + S_GET_NUMBER_AUXILIARY (symbolP); - } - } - - return symbol_number; -} - -static unsigned int -glue_symbols (head, tail) - symbolS **head; - symbolS **tail; -{ - unsigned int symbol_number = 0; - - while (*head != NULL) - { - symbolS *tmp = *head; - - /* Append. */ - symbol_remove (tmp, head, tail); - symbol_append (tmp, symbol_lastP, &symbol_rootP, &symbol_lastP); - - /* Process. */ - if (SF_GET_STRING (tmp)) - { - tmp->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (tmp)) + 1; - } - else - { - /* Fix "long" names. */ - tmp->sy_name_offset = 0; - } - - tmp->sy_number = symbol_number; - symbol_number += 1 + S_GET_NUMBER_AUXILIARY (tmp); - } - - return symbol_number; -} - -static unsigned int -tie_tags () -{ - unsigned int symbol_number = 0; - symbolS *symbolP; - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - symbolP->sy_number = symbol_number; - - if (SF_GET_TAGGED (symbolP)) - { - SA_SET_SYM_TAGNDX - (symbolP, - ((symbolS *) SA_GET_SYM_TAGNDX (symbolP))->sy_number); - } - - symbol_number += 1 + S_GET_NUMBER_AUXILIARY (symbolP); - } - - return symbol_number; -} - - -static void -crawl_symbols (h, abfd) - object_headers *h; - bfd *abfd ATTRIBUTE_UNUSED; -{ - unsigned int i; - - /* Initialize the stack used to keep track of the matching .bb .be. */ - - block_stack = stack_init (512, sizeof (symbolS *)); - - /* The symbol list should be ordered according to the following sequence - order : - . .file symbol - . debug entries for functions - . fake symbols for the sections, including .text .data and .bss - . defined symbols - . undefined symbols - But this is not mandatory. The only important point is to put the - undefined symbols at the end of the list. */ - - /* Is there a .file symbol ? If not insert one at the beginning. */ - if (symbol_rootP == NULL - || S_GET_STORAGE_CLASS (symbol_rootP) != C_FILE) - c_dot_file_symbol ("fake"); - - /* Build up static symbols for the sections, they are filled in later. */ - - for (i = SEG_E0; i < SEG_LAST; i++) - if (segment_info[i].scnhdr.s_name[0]) - segment_info[i].dot = c_section_symbol ((char *) segment_info[i].name, - i - SEG_E0 + 1); - - /* Take all the externals out and put them into another chain. */ - H_SET_SYMBOL_TABLE_SIZE (h, yank_symbols ()); - /* Take the externals and glue them onto the end. */ - H_SET_SYMBOL_TABLE_SIZE (h, - (H_GET_SYMBOL_COUNT (h) - + glue_symbols (&symbol_globalP, - &symbol_global_lastP) - + glue_symbols (&symbol_externP, - &symbol_extern_lastP))); - - H_SET_SYMBOL_TABLE_SIZE (h, tie_tags ()); - know (symbol_globalP == NULL); - know (symbol_global_lastP == NULL); - know (symbol_externP == NULL); - know (symbol_extern_lastP == NULL); -} - -/* Find strings by crawling along symbol table chain. */ - -void -w_strings (where) - char *where; -{ - symbolS *symbolP; - struct filename_list *filename_list_scan = filename_list_head; - - /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK. */ - md_number_to_chars (where, (valueT) string_byte_count, 4); - where += 4; - -#ifdef COFF_LONG_SECTION_NAMES - /* Support long section names as found in PE. This code must - coordinate with that in coff_header_append and write_object_file. */ - { - unsigned int i; - - for (i = SEG_E0; i < SEG_LAST; i++) - { - if (segment_info[i].scnhdr.s_name[0] - && strlen (segment_info[i].name) > SCNNMLEN) - { - unsigned int size; - - size = strlen (segment_info[i].name) + 1; - memcpy (where, segment_info[i].name, size); - where += size; - } - } - } -#endif /* COFF_LONG_SECTION_NAMES */ - - for (symbolP = symbol_rootP; - symbolP; - symbolP = symbol_next (symbolP)) - { - unsigned int size; - - if (SF_GET_STRING (symbolP)) - { - size = strlen (S_GET_NAME (symbolP)) + 1; - memcpy (where, S_GET_NAME (symbolP), size); - where += size; - } - if (S_GET_STORAGE_CLASS (symbolP) == C_FILE - && SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 - && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) - { - size = strlen (filename_list_scan->filename) + 1; - memcpy (where, filename_list_scan->filename, size); - filename_list_scan = filename_list_scan ->next; - where += size; - } - } -} - -static void -do_linenos_for (abfd, h, file_cursor) - bfd * abfd; - object_headers * h; - unsigned long *file_cursor; -{ - unsigned int idx; - unsigned long start = *file_cursor; - - for (idx = SEG_E0; idx < SEG_LAST; idx++) - { - segment_info_type *s = segment_info + idx; - - if (s->scnhdr.s_nlnno != 0) - { - struct lineno_list *line_ptr; - - struct external_lineno *buffer = - (struct external_lineno *) xmalloc (s->scnhdr.s_nlnno * LINESZ); - - struct external_lineno *dst = buffer; - - /* Run through the table we've built and turn it into its external - form, take this chance to remove duplicates. */ - - for (line_ptr = s->lineno_list_head; - line_ptr != (struct lineno_list *) NULL; - line_ptr = line_ptr->next) - { - if (line_ptr->line.l_lnno == 0) - { - /* Turn a pointer to a symbol into the symbols' index, - provided that it has been initialised. */ - if (line_ptr->line.l_addr.l_symndx) - line_ptr->line.l_addr.l_symndx = - ((symbolS *) line_ptr->line.l_addr.l_symndx)->sy_number; - } - else - line_ptr->line.l_addr.l_paddr += ((struct frag *) (line_ptr->frag))->fr_address; - - (void) bfd_coff_swap_lineno_out (abfd, &(line_ptr->line), dst); - dst++; - } - - s->scnhdr.s_lnnoptr = *file_cursor; - - bfd_bwrite (buffer, (bfd_size_type) s->scnhdr.s_nlnno * LINESZ, abfd); - free (buffer); - - *file_cursor += s->scnhdr.s_nlnno * LINESZ; - } - } - - H_SET_LINENO_SIZE (h, *file_cursor - start); -} - -/* Now we run through the list of frag chains in a segment and - make all the subsegment frags appear at the end of the - list, as if the seg 0 was extra long. */ - -static void -remove_subsegs () -{ - unsigned int i; - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - frchainS *head = segment_info[i].frchainP; - fragS dummy; - fragS *prev_frag = &dummy; - - while (head && head->frch_seg == i) - { - prev_frag->fr_next = head->frch_root; - prev_frag = head->frch_last; - head = head->frch_next; - } - prev_frag->fr_next = 0; - } -} - -unsigned long machine; -int coff_flags; - -#ifndef SUB_SEGMENT_ALIGN -#ifdef HANDLE_ALIGN -/* The last subsegment gets an alignment corresponding to the alignment - of the section. This allows proper nop-filling at the end of - code-bearing sections. */ -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ - (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ - ? get_recorded_alignment (SEG) : 0) -#else -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 1 -#endif -#endif - -extern void -write_object_file () -{ - int i; - const char *name; - struct frchain *frchain_ptr; - - object_headers headers; - unsigned long file_cursor; - bfd *abfd; - unsigned int addr; - abfd = bfd_openw (out_file_name, TARGET_FORMAT); - - if (abfd == 0) - { - as_perror (_("FATAL: Can't create %s"), out_file_name); - exit (EXIT_FAILURE); - } - bfd_set_format (abfd, bfd_object); - bfd_set_arch_mach (abfd, BFD_ARCH, machine); - - string_byte_count = 4; - - /* Run through all the sub-segments and align them up. Also - close any open frags. We tack a .fill onto the end of the - frag chain so that any .align's size can be worked by looking - at the next frag. */ - for (frchain_ptr = frchain_root; - frchain_ptr != (struct frchain *) NULL; - frchain_ptr = frchain_ptr->frch_next) - { - int alignment; - - subseg_set (frchain_ptr->frch_seg, frchain_ptr->frch_subseg); - - alignment = SUB_SEGMENT_ALIGN (now_seg, frchain_ptr); - -#ifdef md_do_align - md_do_align (alignment, (char *) NULL, 0, 0, alignment_done); -#endif - if (subseg_text_p (now_seg)) - frag_align_code (alignment, 0); - else - frag_align (alignment, 0, 0); - -#ifdef md_do_align - alignment_done: -#endif - - frag_wane (frag_now); - frag_now->fr_fix = 0; - know (frag_now->fr_next == NULL); - } - - remove_subsegs (); - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - relax_segment (segment_info[i].frchainP->frch_root, i); - - /* Relaxation has completed. Freeze all syms. */ - finalize_syms = 1; - - H_SET_NUMBER_OF_SECTIONS (&headers, 0); - - /* Find out how big the sections are, and set the addresses. */ - addr = 0; - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - long size; - - segment_info[i].scnhdr.s_paddr = addr; - segment_info[i].scnhdr.s_vaddr = addr; - - if (segment_info[i].scnhdr.s_name[0]) - { - H_SET_NUMBER_OF_SECTIONS (&headers, - H_GET_NUMBER_OF_SECTIONS (&headers) + 1); - -#ifdef COFF_LONG_SECTION_NAMES - /* Support long section names as found in PE. This code - must coordinate with that in coff_header_append and - w_strings. */ - { - unsigned int len; - - len = strlen (segment_info[i].name); - if (len > SCNNMLEN) - string_byte_count += len + 1; - } -#endif /* COFF_LONG_SECTION_NAMES */ - } - - size = size_section (abfd, (unsigned int) i); - addr += size; - - /* I think the section alignment is only used on the i960; the - i960 needs it, and it should do no harm on other targets. */ -#ifdef ALIGNMENT_IN_S_FLAGS - segment_info[i].scnhdr.s_flags |= (section_alignment[i] & 0xF) << 8; -#else - segment_info[i].scnhdr.s_align = 1 << section_alignment[i]; -#endif - - if (i == SEG_E0) - H_SET_TEXT_SIZE (&headers, size); - else if (i == SEG_E1) - H_SET_DATA_SIZE (&headers, size); - else if (i == SEG_E2) - H_SET_BSS_SIZE (&headers, size); - } - - /* Turn the gas native symbol table shape into a coff symbol table. */ - crawl_symbols (&headers, abfd); - - if (string_byte_count == 4) - string_byte_count = 0; - - H_SET_STRING_SIZE (&headers, string_byte_count); - -#ifdef tc_frob_file - tc_frob_file (); -#endif - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - fixup_mdeps (segment_info[i].frchainP->frch_root, &headers, i); - fixup_segment (&segment_info[i], i); - } - - /* Look for ".stab" segments and fill in their initial symbols - correctly. */ - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - name = segment_info[i].name; - - if (name != NULL - && strncmp (".stab", name, 5) == 0 - && strncmp (".stabstr", name, 8) != 0) - adjust_stab_section (abfd, i); - } - - file_cursor = H_GET_TEXT_FILE_OFFSET (&headers); - - bfd_seek (abfd, (file_ptr) file_cursor, 0); - - /* Plant the data. */ - fill_section (abfd, &headers, &file_cursor); - - do_relocs_for (abfd, &headers, &file_cursor); - - do_linenos_for (abfd, &headers, &file_cursor); - - H_SET_FILE_MAGIC_NUMBER (&headers, COFF_MAGIC); -#ifndef OBJ_COFF_OMIT_TIMESTAMP - H_SET_TIME_STAMP (&headers, (long)time((time_t *)0)); -#else - H_SET_TIME_STAMP (&headers, 0); -#endif -#ifdef TC_COFF_SET_MACHINE - TC_COFF_SET_MACHINE (&headers); -#endif - -#ifndef COFF_FLAGS -#define COFF_FLAGS 0 -#endif - -#ifdef KEEP_RELOC_INFO - H_SET_FLAGS (&headers, ((H_GET_LINENO_SIZE(&headers) ? 0 : F_LNNO) | - COFF_FLAGS | coff_flags)); -#else - H_SET_FLAGS (&headers, ((H_GET_LINENO_SIZE(&headers) ? 0 : F_LNNO) | - (H_GET_RELOCATION_SIZE(&headers) ? 0 : F_RELFLG) | - COFF_FLAGS | coff_flags)); -#endif - - { - unsigned int symtable_size = H_GET_SYMBOL_TABLE_SIZE (&headers); - char *buffer1 = xmalloc (symtable_size + string_byte_count + 1); - - H_SET_SYMBOL_TABLE_POINTER (&headers, bfd_tell (abfd)); - w_symbols (abfd, buffer1, symbol_rootP); - if (string_byte_count > 0) - w_strings (buffer1 + symtable_size); - bfd_bwrite (buffer1, (bfd_size_type) symtable_size + string_byte_count, - abfd); - free (buffer1); - } - - coff_header_append (abfd, &headers); -#if 0 - /* Recent changes to write need this, but where it should - go is up to Ken.. */ - if (!bfd_close_all_done (abfd)) - as_fatal (_("Can't close %s: %s"), out_file_name, - bfd_errmsg (bfd_get_error ())); -#else - { - extern bfd *stdoutput; - stdoutput = abfd; - } -#endif - -} - -/* Add a new segment. This is called from subseg_new via the - obj_new_segment macro. */ - -segT -obj_coff_add_segment (name) - const char *name; -{ - unsigned int i; - -#ifndef COFF_LONG_SECTION_NAMES - char buf[SCNNMLEN + 1]; - - strncpy (buf, name, SCNNMLEN); - buf[SCNNMLEN] = '\0'; - name = buf; -#endif - - for (i = SEG_E0; i < SEG_LAST && segment_info[i].scnhdr.s_name[0]; i++) - if (strcmp (name, segment_info[i].name) == 0) - return (segT) i; - - if (i == SEG_LAST) - { - as_bad (_("Too many new sections; can't add \"%s\""), name); - return now_seg; - } - - /* Add a new section. */ - strncpy (segment_info[i].scnhdr.s_name, name, - sizeof (segment_info[i].scnhdr.s_name)); - segment_info[i].scnhdr.s_flags = STYP_REG; - segment_info[i].name = xstrdup (name); - - return (segT) i; -} - -/* Implement the .section pseudo op: - .section name {, "flags"} - ^ ^ - | +--- optional flags: 'b' for bss - | 'i' for info - +-- section name 'l' for lib - 'n' for noload - 'o' for over - 'w' for data - 'd' (apparently m88k for data) - 'x' for text - 'r' for read-only data - But if the argument is not a quoted string, treat it as a - subsegment number. */ - -void -obj_coff_section (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* Strip out the section name. */ - char *section_name, *name; - char c; - unsigned int exp; - long flags; - - if (flag_mri) - { - char type; - - s_mri_sect (&type); - flags = 0; - if (type == 'C') - flags = STYP_TEXT; - else if (type == 'D') - flags = STYP_DATA; - segment_info[now_seg].scnhdr.s_flags |= flags; - - return; - } - - section_name = input_line_pointer; - c = get_symbol_end (); - - name = xmalloc (input_line_pointer - section_name + 1); - strcpy (name, section_name); - - *input_line_pointer = c; - - exp = 0; - flags = 0; - - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - { - ++input_line_pointer; - SKIP_WHITESPACE (); - - if (*input_line_pointer != '"') - exp = get_absolute_expression (); - else - { - ++input_line_pointer; - while (*input_line_pointer != '"' - && ! is_end_of_line[(unsigned char) *input_line_pointer]) - { - switch (*input_line_pointer) - { - case 'b': flags |= STYP_BSS; break; - case 'i': flags |= STYP_INFO; break; - case 'l': flags |= STYP_LIB; break; - case 'n': flags |= STYP_NOLOAD; break; - case 'o': flags |= STYP_OVER; break; - case 'd': - case 'w': flags |= STYP_DATA; break; - case 'x': flags |= STYP_TEXT; break; - case 'r': flags |= STYP_LIT; break; - default: - as_warn(_("unknown section attribute '%c'"), - *input_line_pointer); - break; - } - ++input_line_pointer; - } - if (*input_line_pointer == '"') - ++input_line_pointer; - } - } - - subseg_new (name, (subsegT) exp); - - segment_info[now_seg].scnhdr.s_flags |= flags; - - demand_empty_rest_of_line (); -} - -static void -obj_coff_text (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - subseg_new (".text", get_absolute_expression ()); -} - -static void -obj_coff_data (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (flag_readonly_data_in_text) - subseg_new (".text", get_absolute_expression () + 1000); - else - subseg_new (".data", get_absolute_expression ()); -} - -static void -obj_coff_ident (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - segT current_seg = now_seg; /* Save current seg. */ - subsegT current_subseg = now_subseg; - - subseg_new (".comment", 0); /* .comment seg. */ - stringer (1); /* Read string. */ - subseg_set (current_seg, current_subseg); /* Restore current seg. */ -} - -void -c_symbol_merge (debug, normal) - symbolS *debug; - symbolS *normal; -{ - S_SET_DATA_TYPE (normal, S_GET_DATA_TYPE (debug)); - S_SET_STORAGE_CLASS (normal, S_GET_STORAGE_CLASS (debug)); - - if (S_GET_NUMBER_AUXILIARY (debug) > S_GET_NUMBER_AUXILIARY (normal)) - S_SET_NUMBER_AUXILIARY (normal, S_GET_NUMBER_AUXILIARY (debug)); - - if (S_GET_NUMBER_AUXILIARY (debug) > 0) - memcpy ((char *) &normal->sy_symbol.ost_auxent[0], - (char *) &debug->sy_symbol.ost_auxent[0], - (unsigned int) (S_GET_NUMBER_AUXILIARY (debug) * AUXESZ)); - - /* Move the debug flags. */ - SF_SET_DEBUG_FIELD (normal, SF_GET_DEBUG_FIELD (debug)); -} - -static int -c_line_new (symbol, paddr, line_number, frag) - symbolS * symbol; - long paddr; - int line_number; - fragS * frag; -{ - struct lineno_list *new_line = - (struct lineno_list *) xmalloc (sizeof (struct lineno_list)); - - segment_info_type *s = segment_info + now_seg; - new_line->line.l_lnno = line_number; - - if (line_number == 0) - { - last_line_symbol = symbol; - new_line->line.l_addr.l_symndx = (long) symbol; - } - else - { - new_line->line.l_addr.l_paddr = paddr; - } - - new_line->frag = (char *) frag; - new_line->next = (struct lineno_list *) NULL; - - if (s->lineno_list_head == (struct lineno_list *) NULL) - s->lineno_list_head = new_line; - else - s->lineno_list_tail->next = new_line; - - s->lineno_list_tail = new_line; - return LINESZ * s->scnhdr.s_nlnno++; -} - -void -c_dot_file_symbol (filename) - char *filename; -{ - symbolS *symbolP; - - symbolP = symbol_new (".file", - SEG_DEBUG, - 0, - &zero_address_frag); - - S_SET_STORAGE_CLASS (symbolP, C_FILE); - S_SET_NUMBER_AUXILIARY (symbolP, 1); - - if (strlen (filename) > FILNMLEN) - { - /* Filename is too long to fit into an auxent, - we stick it into the string table instead. We keep - a linked list of the filenames we find so we can emit - them later. */ - struct filename_list *f = ((struct filename_list *) - xmalloc (sizeof (struct filename_list))); - - f->filename = filename; - f->next = 0; - - SA_SET_FILE_FNAME_ZEROS (symbolP, 0); - SA_SET_FILE_FNAME_OFFSET (symbolP, 1); - - if (filename_list_tail) - filename_list_tail->next = f; - else - filename_list_head = f; - filename_list_tail = f; - } - else - { - SA_SET_FILE_FNAME (symbolP, filename); - } -#ifndef NO_LISTING - { - extern int listing; - if (listing) - listing_source_file (filename); - } -#endif - SF_SET_DEBUG (symbolP); - S_SET_VALUE (symbolP, (valueT) previous_file_symbol); - - previous_file_symbol = symbolP; - - /* Make sure that the symbol is first on the symbol chain. */ - if (symbol_rootP != symbolP) - { - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_insert (symbolP, symbol_rootP, &symbol_rootP, &symbol_lastP); - } -} - -/* Build a 'section static' symbol. */ - -symbolS * -c_section_symbol (name, idx) - char *name; - int idx; -{ - symbolS *symbolP; - - symbolP = symbol_find_base (name, DO_NOT_STRIP); - if (symbolP == NULL) - symbolP = symbol_new (name, idx, 0, &zero_address_frag); - else - { - /* Mmmm. I just love violating interfaces. Makes me feel...dirty. */ - S_SET_SEGMENT (symbolP, idx); - symbolP->sy_frag = &zero_address_frag; - } - - S_SET_STORAGE_CLASS (symbolP, C_STAT); - S_SET_NUMBER_AUXILIARY (symbolP, 1); - - SF_SET_STATICS (symbolP); - -#ifdef TE_DELTA - /* manfred@s-direktnet.de: section symbols *must* have the LOCAL bit cleared, - which is set by the new definition of LOCAL_LABEL in tc-m68k.h. */ - SF_CLEAR_LOCAL (symbolP); -#endif -#ifdef TE_PE - /* If the .linkonce pseudo-op was used for this section, we must - store the information in the auxiliary entry for the section - symbol. */ - if (segment_info[idx].linkonce != LINKONCE_UNSET) - { - int type; - - switch (segment_info[idx].linkonce) - { - default: - abort (); - case LINKONCE_DISCARD: - type = IMAGE_COMDAT_SELECT_ANY; - break; - case LINKONCE_ONE_ONLY: - type = IMAGE_COMDAT_SELECT_NODUPLICATES; - break; - case LINKONCE_SAME_SIZE: - type = IMAGE_COMDAT_SELECT_SAME_SIZE; - break; - case LINKONCE_SAME_CONTENTS: - type = IMAGE_COMDAT_SELECT_EXACT_MATCH; - break; - } - - SYM_AUXENT (symbolP)->x_scn.x_comdat = type; - } -#endif /* TE_PE */ - - return symbolP; -} - -static void -w_symbols (abfd, where, symbol_rootP) - bfd * abfd; - char *where; - symbolS * symbol_rootP; -{ - symbolS *symbolP; - unsigned int i; - - /* First fill in those values we have only just worked out. */ - for (i = SEG_E0; i < SEG_LAST; i++) - { - symbolP = segment_info[i].dot; - if (symbolP) - { - SA_SET_SCN_SCNLEN (symbolP, segment_info[i].scnhdr.s_size); - SA_SET_SCN_NRELOC (symbolP, segment_info[i].scnhdr.s_nreloc); - SA_SET_SCN_NLINNO (symbolP, segment_info[i].scnhdr.s_nlnno); - } - } - - /* Emit all symbols left in the symbol chain. */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Used to save the offset of the name. It is used to point - to the string in memory but must be a file offset. */ - char *temp; - - /* We can't fix the lnnoptr field in yank_symbols with the other - adjustments, because we have to wait until we know where they - go in the file. */ - if (SF_GET_ADJ_LNNOPTR (symbolP)) - SA_GET_SYM_LNNOPTR (symbolP) += - segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_lnnoptr; - - tc_coff_symbol_emit_hook (symbolP); - - temp = S_GET_NAME (symbolP); - if (SF_GET_STRING (symbolP)) - { - S_SET_OFFSET (symbolP, symbolP->sy_name_offset); - S_SET_ZEROES (symbolP, 0); - } - else - { - memset (symbolP->sy_symbol.ost_entry.n_name, 0, SYMNMLEN); - strncpy (symbolP->sy_symbol.ost_entry.n_name, temp, SYMNMLEN); - } - where = symbol_to_chars (abfd, where, symbolP); - S_SET_NAME (symbolP, temp); - } -} - -static void -obj_coff_lcomm (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - s_lcomm(0); - return; -#if 0 - char *name; - char c; - int temp; - char *p; - - symbolS *symbolP; - - name = input_line_pointer; - - c = get_symbol_end (); - p = input_line_pointer; - *p = c; - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - as_bad (_("Expected comma after name")); - ignore_rest_of_line (); - return; - } - if (*input_line_pointer == '\n') - { - as_bad (_("Missing size expression")); - return; - } - input_line_pointer++; - if ((temp = get_absolute_expression ()) < 0) - { - as_warn (_("lcomm length (%d.) <0! Ignored."), temp); - ignore_rest_of_line (); - return; - } - *p = 0; - - symbolP = symbol_find_or_make (name); - - if (S_GET_SEGMENT (symbolP) == SEG_UNKNOWN && - S_GET_VALUE (symbolP) == 0) - { - if (! need_pass_2) - { - char *p; - segT current_seg = now_seg; /* Save current seg. */ - subsegT current_subseg = now_subseg; - - subseg_set (SEG_E2, 1); - symbolP->sy_frag = frag_now; - p = frag_var(rs_org, 1, 1, (relax_substateT)0, symbolP, - (offsetT) temp, (char *) 0); - *p = 0; - subseg_set (current_seg, current_subseg); /* Restore current seg. */ - S_SET_SEGMENT (symbolP, SEG_E2); - S_SET_STORAGE_CLASS (symbolP, C_STAT); - } - } - else - as_bad (_("Symbol %s already defined"), name); - - demand_empty_rest_of_line (); -#endif -} - -static void -fixup_mdeps (frags, h, this_segment) - fragS *frags; - object_headers *h ATTRIBUTE_UNUSED; - segT this_segment; -{ - subseg_change (this_segment, 0); - - while (frags) - { - switch (frags->fr_type) - { - case rs_align: - case rs_align_code: - case rs_align_test: - case rs_org: -#ifdef HANDLE_ALIGN - HANDLE_ALIGN (frags); -#endif - frags->fr_type = rs_fill; - frags->fr_offset = - ((frags->fr_next->fr_address - frags->fr_address - frags->fr_fix) - / frags->fr_var); - break; - case rs_machine_dependent: - md_convert_frag (h, this_segment, frags); - frag_wane (frags); - break; - default: - ; - } - frags = frags->fr_next; - } -} - -#if 1 - -#ifndef TC_FORCE_RELOCATION -#define TC_FORCE_RELOCATION(fix) 0 -#endif - -static void -fixup_segment (segP, this_segment_type) - segment_info_type * segP; - segT this_segment_type; -{ - fixS * fixP; - symbolS *add_symbolP; - symbolS *sub_symbolP; - long add_number; - int size; - char *place; - long where; - char pcrel; - fragS *fragP; - segT add_symbol_segment = absolute_section; - - for (fixP = segP->fix_root; fixP; fixP = fixP->fx_next) - { - fragP = fixP->fx_frag; - know (fragP); - where = fixP->fx_where; - place = fragP->fr_literal + where; - size = fixP->fx_size; - add_symbolP = fixP->fx_addsy; - sub_symbolP = fixP->fx_subsy; - add_number = fixP->fx_offset; - pcrel = fixP->fx_pcrel; - - /* We want function-relative stabs to work on systems which - may use a relaxing linker; thus we must handle the sym1-sym2 - fixups function-relative stabs generates. - - Of course, if you actually enable relaxing in the linker, the - line and block scoping information is going to be incorrect - in some cases. The only way to really fix this is to support - a reloc involving the difference of two symbols. */ - if (linkrelax - && (!sub_symbolP || pcrel)) - continue; - -#ifdef TC_I960 - if (fixP->fx_tcbit && SF_GET_CALLNAME (add_symbolP)) - { - /* Relocation should be done via the associated 'bal' entry - point symbol. */ - - if (!SF_GET_BALNAME (tc_get_bal_of_call (add_symbolP))) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("No 'bal' entry point for leafproc %s"), - S_GET_NAME (add_symbolP)); - continue; - } - fixP->fx_addsy = add_symbolP = tc_get_bal_of_call (add_symbolP); - } -#endif - - /* Make sure the symbols have been resolved; this may not have - happened if these are expression symbols. */ - if (add_symbolP != NULL && ! add_symbolP->sy_resolved) - resolve_symbol_value (add_symbolP); - - if (add_symbolP != NULL) - { - /* If this fixup is against a symbol which has been equated - to another symbol, convert it to the other symbol. */ - if (add_symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (add_symbolP) - || S_IS_COMMON (add_symbolP))) - { - while (add_symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (add_symbolP) - || S_IS_COMMON (add_symbolP))) - { - symbolS *n; - - /* We must avoid looping, as that can occur with a - badly written program. */ - n = add_symbolP->sy_value.X_add_symbol; - if (n == add_symbolP) - break; - add_number += add_symbolP->sy_value.X_add_number; - add_symbolP = n; - } - fixP->fx_addsy = add_symbolP; - fixP->fx_offset = add_number; - } - } - - if (sub_symbolP != NULL && ! sub_symbolP->sy_resolved) - resolve_symbol_value (sub_symbolP); - - if (add_symbolP != NULL - && add_symbolP->sy_mri_common) - { - know (add_symbolP->sy_value.X_op == O_symbol); - add_number += S_GET_VALUE (add_symbolP); - fixP->fx_offset = add_number; - add_symbolP = fixP->fx_addsy = add_symbolP->sy_value.X_add_symbol; - } - - if (add_symbolP) - add_symbol_segment = S_GET_SEGMENT (add_symbolP); - - if (sub_symbolP) - { - if (add_symbolP == NULL || add_symbol_segment == absolute_section) - { - if (add_symbolP != NULL) - { - add_number += S_GET_VALUE (add_symbolP); - add_symbolP = NULL; - fixP->fx_addsy = NULL; - } - - /* It's just -sym. */ - if (S_GET_SEGMENT (sub_symbolP) == absolute_section) - { - add_number -= S_GET_VALUE (sub_symbolP); - fixP->fx_subsy = 0; - fixP->fx_done = 1; - } - else - { -#ifndef TC_M68K - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Negative of non-absolute symbol %s"), - S_GET_NAME (sub_symbolP)); -#endif - add_number -= S_GET_VALUE (sub_symbolP); - } /* not absolute */ - - /* if sub_symbol is in the same segment that add_symbol - and add_symbol is either in DATA, TEXT, BSS or ABSOLUTE. */ - } - else if (S_GET_SEGMENT (sub_symbolP) == add_symbol_segment - && SEG_NORMAL (add_symbol_segment)) - { - /* Difference of 2 symbols from same segment. Can't - make difference of 2 undefineds: 'value' means - something different for N_UNDF. */ -#ifdef TC_I960 - /* Makes no sense to use the difference of 2 arbitrary symbols - as the target of a call instruction. */ - if (fixP->fx_tcbit) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("callj to difference of 2 symbols")); -#endif /* TC_I960 */ - add_number += S_GET_VALUE (add_symbolP) - - S_GET_VALUE (sub_symbolP); - add_symbolP = NULL; - - if (!TC_FORCE_RELOCATION (fixP)) - { - fixP->fx_addsy = NULL; - fixP->fx_subsy = NULL; - fixP->fx_done = 1; -#ifdef TC_M68K /* is this right? */ - pcrel = 0; - fixP->fx_pcrel = 0; -#endif - } - } - else - { - /* Different segments in subtraction. */ - know (!(S_IS_EXTERNAL (sub_symbolP) && (S_GET_SEGMENT (sub_symbolP) == absolute_section))); - - if ((S_GET_SEGMENT (sub_symbolP) == absolute_section)) - add_number -= S_GET_VALUE (sub_symbolP); - -#ifdef DIFF_EXPR_OK - else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type -#if 0 /* Okay for 68k, at least... */ - && !pcrel -#endif - ) - { - /* Make it pc-relative. */ - add_number += (md_pcrel_from (fixP) - - S_GET_VALUE (sub_symbolP)); - pcrel = 1; - fixP->fx_pcrel = 1; - sub_symbolP = 0; - fixP->fx_subsy = 0; - } -#endif - else - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."), - segment_name (S_GET_SEGMENT (sub_symbolP)), - S_GET_NAME (sub_symbolP), - (long) (fragP->fr_address + where)); - } - } - } - - if (add_symbolP) - { - if (add_symbol_segment == this_segment_type && pcrel) - { - /* This fixup was made when the symbol's segment was - SEG_UNKNOWN, but it is now in the local segment. - So we know how to do the address without relocation. */ -#ifdef TC_I960 - /* reloc_callj() may replace a 'call' with a 'calls' or a 'bal', - in which cases it modifies *fixP as appropriate. In the case - of a 'calls', no further work is required, and *fixP has been - set up to make the rest of the code below a no-op. */ - reloc_callj (fixP); -#endif /* TC_I960 */ - - add_number += S_GET_VALUE (add_symbolP); - add_number -= md_pcrel_from (fixP); - - /* We used to do - add_number -= segP->scnhdr.s_vaddr; - if defined (TC_I386) || defined (TE_LYNX). I now - think that was an error propagated from the case when - we are going to emit the relocation. If we are not - going to emit the relocation, then we just want to - set add_number to the difference between the symbols. - This is a case that would only arise when there is a - PC relative reference from a section other than .text - to a symbol defined in the same section, and the - reference is not relaxed. Since jump instructions on - the i386 are relaxed, this could only arise with a - call instruction. */ - - pcrel = 0; /* Lie. Don't want further pcrel processing. */ - if (!TC_FORCE_RELOCATION (fixP)) - { - fixP->fx_addsy = NULL; - fixP->fx_done = 1; - } - } - else - { - switch (add_symbol_segment) - { - case absolute_section: -#ifdef TC_I960 - /* See comment about reloc_callj() above. */ - reloc_callj (fixP); -#endif /* TC_I960 */ - add_number += S_GET_VALUE (add_symbolP); - add_symbolP = NULL; - - if (!TC_FORCE_RELOCATION (fixP)) - { - fixP->fx_addsy = NULL; - fixP->fx_done = 1; - } - break; - default: - -#if defined(TC_A29K) || (defined(TE_PE) && defined(TC_I386)) || defined(TC_M88K) || defined(TC_OR32) - /* This really should be handled in the linker, but - backward compatibility forbids. */ - add_number += S_GET_VALUE (add_symbolP); -#else - add_number += S_GET_VALUE (add_symbolP) + - segment_info[S_GET_SEGMENT (add_symbolP)].scnhdr.s_paddr; -#endif - break; - - case SEG_UNKNOWN: -#ifdef TC_I960 - if ((int) fixP->fx_bit_fixP == 13) - { - /* This is a COBR instruction. They have only a - 13-bit displacement and are only to be used - for local branches: flag as error, don't generate - relocation. */ - as_bad_where (fixP->fx_file, fixP->fx_line, - _("can't use COBR format with external label")); - fixP->fx_addsy = NULL; - fixP->fx_done = 1; - continue; - } -#endif /* TC_I960 */ -#if ((defined (TC_I386) || defined (TE_LYNX) || defined (TE_AUX)) && !defined(TE_PE)) || defined (COFF_COMMON_ADDEND) - /* 386 COFF uses a peculiar format in which the - value of a common symbol is stored in the .text - segment (I've checked this on SVR3.2 and SCO - 3.2.2) Ian Taylor . */ - /* This is also true for 68k COFF on sysv machines - (Checked on Motorola sysv68 R3V6 and R3V7.1, and also on - UNIX System V/M68000, Release 1.0 from ATT/Bell Labs) - Philippe De Muyter . */ - if (S_IS_COMMON (add_symbolP)) - add_number += S_GET_VALUE (add_symbolP); -#endif - break; - - } - } - } - - if (pcrel) - { -#if !defined(TC_M88K) && !(defined(TE_PE) && defined(TC_I386)) && !defined(TC_A29K) && !defined(TC_OR32) - /* This adjustment is not correct on the m88k, for which the - linker does all the computation. */ - add_number -= md_pcrel_from (fixP); -#endif - if (add_symbolP == 0) - fixP->fx_addsy = &abs_symbol; -#if defined (TC_I386) || defined (TE_LYNX) || defined (TC_I960) || defined (TC_M68K) - /* On the 386 we must adjust by the segment vaddr as well. - Ian Taylor. - - I changed the i960 to work this way as well. This is - compatible with the current GNU linker behaviour. I do - not know what other i960 COFF assemblers do. This is not - a common case: normally, only assembler code will contain - a PC relative reloc, and only branches which do not - originate in the .text section will have a non-zero - address. - - I changed the m68k to work this way as well. This will - break existing PC relative relocs from sections which do - not start at address 0, but it will make ld -r work. - Ian Taylor, 4 Oct 96. */ - - add_number -= segP->scnhdr.s_vaddr; -#endif - } - - md_apply_fix3 (fixP, (valueT *) & add_number, this_segment_type); - - if (!fixP->fx_bit_fixP && ! fixP->fx_no_overflow) - { -#ifndef TC_M88K - /* The m88k uses the offset field of the reloc to get around - this problem. */ - if ((size == 1 - && ((add_number & ~0xFF) - || (fixP->fx_signed && (add_number & 0x80))) - && ((add_number & ~0xFF) != (-1 & ~0xFF) - || (add_number & 0x80) == 0)) - || (size == 2 - && ((add_number & ~0xFFFF) - || (fixP->fx_signed && (add_number & 0x8000))) - && ((add_number & ~0xFFFF) != (-1 & ~0xFFFF) - || (add_number & 0x8000) == 0))) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Value of %ld too large for field of %d bytes at 0x%lx"), - (long) add_number, size, - (unsigned long) (fragP->fr_address + where)); - } -#endif -#ifdef WARN_SIGNED_OVERFLOW_WORD - /* Warn if a .word value is too large when treated as a - signed number. We already know it is not too negative. - This is to catch over-large switches generated by gcc on - the 68k. */ - if (!flag_signed_overflow_ok - && size == 2 - && add_number > 0x7fff) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Signed .word overflow; switch may be too large; %ld at 0x%lx"), - (long) add_number, - (unsigned long) (fragP->fr_address + where)); -#endif - } - } -} - -#endif - -/* The first entry in a .stab section is special. */ - -void -obj_coff_init_stab_section (seg) - segT seg; -{ - char *file; - char *p; - char *stabstr_name; - unsigned int stroff; - - /* Make space for this first symbol. */ - p = frag_more (12); - /* Zero it out. */ - memset (p, 0, 12); - as_where (&file, (unsigned int *) NULL); - stabstr_name = (char *) alloca (strlen (segment_info[seg].name) + 4); - strcpy (stabstr_name, segment_info[seg].name); - strcat (stabstr_name, "str"); - stroff = get_stab_string_offset (file, stabstr_name); - know (stroff == 1); - md_number_to_chars (p, stroff, 4); -} - -/* Fill in the counts in the first entry in a .stab section. */ - -static void -adjust_stab_section(abfd, seg) - bfd *abfd; - segT seg; -{ - segT stabstrseg = SEG_UNKNOWN; - const char *secname, *name2; - char *name; - char *p = NULL; - int i, strsz = 0, nsyms; - fragS *frag = segment_info[seg].frchainP->frch_root; - - /* Look for the associated string table section. */ - - secname = segment_info[seg].name; - name = (char *) alloca (strlen (secname) + 4); - strcpy (name, secname); - strcat (name, "str"); - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - name2 = segment_info[i].name; - if (name2 != NULL && strncmp(name2, name, 8) == 0) - { - stabstrseg = i; - break; - } - } - - /* If we found the section, get its size. */ - if (stabstrseg != SEG_UNKNOWN) - strsz = size_section (abfd, stabstrseg); - - nsyms = size_section (abfd, seg) / 12 - 1; - - /* Look for the first frag of sufficient size for the initial stab - symbol, and collect a pointer to it. */ - while (frag && frag->fr_fix < 12) - frag = frag->fr_next; - assert (frag != 0); - p = frag->fr_literal; - assert (p != 0); - - /* Write in the number of stab symbols and the size of the string - table. */ - bfd_h_put_16 (abfd, (bfd_vma) nsyms, (bfd_byte *) p + 6); - bfd_h_put_32 (abfd, (bfd_vma) strsz, (bfd_byte *) p + 8); -} - -#endif /* not BFD_ASSEMBLER */ - -const pseudo_typeS coff_pseudo_table[] = -{ - {"def", obj_coff_def, 0}, - {"dim", obj_coff_dim, 0}, - {"endef", obj_coff_endef, 0}, - {"line", obj_coff_line, 0}, - {"ln", obj_coff_ln, 0}, -#ifdef BFD_ASSEMBLER - {"loc", obj_coff_loc, 0}, -#endif - {"appline", obj_coff_ln, 1}, - {"scl", obj_coff_scl, 0}, - {"size", obj_coff_size, 0}, - {"tag", obj_coff_tag, 0}, - {"type", obj_coff_type, 0}, - {"val", obj_coff_val, 0}, - {"section", obj_coff_section, 0}, - {"sect", obj_coff_section, 0}, - /* FIXME: We ignore the MRI short attribute. */ - {"section.s", obj_coff_section, 0}, - {"sect.s", obj_coff_section, 0}, - /* We accept the .bss directive for backward compatibility with - earlier versions of gas. */ - {"bss", obj_coff_bss, 0}, - {"weak", obj_coff_weak, 0}, - {"ident", obj_coff_ident, 0}, -#ifndef BFD_ASSEMBLER - {"use", obj_coff_section, 0}, - {"text", obj_coff_text, 0}, - {"data", obj_coff_data, 0}, - {"lcomm", obj_coff_lcomm, 0}, -#else - {"optim", s_ignore, 0}, /* For sun386i cc (?) */ -#endif - {"version", s_ignore, 0}, - {"ABORT", s_abort, 0}, -#if defined( TC_M88K ) || defined ( TC_TIC4X ) - /* The m88k and tic4x uses sdef instead of def. */ - {"sdef", obj_coff_def, 0}, -#endif - {NULL, NULL, 0} /* end sentinel */ -}; /* coff_pseudo_table */ - -#ifdef BFD_ASSEMBLER - -/* Support for a COFF emulation. */ - -static void coff_pop_insert PARAMS ((void)); -static int coff_separate_stab_sections PARAMS ((void)); - -static void -coff_pop_insert () -{ - pop_insert (coff_pseudo_table); -} - -static int -coff_separate_stab_sections () -{ - return 1; -} - -const struct format_ops coff_format_ops = -{ - bfd_target_coff_flavour, - 0, /* dfl_leading_underscore */ - 1, /* emit_section_symbols */ - 0, /* begin */ - c_dot_file_symbol, - coff_frob_symbol, - 0, /* frob_file */ - 0, /* frob_file_before_adjust */ - 0, /* frob_file_before_fix */ - coff_frob_file_after_relocs, - 0, /* s_get_size */ - 0, /* s_set_size */ - 0, /* s_get_align */ - 0, /* s_set_align */ - 0, /* s_get_other */ - 0, /* s_set_other */ - 0, /* s_get_desc */ - 0, /* s_set_desc */ - 0, /* s_get_type */ - 0, /* s_set_type */ - 0, /* copy_symbol_attributes */ - 0, /* generate_asm_lineno */ - 0, /* process_stab */ - coff_separate_stab_sections, - obj_coff_init_stab_section, - 0, /* sec_sym_ok_for_reloc */ - coff_pop_insert, - 0, /* ecoff_set_ext */ - coff_obj_read_begin_hook, - coff_obj_symbol_new_hook -}; - -#endif diff --git a/gas/config/obj-coff.h b/gas/config/obj-coff.h deleted file mode 100644 index 520055268..000000000 --- a/gas/config/obj-coff.h +++ /dev/null @@ -1,906 +0,0 @@ -/* coff object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef OBJ_FORMAT_H -#define OBJ_FORMAT_H - -#define OBJ_COFF 1 - -#ifndef BFD_ASSEMBLER - -#define WORKING_DOT_WORD -#define WARN_SIGNED_OVERFLOW_WORD -#define OBJ_COFF_OMIT_OPTIONAL_HEADER -#define BFD_HEADERS -#define BFD - -#endif - -#include "targ-cpu.h" - -#include "bfd.h" - -/* This internal_lineno crap is to stop namespace pollution from the - bfd internal coff headerfile. */ -#define internal_lineno bfd_internal_lineno -#include "coff/internal.h" -#undef internal_lineno - -/* CPU-specific setup: */ - -#ifdef TC_ARM -#include "coff/arm.h" -#ifndef TARGET_FORMAT -#define TARGET_FORMAT "coff-arm" -#endif -#endif - -#ifdef TC_PPC -#ifdef TE_PE -#include "coff/powerpc.h" -#else -#include "coff/rs6000.h" -#endif -#endif - -#ifdef TC_SPARC -#include "coff/sparc.h" -#endif - -#ifdef TC_I386 -#include "coff/i386.h" - -#ifdef TE_PE -#define TARGET_FORMAT "pe-i386" -#endif - -#ifndef TARGET_FORMAT -#define TARGET_FORMAT "coff-i386" -#endif -#endif - -#ifdef TC_M68K -#include "coff/m68k.h" -#ifndef TARGET_FORMAT -#define TARGET_FORMAT "coff-m68k" -#endif -#endif - -#ifdef TC_A29K -#include "coff/a29k.h" -#define TARGET_FORMAT "coff-a29k-big" -#endif - -#ifdef TC_OR32 -#include "coff/or32.h" -#define TARGET_FORMAT "coff-or32-big" -#endif - -#ifdef TC_I960 -#include "coff/i960.h" -#define TARGET_FORMAT "coff-Intel-little" -#endif - -#ifdef TC_Z8K -#include "coff/z8k.h" -#define TARGET_FORMAT "coff-z8k" -#endif - -#ifdef TC_H8300 -#include "coff/h8300.h" -#define TARGET_FORMAT "coff-h8300" -#endif - -#ifdef TC_H8500 -#include "coff/h8500.h" -#define TARGET_FORMAT "coff-h8500" -#endif - -#ifdef TC_SH - -#ifdef TE_PE -#define COFF_WITH_PE -#endif - -#include "coff/sh.h" - -#ifdef TE_PE -#define TARGET_FORMAT "pe-shl" -#else - -#define TARGET_FORMAT \ - (!target_big_endian \ - ? (sh_small ? "coff-shl-small" : "coff-shl") \ - : (sh_small ? "coff-sh-small" : "coff-sh")) - -#endif -#endif - -#ifdef TC_MIPS -#define COFF_WITH_PE -#include "coff/mipspe.h" -#undef TARGET_FORMAT -#define TARGET_FORMAT "pe-mips" -#endif - -#ifdef TC_M88K -#include "coff/m88k.h" -#define TARGET_FORMAT "coff-m88kbcs" -#endif - -#ifdef TC_W65 -#include "coff/w65.h" -#define TARGET_FORMAT "coff-w65" -#endif - -#ifdef TC_TIC30 -#include "coff/tic30.h" -#define TARGET_FORMAT "coff-tic30" -#endif - -#ifdef TC_TIC4X -#include "coff/tic4x.h" -#define TARGET_FORMAT "coff2-tic4x" -#endif - -#ifdef TC_TIC54X -#include "coff/tic54x.h" -#define TARGET_FORMAT "coff1-c54x" -#endif - -#ifdef TC_TIC80 -#include "coff/tic80.h" -#define TARGET_FORMAT "coff-tic80" -#define ALIGNMENT_IN_S_FLAGS 1 -#endif - -#ifdef TC_MCORE -#include "coff/mcore.h" -#ifndef TARGET_FORMAT -#define TARGET_FORMAT "pe-mcore" -#endif -#endif - -/* Targets may also set this. Also, if BFD_ASSEMBLER is defined, this - will already have been defined. */ -#undef SYMBOLS_NEED_BACKPOINTERS -#define SYMBOLS_NEED_BACKPOINTERS 1 - -#ifndef OBJ_COFF_MAX_AUXENTRIES -#define OBJ_COFF_MAX_AUXENTRIES 1 -#endif /* OBJ_COFF_MAX_AUXENTRIES */ - -extern void coff_obj_symbol_new_hook PARAMS ((symbolS *)); -#define obj_symbol_new_hook coff_obj_symbol_new_hook - -extern void coff_obj_read_begin_hook PARAMS ((void)); -#define obj_read_begin_hook coff_obj_read_begin_hook - -/* This file really contains two implementations of the COFF back end. - They are in the process of being merged, but this is only a - preliminary, mechanical merging. Many definitions that are - identical between the two are still found in both versions. - - The first version, with BFD_ASSEMBLER defined, uses high-level BFD - interfaces and data structures. The second version, with - BFD_ASSEMBLER not defined, also uses BFD, but mostly for swapping - data structures and for doing the actual I/O. The latter defines - the preprocessor symbols BFD and BFD_HEADERS. Try not to let this - confuse you. - - These two are in the process of being merged, and eventually the - BFD_ASSEMBLER version should take over completely. Release timing - issues and namespace problems convinced me to merge the two - together in this fashion, a little sooner than I would have liked. - The real merge should be much better done by the time the next - release comes out. - - For now, the structure of this file is: - - #ifdef BFD_ASSEMBLER - - #else - - #endif - - Unfortunately, the common portions are very small at the moment, - and many declarations or definitions are duplicated. The structure - of obj-coff.c is similar. - - See doc/internals.texi for a brief discussion of the history, if - you care. - - Ken Raeburn, 5 May 1994. */ - -#ifdef BFD_ASSEMBLER - -#include "bfd/libcoff.h" - -#define OUTPUT_FLAVOR bfd_target_coff_flavour - -/* SYMBOL TABLE */ - -/* Alter the field names, for now, until we've fixed up the other - references to use the new name. */ -#ifdef TC_I960 -#define TC_SYMFIELD_TYPE symbolS * -#define sy_tc bal -#endif - -#define OBJ_SYMFIELD_TYPE unsigned long -#define sy_obj sy_flags - -/* We can't use the predefined section symbols in bfd/section.c, as - COFF symbols have extra fields. See bfd/libcoff.h:coff_symbol_type. */ -#ifndef obj_sec_sym_ok_for_reloc -#define obj_sec_sym_ok_for_reloc(SEC) ((SEC)->owner != 0) -#endif - -#define SYM_AUXENT(S) \ - (&coffsymbol (symbol_get_bfdsym (S))->native[1].u.auxent) -#define SYM_AUXINFO(S) \ - (&coffsymbol (symbol_get_bfdsym (S))->native[1]) - -#define DO_NOT_STRIP 0 - -extern void obj_coff_section PARAMS ((int)); - -/* The number of auxiliary entries. */ -#define S_GET_NUMBER_AUXILIARY(s) \ - (coffsymbol (symbol_get_bfdsym (s))->native->u.syment.n_numaux) -/* The number of auxiliary entries. */ -#define S_SET_NUMBER_AUXILIARY(s,v) (S_GET_NUMBER_AUXILIARY (s) = (v)) - -/* True if a symbol name is in the string table, i.e. its length is > 8. */ -#define S_IS_STRING(s) (strlen(S_GET_NAME(s)) > 8 ? 1 : 0) - -extern int S_SET_DATA_TYPE PARAMS ((symbolS *, int)); -extern int S_SET_STORAGE_CLASS PARAMS ((symbolS *, int)); -extern int S_GET_STORAGE_CLASS PARAMS ((symbolS *)); -extern void SA_SET_SYM_ENDNDX PARAMS ((symbolS *, symbolS *)); - -/* Auxiliary entry macros. SA_ stands for symbol auxiliary. */ -/* Omit the tv related fields. */ -/* Accessors. */ - -#define SA_GET_SYM_TAGNDX(s) (SYM_AUXENT (s)->x_sym.x_tagndx.l) -#define SA_GET_SYM_LNNO(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno) -#define SA_GET_SYM_SIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size) -#define SA_GET_SYM_FSIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize) -#define SA_GET_SYM_LNNOPTR(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr) -#define SA_GET_SYM_ENDNDX(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx) -#define SA_GET_SYM_DIMEN(s,i) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)]) -#define SA_GET_FILE_FNAME(s) (SYM_AUXENT (s)->x_file.x_fname) -#define SA_GET_SCN_SCNLEN(s) (SYM_AUXENT (s)->x_scn.x_scnlen) -#define SA_GET_SCN_NRELOC(s) (SYM_AUXENT (s)->x_scn.x_nreloc) -#define SA_GET_SCN_NLINNO(s) (SYM_AUXENT (s)->x_scn.x_nlinno) - -#define SA_SET_SYM_LNNO(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno=(v)) -#define SA_SET_SYM_SIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size=(v)) -#define SA_SET_SYM_FSIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize=(v)) -#define SA_SET_SYM_LNNOPTR(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr=(v)) -#define SA_SET_SYM_DIMEN(s,i,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)]=(v)) -#define SA_SET_FILE_FNAME(s,v) strncpy(SYM_AUXENT (s)->x_file.x_fname,(v),FILNMLEN) -#define SA_SET_SCN_SCNLEN(s,v) (SYM_AUXENT (s)->x_scn.x_scnlen=(v)) -#define SA_SET_SCN_NRELOC(s,v) (SYM_AUXENT (s)->x_scn.x_nreloc=(v)) -#define SA_SET_SCN_NLINNO(s,v) (SYM_AUXENT (s)->x_scn.x_nlinno=(v)) - -/* Internal use only definitions. SF_ stands for symbol flags. - - These values can be assigned to sy_symbol.ost_flags field of a symbolS. - - You'll break i960 if you shift the SYSPROC bits anywhere else. for - more on the balname/callname hack, see tc-i960.h. b.out is done - differently. */ - -#define SF_I960_MASK (0x000001ff) /* Bits 0-8 are used by the i960 port. */ -#define SF_SYSPROC (0x0000003f) /* bits 0-5 are used to store the sysproc number */ -#define SF_IS_SYSPROC (0x00000040) /* bit 6 marks symbols that are sysprocs */ -#define SF_BALNAME (0x00000080) /* bit 7 marks BALNAME symbols */ -#define SF_CALLNAME (0x00000100) /* bit 8 marks CALLNAME symbols */ - -#define SF_NORMAL_MASK (0x0000ffff) /* bits 12-15 are general purpose. */ - -#define SF_STATICS (0x00001000) /* Mark the .text & all symbols */ -#define SF_DEFINED (0x00002000) /* Symbol is defined in this file */ -#define SF_STRING (0x00004000) /* Symbol name length > 8 */ -#define SF_LOCAL (0x00008000) /* Symbol must not be emitted */ - -#define SF_DEBUG_MASK (0xffff0000) /* bits 16-31 are debug info */ - -#define SF_FUNCTION (0x00010000) /* The symbol is a function */ -#define SF_PROCESS (0x00020000) /* Process symbol before write */ -#define SF_TAGGED (0x00040000) /* Is associated with a tag */ -#define SF_TAG (0x00080000) /* Is a tag */ -#define SF_DEBUG (0x00100000) /* Is in debug or abs section */ -#define SF_GET_SEGMENT (0x00200000) /* Get the section of the forward symbol. */ -/* All other bits are unused. */ - -/* Accessors. */ -#define SF_GET(s) (*symbol_get_obj (s)) -#define SF_GET_DEBUG(s) (symbol_get_bfdsym (s)->flags & BSF_DEBUGGING) -#define SF_SET_DEBUG(s) (symbol_get_bfdsym (s)->flags |= BSF_DEBUGGING) -#define SF_GET_NORMAL_FIELD(s) (SF_GET (s) & SF_NORMAL_MASK) -#define SF_GET_DEBUG_FIELD(s) (SF_GET (s) & SF_DEBUG_MASK) -#define SF_GET_FILE(s) (SF_GET (s) & SF_FILE) -#define SF_GET_STATICS(s) (SF_GET (s) & SF_STATICS) -#define SF_GET_DEFINED(s) (SF_GET (s) & SF_DEFINED) -#define SF_GET_STRING(s) (SF_GET (s) & SF_STRING) -#define SF_GET_LOCAL(s) (SF_GET (s) & SF_LOCAL) -#define SF_GET_FUNCTION(s) (SF_GET (s) & SF_FUNCTION) -#define SF_GET_PROCESS(s) (SF_GET (s) & SF_PROCESS) -#define SF_GET_TAGGED(s) (SF_GET (s) & SF_TAGGED) -#define SF_GET_TAG(s) (SF_GET (s) & SF_TAG) -#define SF_GET_GET_SEGMENT(s) (SF_GET (s) & SF_GET_SEGMENT) -#define SF_GET_I960(s) (SF_GET (s) & SF_I960_MASK) /* used by i960 */ -#define SF_GET_BALNAME(s) (SF_GET (s) & SF_BALNAME) /* used by i960 */ -#define SF_GET_CALLNAME(s) (SF_GET (s) & SF_CALLNAME) /* used by i960 */ -#define SF_GET_IS_SYSPROC(s) (SF_GET (s) & SF_IS_SYSPROC) /* used by i960 */ -#define SF_GET_SYSPROC(s) (SF_GET (s) & SF_SYSPROC) /* used by i960 */ - -/* Modifiers. */ -#define SF_SET(s,v) (SF_GET (s) = (v)) -#define SF_SET_NORMAL_FIELD(s,v) (SF_GET (s) |= ((v) & SF_NORMAL_MASK)) -#define SF_SET_DEBUG_FIELD(s,v) (SF_GET (s) |= ((v) & SF_DEBUG_MASK)) -#define SF_SET_FILE(s) (SF_GET (s) |= SF_FILE) -#define SF_SET_STATICS(s) (SF_GET (s) |= SF_STATICS) -#define SF_SET_DEFINED(s) (SF_GET (s) |= SF_DEFINED) -#define SF_SET_STRING(s) (SF_GET (s) |= SF_STRING) -#define SF_SET_LOCAL(s) (SF_GET (s) |= SF_LOCAL) -#define SF_CLEAR_LOCAL(s) (SF_GET (s) &= ~SF_LOCAL) -#define SF_SET_FUNCTION(s) (SF_GET (s) |= SF_FUNCTION) -#define SF_SET_PROCESS(s) (SF_GET (s) |= SF_PROCESS) -#define SF_SET_TAGGED(s) (SF_GET (s) |= SF_TAGGED) -#define SF_SET_TAG(s) (SF_GET (s) |= SF_TAG) -#define SF_SET_GET_SEGMENT(s) (SF_GET (s) |= SF_GET_SEGMENT) -#define SF_SET_I960(s,v) (SF_GET (s) |= ((v) & SF_I960_MASK)) /* used by i960 */ -#define SF_SET_BALNAME(s) (SF_GET (s) |= SF_BALNAME) /* used by i960 */ -#define SF_SET_CALLNAME(s) (SF_GET (s) |= SF_CALLNAME) /* used by i960 */ -#define SF_SET_IS_SYSPROC(s) (SF_GET (s) |= SF_IS_SYSPROC) /* used by i960 */ -#define SF_SET_SYSPROC(s,v) (SF_GET (s) |= ((v) & SF_SYSPROC)) /* used by i960 */ - -/* -------------- Line number handling ------- */ -extern int text_lineno_number; -extern int coff_line_base; -extern int coff_n_line_nos; - -#define obj_emit_lineno(WHERE,LINE,FILE_START) abort () -extern void coff_add_linesym PARAMS ((symbolS *)); - -void c_dot_file_symbol PARAMS ((const char *filename)); -#define obj_app_file c_dot_file_symbol - -extern void coff_frob_symbol PARAMS ((symbolS *, int *)); -extern void coff_adjust_symtab PARAMS ((void)); -extern void coff_frob_section PARAMS ((segT)); -extern void coff_adjust_section_syms PARAMS ((bfd *, asection *, PTR)); -extern void coff_frob_file_after_relocs PARAMS ((void)); -#define obj_frob_symbol(S,P) coff_frob_symbol(S,&P) -#ifndef obj_adjust_symtab -#define obj_adjust_symtab() coff_adjust_symtab() -#endif -#define obj_frob_section(S) coff_frob_section (S) -#define obj_frob_file_after_relocs() coff_frob_file_after_relocs () - -extern symbolS *coff_last_function; - -/* Forward the segment of a forwarded symbol, handle assignments that - just copy symbol values, etc. */ -#ifndef OBJ_COPY_SYMBOL_ATTRIBUTES -#ifndef TE_I386AIX -#define OBJ_COPY_SYMBOL_ATTRIBUTES(dest,src) \ - (SF_GET_GET_SEGMENT (dest) \ - ? (S_SET_SEGMENT (dest, S_GET_SEGMENT (src)), 0) \ - : 0) -#else -#define OBJ_COPY_SYMBOL_ATTRIBUTES(dest,src) \ - (SF_GET_GET_SEGMENT (dest) && S_GET_SEGMENT (dest) == SEG_UNKNOWN \ - ? (S_SET_SEGMENT (dest, S_GET_SEGMENT (src)), 0) \ - : 0) -#endif -#endif - -/* Sanity check. */ - -#ifdef TC_I960 -#ifndef C_LEAFSTAT -hey ! Where is the C_LEAFSTAT definition ? i960 - coff support is depending on it. -#endif /* no C_LEAFSTAT */ -#endif /* TC_I960 */ - -#else /* not BFD_ASSEMBLER */ - -#if defined TC_A29K || defined TC_OR32 -/* Allow translate from aout relocs to coff relocs. */ -#define NO_RELOC 20 -#define RELOC_32 1 -#define RELOC_8 2 -#define RELOC_CONST 3 -#define RELOC_CONSTH 4 -#define RELOC_JUMPTARG 5 -#define RELOC_BASE22 6 -#define RELOC_HI22 7 -#define RELOC_LO10 8 -#define RELOC_BASE13 9 -#define RELOC_WDISP22 10 -#define RELOC_WDISP30 11 -#endif - -extern const segT N_TYPE_seg[]; - -/* Magic number of paged executable. */ -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 0x8300 - -/* SYMBOL TABLE */ - -/* Symbol table entry data type. */ - -typedef struct -{ - /* Basic symbol */ - struct internal_syment ost_entry; - /* Auxiliary entry. */ - union internal_auxent ost_auxent[OBJ_COFF_MAX_AUXENTRIES]; - /* obj_coff internal use only flags. */ - unsigned int ost_flags; -} obj_symbol_type; - -#ifndef DO_NOT_STRIP -#define DO_NOT_STRIP 0 -#endif -/* Symbol table macros and constants. */ - -/* Possible and useful section number in symbol table - The values of TEXT, DATA and BSS may not be portable. */ - -#define C_ABS_SECTION N_ABS -#define C_UNDEF_SECTION N_UNDEF -#define C_DEBUG_SECTION N_DEBUG -#define C_NTV_SECTION N_TV -#define C_PTV_SECTION P_TV -#define C_REGISTER_SECTION 50 - -/* Macros to extract information from a symbol table entry. - This syntactic indirection allows independence regarding a.out or coff. - The argument (s) of all these macros is a pointer to a symbol table entry. */ - -/* Predicates. */ -/* True if the symbol is external. */ -#define S_IS_EXTERNAL(s) \ - ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION) - -/* True if symbol has been defined, ie : - section > 0 (DATA, TEXT or BSS) - section == 0 and value > 0 (external bss symbol). */ -#define S_IS_DEFINED(s) \ - ((s)->sy_symbol.ost_entry.n_scnum > C_UNDEF_SECTION \ - || ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION \ - && S_GET_VALUE (s) > 0) \ - || ((s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION)) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s)) || (strict && S_IS_WEAK (s))) - -/* True if a debug special symbol entry. */ -#define S_IS_DEBUG(s) \ - ((s)->sy_symbol.ost_entry.n_scnum == C_DEBUG_SECTION) - -/* True if a symbol is local symbol name. */ -/* A symbol name whose name includes ^A is a gas internal pseudo symbol. */ -#define S_IS_LOCAL(s) \ - ((s)->sy_symbol.ost_entry.n_scnum == C_REGISTER_SECTION \ - || (S_LOCAL_NAME(s) && ! flag_keep_locals && ! S_IS_DEBUG (s)) \ - || strchr (S_GET_NAME (s), '\001') != NULL \ - || strchr (S_GET_NAME (s), '\002') != NULL \ - || (flag_strip_local_absolute \ - && !S_IS_EXTERNAL(s) \ - && (s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION)) - -/* True if a symbol is not defined in this file. */ -#define S_IS_EXTERN(s) ((s)->sy_symbol.ost_entry.n_scnum == 0 \ - && S_GET_VALUE (s) == 0) - -/* True if a symbol can be multiply defined (bss symbols have this def - though it is bad practice). */ -#define S_IS_COMMON(s) ((s)->sy_symbol.ost_entry.n_scnum == 0 \ - && S_GET_VALUE (s) != 0) - -/* True if a symbol name is in the string table, i.e. its length is > 8. */ -#define S_IS_STRING(s) (strlen(S_GET_NAME(s)) > 8 ? 1 : 0) - -/* True if a symbol is defined as weak. */ -#ifdef TE_PE -#define S_IS_WEAK(s) \ - ((s)->sy_symbol.ost_entry.n_sclass == C_NT_WEAK \ - || (s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT) -#else -#define S_IS_WEAK(s) \ - ((s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT) -#endif - -/* Accessors. */ -/* The name of the symbol. */ -#define S_GET_NAME(s) ((char*) (s)->sy_symbol.ost_entry.n_offset) - -/* The pointer to the string table. */ -#define S_GET_OFFSET(s) ((s)->sy_symbol.ost_entry.n_offset) - -/* The numeric value of the segment. */ -#define S_GET_SEGMENT(s) s_get_segment(s) - -/* The data type. */ -#define S_GET_DATA_TYPE(s) ((s)->sy_symbol.ost_entry.n_type) - -/* The storage class. */ -#define S_GET_STORAGE_CLASS(s) ((s)->sy_symbol.ost_entry.n_sclass) - -/* The number of auxiliary entries. */ -#define S_GET_NUMBER_AUXILIARY(s) ((s)->sy_symbol.ost_entry.n_numaux) - -/* Modifiers. */ -/* Set the name of the symbol. */ -#define S_SET_NAME(s,v) \ - ((s)->sy_symbol.ost_entry.n_offset = (unsigned long) (v)) - -/* Set the offset of the symbol. */ -#define S_SET_OFFSET(s,v) \ - ((s)->sy_symbol.ost_entry.n_offset = (v)) - -/* The numeric value of the segment. */ -#define S_SET_SEGMENT(s,v) \ - ((s)->sy_symbol.ost_entry.n_scnum = SEGMENT_TO_SYMBOL_TYPE(v)) - -/* The data type. */ -#define S_SET_DATA_TYPE(s,v) \ - ((s)->sy_symbol.ost_entry.n_type = (v)) - -/* The storage class. */ -#define S_SET_STORAGE_CLASS(s,v) \ - ((s)->sy_symbol.ost_entry.n_sclass = (v)) - -/* The number of auxiliary entries. */ -#define S_SET_NUMBER_AUXILIARY(s,v) \ - ((s)->sy_symbol.ost_entry.n_numaux = (v)) - -/* Additional modifiers. */ -/* The symbol is external (does not mean undefined). */ -#define S_SET_EXTERNAL(s) \ - { S_SET_STORAGE_CLASS(s, C_EXT) ; SF_CLEAR_LOCAL(s); } - -/* Auxiliary entry macros. SA_ stands for symbol auxiliary. */ -/* Omit the tv related fields. */ -/* Accessors. */ -#define SYM_AUXENT(S) (&(S)->sy_symbol.ost_auxent[0]) - -#define SA_GET_SYM_TAGNDX(s) (SYM_AUXENT (s)->x_sym.x_tagndx.l) -#define SA_GET_SYM_LNNO(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno) -#define SA_GET_SYM_SIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size) -#define SA_GET_SYM_FSIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize) -#define SA_GET_SYM_LNNOPTR(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr) -#define SA_GET_SYM_ENDNDX(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx.l) -#define SA_GET_SYM_DIMEN(s,i) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)]) -#define SA_GET_FILE_FNAME(s) (SYM_AUXENT (s)->x_file.x_fname) -#define SA_GET_FILE_FNAME_OFFSET(s) (SYM_AUXENT (s)->x_file.x_n.x_offset) -#define SA_GET_FILE_FNAME_ZEROS(s) (SYM_AUXENT (s)->x_file.x_n.x_zeroes) -#define SA_GET_SCN_SCNLEN(s) (SYM_AUXENT (s)->x_scn.x_scnlen) -#define SA_GET_SCN_NRELOC(s) (SYM_AUXENT (s)->x_scn.x_nreloc) -#define SA_GET_SCN_NLINNO(s) (SYM_AUXENT (s)->x_scn.x_nlinno) - -/* Modifiers. */ -#define SA_SET_SYM_TAGNDX(s,v) (SYM_AUXENT (s)->x_sym.x_tagndx.l=(v)) -#define SA_SET_SYM_LNNO(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno=(v)) -#define SA_SET_SYM_SIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size=(v)) -#define SA_SET_SYM_FSIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize=(v)) -#define SA_SET_SYM_LNNOPTR(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr=(v)) -#define SA_SET_SYM_ENDNDX(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx.l=(v)) -#define SA_SET_SYM_DIMEN(s,i,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)]=(v)) -#define SA_SET_FILE_FNAME(s,v) strncpy(SYM_AUXENT (s)->x_file.x_fname,(v),FILNMLEN) -#define SA_SET_FILE_FNAME_OFFSET(s,v) (SYM_AUXENT (s)->x_file.x_n.x_offset=(v)) -#define SA_SET_FILE_FNAME_ZEROS(s,v) (SYM_AUXENT (s)->x_file.x_n.x_zeroes=(v)) -#define SA_SET_SCN_SCNLEN(s,v) (SYM_AUXENT (s)->x_scn.x_scnlen=(v)) -#define SA_SET_SCN_NRELOC(s,v) (SYM_AUXENT (s)->x_scn.x_nreloc=(v)) -#define SA_SET_SCN_NLINNO(s,v) (SYM_AUXENT (s)->x_scn.x_nlinno=(v)) - -/* Internal use only definitions. SF_ stands for symbol flags. - - These values can be assigned to sy_symbol.ost_flags field of a symbolS. - - You'll break i960 if you shift the SYSPROC bits anywhere else. for - more on the balname/callname hack, see tc-i960.h. b.out is done - differently. */ - -#define SF_I960_MASK (0x000001ff) /* Bits 0-8 are used by the i960 port. */ -#define SF_SYSPROC (0x0000003f) /* bits 0-5 are used to store the sysproc number */ -#define SF_IS_SYSPROC (0x00000040) /* bit 6 marks symbols that are sysprocs */ -#define SF_BALNAME (0x00000080) /* bit 7 marks BALNAME symbols */ -#define SF_CALLNAME (0x00000100) /* bit 8 marks CALLNAME symbols */ - -#define SF_NORMAL_MASK (0x0000ffff) /* bits 12-15 are general purpose. */ - -#define SF_STATICS (0x00001000) /* Mark the .text & all symbols */ -#define SF_DEFINED (0x00002000) /* Symbol is defined in this file */ -#define SF_STRING (0x00004000) /* Symbol name length > 8 */ -#define SF_LOCAL (0x00008000) /* Symbol must not be emitted */ - -#define SF_DEBUG_MASK (0xffff0000) /* bits 16-31 are debug info */ - -#define SF_FUNCTION (0x00010000) /* The symbol is a function */ -#define SF_PROCESS (0x00020000) /* Process symbol before write */ -#define SF_TAGGED (0x00040000) /* Is associated with a tag */ -#define SF_TAG (0x00080000) /* Is a tag */ -#define SF_DEBUG (0x00100000) /* Is in debug or abs section */ -#define SF_GET_SEGMENT (0x00200000) /* Get the section of the forward symbol. */ -#define SF_ADJ_LNNOPTR (0x00400000) /* Has a lnnoptr */ -/* All other bits are unused. */ - -/* Accessors. */ -#define SF_GET(s) ((s)->sy_symbol.ost_flags) -#define SF_GET_NORMAL_FIELD(s) (SF_GET (s) & SF_NORMAL_MASK) -#define SF_GET_DEBUG_FIELD(s) (SF_GET (s) & SF_DEBUG_MASK) -#define SF_GET_FILE(s) (SF_GET (s) & SF_FILE) -#define SF_GET_STATICS(s) (SF_GET (s) & SF_STATICS) -#define SF_GET_DEFINED(s) (SF_GET (s) & SF_DEFINED) -#define SF_GET_STRING(s) (SF_GET (s) & SF_STRING) -#define SF_GET_LOCAL(s) (SF_GET (s) & SF_LOCAL) -#define SF_GET_FUNCTION(s) (SF_GET (s) & SF_FUNCTION) -#define SF_GET_PROCESS(s) (SF_GET (s) & SF_PROCESS) -#define SF_GET_DEBUG(s) (SF_GET (s) & SF_DEBUG) -#define SF_GET_TAGGED(s) (SF_GET (s) & SF_TAGGED) -#define SF_GET_TAG(s) (SF_GET (s) & SF_TAG) -#define SF_GET_GET_SEGMENT(s) (SF_GET (s) & SF_GET_SEGMENT) -#define SF_GET_ADJ_LNNOPTR(s) (SF_GET (s) & SF_ADJ_LNNOPTR) -#define SF_GET_I960(s) (SF_GET (s) & SF_I960_MASK) /* used by i960 */ -#define SF_GET_BALNAME(s) (SF_GET (s) & SF_BALNAME) /* used by i960 */ -#define SF_GET_CALLNAME(s) (SF_GET (s) & SF_CALLNAME) /* used by i960 */ -#define SF_GET_IS_SYSPROC(s) (SF_GET (s) & SF_IS_SYSPROC) /* used by i960 */ -#define SF_GET_SYSPROC(s) (SF_GET (s) & SF_SYSPROC) /* used by i960 */ - -/* Modifiers. */ -#define SF_SET(s,v) (SF_GET (s) = (v)) -#define SF_SET_NORMAL_FIELD(s,v) (SF_GET (s) |= ((v) & SF_NORMAL_MASK)) -#define SF_SET_DEBUG_FIELD(s,v) (SF_GET (s) |= ((v) & SF_DEBUG_MASK)) -#define SF_SET_FILE(s) (SF_GET (s) |= SF_FILE) -#define SF_SET_STATICS(s) (SF_GET (s) |= SF_STATICS) -#define SF_SET_DEFINED(s) (SF_GET (s) |= SF_DEFINED) -#define SF_SET_STRING(s) (SF_GET (s) |= SF_STRING) -#define SF_SET_LOCAL(s) (SF_GET (s) |= SF_LOCAL) -#define SF_CLEAR_LOCAL(s) (SF_GET (s) &= ~SF_LOCAL) -#define SF_SET_FUNCTION(s) (SF_GET (s) |= SF_FUNCTION) -#define SF_SET_PROCESS(s) (SF_GET (s) |= SF_PROCESS) -#define SF_SET_DEBUG(s) (SF_GET (s) |= SF_DEBUG) -#define SF_SET_TAGGED(s) (SF_GET (s) |= SF_TAGGED) -#define SF_SET_TAG(s) (SF_GET (s) |= SF_TAG) -#define SF_SET_GET_SEGMENT(s) (SF_GET (s) |= SF_GET_SEGMENT) -#define SF_SET_ADJ_LNNOPTR(s) (SF_GET (s) |= SF_ADJ_LNNOPTR) -#define SF_SET_I960(s,v) (SF_GET (s) |= ((v) & SF_I960_MASK)) /* used by i960 */ -#define SF_SET_BALNAME(s) (SF_GET (s) |= SF_BALNAME) /* used by i960 */ -#define SF_SET_CALLNAME(s) (SF_GET (s) |= SF_CALLNAME) /* used by i960 */ -#define SF_SET_IS_SYSPROC(s) (SF_GET (s) |= SF_IS_SYSPROC) /* used by i960 */ -#define SF_SET_SYSPROC(s,v) (SF_GET (s) |= ((v) & SF_SYSPROC)) /* used by i960 */ - -/* File header macro and type definition. */ - -/* File position calculators. Beware to use them when all the - appropriate fields are set in the header. */ - -#ifdef OBJ_COFF_OMIT_OPTIONAL_HEADER -#define OBJ_COFF_AOUTHDRSZ (0) -#else -#define OBJ_COFF_AOUTHDRSZ (AOUTHDRSZ) -#endif /* OBJ_COFF_OMIT_OPTIONAL_HEADER */ - -#define H_GET_FILE_SIZE(h) \ - (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \ - H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ + \ - H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h) + \ - H_GET_RELOCATION_SIZE(h) + H_GET_LINENO_SIZE(h) + \ - H_GET_SYMBOL_TABLE_SIZE(h) + \ - (h)->string_table_size) -#define H_GET_TEXT_FILE_OFFSET(h) \ - (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \ - H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ) -#define H_GET_DATA_FILE_OFFSET(h) \ - (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \ - H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ + \ - H_GET_TEXT_SIZE(h)) -#define H_GET_BSS_FILE_OFFSET(h) 0 -#define H_GET_RELOCATION_FILE_OFFSET(h) \ - (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \ - H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ + \ - H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h)) -#define H_GET_LINENO_FILE_OFFSET(h) \ - (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \ - H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ + \ - H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h) + \ - H_GET_RELOCATION_SIZE(h)) -#define H_GET_SYMBOL_TABLE_FILE_OFFSET(h) \ - (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \ - H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ + \ - H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h) + \ - H_GET_RELOCATION_SIZE(h) + H_GET_LINENO_SIZE(h)) - -/* Accessors. */ -/* aouthdr. */ -#define H_GET_MAGIC_NUMBER(h) ((h)->aouthdr.magic) -#define H_GET_VERSION_STAMP(h) ((h)->aouthdr.vstamp) -#define H_GET_TEXT_SIZE(h) ((h)->aouthdr.tsize) -#define H_GET_DATA_SIZE(h) ((h)->aouthdr.dsize) -#define H_GET_BSS_SIZE(h) ((h)->aouthdr.bsize) -#define H_GET_ENTRY_POINT(h) ((h)->aouthdr.entry) -#define H_GET_TEXT_START(h) ((h)->aouthdr.text_start) -#define H_GET_DATA_START(h) ((h)->aouthdr.data_start) -/* filehdr. */ -#define H_GET_FILE_MAGIC_NUMBER(h) ((h)->filehdr.f_magic) -#define H_GET_NUMBER_OF_SECTIONS(h) ((h)->filehdr.f_nscns) -#define H_GET_TIME_STAMP(h) ((h)->filehdr.f_timdat) -#define H_GET_SYMBOL_TABLE_POINTER(h) ((h)->filehdr.f_symptr) -#define H_GET_SYMBOL_COUNT(h) ((h)->filehdr.f_nsyms) -#define H_GET_SYMBOL_TABLE_SIZE(h) (H_GET_SYMBOL_COUNT(h) * SYMESZ) -#define H_GET_SIZEOF_OPTIONAL_HEADER(h) ((h)->filehdr.f_opthdr) -#define H_GET_FLAGS(h) ((h)->filehdr.f_flags) -/* Extra fields to achieve bsd a.out compatibility and for convenience. */ -#define H_GET_RELOCATION_SIZE(h) ((h)->relocation_size) -#define H_GET_STRING_SIZE(h) ((h)->string_table_size) -#define H_GET_LINENO_SIZE(h) ((h)->lineno_size) - -#ifndef OBJ_COFF_OMIT_OPTIONAL_HEADER -#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \ - + sizeof (AOUTHDR)\ - + (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ)) -#else /* OBJ_COFF_OMIT_OPTIONAL_HEADER */ -#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \ - + (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ)) -#endif /* OBJ_COFF_OMIT_OPTIONAL_HEADER */ - -#define H_GET_TEXT_RELOCATION_SIZE(h) (text_section_header.s_nreloc * RELSZ) -#define H_GET_DATA_RELOCATION_SIZE(h) (data_section_header.s_nreloc * RELSZ) - -/* Modifiers. */ -/* aouthdr. */ -#define H_SET_MAGIC_NUMBER(h,v) ((h)->aouthdr.magic = (v)) -#define H_SET_VERSION_STAMP(h,v) ((h)->aouthdr.vstamp = (v)) -#define H_SET_TEXT_SIZE(h,v) ((h)->aouthdr.tsize = (v)) -#define H_SET_DATA_SIZE(h,v) ((h)->aouthdr.dsize = (v)) -#define H_SET_BSS_SIZE(h,v) ((h)->aouthdr.bsize = (v)) -#define H_SET_ENTRY_POINT(h,v) ((h)->aouthdr.entry = (v)) -#define H_SET_TEXT_START(h,v) ((h)->aouthdr.text_start = (v)) -#define H_SET_DATA_START(h,v) ((h)->aouthdr.data_start = (v)) -/* filehdr. */ -#define H_SET_FILE_MAGIC_NUMBER(h,v) ((h)->filehdr.f_magic = (v)) -#define H_SET_NUMBER_OF_SECTIONS(h,v) ((h)->filehdr.f_nscns = (v)) -#define H_SET_TIME_STAMP(h,v) ((h)->filehdr.f_timdat = (v)) -#define H_SET_SYMBOL_TABLE_POINTER(h,v) ((h)->filehdr.f_symptr = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->filehdr.f_nsyms = (v)) -#define H_SET_SIZEOF_OPTIONAL_HEADER(h,v) ((h)->filehdr.f_opthdr = (v)) -#define H_SET_FLAGS(h,v) ((h)->filehdr.f_flags = (v)) -/* Extra fields to achieve bsd a.out compatibility and for convenience. */ -#define H_SET_RELOCATION_SIZE(h,t,d) ((h)->relocation_size = (t)+(d)) -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) -#define H_SET_LINENO_SIZE(h,v) ((h)->lineno_size = (v)) - -/* Segment flipping. */ - -typedef struct -{ - struct internal_aouthdr aouthdr; /* a.out header */ - struct internal_filehdr filehdr; /* File header, not machine dep. */ - long string_table_size; /* names + '\0' + sizeof (int) */ - long relocation_size; /* Cumulated size of relocation - information for all sections in - bytes. */ - long lineno_size; /* Size of the line number information - table in bytes. */ -} object_headers; - -struct lineno_list -{ - struct bfd_internal_lineno line; - char *frag; /* Frag to which the line number is related. */ - struct lineno_list *next; /* Forward chain pointer. */ -}; - -#define obj_segment_name(i) (segment_info[(int) (i)].scnhdr.s_name) - -#define obj_add_segment(s) obj_coff_add_segment (s) - -extern segT obj_coff_add_segment PARAMS ((const char *)); - -extern void obj_coff_section PARAMS ((int)); - -extern void c_dot_file_symbol PARAMS ((char *filename)); -#define obj_app_file c_dot_file_symbol -extern void obj_extra_stuff PARAMS ((object_headers * headers)); - -extern segT s_get_segment PARAMS ((symbolS *ptr)); - -extern void c_section_header PARAMS ((struct internal_scnhdr * header, - char *name, - long core_address, - long size, - long data_ptr, - long reloc_ptr, - long lineno_ptr, - long reloc_number, - long lineno_number, - long alignment)); - -#ifndef tc_coff_symbol_emit_hook -void tc_coff_symbol_emit_hook PARAMS ((symbolS *)); -#endif - -/* Sanity check. */ - -#ifdef TC_I960 -#ifndef C_LEAFSTAT -hey ! Where is the C_LEAFSTAT definition ? i960 - coff support is depending on it. -#endif /* no C_LEAFSTAT */ -#endif /* TC_I960 */ -extern struct internal_scnhdr data_section_header; -extern struct internal_scnhdr text_section_header; - -/* Forward the segment of a forwarded symbol. */ -#define OBJ_COPY_SYMBOL_ATTRIBUTES(dest,src) \ - (SF_GET_GET_SEGMENT (dest) \ - ? (S_SET_SEGMENT (dest, S_GET_SEGMENT (src)), 0) \ - : 0) - -#ifdef TE_PE -#define obj_handle_link_once(t) obj_coff_pe_handle_link_once (t) -extern void obj_coff_pe_handle_link_once (); -#endif - -#endif /* not BFD_ASSEMBLER */ - -extern const pseudo_typeS coff_pseudo_table[]; - -#ifndef obj_pop_insert -#define obj_pop_insert() pop_insert (coff_pseudo_table) -#endif - -/* In COFF, if a symbol is defined using .def/.val SYM/.endef, it's OK - to redefine the symbol later on. This can happen if C symbols use - a prefix, and a symbol is defined both with and without the prefix, - as in start/_start/__start in gcc/libgcc1-test.c. */ -#define RESOLVE_SYMBOL_REDEFINITION(sym) \ -(SF_GET_GET_SEGMENT (sym) \ - ? (sym->sy_frag = frag_now, \ - S_SET_VALUE (sym, frag_now_fix ()), \ - S_SET_SEGMENT (sym, now_seg), \ - 0) \ - : 0) - -/* Stabs in a coff file go into their own section. */ -#define SEPARATE_STAB_SECTIONS 1 - -/* We need 12 bytes at the start of the section to hold some initial - information. */ -extern void obj_coff_init_stab_section PARAMS ((segT)); -#define INIT_STAB_SECTION(seg) obj_coff_init_stab_section (seg) - -/* Store the number of relocations in the section aux entry. */ -#define SET_SECTION_RELOCS(sec, relocs, n) \ - SA_SET_SCN_NRELOC (section_symbol (sec), n) - -#endif /* OBJ_FORMAT_H */ diff --git a/gas/config/obj-ecoff.c b/gas/config/obj-ecoff.c deleted file mode 100644 index 69f8d9a89..000000000 --- a/gas/config/obj-ecoff.c +++ /dev/null @@ -1,328 +0,0 @@ -/* ECOFF object file format. - Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. - Contributed by Cygnus Support. - This file was put together by Ian Lance Taylor . - - This file is part of GAS. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define OBJ_HEADER "obj-ecoff.h" -#include "as.h" -#include "coff/internal.h" -#include "bfd/libcoff.h" -#include "bfd/libecoff.h" - -/* Almost all of the ECOFF support is actually in ecoff.c in the main - gas directory. This file mostly just arranges to call that one at - the right times. */ - -static int ecoff_sec_sym_ok_for_reloc PARAMS ((asection *)); -static void obj_ecoff_frob_symbol PARAMS ((symbolS *, int *)); -static void ecoff_pop_insert PARAMS ((void)); -static int ecoff_separate_stab_sections PARAMS ((void)); - -/* These are the pseudo-ops we support in this file. Only those - relating to debugging information are supported here. - - The following pseudo-ops from the Kane and Heinrich MIPS book - should be defined here, but are currently unsupported: .aent, - .bgnb, .endb, .verstamp, .vreg. - - The following pseudo-ops from the Kane and Heinrich MIPS book are - MIPS CPU specific, and should be defined by tc-mips.c: .alias, - .extern, .galive, .gjaldef, .gjrlive, .livereg, .noalias, .option, - .rdata, .sdata, .set. - - The following pseudo-ops from the Kane and Heinrich MIPS book are - not MIPS CPU specific, but are also not ECOFF specific. I have - only listed the ones which are not already in read.c. It's not - completely clear where these should be defined, but tc-mips.c is - probably the most reasonable place: .asciiz, .asm0, .endr, .err, - .half, .lab, .repeat, .struct, .weakext. */ - -const pseudo_typeS obj_pseudo_table[] = -{ - /* COFF style debugging information. .ln is not used; .loc is used - instead. */ - { "def", ecoff_directive_def, 0 }, - { "dim", ecoff_directive_dim, 0 }, - { "endef", ecoff_directive_endef, 0 }, - { "file", ecoff_directive_file, 0 }, - { "scl", ecoff_directive_scl, 0 }, - { "size", ecoff_directive_size, 0 }, - { "esize", ecoff_directive_size, 0 }, - { "tag", ecoff_directive_tag, 0 }, - { "type", ecoff_directive_type, 0 }, - { "etype", ecoff_directive_type, 0 }, - { "val", ecoff_directive_val, 0 }, - - /* ECOFF specific debugging information. */ - { "begin", ecoff_directive_begin, 0 }, - { "bend", ecoff_directive_bend, 0 }, - { "end", ecoff_directive_end, 0 }, - { "ent", ecoff_directive_ent, 0 }, - { "fmask", ecoff_directive_fmask, 0 }, - { "frame", ecoff_directive_frame, 0 }, - { "loc", ecoff_directive_loc, 0 }, - { "mask", ecoff_directive_mask, 0 }, - - /* Other ECOFF directives. */ - { "extern", ecoff_directive_extern, 0 }, - -#ifndef TC_MIPS - /* For TC_MIPS, tc-mips.c adds this. */ - { "weakext", ecoff_directive_weakext, 0 }, -#endif - - /* These are used on Irix. I don't know how to implement them. */ - { "bgnb", s_ignore, 0 }, - { "endb", s_ignore, 0 }, - { "verstamp", s_ignore, 0 }, - - /* Sentinel. */ - { NULL, s_ignore, 0 } -}; - -/* Set section VMAs and GP values before reloc processing. */ - -void -ecoff_frob_file_before_fix () -{ - bfd_vma addr; - asection **sec; - - /* Set the section VMA values. We force the .sdata and .sbss - sections to the end to ensure that their VMA addresses are close - together so that the GP register can address both of them. We - put the .bss section after the .sbss section. - - Also, for the Alpha, we must sort the sections, to make sure they - appear in the output file in the correct order. (Actually, maybe - this is a job for BFD. But the VMAs computed would be out of - whack if we computed them given our initial, random ordering. - It's possible that that wouldn't break things; I could do some - experimenting sometime and find out. - - This output ordering of sections is magic, on the Alpha, at - least. The .lita section must come before .lit8 and .lit4, - otherwise the OSF/1 linker may silently trash the .lit{4,8} - section contents. Also, .text must preceed .rdata. These differ - from the order described in some parts of the DEC OSF/1 Assembly - Language Programmer's Guide, but that order doesn't seem to work - with their linker. - - I don't know if section ordering on the MIPS is important. */ - - static const char *const names[] = { - /* text segment */ - ".text", ".rdata", ".init", ".fini", - /* data segment */ - ".data", ".lita", ".lit8", ".lit4", ".sdata", ".got", - /* bss segment */ - ".sbss", ".bss", - }; -#define n_names ((int) (sizeof (names) / sizeof (names[0]))) - - /* Sections that match names, order to be straightened out later. */ - asection *secs[n_names]; - int i; - - addr = 0; - for (i = 0; i < n_names; i++) - secs[i] = 0; - - for (sec = &stdoutput->sections; *sec != (asection *) NULL; ) - { - for (i = 0; i < n_names; i++) - if (!strcmp ((*sec)->name, names[i])) - { - secs[i] = *sec; - bfd_section_list_remove (stdoutput, sec); - break; - } - if (i == n_names) - { - bfd_set_section_vma (stdoutput, *sec, addr); - addr += bfd_section_size (stdoutput, *sec); - sec = &(*sec)->next; - } - } - for (i = 0; i < n_names; i++) - if (secs[i]) - { - bfd_set_section_vma (stdoutput, secs[i], addr); - addr += bfd_section_size (stdoutput, secs[i]); - } - for (i = n_names - 1; i >= 0; i--) - if (secs[i]) - bfd_section_list_insert (stdoutput, &stdoutput->sections, secs[i]); - - /* Fill in the register masks. */ - { - unsigned long gprmask = 0; - unsigned long fprmask = 0; - unsigned long *cprmask = NULL; - -#ifdef TC_MIPS - /* Fill in the MIPS register masks. It's probably not worth - setting up a generic interface for this. */ - gprmask = mips_gprmask; - cprmask = mips_cprmask; -#endif - -#ifdef TC_ALPHA - alpha_frob_ecoff_data (); - - if (! bfd_ecoff_set_gp_value (stdoutput, alpha_gp_value)) - as_fatal (_("Can't set GP value")); - - gprmask = alpha_gprmask; - fprmask = alpha_fprmask; -#endif - - if (! bfd_ecoff_set_regmasks (stdoutput, gprmask, fprmask, cprmask)) - as_fatal (_("Can't set register masks")); - } -} - -/* Swap out the symbols and debugging information for BFD. */ - -void -ecoff_frob_file () -{ - const struct ecoff_debug_swap * const debug_swap - = &ecoff_backend (stdoutput)->debug_swap; - bfd_vma addr ATTRIBUTE_UNUSED; - HDRR *hdr; - char *buf; - char *set; - - /* Build the ECOFF debugging information. */ - assert (ecoff_data (stdoutput) != 0); - hdr = &ecoff_data (stdoutput)->debug_info.symbolic_header; - ecoff_build_debug (hdr, &buf, debug_swap); - - /* Finish up the ecoff_tdata structure. */ - set = buf; -#define SET(ptr, count, type, size) \ - if (hdr->count == 0) \ - ecoff_data (stdoutput)->debug_info.ptr = (type) NULL; \ - else \ - { \ - ecoff_data (stdoutput)->debug_info.ptr = (type) set; \ - set += hdr->count * size; \ - } - - SET (line, cbLine, unsigned char *, sizeof (unsigned char)); - SET (external_dnr, idnMax, PTR, debug_swap->external_dnr_size); - SET (external_pdr, ipdMax, PTR, debug_swap->external_pdr_size); - SET (external_sym, isymMax, PTR, debug_swap->external_sym_size); - SET (external_opt, ioptMax, PTR, debug_swap->external_opt_size); - SET (external_aux, iauxMax, union aux_ext *, sizeof (union aux_ext)); - SET (ss, issMax, char *, sizeof (char)); - SET (ssext, issExtMax, char *, sizeof (char)); - SET (external_rfd, crfd, PTR, debug_swap->external_rfd_size); - SET (external_fdr, ifdMax, PTR, debug_swap->external_fdr_size); - SET (external_ext, iextMax, PTR, debug_swap->external_ext_size); -#undef SET -} - -/* This is called by the ECOFF code to set the external information - for a symbol. We just pass it on to BFD, which expects the swapped - information to be stored in the native field of the symbol. */ - -void -obj_ecoff_set_ext (sym, ext) - symbolS *sym; - EXTR *ext; -{ - const struct ecoff_debug_swap * const debug_swap - = &ecoff_backend (stdoutput)->debug_swap; - ecoff_symbol_type *esym; - - know (bfd_asymbol_flavour (symbol_get_bfdsym (sym)) - == bfd_target_ecoff_flavour); - esym = ecoffsymbol (symbol_get_bfdsym (sym)); - esym->local = FALSE; - esym->native = xmalloc (debug_swap->external_ext_size); - (*debug_swap->swap_ext_out) (stdoutput, ext, esym->native); -} - -static int -ecoff_sec_sym_ok_for_reloc (sec) - asection *sec ATTRIBUTE_UNUSED; -{ - return 1; -} - -static void -obj_ecoff_frob_symbol (sym, puntp) - symbolS *sym; - int *puntp ATTRIBUTE_UNUSED; -{ - ecoff_frob_symbol (sym); -} - -static void -ecoff_pop_insert () -{ - pop_insert (obj_pseudo_table); -} - -static int -ecoff_separate_stab_sections () -{ - return 0; -} - -const struct format_ops ecoff_format_ops = -{ - bfd_target_ecoff_flavour, - 0, /* dfl_leading_underscore */ - - /* FIXME: A comment why emit_section_symbols is different here (1) from - the single-format definition (0) would be in order. */ - 1, /* emit_section_symbols */ - 0, /* begin */ - ecoff_new_file, - obj_ecoff_frob_symbol, - ecoff_frob_file, - 0, /* frob_file_before_adjust */ - ecoff_frob_file_before_fix, - 0, /* frob_file_after_relocs */ - 0, /* s_get_size */ - 0, /* s_set_size */ - 0, /* s_get_align */ - 0, /* s_set_align */ - 0, /* s_get_other */ - 0, /* s_set_other */ - 0, /* s_get_desc */ - 0, /* s_set_desc */ - 0, /* s_get_type */ - 0, /* s_set_type */ - 0, /* copy_symbol_attributes */ - ecoff_generate_asm_lineno, - ecoff_stab, - ecoff_separate_stab_sections, - 0, /* init_stab_section */ - ecoff_sec_sym_ok_for_reloc, - ecoff_pop_insert, - ecoff_set_ext, - ecoff_read_begin_hook, - ecoff_symbol_new_hook -}; diff --git a/gas/config/obj-ecoff.h b/gas/config/obj-ecoff.h deleted file mode 100644 index 54ee0438d..000000000 --- a/gas/config/obj-ecoff.h +++ /dev/null @@ -1,76 +0,0 @@ -/* ECOFF object file format header file. - Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2002 - Free Software Foundation, Inc. - Contributed by Cygnus Support. - Written by Ian Lance Taylor . - - This file is part of GAS. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define OBJ_ECOFF 1 - -/* Use the generic ECOFF debugging code. */ -#define ECOFF_DEBUGGING 1 - -#define OUTPUT_FLAVOR bfd_target_ecoff_flavour - -#include "targ-cpu.h" - -#include "ecoff.h" - -/* For each gas symbol we keep track of which file it came from, of - whether we have generated an ECOFF symbol for it, and whether the - symbols is undefined (this last is needed to distinguish a .extern - symbols from a .comm symbol). */ - -struct ecoff_sy_obj -{ - struct efdr *ecoff_file; - struct localsym *ecoff_symbol; - valueT ecoff_extern_size; -}; - -#define OBJ_SYMFIELD_TYPE struct ecoff_sy_obj - -/* Modify the ECOFF symbol. */ -#define obj_frob_symbol(symp, punt) ecoff_frob_symbol (symp) - -/* Set section VMAs and GP. */ -extern void ecoff_frob_file_before_fix PARAMS ((void)); -#define obj_frob_file_before_fix() ecoff_frob_file_before_fix () - -/* This is used to write the symbolic data in the format that BFD - expects it. */ -extern void ecoff_frob_file PARAMS ((void)); -#define obj_frob_file() ecoff_frob_file () - -/* We use the ECOFF functions as our hooks. */ -#define obj_read_begin_hook ecoff_read_begin_hook -#define obj_symbol_new_hook ecoff_symbol_new_hook - -/* Record file switches in the ECOFF symbol table. */ -#define obj_app_file(name) ecoff_new_file (name) - -/* At the moment we don't want to do any stabs processing in read.c. */ -#define OBJ_PROCESS_STAB(seg, what, string, type, other, desc) \ - ecoff_stab ((seg), (what), (string), (type), (other), (desc)) - -#define EMIT_SECTION_SYMBOLS 0 -#define obj_sec_sym_ok_for_reloc(SEC) 1 - -#define obj_ecoff_set_ext ecoff_set_ext -extern void obj_ecoff_set_ext PARAMS ((symbolS *, EXTR *)); diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c deleted file mode 100644 index 01ba09624..000000000 --- a/gas/config/obj-elf.c +++ /dev/null @@ -1,2193 +0,0 @@ -/* ELF object file format - Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, - or (at your option) any later version. - - GAS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define OBJ_HEADER "obj-elf.h" -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "obstack.h" -#include "struc-symbol.h" -#include "dwarf2dbg.h" - -#ifndef ECOFF_DEBUGGING -#define ECOFF_DEBUGGING 0 -#else -#define NEED_ECOFF_DEBUG -#endif - -#ifdef NEED_ECOFF_DEBUG -#include "ecoff.h" -#endif - -#ifdef TC_ALPHA -#include "elf/alpha.h" -#endif - -#ifdef TC_MIPS -#include "elf/mips.h" -#endif - -#ifdef TC_PPC -#include "elf/ppc.h" -#endif - -#ifdef TC_I370 -#include "elf/i370.h" -#endif - -static void obj_elf_line (int); -static void obj_elf_size (int); -static void obj_elf_type (int); -static void obj_elf_ident (int); -static void obj_elf_weak (int); -static void obj_elf_local (int); -static void obj_elf_visibility (int); -static void obj_elf_symver (int); -static void obj_elf_subsection (int); -static void obj_elf_popsection (int); -static void obj_elf_tls_common (int); -static void obj_elf_lcomm (int); - -static const pseudo_typeS elf_pseudo_table[] = -{ - {"comm", obj_elf_common, 0}, - {"common", obj_elf_common, 1}, - {"ident", obj_elf_ident, 0}, - {"lcomm", obj_elf_lcomm, 0}, - {"local", obj_elf_local, 0}, - {"previous", obj_elf_previous, 0}, - {"section", obj_elf_section, 0}, - {"section.s", obj_elf_section, 0}, - {"sect", obj_elf_section, 0}, - {"sect.s", obj_elf_section, 0}, - {"pushsection", obj_elf_section, 1}, - {"popsection", obj_elf_popsection, 0}, - {"size", obj_elf_size, 0}, - {"type", obj_elf_type, 0}, - {"version", obj_elf_version, 0}, - {"weak", obj_elf_weak, 0}, - - /* These define symbol visibility. */ - {"internal", obj_elf_visibility, STV_INTERNAL}, - {"hidden", obj_elf_visibility, STV_HIDDEN}, - {"protected", obj_elf_visibility, STV_PROTECTED}, - - /* These are used for stabs-in-elf configurations. */ - {"line", obj_elf_line, 0}, - - /* This is a GNU extension to handle symbol versions. */ - {"symver", obj_elf_symver, 0}, - - /* A GNU extension to change subsection only. */ - {"subsection", obj_elf_subsection, 0}, - - /* These are GNU extensions to aid in garbage collecting C++ vtables. */ - {"vtable_inherit", (void (*) (int)) &obj_elf_vtable_inherit, 0}, - {"vtable_entry", (void (*) (int)) &obj_elf_vtable_entry, 0}, - - /* These are used for dwarf. */ - {"2byte", cons, 2}, - {"4byte", cons, 4}, - {"8byte", cons, 8}, - /* These are used for dwarf2. */ - { "file", (void (*) (int)) dwarf2_directive_file, 0 }, - { "loc", dwarf2_directive_loc, 0 }, - - /* We need to trap the section changing calls to handle .previous. */ - {"data", obj_elf_data, 0}, - {"text", obj_elf_text, 0}, - - {"tls_common", obj_elf_tls_common, 0}, - - /* End sentinel. */ - {NULL, NULL, 0}, -}; - -static const pseudo_typeS ecoff_debug_pseudo_table[] = -{ -#ifdef NEED_ECOFF_DEBUG - /* COFF style debugging information for ECOFF. .ln is not used; .loc - is used instead. */ - { "def", ecoff_directive_def, 0 }, - { "dim", ecoff_directive_dim, 0 }, - { "endef", ecoff_directive_endef, 0 }, - { "file", ecoff_directive_file, 0 }, - { "scl", ecoff_directive_scl, 0 }, - { "tag", ecoff_directive_tag, 0 }, - { "val", ecoff_directive_val, 0 }, - - /* COFF debugging requires pseudo-ops .size and .type, but ELF - already has meanings for those. We use .esize and .etype - instead. These are only generated by gcc anyhow. */ - { "esize", ecoff_directive_size, 0 }, - { "etype", ecoff_directive_type, 0 }, - - /* ECOFF specific debugging information. */ - { "begin", ecoff_directive_begin, 0 }, - { "bend", ecoff_directive_bend, 0 }, - { "end", ecoff_directive_end, 0 }, - { "ent", ecoff_directive_ent, 0 }, - { "fmask", ecoff_directive_fmask, 0 }, - { "frame", ecoff_directive_frame, 0 }, - { "loc", ecoff_directive_loc, 0 }, - { "mask", ecoff_directive_mask, 0 }, - - /* Other ECOFF directives. */ - { "extern", ecoff_directive_extern, 0 }, - - /* These are used on Irix. I don't know how to implement them. */ - { "alias", s_ignore, 0 }, - { "bgnb", s_ignore, 0 }, - { "endb", s_ignore, 0 }, - { "lab", s_ignore, 0 }, - { "noalias", s_ignore, 0 }, - { "verstamp", s_ignore, 0 }, - { "vreg", s_ignore, 0 }, -#endif - - {NULL, NULL, 0} /* end sentinel */ -}; - -#undef NO_RELOC -#include "aout/aout64.h" - -/* This is called when the assembler starts. */ - -void -elf_begin (void) -{ - asection *s; - - /* Add symbols for the known sections to the symbol table. */ - s = bfd_get_section_by_name (stdoutput, TEXT_SECTION_NAME); - symbol_table_insert (section_symbol (s)); - s = bfd_get_section_by_name (stdoutput, DATA_SECTION_NAME); - symbol_table_insert (section_symbol (s)); - s = bfd_get_section_by_name (stdoutput, BSS_SECTION_NAME); - symbol_table_insert (section_symbol (s)); -} - -void -elf_pop_insert (void) -{ - pop_insert (elf_pseudo_table); - if (ECOFF_DEBUGGING) - pop_insert (ecoff_debug_pseudo_table); -} - -static bfd_vma -elf_s_get_size (symbolS *sym) -{ - return S_GET_SIZE (sym); -} - -static void -elf_s_set_size (symbolS *sym, bfd_vma sz) -{ - S_SET_SIZE (sym, sz); -} - -static bfd_vma -elf_s_get_align (symbolS *sym) -{ - return S_GET_ALIGN (sym); -} - -static void -elf_s_set_align (symbolS *sym, bfd_vma align) -{ - S_SET_ALIGN (sym, align); -} - -int -elf_s_get_other (symbolS *sym) -{ - return elf_symbol (symbol_get_bfdsym (sym))->internal_elf_sym.st_other; -} - -static void -elf_s_set_other (symbolS *sym, int other) -{ - S_SET_OTHER (sym, other); -} - -static int -elf_sec_sym_ok_for_reloc (asection *sec) -{ - return obj_sec_sym_ok_for_reloc (sec); -} - -void -elf_file_symbol (const char *s) -{ - symbolS *sym; - - sym = symbol_new (s, absolute_section, 0, NULL); - symbol_set_frag (sym, &zero_address_frag); - symbol_get_bfdsym (sym)->flags |= BSF_FILE; - - if (symbol_rootP != sym) - { - symbol_remove (sym, &symbol_rootP, &symbol_lastP); - symbol_insert (sym, symbol_rootP, &symbol_rootP, &symbol_lastP); -#ifdef DEBUG - verify_symbol_chain (symbol_rootP, symbol_lastP); -#endif - } - -#ifdef NEED_ECOFF_DEBUG - ecoff_new_file (s); -#endif -} - -/* Called from read.c:s_comm after we've parsed .comm symbol, size. - Parse a possible alignment value. */ - -static symbolS * -elf_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP, addressT size) -{ - addressT align = 0; - int is_local = symbol_get_obj (symbolP)->local; - - if (*input_line_pointer == ',') - { - char *save = input_line_pointer; - - input_line_pointer++; - SKIP_WHITESPACE (); - - if (*input_line_pointer == '"') - { - /* For sparc. Accept .common symbol, length, "bss" */ - input_line_pointer++; - /* Some use the dot, some don't. */ - if (*input_line_pointer == '.') - input_line_pointer++; - /* Some say data, some say bss. */ - if (strncmp (input_line_pointer, "bss\"", 4) == 0) - input_line_pointer += 4; - else if (strncmp (input_line_pointer, "data\"", 5) == 0) - input_line_pointer += 5; - else - { - char *p = input_line_pointer; - char c; - - while (*--p != '"') - ; - while (!is_end_of_line[(unsigned char) *input_line_pointer]) - if (*input_line_pointer++ == '"') - break; - c = *input_line_pointer; - *input_line_pointer = '\0'; - as_bad (_("bad .common segment %s"), p); - *input_line_pointer = c; - ignore_rest_of_line (); - return NULL; - } - /* ??? Don't ask me why these are always global. */ - is_local = 0; - } - else - { - input_line_pointer = save; - align = parse_align (is_local); - if (align == (addressT) -1) - return NULL; - } - } - - if (is_local) - { - bss_alloc (symbolP, size, align); - S_CLEAR_EXTERNAL (symbolP); - } - else - { - S_SET_VALUE (symbolP, size); - S_SET_ALIGN (symbolP, align); - S_SET_EXTERNAL (symbolP); - S_SET_SEGMENT (symbolP, bfd_com_section_ptr); - } - - symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT; - - return symbolP; -} - -void -obj_elf_common (int is_common) -{ - if (flag_mri && is_common) - s_mri_common (0); - else - s_comm_internal (0, elf_common_parse); -} - -static void -obj_elf_tls_common (int ignore ATTRIBUTE_UNUSED) -{ - symbolS *symbolP = s_comm_internal (0, elf_common_parse); - - if (symbolP) - symbol_get_bfdsym (symbolP)->flags |= BSF_THREAD_LOCAL; -} - -static void -obj_elf_lcomm (int ignore ATTRIBUTE_UNUSED) -{ - symbolS *symbolP = s_comm_internal (0, s_lcomm_internal); - - if (symbolP) - symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT; -} - -static void -obj_elf_local (int ignore ATTRIBUTE_UNUSED) -{ - char *name; - int c; - symbolS *symbolP; - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - S_CLEAR_EXTERNAL (symbolP); - symbol_get_obj (symbolP)->local = 1; - if (c == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - demand_empty_rest_of_line (); -} - -static void -obj_elf_weak (int ignore ATTRIBUTE_UNUSED) -{ - char *name; - int c; - symbolS *symbolP; - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - S_SET_WEAK (symbolP); - symbol_get_obj (symbolP)->local = 1; - if (c == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - demand_empty_rest_of_line (); -} - -static void -obj_elf_visibility (int visibility) -{ - char *name; - int c; - symbolS *symbolP; - asymbol *bfdsym; - elf_symbol_type *elfsym; - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - - SKIP_WHITESPACE (); - - bfdsym = symbol_get_bfdsym (symbolP); - elfsym = elf_symbol_from (bfd_asymbol_bfd (bfdsym), bfdsym); - - assert (elfsym); - - elfsym->internal_elf_sym.st_other &= ~3; - elfsym->internal_elf_sym.st_other |= visibility; - - if (c == ',') - { - input_line_pointer ++; - - SKIP_WHITESPACE (); - - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - - demand_empty_rest_of_line (); -} - -static segT previous_section; -static int previous_subsection; - -struct section_stack -{ - struct section_stack *next; - segT seg, prev_seg; - int subseg, prev_subseg; -}; - -static struct section_stack *section_stack; - -/* Handle the .section pseudo-op. This code supports two different - syntaxes. - - The first is found on Solaris, and looks like - .section ".sec1",#alloc,#execinstr,#write - Here the names after '#' are the SHF_* flags to turn on for the - section. I'm not sure how it determines the SHT_* type (BFD - doesn't really give us control over the type, anyhow). - - The second format is found on UnixWare, and probably most SVR4 - machines, and looks like - .section .sec1,"a",@progbits - The quoted string may contain any combination of a, w, x, and - represents the SHF_* flags to turn on for the section. The string - beginning with '@' can be progbits or nobits. There should be - other possibilities, but I don't know what they are. In any case, - BFD doesn't really let us set the section type. */ - -void -obj_elf_change_section (const char *name, - int type, - int attr, - int entsize, - const char *group_name, - int linkonce, - int push) -{ - asection *old_sec; - segT sec; - flagword flags; - const struct bfd_elf_special_section *ssect; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - /* Switch to the section, creating it if necessary. */ - if (push) - { - struct section_stack *elt; - elt = xmalloc (sizeof (struct section_stack)); - elt->next = section_stack; - elt->seg = now_seg; - elt->prev_seg = previous_section; - elt->subseg = now_subseg; - elt->prev_subseg = previous_subsection; - section_stack = elt; - } - previous_section = now_seg; - previous_subsection = now_subseg; - - old_sec = bfd_get_section_by_name (stdoutput, name); - sec = subseg_new (name, 0); - ssect = _bfd_elf_get_sec_type_attr (stdoutput, name); - - if (ssect != NULL) - { - bfd_boolean override = FALSE; - - if (type == SHT_NULL) - type = ssect->type; - else if (type != ssect->type) - { - if (old_sec == NULL - /* FIXME: gcc, as of 2002-10-22, will emit - - .section .init_array,"aw",@progbits - - for __attribute__ ((section (".init_array"))). - "@progbits" is incorrect. */ - && ssect->type != SHT_INIT_ARRAY - && ssect->type != SHT_FINI_ARRAY - && ssect->type != SHT_PREINIT_ARRAY) - { - /* We allow to specify any type for a .note section. */ - if (ssect->type != SHT_NOTE) - as_warn (_("setting incorrect section type for %s"), - name); - } - else - { - as_warn (_("ignoring incorrect section type for %s"), - name); - type = ssect->type; - } - } - - if (old_sec == NULL && (attr & ~ssect->attr) != 0) - { - /* As a GNU extension, we permit a .note section to be - allocatable. If the linker sees an allocatable .note - section, it will create a PT_NOTE segment in the output - file. We also allow "x" for .note.GNU-stack. */ - if (ssect->type == SHT_NOTE - && (attr == SHF_ALLOC || attr == SHF_EXECINSTR)) - ; - /* Allow different SHF_MERGE and SHF_STRINGS if we have - something like .rodata.str. */ - else if (ssect->suffix_length == -2 - && name[ssect->prefix_length] == '.' - && (attr - & ~ssect->attr - & ~SHF_MERGE - & ~SHF_STRINGS) == 0) - ; - /* .interp, .strtab and .symtab can have SHF_ALLOC. */ - else if (attr == SHF_ALLOC - && (strcmp (name, ".interp") == 0 - || strcmp (name, ".strtab") == 0 - || strcmp (name, ".symtab") == 0)) - override = TRUE; - else - { - as_warn (_("setting incorrect section attributes for %s"), - name); - override = TRUE; - } - } - if (!override && old_sec == NULL) - attr |= ssect->attr; - } - - if (type != SHT_NULL) - elf_section_type (sec) = type; - if (attr != 0) - elf_section_flags (sec) = attr; - - /* Convert ELF type and flags to BFD flags. */ - flags = (SEC_RELOC - | ((attr & SHF_WRITE) ? 0 : SEC_READONLY) - | ((attr & SHF_ALLOC) ? SEC_ALLOC : 0) - | (((attr & SHF_ALLOC) && type != SHT_NOBITS) ? SEC_LOAD : 0) - | ((attr & SHF_EXECINSTR) ? SEC_CODE : 0) - | ((attr & SHF_MERGE) ? SEC_MERGE : 0) - | ((attr & SHF_STRINGS) ? SEC_STRINGS : 0) - | ((attr & SHF_TLS) ? SEC_THREAD_LOCAL : 0)); -#ifdef md_elf_section_flags - flags = md_elf_section_flags (flags, attr, type); -#endif - - if (old_sec == NULL) - { - symbolS *secsym; - - /* Prevent SEC_HAS_CONTENTS from being inadvertently set. */ - if (type == SHT_NOBITS) - seg_info (sec)->bss = 1; - - if (linkonce) - flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD; - bfd_set_section_flags (stdoutput, sec, flags); - if (flags & SEC_MERGE) - sec->entsize = entsize; - elf_group_name (sec) = group_name; - - /* Add a symbol for this section to the symbol table. */ - secsym = symbol_find (name); - if (secsym != NULL) - symbol_set_bfdsym (secsym, sec->symbol); - else - symbol_table_insert (section_symbol (sec)); - } - else if (attr != 0) - { - /* If section attributes are specified the second time we see a - particular section, then check that they are the same as we - saw the first time. */ - if (((old_sec->flags ^ flags) - & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE - | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS - | SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD - | SEC_THREAD_LOCAL))) - as_warn (_("ignoring changed section attributes for %s"), name); - if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize) - as_warn (_("ignoring changed section entity size for %s"), name); - if ((attr & SHF_GROUP) != 0 - && strcmp (elf_group_name (old_sec), group_name) != 0) - as_warn (_("ignoring new section group for %s"), name); - } - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif -} - -static int -obj_elf_parse_section_letters (char *str, size_t len) -{ - int attr = 0; - - while (len > 0) - { - switch (*str) - { - case 'a': - attr |= SHF_ALLOC; - break; - case 'w': - attr |= SHF_WRITE; - break; - case 'x': - attr |= SHF_EXECINSTR; - break; - case 'M': - attr |= SHF_MERGE; - break; - case 'S': - attr |= SHF_STRINGS; - break; - case 'G': - attr |= SHF_GROUP; - break; - case 'T': - attr |= SHF_TLS; - break; - /* Compatibility. */ - case 'm': - if (*(str - 1) == 'a') - { - attr |= SHF_MERGE; - if (len > 1 && str[1] == 's') - { - attr |= SHF_STRINGS; - str++, len--; - } - break; - } - default: - { - char *bad_msg = _("unrecognized .section attribute: want a,w,x,M,S,G,T"); -#ifdef md_elf_section_letter - int md_attr = md_elf_section_letter (*str, &bad_msg); - if (md_attr >= 0) - attr |= md_attr; - else -#endif - as_fatal ("%s", bad_msg); - } - break; - } - str++, len--; - } - - return attr; -} - -static int -obj_elf_section_word (char *str, size_t len) -{ - if (len == 5 && strncmp (str, "write", 5) == 0) - return SHF_WRITE; - if (len == 5 && strncmp (str, "alloc", 5) == 0) - return SHF_ALLOC; - if (len == 9 && strncmp (str, "execinstr", 9) == 0) - return SHF_EXECINSTR; - if (len == 3 && strncmp (str, "tls", 3) == 0) - return SHF_TLS; - -#ifdef md_elf_section_word - { - int md_attr = md_elf_section_word (str, len); - if (md_attr >= 0) - return md_attr; - } -#endif - - as_warn (_("unrecognized section attribute")); - return 0; -} - -static int -obj_elf_section_type (char *str, size_t len) -{ - if (len == 8 && strncmp (str, "progbits", 8) == 0) - return SHT_PROGBITS; - if (len == 6 && strncmp (str, "nobits", 6) == 0) - return SHT_NOBITS; - if (len == 4 && strncmp (str, "note", 4) == 0) - return SHT_NOTE; - -#ifdef md_elf_section_type - { - int md_type = md_elf_section_type (str, len); - if (md_type >= 0) - return md_type; - } -#endif - - as_warn (_("unrecognized section type")); - return 0; -} - -/* Get name of section. */ -static char * -obj_elf_section_name (void) -{ - char *name; - - SKIP_WHITESPACE (); - if (*input_line_pointer == '"') - { - int dummy; - - name = demand_copy_C_string (&dummy); - if (name == NULL) - { - ignore_rest_of_line (); - return NULL; - } - } - else - { - char *end = input_line_pointer; - - while (0 == strchr ("\n\t,; ", *end)) - end++; - if (end == input_line_pointer) - { - as_warn (_("missing name")); - ignore_rest_of_line (); - return NULL; - } - - name = xmalloc (end - input_line_pointer + 1); - memcpy (name, input_line_pointer, end - input_line_pointer); - name[end - input_line_pointer] = '\0'; -#ifdef tc_canonicalize_section_name - name = tc_canonicalize_section_name (name); -#endif - input_line_pointer = end; - } - SKIP_WHITESPACE (); - return name; -} - -void -obj_elf_section (int push) -{ - char *name, *group_name, *beg; - int type, attr, dummy; - int entsize; - int linkonce; - -#ifndef TC_I370 - if (flag_mri) - { - char mri_type; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - previous_section = now_seg; - previous_subsection = now_subseg; - - s_mri_sect (&mri_type); - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif - - return; - } -#endif /* ! defined (TC_I370) */ - - name = obj_elf_section_name (); - if (name == NULL) - return; - type = SHT_NULL; - attr = 0; - group_name = NULL; - entsize = 0; - linkonce = 0; - - if (*input_line_pointer == ',') - { - /* Skip the comma. */ - ++input_line_pointer; - SKIP_WHITESPACE (); - - if (*input_line_pointer == '"') - { - beg = demand_copy_C_string (&dummy); - if (beg == NULL) - { - ignore_rest_of_line (); - return; - } - attr |= obj_elf_parse_section_letters (beg, strlen (beg)); - - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - { - char c; - char *save = input_line_pointer; - - ++input_line_pointer; - SKIP_WHITESPACE (); - c = *input_line_pointer; - if (c == '"') - { - beg = demand_copy_C_string (&dummy); - if (beg == NULL) - { - ignore_rest_of_line (); - return; - } - type = obj_elf_section_type (beg, strlen (beg)); - } - else if (c == '@' || c == '%') - { - beg = ++input_line_pointer; - c = get_symbol_end (); - *input_line_pointer = c; - type = obj_elf_section_type (beg, input_line_pointer - beg); - } - else - input_line_pointer = save; - } - - SKIP_WHITESPACE (); - if ((attr & SHF_MERGE) != 0 && *input_line_pointer == ',') - { - ++input_line_pointer; - SKIP_WHITESPACE (); - entsize = get_absolute_expression (); - SKIP_WHITESPACE (); - if (entsize < 0) - { - as_warn (_("invalid merge entity size")); - attr &= ~SHF_MERGE; - entsize = 0; - } - } - else if ((attr & SHF_MERGE) != 0) - { - as_warn (_("entity size for SHF_MERGE not specified")); - attr &= ~SHF_MERGE; - } - - if ((attr & SHF_GROUP) != 0 && *input_line_pointer == ',') - { - ++input_line_pointer; - group_name = obj_elf_section_name (); - if (group_name == NULL) - attr &= ~SHF_GROUP; - else if (strncmp (input_line_pointer, ",comdat", 7) == 0) - { - input_line_pointer += 7; - linkonce = 1; - } - else if (strncmp (name, ".gnu.linkonce", 13) == 0) - linkonce = 1; - } - else if ((attr & SHF_GROUP) != 0) - { - as_warn (_("group name for SHF_GROUP not specified")); - attr &= ~SHF_GROUP; - } - } - else - { - do - { - char c; - - SKIP_WHITESPACE (); - if (*input_line_pointer != '#') - { - as_warn (_("character following name is not '#'")); - ignore_rest_of_line (); - return; - } - beg = ++input_line_pointer; - c = get_symbol_end (); - *input_line_pointer = c; - - attr |= obj_elf_section_word (beg, input_line_pointer - beg); - - SKIP_WHITESPACE (); - } - while (*input_line_pointer++ == ','); - --input_line_pointer; - } - } - - demand_empty_rest_of_line (); - - obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push); -} - -/* Change to the .data section. */ - -void -obj_elf_data (int i) -{ -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - previous_section = now_seg; - previous_subsection = now_subseg; - s_data (i); - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif -} - -/* Change to the .text section. */ - -void -obj_elf_text (int i) -{ -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - previous_section = now_seg; - previous_subsection = now_subseg; - s_text (i); - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif -} - -static void -obj_elf_subsection (int ignore ATTRIBUTE_UNUSED) -{ - register int temp; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - previous_section = now_seg; - previous_subsection = now_subseg; - - temp = get_absolute_expression (); - subseg_set (now_seg, (subsegT) temp); - demand_empty_rest_of_line (); - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif -} - -/* This can be called from the processor backends if they change - sections. */ - -void -obj_elf_section_change_hook (void) -{ - previous_section = now_seg; - previous_subsection = now_subseg; -} - -void -obj_elf_previous (int ignore ATTRIBUTE_UNUSED) -{ - segT new_section; - int new_subsection; - - if (previous_section == 0) - { - as_warn (_(".previous without corresponding .section; ignored")); - return; - } - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - new_section = previous_section; - new_subsection = previous_subsection; - previous_section = now_seg; - previous_subsection = now_subseg; - subseg_set (new_section, new_subsection); - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif -} - -static void -obj_elf_popsection (int xxx ATTRIBUTE_UNUSED) -{ - struct section_stack *top = section_stack; - - if (top == NULL) - { - as_warn (_(".popsection without corresponding .pushsection; ignored")); - return; - } - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - section_stack = top->next; - previous_section = top->prev_seg; - previous_subsection = top->prev_subseg; - subseg_set (top->seg, top->subseg); - free (top); - -#ifdef md_elf_section_change_hook - md_elf_section_change_hook (); -#endif -} - -static void -obj_elf_line (int ignore ATTRIBUTE_UNUSED) -{ - /* Assume delimiter is part of expression. BSD4.2 as fails with - delightful bug, so we are not being incompatible here. */ - new_logical_line (NULL, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -/* This handles the .symver pseudo-op, which is used to specify a - symbol version. The syntax is ``.symver NAME,SYMVERNAME''. - SYMVERNAME may contain ELF_VER_CHR ('@') characters. This - pseudo-op causes the assembler to emit a symbol named SYMVERNAME - with the same value as the symbol NAME. */ - -static void -obj_elf_symver (int ignore ATTRIBUTE_UNUSED) -{ - char *name; - char c; - char old_lexat; - symbolS *sym; - - name = input_line_pointer; - c = get_symbol_end (); - - sym = symbol_find_or_make (name); - - *input_line_pointer = c; - - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - as_bad (_("expected comma after name in .symver")); - ignore_rest_of_line (); - return; - } - - ++input_line_pointer; - SKIP_WHITESPACE (); - name = input_line_pointer; - - /* Temporarily include '@' in symbol names. */ - old_lexat = lex_type[(unsigned char) '@']; - lex_type[(unsigned char) '@'] |= LEX_NAME; - c = get_symbol_end (); - lex_type[(unsigned char) '@'] = old_lexat; - - if (symbol_get_obj (sym)->versioned_name == NULL) - { - symbol_get_obj (sym)->versioned_name = xstrdup (name); - - *input_line_pointer = c; - - if (strchr (symbol_get_obj (sym)->versioned_name, - ELF_VER_CHR) == NULL) - { - as_bad (_("missing version name in `%s' for symbol `%s'"), - symbol_get_obj (sym)->versioned_name, - S_GET_NAME (sym)); - ignore_rest_of_line (); - return; - } - } - else - { - if (strcmp (symbol_get_obj (sym)->versioned_name, name)) - { - as_bad (_("multiple versions [`%s'|`%s'] for symbol `%s'"), - name, symbol_get_obj (sym)->versioned_name, - S_GET_NAME (sym)); - ignore_rest_of_line (); - return; - } - - *input_line_pointer = c; - } - - demand_empty_rest_of_line (); -} - -/* This handles the .vtable_inherit pseudo-op, which is used to indicate - to the linker the hierarchy in which a particular table resides. The - syntax is ".vtable_inherit CHILDNAME, PARENTNAME". */ - -struct fix * -obj_elf_vtable_inherit (int ignore ATTRIBUTE_UNUSED) -{ - char *cname, *pname; - symbolS *csym, *psym; - char c, bad = 0; - - if (*input_line_pointer == '#') - ++input_line_pointer; - - cname = input_line_pointer; - c = get_symbol_end (); - csym = symbol_find (cname); - - /* GCFIXME: should check that we don't have two .vtable_inherits for - the same child symbol. Also, we can currently only do this if the - child symbol is already exists and is placed in a fragment. */ - - if (csym == NULL || symbol_get_frag (csym) == NULL) - { - as_bad ("expected `%s' to have already been set for .vtable_inherit", - cname); - bad = 1; - } - - *input_line_pointer = c; - - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - as_bad ("expected comma after name in .vtable_inherit"); - ignore_rest_of_line (); - return NULL; - } - - ++input_line_pointer; - SKIP_WHITESPACE (); - - if (*input_line_pointer == '#') - ++input_line_pointer; - - if (input_line_pointer[0] == '0' - && (input_line_pointer[1] == '\0' - || ISSPACE (input_line_pointer[1]))) - { - psym = section_symbol (absolute_section); - ++input_line_pointer; - } - else - { - pname = input_line_pointer; - c = get_symbol_end (); - psym = symbol_find_or_make (pname); - *input_line_pointer = c; - } - - demand_empty_rest_of_line (); - - if (bad) - return NULL; - - assert (symbol_get_value_expression (csym)->X_op == O_constant); - return fix_new (symbol_get_frag (csym), - symbol_get_value_expression (csym)->X_add_number, - 0, psym, 0, 0, BFD_RELOC_VTABLE_INHERIT); -} - -/* This handles the .vtable_entry pseudo-op, which is used to indicate - to the linker that a vtable slot was used. The syntax is - ".vtable_entry tablename, offset". */ - -struct fix * -obj_elf_vtable_entry (int ignore ATTRIBUTE_UNUSED) -{ - char *name; - symbolS *sym; - offsetT offset; - char c; - - if (*input_line_pointer == '#') - ++input_line_pointer; - - name = input_line_pointer; - c = get_symbol_end (); - sym = symbol_find_or_make (name); - *input_line_pointer = c; - - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - as_bad ("expected comma after name in .vtable_entry"); - ignore_rest_of_line (); - return NULL; - } - - ++input_line_pointer; - if (*input_line_pointer == '#') - ++input_line_pointer; - - offset = get_absolute_expression (); - - demand_empty_rest_of_line (); - - return fix_new (frag_now, frag_now_fix (), 0, sym, offset, 0, - BFD_RELOC_VTABLE_ENTRY); -} - -void -elf_obj_read_begin_hook (void) -{ -#ifdef NEED_ECOFF_DEBUG - if (ECOFF_DEBUGGING) - ecoff_read_begin_hook (); -#endif -} - -void -elf_obj_symbol_new_hook (symbolS *symbolP) -{ - struct elf_obj_sy *sy_obj; - - sy_obj = symbol_get_obj (symbolP); - sy_obj->size = NULL; - sy_obj->versioned_name = NULL; - -#ifdef NEED_ECOFF_DEBUG - if (ECOFF_DEBUGGING) - ecoff_symbol_new_hook (symbolP); -#endif -} - -/* When setting one symbol equal to another, by default we probably - want them to have the same "size", whatever it means in the current - context. */ - -void -elf_copy_symbol_attributes (symbolS *dest, symbolS *src) -{ - struct elf_obj_sy *srcelf = symbol_get_obj (src); - struct elf_obj_sy *destelf = symbol_get_obj (dest); - if (srcelf->size) - { - if (destelf->size == NULL) - destelf->size = xmalloc (sizeof (expressionS)); - *destelf->size = *srcelf->size; - } - else - { - if (destelf->size != NULL) - free (destelf->size); - destelf->size = NULL; - } - S_SET_SIZE (dest, S_GET_SIZE (src)); - /* Don't copy visibility. */ - S_SET_OTHER (dest, (ELF_ST_VISIBILITY (S_GET_OTHER (dest)) - | (S_GET_OTHER (src) & ~ELF_ST_VISIBILITY (-1)))); -} - -void -obj_elf_version (int ignore ATTRIBUTE_UNUSED) -{ - char *name; - unsigned int c; - char *p; - asection *seg = now_seg; - subsegT subseg = now_subseg; - Elf_Internal_Note i_note; - Elf_External_Note e_note; - asection *note_secp = NULL; - int len; - - SKIP_WHITESPACE (); - if (*input_line_pointer == '\"') - { - ++input_line_pointer; /* -> 1st char of string. */ - name = input_line_pointer; - - while (is_a_char (c = next_char_of_string ())) - ; - c = *input_line_pointer; - *input_line_pointer = '\0'; - *(input_line_pointer - 1) = '\0'; - *input_line_pointer = c; - - /* create the .note section */ - - note_secp = subseg_new (".note", 0); - bfd_set_section_flags (stdoutput, - note_secp, - SEC_HAS_CONTENTS | SEC_READONLY); - - /* process the version string */ - - len = strlen (name); - - i_note.namesz = ((len + 1) + 3) & ~3; /* round this to word boundary */ - i_note.descsz = 0; /* no description */ - i_note.type = NT_VERSION; - p = frag_more (sizeof (e_note.namesz)); - md_number_to_chars (p, i_note.namesz, sizeof (e_note.namesz)); - p = frag_more (sizeof (e_note.descsz)); - md_number_to_chars (p, i_note.descsz, sizeof (e_note.descsz)); - p = frag_more (sizeof (e_note.type)); - md_number_to_chars (p, i_note.type, sizeof (e_note.type)); - p = frag_more (len + 1); - strcpy (p, name); - - frag_align (2, 0, 0); - - subseg_set (seg, subseg); - } - else - { - as_bad (_("expected quoted string")); - } - demand_empty_rest_of_line (); -} - -static void -obj_elf_size (int ignore ATTRIBUTE_UNUSED) -{ - char *name = input_line_pointer; - char c = get_symbol_end (); - char *p; - expressionS exp; - symbolS *sym; - - p = input_line_pointer; - *p = c; - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - *p = 0; - as_bad (_("expected comma after name `%s' in .size directive"), name); - *p = c; - ignore_rest_of_line (); - return; - } - input_line_pointer++; - expression (&exp); - if (exp.X_op == O_absent) - { - as_bad (_("missing expression in .size directive")); - exp.X_op = O_constant; - exp.X_add_number = 0; - } - *p = 0; - sym = symbol_find_or_make (name); - *p = c; - if (exp.X_op == O_constant) - { - S_SET_SIZE (sym, exp.X_add_number); - if (symbol_get_obj (sym)->size) - { - xfree (symbol_get_obj (sym)->size); - symbol_get_obj (sym)->size = NULL; - } - } - else - { - symbol_get_obj (sym)->size = xmalloc (sizeof (expressionS)); - *symbol_get_obj (sym)->size = exp; - } - demand_empty_rest_of_line (); -} - -/* Handle the ELF .type pseudo-op. This sets the type of a symbol. - There are five syntaxes: - - The first (used on Solaris) is - .type SYM,#function - The second (used on UnixWare) is - .type SYM,@function - The third (reportedly to be used on Irix 6.0) is - .type SYM STT_FUNC - The fourth (used on NetBSD/Arm and Linux/ARM) is - .type SYM,%function - The fifth (used on SVR4/860) is - .type SYM,"function" - */ - -static void -obj_elf_type (int ignore ATTRIBUTE_UNUSED) -{ - char *name; - char c; - int type; - const char *typename; - symbolS *sym; - elf_symbol_type *elfsym; - - name = input_line_pointer; - c = get_symbol_end (); - sym = symbol_find_or_make (name); - elfsym = (elf_symbol_type *) symbol_get_bfdsym (sym); - *input_line_pointer = c; - - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - ++input_line_pointer; - - SKIP_WHITESPACE (); - if ( *input_line_pointer == '#' - || *input_line_pointer == '@' - || *input_line_pointer == '"' - || *input_line_pointer == '%') - ++input_line_pointer; - - typename = input_line_pointer; - c = get_symbol_end (); - - type = 0; - if (strcmp (typename, "function") == 0 - || strcmp (typename, "STT_FUNC") == 0) - type = BSF_FUNCTION; - else if (strcmp (typename, "object") == 0 - || strcmp (typename, "STT_OBJECT") == 0) - type = BSF_OBJECT; - else if (strcmp (typename, "tls_object") == 0 - || strcmp (typename, "STT_TLS") == 0) - type = BSF_OBJECT | BSF_THREAD_LOCAL; - else if (strcmp (typename, "notype") == 0 - || strcmp (typename, "STT_NOTYPE") == 0) - ; -#ifdef md_elf_symbol_type - else if ((type = md_elf_symbol_type (typename, sym, elfsym)) != -1) - ; -#endif - else - as_bad (_("unrecognized symbol type \"%s\""), typename); - - *input_line_pointer = c; - - if (*input_line_pointer == '"') - ++input_line_pointer; - - elfsym->symbol.flags |= type; - - demand_empty_rest_of_line (); -} - -static void -obj_elf_ident (int ignore ATTRIBUTE_UNUSED) -{ - static segT comment_section; - segT old_section = now_seg; - int old_subsection = now_subseg; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - if (!comment_section) - { - char *p; - comment_section = subseg_new (".comment", 0); - bfd_set_section_flags (stdoutput, comment_section, - SEC_READONLY | SEC_HAS_CONTENTS); - p = frag_more (1); - *p = 0; - } - else - subseg_set (comment_section, 0); - stringer (1); - subseg_set (old_section, old_subsection); -} - -#ifdef INIT_STAB_SECTION - -/* The first entry in a .stabs section is special. */ - -void -obj_elf_init_stab_section (segT seg) -{ - char *file; - char *p; - char *stabstr_name; - unsigned int stroff; - - /* Force the section to align to a longword boundary. Without this, - UnixWare ar crashes. */ - bfd_set_section_alignment (stdoutput, seg, 2); - - /* Make space for this first symbol. */ - p = frag_more (12); - /* Zero it out. */ - memset (p, 0, 12); - as_where (&file, NULL); - stabstr_name = xmalloc (strlen (segment_name (seg)) + 4); - strcpy (stabstr_name, segment_name (seg)); - strcat (stabstr_name, "str"); - stroff = get_stab_string_offset (file, stabstr_name); - know (stroff == 1); - md_number_to_chars (p, stroff, 4); - seg_info (seg)->stabu.p = p; -} - -#endif - -/* Fill in the counts in the first entry in a .stabs section. */ - -static void -adjust_stab_sections (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) -{ - char *name; - asection *strsec; - char *p; - int strsz, nsyms; - - if (strncmp (".stab", sec->name, 5)) - return; - if (!strcmp ("str", sec->name + strlen (sec->name) - 3)) - return; - - name = alloca (strlen (sec->name) + 4); - strcpy (name, sec->name); - strcat (name, "str"); - strsec = bfd_get_section_by_name (abfd, name); - if (strsec) - strsz = bfd_section_size (abfd, strsec); - else - strsz = 0; - nsyms = bfd_section_size (abfd, sec) / 12 - 1; - - p = seg_info (sec)->stabu.p; - assert (p != 0); - - bfd_h_put_16 (abfd, nsyms, p + 6); - bfd_h_put_32 (abfd, strsz, p + 8); -} - -#ifdef NEED_ECOFF_DEBUG - -/* This function is called by the ECOFF code. It is supposed to - record the external symbol information so that the backend can - write it out correctly. The ELF backend doesn't actually handle - this at the moment, so we do it ourselves. We save the information - in the symbol. */ - -void -elf_ecoff_set_ext (symbolS *sym, struct ecoff_extr *ext) -{ - symbol_get_bfdsym (sym)->udata.p = ext; -} - -/* This function is called by bfd_ecoff_debug_externals. It is - supposed to *EXT to the external symbol information, and return - whether the symbol should be used at all. */ - -static bfd_boolean -elf_get_extr (asymbol *sym, EXTR *ext) -{ - if (sym->udata.p == NULL) - return FALSE; - *ext = *(EXTR *) sym->udata.p; - return TRUE; -} - -/* This function is called by bfd_ecoff_debug_externals. It has - nothing to do for ELF. */ - -static void -elf_set_index (asymbol *sym ATTRIBUTE_UNUSED, - bfd_size_type indx ATTRIBUTE_UNUSED) -{ -} - -#endif /* NEED_ECOFF_DEBUG */ - -void -elf_frob_symbol (symbolS *symp, int *puntp) -{ - struct elf_obj_sy *sy_obj; - -#ifdef NEED_ECOFF_DEBUG - if (ECOFF_DEBUGGING) - ecoff_frob_symbol (symp); -#endif - - sy_obj = symbol_get_obj (symp); - - if (sy_obj->size != NULL) - { - switch (sy_obj->size->X_op) - { - case O_subtract: - S_SET_SIZE (symp, - (S_GET_VALUE (sy_obj->size->X_add_symbol) - + sy_obj->size->X_add_number - - S_GET_VALUE (sy_obj->size->X_op_symbol))); - break; - case O_constant: - S_SET_SIZE (symp, - (S_GET_VALUE (sy_obj->size->X_add_symbol) - + sy_obj->size->X_add_number)); - break; - default: - as_bad (_(".size expression too complicated to fix up")); - break; - } - free (sy_obj->size); - sy_obj->size = NULL; - } - - if (sy_obj->versioned_name != NULL) - { - char *p; - - p = strchr (sy_obj->versioned_name, ELF_VER_CHR); - know (p != NULL); - - /* This symbol was given a new name with the .symver directive. - - If this is an external reference, just rename the symbol to - include the version string. This will make the relocs be - against the correct versioned symbol. - - If this is a definition, add an alias. FIXME: Using an alias - will permit the debugging information to refer to the right - symbol. However, it's not clear whether it is the best - approach. */ - - if (! S_IS_DEFINED (symp)) - { - /* Verify that the name isn't using the @@ syntax--this is - reserved for definitions of the default version to link - against. */ - if (p[1] == ELF_VER_CHR) - { - as_bad (_("invalid attempt to declare external version name as default in symbol `%s'"), - sy_obj->versioned_name); - *puntp = TRUE; - } - S_SET_NAME (symp, sy_obj->versioned_name); - } - else - { - if (p[1] == ELF_VER_CHR && p[2] == ELF_VER_CHR) - { - size_t l; - - /* The @@@ syntax is a special case. It renames the - symbol name to versioned_name with one `@' removed. */ - l = strlen (&p[3]) + 1; - memmove (&p[2], &p[3], l); - S_SET_NAME (symp, sy_obj->versioned_name); - } - else - { - symbolS *symp2; - - /* FIXME: Creating a new symbol here is risky. We're - in the final loop over the symbol table. We can - get away with it only because the symbol goes to - the end of the list, where the loop will still see - it. It would probably be better to do this in - obj_frob_file_before_adjust. */ - - symp2 = symbol_find_or_make (sy_obj->versioned_name); - - /* Now we act as though we saw symp2 = sym. */ - - S_SET_SEGMENT (symp2, S_GET_SEGMENT (symp)); - - /* Subtracting out the frag address here is a hack - because we are in the middle of the final loop. */ - S_SET_VALUE (symp2, - (S_GET_VALUE (symp) - - symbol_get_frag (symp)->fr_address)); - - symbol_set_frag (symp2, symbol_get_frag (symp)); - - /* This will copy over the size information. */ - copy_symbol_attributes (symp2, symp); - - S_SET_OTHER (symp2, S_GET_OTHER (symp)); - - if (S_IS_WEAK (symp)) - S_SET_WEAK (symp2); - - if (S_IS_EXTERNAL (symp)) - S_SET_EXTERNAL (symp2); - } - } - } - - /* Double check weak symbols. */ - if (S_IS_WEAK (symp)) - { - if (S_IS_COMMON (symp)) - as_bad (_("symbol `%s' can not be both weak and common"), - S_GET_NAME (symp)); - } - -#ifdef TC_MIPS - /* The Irix 5 and 6 assemblers set the type of any common symbol and - any undefined non-function symbol to STT_OBJECT. We try to be - compatible, since newer Irix 5 and 6 linkers care. However, we - only set undefined symbols to be STT_OBJECT if we are on Irix, - because that is the only time gcc will generate the necessary - .global directives to mark functions. */ - - if (S_IS_COMMON (symp)) - symbol_get_bfdsym (symp)->flags |= BSF_OBJECT; - - if (strstr (TARGET_OS, "irix") != NULL - && ! S_IS_DEFINED (symp) - && (symbol_get_bfdsym (symp)->flags & BSF_FUNCTION) == 0) - symbol_get_bfdsym (symp)->flags |= BSF_OBJECT; -#endif - -#if 0 /* TC_PPC */ - /* If TC_PPC is defined, we used to force the type of a symbol to be - BSF_OBJECT if it was otherwise unset. This was required by some - version of VxWorks. Thomas de Lellis says - that this is no longer needed, so it is now commented out. */ - if ((symbol_get_bfdsym (symp)->flags - & (BSF_FUNCTION | BSF_FILE | BSF_SECTION_SYM)) == 0 - && S_IS_DEFINED (symp)) - symbol_get_bfdsym (symp)->flags |= BSF_OBJECT; -#endif -} - -struct group_list -{ - asection **head; /* Section lists. */ - unsigned int *elt_count; /* Number of sections in each list. */ - unsigned int num_group; /* Number of lists. */ -}; - -/* Called via bfd_map_over_sections. If SEC is a member of a group, - add it to a list of sections belonging to the group. INF is a - pointer to a struct group_list, which is where we store the head of - each list. */ - -static void -build_group_lists (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf) -{ - struct group_list *list = inf; - const char *group_name = elf_group_name (sec); - unsigned int i; - - if (group_name == NULL) - return; - - /* If this group already has a list, add the section to the head of - the list. */ - for (i = 0; i < list->num_group; i++) - { - if (strcmp (group_name, elf_group_name (list->head[i])) == 0) - { - elf_next_in_group (sec) = list->head[i]; - list->head[i] = sec; - list->elt_count[i] += 1; - return; - } - } - - /* New group. Make the arrays bigger in chunks to minimize calls to - realloc. */ - i = list->num_group; - if ((i & 127) == 0) - { - unsigned int newsize = i + 128; - list->head = xrealloc (list->head, newsize * sizeof (*list->head)); - list->elt_count = xrealloc (list->elt_count, - newsize * sizeof (*list->elt_count)); - } - list->head[i] = sec; - list->elt_count[i] = 1; - list->num_group += 1; -} - -void -elf_frob_file (void) -{ - struct group_list list; - unsigned int i; - - bfd_map_over_sections (stdoutput, adjust_stab_sections, NULL); - - /* Go find section groups. */ - list.num_group = 0; - list.head = NULL; - list.elt_count = NULL; - bfd_map_over_sections (stdoutput, build_group_lists, &list); - - /* Make the SHT_GROUP sections that describe each section group. We - can't set up the section contents here yet, because elf section - indices have yet to be calculated. elf.c:set_group_contents does - the rest of the work. */ - for (i = 0; i < list.num_group; i++) - { - const char *group_name = elf_group_name (list.head[i]); - const char *sec_name; - asection *s; - flagword flags; - struct symbol *sy; - int has_sym; - - flags = SEC_READONLY | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_GROUP; - for (s = list.head[i]; s != NULL; s = elf_next_in_group (s)) - if ((s->flags ^ flags) & SEC_LINK_ONCE) - { - flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD; - if (s != list.head[i]) - { - as_warn (_("assuming all members of group `%s' are COMDAT"), - group_name); - break; - } - } - - sec_name = group_name; - sy = symbol_find_exact (group_name); - has_sym = 0; - if (sy != NULL - && (sy == symbol_lastP - || (sy->sy_next != NULL - && sy->sy_next->sy_previous == sy))) - { - has_sym = 1; - sec_name = ".group"; - } - s = subseg_force_new (sec_name, 0); - if (s == NULL - || !bfd_set_section_flags (stdoutput, s, flags) - || !bfd_set_section_alignment (stdoutput, s, 2)) - { - as_fatal (_("can't create group: %s"), - bfd_errmsg (bfd_get_error ())); - } - elf_section_type (s) = SHT_GROUP; - - /* Pass a pointer to the first section in this group. */ - elf_next_in_group (s) = list.head[i]; - if (has_sym) - elf_group_id (s) = sy->bsym; - - s->_raw_size = 4 * (list.elt_count[i] + 1); - s->contents = frag_more (s->_raw_size); - frag_now->fr_fix = frag_now_fix_octets (); - } - -#ifdef elf_tc_final_processing - elf_tc_final_processing (); -#endif -} - -/* It removes any unneeded versioned symbols from the symbol table. */ - -void -elf_frob_file_before_adjust (void) -{ - if (symbol_rootP) - { - symbolS *symp; - - for (symp = symbol_rootP; symp; symp = symbol_next (symp)) - if (!S_IS_DEFINED (symp)) - { - if (symbol_get_obj (symp)->versioned_name) - { - char *p; - - /* The @@@ syntax is a special case. If the symbol is - not defined, 2 `@'s will be removed from the - versioned_name. */ - - p = strchr (symbol_get_obj (symp)->versioned_name, - ELF_VER_CHR); - know (p != NULL); - if (p[1] == ELF_VER_CHR && p[2] == ELF_VER_CHR) - { - size_t l = strlen (&p[3]) + 1; - memmove (&p[1], &p[3], l); - } - if (symbol_used_p (symp) == 0 - && symbol_used_in_reloc_p (symp) == 0) - symbol_remove (symp, &symbol_rootP, &symbol_lastP); - } - - /* If there was .weak foo, but foo was neither defined nor - used anywhere, remove it. */ - - else if (S_IS_WEAK (symp) - && symbol_used_p (symp) == 0 - && symbol_used_in_reloc_p (symp) == 0) - symbol_remove (symp, &symbol_rootP, &symbol_lastP); - } - } -} - -/* It is required that we let write_relocs have the opportunity to - optimize away fixups before output has begun, since it is possible - to eliminate all fixups for a section and thus we never should - have generated the relocation section. */ - -void -elf_frob_file_after_relocs (void) -{ -#ifdef NEED_ECOFF_DEBUG - if (ECOFF_DEBUGGING) - /* Generate the ECOFF debugging information. */ - { - const struct ecoff_debug_swap *debug_swap; - struct ecoff_debug_info debug; - char *buf; - asection *sec; - - debug_swap - = get_elf_backend_data (stdoutput)->elf_backend_ecoff_debug_swap; - know (debug_swap != NULL); - ecoff_build_debug (&debug.symbolic_header, &buf, debug_swap); - - /* Set up the pointers in debug. */ -#define SET(ptr, offset, type) \ - debug.ptr = (type) (buf + debug.symbolic_header.offset) - - SET (line, cbLineOffset, unsigned char *); - SET (external_dnr, cbDnOffset, void *); - SET (external_pdr, cbPdOffset, void *); - SET (external_sym, cbSymOffset, void *); - SET (external_opt, cbOptOffset, void *); - SET (external_aux, cbAuxOffset, union aux_ext *); - SET (ss, cbSsOffset, char *); - SET (external_fdr, cbFdOffset, void *); - SET (external_rfd, cbRfdOffset, void *); - /* ssext and external_ext are set up just below. */ - -#undef SET - - /* Set up the external symbols. */ - debug.ssext = debug.ssext_end = NULL; - debug.external_ext = debug.external_ext_end = NULL; - if (! bfd_ecoff_debug_externals (stdoutput, &debug, debug_swap, TRUE, - elf_get_extr, elf_set_index)) - as_fatal (_("failed to set up debugging information: %s"), - bfd_errmsg (bfd_get_error ())); - - sec = bfd_get_section_by_name (stdoutput, ".mdebug"); - assert (sec != NULL); - - know (!stdoutput->output_has_begun); - - /* We set the size of the section, call bfd_set_section_contents - to force the ELF backend to allocate a file position, and then - write out the data. FIXME: Is this really the best way to do - this? */ - sec->_raw_size = bfd_ecoff_debug_size (stdoutput, &debug, debug_swap); - - /* Pass BUF to bfd_set_section_contents because this will - eventually become a call to fwrite, and ISO C prohibits - passing a NULL pointer to a stdio function even if the - pointer will not be used. */ - if (! bfd_set_section_contents (stdoutput, sec, buf, 0, 0)) - as_fatal (_("can't start writing .mdebug section: %s"), - bfd_errmsg (bfd_get_error ())); - - know (stdoutput->output_has_begun); - know (sec->filepos != 0); - - if (! bfd_ecoff_write_debug (stdoutput, &debug, debug_swap, - sec->filepos)) - as_fatal (_("could not write .mdebug section: %s"), - bfd_errmsg (bfd_get_error ())); - } -#endif /* NEED_ECOFF_DEBUG */ -} - -#ifdef SCO_ELF - -/* Heavily plagiarized from obj_elf_version. The idea is to emit the - SCO specific identifier in the .notes section to satisfy the SCO - linker. - - This looks more complicated than it really is. As opposed to the - "obvious" solution, this should handle the cross dev cases - correctly. (i.e, hosting on a 64 bit big endian processor, but - generating SCO Elf code) Efficiency isn't a concern, as there - should be exactly one of these sections per object module. - - SCO OpenServer 5 identifies it's ELF modules with a standard ELF - .note section. - - int_32 namesz = 4 ; Name size - int_32 descsz = 12 ; Descriptive information - int_32 type = 1 ; - char name[4] = "SCO" ; Originator name ALWAYS SCO + NULL - int_32 version = (major ver # << 16) | version of tools ; - int_32 source = (tool_id << 16 ) | 1 ; - int_32 info = 0 ; These are set by the SCO tools, but we - don't know enough about the source - environment to set them. SCO ld currently - ignores them, and recommends we set them - to zero. */ - -#define SCO_MAJOR_VERSION 0x1 -#define SCO_MINOR_VERSION 0x1 - -void -sco_id (void) -{ - - char *name; - unsigned int c; - char ch; - char *p; - asection *seg = now_seg; - subsegT subseg = now_subseg; - Elf_Internal_Note i_note; - Elf_External_Note e_note; - asection *note_secp = NULL; - int i, len; - - /* create the .note section */ - - note_secp = subseg_new (".note", 0); - bfd_set_section_flags (stdoutput, - note_secp, - SEC_HAS_CONTENTS | SEC_READONLY); - - /* process the version string */ - - i_note.namesz = 4; - i_note.descsz = 12; /* 12 descriptive bytes */ - i_note.type = NT_VERSION; /* Contains a version string */ - - p = frag_more (sizeof (i_note.namesz)); - md_number_to_chars (p, i_note.namesz, 4); - - p = frag_more (sizeof (i_note.descsz)); - md_number_to_chars (p, i_note.descsz, 4); - - p = frag_more (sizeof (i_note.type)); - md_number_to_chars (p, i_note.type, 4); - - p = frag_more (4); - strcpy (p, "SCO"); - - /* Note: this is the version number of the ELF we're representing */ - p = frag_more (4); - md_number_to_chars (p, (SCO_MAJOR_VERSION << 16) | (SCO_MINOR_VERSION), 4); - - /* Here, we pick a magic number for ourselves (yes, I "registered" - it with SCO. The bottom bit shows that we are compat with the - SCO ABI. */ - p = frag_more (4); - md_number_to_chars (p, 0x4c520000 | 0x0001, 4); - - /* If we knew (or cared) what the source language options were, we'd - fill them in here. SCO has given us permission to ignore these - and just set them to zero. */ - p = frag_more (4); - md_number_to_chars (p, 0x0000, 4); - - frag_align (2, 0, 0); - - /* We probably can't restore the current segment, for there likely - isn't one yet... */ - if (seg && subseg) - subseg_set (seg, subseg); - -} - -#endif /* SCO_ELF */ - -static int -elf_separate_stab_sections (void) -{ -#ifdef NEED_ECOFF_DEBUG - return (!ECOFF_DEBUGGING); -#else - return 1; -#endif -} - -static void -elf_init_stab_section (segT seg) -{ -#ifdef NEED_ECOFF_DEBUG - if (!ECOFF_DEBUGGING) -#endif - obj_elf_init_stab_section (seg); -} - -const struct format_ops elf_format_ops = -{ - bfd_target_elf_flavour, - 0, /* dfl_leading_underscore */ - 1, /* emit_section_symbols */ - elf_begin, - elf_file_symbol, - elf_frob_symbol, - elf_frob_file, - elf_frob_file_before_adjust, - 0, /* obj_frob_file_before_fix */ - elf_frob_file_after_relocs, - elf_s_get_size, elf_s_set_size, - elf_s_get_align, elf_s_set_align, - elf_s_get_other, - elf_s_set_other, - 0, /* s_get_desc */ - 0, /* s_set_desc */ - 0, /* s_get_type */ - 0, /* s_set_type */ - elf_copy_symbol_attributes, -#ifdef NEED_ECOFF_DEBUG - ecoff_generate_asm_lineno, - ecoff_stab, -#else - 0, /* generate_asm_lineno */ - 0, /* process_stab */ -#endif - elf_separate_stab_sections, - elf_init_stab_section, - elf_sec_sym_ok_for_reloc, - elf_pop_insert, -#ifdef NEED_ECOFF_DEBUG - elf_ecoff_set_ext, -#else - 0, /* ecoff_set_ext */ -#endif - elf_obj_read_begin_hook, - elf_obj_symbol_new_hook -}; diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h deleted file mode 100644 index e71379721..000000000 --- a/gas/config/obj-elf.h +++ /dev/null @@ -1,250 +0,0 @@ -/* ELF object file format. - Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* HP PA-RISC support was contributed by the Center for Software Science - at the University of Utah. */ - -#ifndef _OBJ_ELF_H -#define _OBJ_ELF_H - -#define OBJ_ELF 1 - -/* Note that all macros in this file should be wrapped in #ifndef, for - sake of obj-multi.h which includes this file. */ - -#ifndef OUTPUT_FLAVOR -#define OUTPUT_FLAVOR bfd_target_elf_flavour -#endif - -#include "bfd.h" - -#define BYTES_IN_WORD 4 /* for now */ -#include "bfd/elf-bfd.h" - -#include "targ-cpu.h" - -#ifdef TC_ALPHA -#define ECOFF_DEBUGGING (alpha_flag_mdebug > 0) -extern int alpha_flag_mdebug; -#endif - -/* For now, always set ECOFF_DEBUGGING for a MIPS target. */ -#ifdef TC_MIPS -#define ECOFF_DEBUGGING mips_flag_mdebug -extern int mips_flag_mdebug; -#endif /* TC_MIPS */ - -#ifdef OBJ_MAYBE_ECOFF -#ifndef ECOFF_DEBUGGING -#define ECOFF_DEBUGGING 1 -#endif -#endif - -/* Additional information we keep for each symbol. */ -struct elf_obj_sy -{ - /* Whether the symbol has been marked as local. */ - int local; - - /* Use this to keep track of .size expressions that involve - differences that we can't compute yet. */ - expressionS *size; - - /* The name specified by the .symver directive. */ - char *versioned_name; - -#ifdef ECOFF_DEBUGGING - /* If we are generating ECOFF debugging information, we need some - additional fields for each symbol. */ - struct efdr *ecoff_file; - struct localsym *ecoff_symbol; - valueT ecoff_extern_size; -#endif -}; - -#define OBJ_SYMFIELD_TYPE struct elf_obj_sy - -/* Symbol fields used by the ELF back end. */ -#define ELF_TARGET_SYMBOL_FIELDS int local:1; - -/* Don't change this; change ELF_TARGET_SYMBOL_FIELDS instead. */ -#ifndef TARGET_SYMBOL_FIELDS -#define TARGET_SYMBOL_FIELDS ELF_TARGET_SYMBOL_FIELDS -#endif - -/* #include "targ-cpu.h" */ - -#ifndef FALSE -#define FALSE 0 -#define TRUE !FALSE -#endif - -#ifndef obj_begin -#define obj_begin() elf_begin () -#endif -extern void elf_begin (void); - -/* should be conditional on address size! */ -#define elf_symbol(asymbol) ((elf_symbol_type *) (&(asymbol)->the_bfd)) - -#ifndef S_GET_SIZE -#define S_GET_SIZE(S) \ - (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_size) -#endif -#ifndef S_SET_SIZE -#define S_SET_SIZE(S,V) \ - (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_size = (V)) -#endif - -#ifndef S_GET_ALIGN -#define S_GET_ALIGN(S) \ - (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value) -#endif -#ifndef S_SET_ALIGN -#define S_SET_ALIGN(S,V) \ - (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value = (V)) -#endif - -int elf_s_get_other (symbolS *); -#ifndef S_GET_OTHER -#define S_GET_OTHER(S) (elf_s_get_other (S)) -#endif -#ifndef S_SET_OTHER -#define S_SET_OTHER(S,V) \ - (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_other = (V)) -#endif - -extern asection *gdb_section; - -#ifndef obj_sec_set_private_data -#define obj_sec_set_private_data(B, S) \ - if (! BFD_SEND ((B), _new_section_hook, ((B), (S)))) \ - as_fatal (_("can't allocate ELF private section data: %s"), \ - bfd_errmsg (bfd_get_error ())) -#endif - -#ifndef obj_frob_file -#define obj_frob_file elf_frob_file -#endif -extern void elf_frob_file (void); - -#ifndef obj_frob_file_before_adjust -#define obj_frob_file_before_adjust elf_frob_file_before_adjust -#endif -extern void elf_frob_file_before_adjust (void); - -#ifndef obj_frob_file_after_relocs -#define obj_frob_file_after_relocs elf_frob_file_after_relocs -#endif -extern void elf_frob_file_after_relocs (void); - -#ifndef obj_app_file -#define obj_app_file elf_file_symbol -#endif -extern void elf_file_symbol (const char *); - -extern void obj_elf_section_change_hook (void); - -extern void obj_elf_section (int); -extern void obj_elf_previous (int); -extern void obj_elf_version (int); -extern void obj_elf_common (int); -extern void obj_elf_data (int); -extern void obj_elf_text (int); -extern void obj_elf_change_section - (const char *, int, int, int, const char *, int, int); -extern struct fix *obj_elf_vtable_inherit (int); -extern struct fix *obj_elf_vtable_entry (int); - -/* BFD wants to write the udata field, which is a no-no for the - predefined section symbols in bfd/section.c. They are read-only. */ -#ifndef obj_sec_sym_ok_for_reloc -#define obj_sec_sym_ok_for_reloc(SEC) ((SEC)->owner != 0) -#endif - -void elf_obj_read_begin_hook (void); -#ifndef obj_read_begin_hook -#define obj_read_begin_hook elf_obj_read_begin_hook -#endif - -void elf_obj_symbol_new_hook (symbolS *); -#ifndef obj_symbol_new_hook -#define obj_symbol_new_hook elf_obj_symbol_new_hook -#endif - -void elf_copy_symbol_attributes (symbolS *, symbolS *); -#ifndef OBJ_COPY_SYMBOL_ATTRIBUTES -#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \ - (elf_copy_symbol_attributes (DEST, SRC)) -#endif - -#ifndef SEPARATE_STAB_SECTIONS -/* Avoid ifndef each separate macro setting by wrapping the whole of the - stab group on the assumption that whoever sets SEPARATE_STAB_SECTIONS - caters to ECOFF_DEBUGGING and the right setting of INIT_STAB_SECTIONS - and OBJ_PROCESS_STAB too, without needing the tweaks below. */ - -/* Stabs go in a separate section. */ -#define SEPARATE_STAB_SECTIONS 1 - -/* We need 12 bytes at the start of the section to hold some initial - information. */ -extern void obj_elf_init_stab_section (segT); -#define INIT_STAB_SECTION(seg) obj_elf_init_stab_section (seg) - -#ifdef ECOFF_DEBUGGING -/* We smuggle stabs in ECOFF rather than using a separate section. - The Irix linker can not handle a separate stabs section. */ - -#undef SEPARATE_STAB_SECTIONS -#define SEPARATE_STAB_SECTIONS (!ECOFF_DEBUGGING) - -#undef INIT_STAB_SECTION -#define INIT_STAB_SECTION(seg) \ - ((void) (ECOFF_DEBUGGING ? 0 : (obj_elf_init_stab_section (seg), 0))) - -#undef OBJ_PROCESS_STAB -#define OBJ_PROCESS_STAB(seg, what, string, type, other, desc) \ - if (ECOFF_DEBUGGING) \ - ecoff_stab ((seg), (what), (string), (type), (other), (desc)) -#endif /* ECOFF_DEBUGGING */ - -#endif /* SEPARATE_STAB_SECTIONS not defined. */ - -extern void elf_frob_symbol (symbolS *, int *); -#ifndef obj_frob_symbol -#define obj_frob_symbol(symp, punt) elf_frob_symbol (symp, &punt) -#endif - -extern void elf_pop_insert (void); -#ifndef obj_pop_insert -#define obj_pop_insert() elf_pop_insert() -#endif - -#ifndef OBJ_MAYBE_ELF -#define obj_ecoff_set_ext elf_ecoff_set_ext -#ifdef ANSI_PROTOTYPES -struct ecoff_extr; -#endif -extern void elf_ecoff_set_ext (symbolS *, struct ecoff_extr *); -#endif - -#endif /* _OBJ_ELF_H */ diff --git a/gas/config/obj-evax.c b/gas/config/obj-evax.c deleted file mode 100644 index c2b5c873d..000000000 --- a/gas/config/obj-evax.c +++ /dev/null @@ -1,83 +0,0 @@ -/* obj-evax.c - EVAX (openVMS/Alpha) object file format. - Copyright 1996, 1997 Free Software Foundation, Inc. - Contributed by Klaus Kämpf (kkaempf@progis.de) of - proGIS Software, Aachen, Germany. - - This file is part of GAS, the GNU Assembler - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. */ - -#define OBJ_HEADER "obj-evax.h" - -#include "as.h" - -static void s_evax_weak PARAMS ((int)); - -const pseudo_typeS obj_pseudo_table[] = -{ - { "weak", s_evax_weak, 0}, - {0, 0, 0}, -}; /* obj_pseudo_table */ - -void obj_read_begin_hook () {} - -/* Handle the weak specific pseudo-op. */ - -static void -s_evax_weak (ignore) - int ignore; -{ - char *name; - int c; - symbolS *symbolP; - char *stop = NULL; - char stopc; - - if (flag_mri) - stop = mri_comment_field (&stopc); - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - S_SET_WEAK (symbolP); - if (c == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - - if (flag_mri) - mri_comment_end (stop, stopc); - - demand_empty_rest_of_line (); -} - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 131 - * End: - */ - -/* end of obj-evax.c */ diff --git a/gas/config/obj-evax.h b/gas/config/obj-evax.h deleted file mode 100644 index 98d704a18..000000000 --- a/gas/config/obj-evax.h +++ /dev/null @@ -1,95 +0,0 @@ -/* This file is obj-evax.h - Copyright 1996, 2000 Free Software Foundation, Inc. - Contributed by Klaus Kämpf (kkaempf@progis.de) of - proGIS Software, Aachen, Germany. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. */ - -/* - * This file is obj-evax.h and is intended to be a template for - * object format specific header files. - */ - -/* define an obj specific macro off which target cpu back ends may key. */ -#define OBJ_EVAX 1 - -/* include whatever target cpu is appropriate. */ -#include "targ-cpu.h" - -#ifdef BFD_ASSEMBLER -#define OUTPUT_FLAVOR bfd_target_evax_flavour -#endif - -/* - * SYMBOLS - */ - -/* - * If your object format needs to reorder symbols, define this. When - * defined, symbols are kept on a doubly linked list and functions are - * made available for push, insert, append, and delete. If not defined, - * symbols are kept on a singly linked list, only the append and clear - * facilities are available, and they are macros. - */ - -/* #define SYMBOLS_NEED_PACKPOINTERS */ - -/* */ -typedef struct - { - void *nothing; - } -obj_symbol_type; /* should be the format's symbol structure */ - -typedef void *object_headers; - -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (0) /* your magic number */ - -#define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */ - -#define obj_symbol_new_hook(s) {;} - -#define S_SET_OTHER(S,V) -#define S_SET_TYPE(S,T) -#define S_SET_DESC(S,D) -#define S_GET_OTHER(S) 0 -#define S_GET_TYPE(S) 0 -#define S_GET_DESC(S) 0 - -#define PDSC_S_K_KIND_FP_STACK 9 -#define PDSC_S_K_KIND_FP_REGISTER 10 -#define PDSC_S_K_KIND_NULL 8 - -#define PDSC_S_K_MIN_STACK_SIZE 32 -#define PDSC_S_K_MIN_REGISTER_SIZE 24 -#define PDSC_S_K_NULL_SIZE 16 - -#define PDSC_S_M_BASE_REG_IS_FP 0x80 /* low byte */ -#define PDSC_S_M_NATIVE 0x10 /* high byte */ -#define PDSC_S_M_NO_JACKET 0x20 /* high byte */ - -#define LKP_S_K_SIZE 16 - -#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) (P2VAR) = 3 - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 131 - * End: - */ diff --git a/gas/config/obj-hp300.c b/gas/config/obj-hp300.c deleted file mode 100644 index 2fc0f2559..000000000 --- a/gas/config/obj-hp300.c +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is obj-hp300.h - Copyright 1993, 2000 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include "config/obj-aout.c" - -/* Aout file generation & utilities */ -void -hp300_header_append (where, headers) - char **where; - object_headers *headers; -{ - tc_headers_hook (headers); - -#define DO(FIELD) \ - { \ - md_number_to_chars (*where, headers->header.FIELD, sizeof (headers->header.FIELD)); \ - *where += sizeof (headers->header.FIELD); \ - } - - DO (a_info); - DO (a_spare1); - DO (a_spare2); - DO (a_text); - DO (a_data); - DO (a_bss); - DO (a_trsize); - DO (a_drsize); - DO (a_spare3); - DO (a_spare4); - DO (a_spare5); - DO (a_entry); - DO (a_spare6); - DO (a_spare7); - DO (a_syms); - DO (a_spare8); -} diff --git a/gas/config/obj-hp300.h b/gas/config/obj-hp300.h deleted file mode 100644 index 8ff1f6778..000000000 --- a/gas/config/obj-hp300.h +++ /dev/null @@ -1,72 +0,0 @@ -/* This file is obj-hp300.h - Copyright 1993, 2000 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define __STRUCT_EXEC_OVERRIDE__ - -struct exec_bytes -{ - unsigned char a_info[4]; /* a_machtype/a_magic */ - unsigned char a_spare1[4]; - unsigned char a_spare2[4]; - unsigned char a_text[4]; /* length of text, in bytes */ - unsigned char a_data[4]; /* length of data, in bytes */ - unsigned char a_bss[4]; /* length of uninitialized data area for file, in bytes */ - unsigned char a_trsize[4]; /* length of relocation info for text, in bytes */ - unsigned char a_drsize[4]; /* length of relocation info for data, in bytes */ - unsigned char a_spare3[4]; /* HP = pascal interface size */ - unsigned char a_spare4[4]; /* HP = symbol table size */ - unsigned char a_spare5[4]; /* HP = debug name table size */ - unsigned char a_entry[4]; /* start address */ - unsigned char a_spare6[4]; /* HP = source line table size */ - unsigned char a_spare7[4]; /* HP = value table size */ - unsigned char a_syms[4]; /* length of symbol table data in file, in bytes */ - unsigned char a_spare8[4]; -}; - -/* How big the "struct exec" is on disk */ -#define EXEC_BYTES_SIZE (16 * 4) - -struct exec -{ - unsigned long a_info; - unsigned long a_spare1; - unsigned long a_spare2; - unsigned long a_text; - unsigned long a_data; - unsigned long a_bss; - unsigned long a_trsize; - unsigned long a_drsize; - unsigned long a_spare3; - unsigned long a_spare4; - unsigned long a_spare5; - unsigned long a_entry; - unsigned long a_spare6; - unsigned long a_spare7; - unsigned long a_syms; - unsigned long a_spare8; -}; - -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (OMAGIC) -#define AOUT_VERSION 0x02 -#define AOUT_MACHTYPE 0x0c -#define OMAGIC 0x106 - -#define obj_header_append hp300_header_append -#include "config/obj-aout.h" diff --git a/gas/config/obj-ieee.c b/gas/config/obj-ieee.c deleted file mode 100644 index 02f43393d..000000000 --- a/gas/config/obj-ieee.c +++ /dev/null @@ -1,633 +0,0 @@ -/* obj-format for ieee-695 records. - Copyright 1991, 1992, 1993, 1994, 1997, 2000 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Created by Steve Chamberlain . */ - -/* This will hopefully become the port through which bfd and gas talk, - for the moment, only ieee is known to work well. */ - -#include "bfd.h" -#include "as.h" -#include "subsegs.h" -#include "output-file.h" -#include "frags.h" - -bfd *abfd; - -/* How many addresses does the .align take? */ - -static relax_addressT -relax_align (address, alignment) - /* Address now. */ - register relax_addressT address; - - /* Alignment (binary). */ - register long alignment; -{ - relax_addressT mask; - relax_addressT new_address; - - mask = ~((~0) << alignment); - new_address = (address + mask) & (~mask); - return (new_address - address); -} - -/* Calculate the size of the frag chain - and create a bfd section to contain all of it. */ - -static void -size_section (abfd, idx) - bfd *abfd; - unsigned int idx; -{ - asection *sec; - unsigned int size = 0; - fragS *frag = segment_info[idx].frag_root; - - while (frag) - { - if (frag->fr_address != size) - { - printf (_("Out of step\n")); - size = frag->fr_address; - } - size += frag->fr_fix; - switch (frag->fr_type) - { - case rs_fill: - case rs_org: - size += frag->fr_offset * frag->fr_var; - break; - case rs_align: - case rs_align_code: - { - addressT off; - - off = relax_align (size, frag->fr_offset); - if (frag->fr_subtype != 0 && off > frag->fr_subtype) - off = 0; - size += off; - } - } - frag = frag->fr_next; - } - if (size) - { - char *name = segment_info[idx].name; - - if (name == (char *) NULL) - name = ".data"; - - segment_info[idx].user_stuff = - (char *) (sec = bfd_make_section (abfd, name)); - /* Make it output through itself. */ - sec->output_section = sec; - sec->flags |= SEC_HAS_CONTENTS; - bfd_set_section_size (abfd, sec, size); - } -} - -/* Run through a frag chain and write out the data to go with it. */ - -static void -fill_section (abfd, idx) - bfd *abfd; - unsigned int idx; -{ - asection *sec = segment_info[idx].user_stuff; - - if (sec) - { - fragS *frag = segment_info[idx].frag_root; - unsigned int offset = 0; - while (frag) - { - unsigned int fill_size; - unsigned int count; - switch (frag->fr_type) - { - case rs_fill: - case rs_align: - case rs_org: - if (frag->fr_fix) - { - bfd_set_section_contents (abfd, - sec, - frag->fr_literal, - frag->fr_address, - frag->fr_fix); - } - offset += frag->fr_fix; - fill_size = frag->fr_var; - if (fill_size) - { - unsigned int off = frag->fr_fix; - for (count = frag->fr_offset; count; count--) - { - bfd_set_section_contents (abfd, sec, - frag->fr_literal + - frag->fr_fix, - frag->fr_address + off, - fill_size); - off += fill_size; - } - } - break; - default: - abort (); - } - frag = frag->fr_next; - } - } -} - -/* Count the relocations in a chain. */ - -static unsigned int -count_entries_in_chain (idx) - unsigned int idx; -{ - unsigned int nrelocs; - fixS *fixup_ptr; - - /* Count the relocations. */ - fixup_ptr = segment_info[idx].fix_root; - nrelocs = 0; - while (fixup_ptr != (fixS *) NULL) - { - fixup_ptr = fixup_ptr->fx_next; - nrelocs++; - } - return nrelocs; -} - -/* Output all the relocations for a section. */ - -void -do_relocs_for (idx) - unsigned int idx; -{ - unsigned int nrelocs; - arelent **reloc_ptr_vector; - arelent *reloc_vector; - asymbol **ptrs; - asection *section = (asection *) (segment_info[idx].user_stuff); - unsigned int i; - fixS *from; - - if (section) - { - nrelocs = count_entries_in_chain (idx); - - reloc_ptr_vector = - (arelent **) malloc ((nrelocs + 1) * sizeof (arelent *)); - reloc_vector = (arelent *) malloc (nrelocs * sizeof (arelent)); - ptrs = (asymbol **) malloc (nrelocs * sizeof (asymbol *)); - from = segment_info[idx].fix_root; - for (i = 0; i < nrelocs; i++) - { - arelent *to = reloc_vector + i; - asymbol *s; - reloc_ptr_vector[i] = to; - to->howto = (reloc_howto_type *) (from->fx_r_type); - -#if 0 - /* We can't represent complicated things in a reloc yet. */ - if (from->fx_addsy == 0 || from->fx_subsy != 0) - abort (); -#endif - - s = &(from->fx_addsy->sy_symbol.sy); - to->address = ((char *) (from->fx_frag->fr_address + - from->fx_where)) - - ((char *) (&(from->fx_frag->fr_literal))); - to->addend = from->fx_offset; - /* If we know the symbol which we want to relocate to, turn - this reloaction into a section relative. - - If this relocation is pcrelative, and we know the - destination, we still want to keep the relocation - since - the linker might relax some of the bytes, but it stops - being pc relative and turns into an absolute relocation. */ - if (s) - { - if ((s->flags & BSF_UNDEFINED) == 0) - { - to->section = s->section; - - /* We can refer directly to the value field here, - rather than using S_GET_VALUE, because this is - only called after do_symbols, which sets up the - value field. */ - to->addend += s->value; - - to->sym_ptr_ptr = 0; - if (to->howto->pcrel_offset) - /* This is a pcrel relocation, the addend should - be adjusted. */ - to->addend -= to->address + 1; - } - else - { - to->section = 0; - *ptrs = &(from->fx_addsy->sy_symbol.sy); - to->sym_ptr_ptr = ptrs; - - if (to->howto->pcrel_offset) - /* This is a pcrel relocation, the addend should - be adjusted. */ - to->addend -= to->address - 1; - } - } - else - to->section = 0; - - ptrs++; - from = from->fx_next; - } - - /* Attach to the section. */ - section->orelocation = reloc_ptr_vector; - section->reloc_count = nrelocs; - section->flags |= SEC_LOAD; - } -} - -/* Do the symbols. */ - -static void -do_symbols (abfd) - bfd *abfd; -{ - extern symbolS *symbol_rootP; - symbolS *ptr; - asymbol **symbol_ptr_vec; - asymbol *symbol_vec; - unsigned int count = 0; - unsigned int index; - - for (ptr = symbol_rootP; - ptr != (symbolS *) NULL; - ptr = ptr->sy_next) - { - if (SEG_NORMAL (ptr->sy_symbol.seg)) - { - ptr->sy_symbol.sy.section = - (asection *) (segment_info[ptr->sy_symbol.seg].user_stuff); - S_SET_VALUE (ptr, S_GET_VALUE (ptr)); - if (ptr->sy_symbol.sy.flags == 0) - ptr->sy_symbol.sy.flags = BSF_LOCAL; - } - else - { - switch (ptr->sy_symbol.seg) - { - case SEG_ABSOLUTE: - ptr->sy_symbol.sy.flags |= BSF_ABSOLUTE; - ptr->sy_symbol.sy.section = 0; - break; - case SEG_UNKNOWN: - ptr->sy_symbol.sy.flags = BSF_UNDEFINED; - ptr->sy_symbol.sy.section = 0; - break; - default: - abort (); - } - } - ptr->sy_symbol.sy.value = S_GET_VALUE (ptr); - count++; - } - symbol_ptr_vec = (asymbol **) malloc ((count + 1) * sizeof (asymbol *)); - - index = 0; - for (ptr = symbol_rootP; - ptr != (symbolS *) NULL; - ptr = ptr->sy_next) - { - symbol_ptr_vec[index] = &(ptr->sy_symbol.sy); - index++; - } - symbol_ptr_vec[index] = 0; - abfd->outsymbols = symbol_ptr_vec; - abfd->symcount = count; -} - -/* The generic as->bfd converter. Other backends may have special case - code. */ - -void -bfd_as_write_hook () -{ - int i; - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - size_section (abfd, i); - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - fill_section (abfd, i); - - do_symbols (abfd); - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - do_relocs_for (i); -} - -S_SET_SEGMENT (x, y) - symbolS *x; - int y; -{ - x->sy_symbol.seg = y; -} - -S_IS_DEFINED (x) - symbolS *x; -{ - if (SEG_NORMAL (x->sy_symbol.seg)) - { - return 1; - } - switch (x->sy_symbol.seg) - { - case SEG_UNKNOWN: - return 0; - default: - abort (); - } -} - -S_IS_EXTERNAL (x) -{ - abort (); -} - -S_GET_DESC (x) -{ - abort (); -} - -S_GET_SEGMENT (x) - symbolS *x; -{ - return x->sy_symbol.seg; -} - -S_SET_EXTERNAL (x) - symbolS *x; -{ - x->sy_symbol.sy.flags |= BSF_GLOBAL | BSF_EXPORT; -} - -S_SET_NAME (x, y) - symbolS *x; - char *y; -{ - x->sy_symbol.sy.name = y; -} - -S_GET_OTHER (x) -{ - abort (); -} - -S_IS_DEBUG (x) -{ - abort (); -} - -#ifndef segment_name -char * -segment_name () -{ - abort (); -} -#endif - -void -obj_read_begin_hook () -{ -} - -static void -obj_ieee_section (ignore) - int ignore; -{ - extern char *input_line_pointer; - extern char is_end_of_line[]; - char *p = input_line_pointer; - char *s = p; - int i; - - /* Look up the name, if it doesn't exist, make it. */ - while (*p && *p != ' ' && *p != ',' && !is_end_of_line[*p]) - { - p++; - } - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - if (segment_info[i].hadone) - { - if (strncmp (segment_info[i].name, s, p - s) == 0) - goto ok; - } - else - break; - } - if (i == SEG_UNKNOWN) - { - as_bad (_("too many sections")); - return; - } - - segment_info[i].hadone = 1; - segment_info[i].name = malloc (p - s + 1); - memcpy (segment_info[i].name, s, p - s); - segment_info[i].name[p - s] = 0; -ok: - subseg_set (i, 0); - while (!is_end_of_line[*p]) - p++; - input_line_pointer = p; -} - -const pseudo_typeS obj_pseudo_table[] = -{ - {"section", obj_ieee_section, 0}, - {"data.b" , cons , 1}, - {"data.w" , cons , 2}, - {"data.l" , cons , 4}, - {"export" , s_globl , 0}, - {"option" , s_ignore , 0}, - {"end" , s_ignore , 0}, - {"import" , s_ignore , 0}, - {"sdata" , stringer , 0}, - 0, -}; - -void -obj_symbol_new_hook (symbolP) - symbolS *symbolP; -{ - symbolP->sy_symbol.sy.the_bfd = abfd; -} - -#if 1 - -#ifndef SUB_SEGMENT_ALIGN -#ifdef HANDLE_ALIGN -/* The last subsegment gets an alignment corresponding to the alignment - of the section. This allows proper nop-filling at the end of - code-bearing sections. */ -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ - (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ - ? get_recorded_alignment (SEG) : 0) -#else -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 2 -#endif -#endif - -extern void -write_object_file () -{ - int i; - struct frchain *frchain_ptr; - struct frag *frag_ptr; - - abfd = bfd_openw (out_file_name, "ieee"); - - if (abfd == 0) - { - as_perror (_("FATAL: Can't create %s"), out_file_name); - exit (EXIT_FAILURE); - } - bfd_set_format (abfd, bfd_object); - bfd_set_arch_mach (abfd, bfd_arch_h8300, 0); - subseg_set (1, 0); - subseg_set (2, 0); - subseg_set (3, 0); - - /* Run through all the sub-segments and align them up. Also - close any open frags. We tack a .fill onto the end of the - frag chain so that any .align's size can be worked by looking - at the next frag. */ - for (frchain_ptr = frchain_root; - frchain_ptr != (struct frchain *) NULL; - frchain_ptr = frchain_ptr->frch_next) - { - int alignment; - - subseg_set (frchain_ptr->frch_seg, frchain_ptr->frch_subseg); - - alignment = SUB_SEGMENT_ALIGN (now_seg, frchain_ptr) - -#ifdef md_do_align - md_do_align (alignment, (char *) NULL, 0, 0, alignment_done); -#endif - if (subseg_text_p (now_seg)) - frag_align_code (alignment, 0); - else - frag_align (alignment, 0, 0); - -#ifdef md_do_align - alignment_done: -#endif - - frag_wane (frag_now); - frag_now->fr_fix = 0; - know (frag_now->fr_next == NULL); - } - - /* Now build one big frag chain for each segment, linked through - fr_next. */ - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - fragS **prev_frag_ptr_ptr; - struct frchain *next_frchain_ptr; - -#if 0 - struct frag **head_ptr = segment_info[i].frag_root; -#endif - - segment_info[i].frag_root = segment_info[i].frchainP->frch_root; -#if 0 - /* I'm not sure what this is for. */ - for (frchain_ptr = segment_info[i].frchainP->frch_root; - frchain_ptr != (struct frchain *) NULL; - frchain_ptr = frchain_ptr->frch_next) - { - *head_ptr = frchain_ptr; - head_ptr = &frchain_ptr->next; - } -#endif - } - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - relax_segment (segment_info[i].frag_root, i); - - /* Relaxation has completed. Freeze all syms. */ - finalize_syms = 1; - - /* Now the addresses of the frags are correct within the segment. */ - - bfd_as_write_hook (); - bfd_close (abfd); -} - -#endif - -H_SET_TEXT_SIZE (a, b) -{ - abort (); -} - -H_GET_TEXT_SIZE () -{ - abort (); -} - -H_SET_BSS_SIZE () -{ - abort (); -} - -H_SET_STRING_SIZE () -{ - abort (); -} - -H_SET_RELOCATION_SIZE () -{ - abort (); -} - -H_SET_MAGIC_NUMBER () -{ - abort (); -} - -H_GET_FILE_SIZE () -{ - abort (); -} - -H_GET_TEXT_RELOCATION_SIZE () -{ - abort (); -} diff --git a/gas/config/obj-ieee.h b/gas/config/obj-ieee.h deleted file mode 100644 index c0bd628a5..000000000 --- a/gas/config/obj-ieee.h +++ /dev/null @@ -1,50 +0,0 @@ -/* This file is obj-ieee.h - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 2000, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define BFD 1 - -#include "bfd.h" - -typedef struct -{ - asymbol sy; - int seg; -} -obj_symbol_type; - -#define S_GET_NAME(s) (((s)->sy_symbol.sy.name)) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) (!SEG_NORMAL (x->sy_symbol.seg)) - -typedef struct - { - int x; - } -object_headers; - -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 1 - -int lineno_rootP; - -#define IEEE_STYLE diff --git a/gas/config/obj-multi.c b/gas/config/obj-multi.c deleted file mode 100644 index d115093af..000000000 --- a/gas/config/obj-multi.c +++ /dev/null @@ -1,4 +0,0 @@ -/* foo */ - -#include "as.h" - diff --git a/gas/config/obj-multi.h b/gas/config/obj-multi.h deleted file mode 100644 index 37d9fe828..000000000 --- a/gas/config/obj-multi.h +++ /dev/null @@ -1,162 +0,0 @@ -/* Multiple object format emulation. - Copyright 1995, 1996, 1997, 1999, 2000, 2002 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef _OBJ_MULTI_H -#define _OBJ_MULTI_H - -#ifdef OBJ_HEADER -#include OBJ_HEADER -#else - -#include "emul.h" -#include "targ-cpu.h" - -#define OUTPUT_FLAVOR \ - (this_format->flavor) - -#define obj_begin() \ - (this_format->begin \ - ? (*this_format->begin) () \ - : (void) 0) - -#define obj_app_file(NAME) \ - (this_format->app_file \ - ? (*this_format->app_file) (NAME) \ - : (void) 0) - -#define obj_frob_symbol(S,P) \ - (*this_format->frob_symbol) (S, &(P)) - -#define obj_frob_file() \ - (this_format->frob_file \ - ? (*this_format->frob_file) () \ - : (void) 0) - -#define obj_frob_file_before_adjust() \ - (this_format->frob_file_before_adjust \ - ? (*this_format->frob_file_before_adjust) () \ - : (void) 0) - -#define obj_frob_file_before_fix() \ - (this_format->frob_file_before_fix \ - ? (*this_format->frob_file_before_fix) () \ - : (void) 0) - -#define obj_frob_file_after_relocs() \ - (this_format->frob_file_after_relocs \ - ? (*this_format->frob_file_after_relocs) () \ - : (void) 0) - -#define obj_ecoff_set_ext \ - (*this_format->ecoff_set_ext) - -#define obj_pop_insert \ - (*this_format->pop_insert) - -#define obj_read_begin_hook() \ - (this_format->read_begin_hook \ - ? (*this_format->read_begin_hook) () \ - : (void) 0) - -#define obj_symbol_new_hook(S) \ - (this_format->symbol_new_hook \ - ? (*this_format->symbol_new_hook) (S) \ - : (void) 0) - -#define obj_sec_sym_ok_for_reloc(A) \ - (this_format->sec_sym_ok_for_reloc \ - ? (*this_format->sec_sym_ok_for_reloc) (A) \ - : 0) - -#define S_GET_SIZE \ - (*this_format->s_get_size) - -#define S_SET_SIZE(S, N) \ - (this_format->s_set_size \ - ? (*this_format->s_set_size) (S, N) \ - : (void) 0) - -#define S_GET_ALIGN \ - (*this_format->s_get_align) - -#define S_SET_ALIGN(S, N) \ - (this_format->s_set_align \ - ? (*this_format->s_set_align) (S, N) \ - : (void) 0) - -#define S_GET_OTHER \ - (*this_format->s_get_other) - -#define S_SET_OTHER(S, O) \ - (this_format->s_set_other \ - ? (*this_format->s_set_other) (S, O) \ - : (void) 0) - -#define S_GET_DESC \ - (*this_format->s_get_desc) - -#define S_SET_DESC(S, D) \ - (this_format->s_set_desc \ - ? (*this_format->s_set_desc) (S, D) \ - : (void) 0) - -#define S_GET_TYPE \ - (*this_format->s_get_desc) - -#define S_SET_TYPE(S, T) \ - (this_format->s_set_type \ - ? (*this_format->s_set_type) (S, T) \ - : (void) 0) - -#define OBJ_COPY_SYMBOL_ATTRIBUTES(d,s) \ - (this_format->copy_symbol_attributes \ - ? (*this_format->copy_symbol_attributes) (d, s) \ - : (void) 0) - -#define OBJ_PROCESS_STAB(SEG,W,S,T,O,D) \ - (this_format->process_stab \ - ? (*this_format->process_stab) (SEG,W,S,T,O,D) \ - : (void) 0) - -#define SEPARATE_STAB_SECTIONS \ - ((*this_format->separate_stab_sections) ()) - -#define INIT_STAB_SECTION(S) \ - (this_format->init_stab_section \ - ? (*this_format->init_stab_section) (S) \ - : (void) 0) - -#define EMIT_SECTION_SYMBOLS (this_format->emit_section_symbols) - -#ifdef OBJ_MAYBE_ELF -/* We need OBJ_SYMFIELD_TYPE so that symbol_get_obj is defined in symbol.c - We also need various STAB defines for stab.c */ -#include "obj-elf.h" -#endif - -#ifdef OBJ_MAYBE_AOUT -/* We want aout_process_stab in stabs.c for the aout table. Defining this - macro will have no other effect. */ -#define AOUT_STABS -#endif - -#endif /* !OBJ_HEADER */ -#endif /* _OBJ_MULTI_H */ diff --git a/gas/config/obj-som.c b/gas/config/obj-som.c deleted file mode 100644 index 454042a4f..000000000 --- a/gas/config/obj-som.c +++ /dev/null @@ -1,347 +0,0 @@ -/* SOM object file format. - Copyright 1993, 1994, 1998, 2000, 2002 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, - or (at your option) any later version. - - GAS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - - Written by the Center for Software Science at the University of Utah - and by Cygnus Support. */ - -#include "as.h" -#include "subsegs.h" -#include "aout/stab_gnu.h" -#include "obstack.h" - -static void obj_som_weak PARAMS ((int)); - -const pseudo_typeS obj_pseudo_table[] = -{ - {"weak", obj_som_weak, 0}, - {NULL, NULL, 0} -}; - -static int version_seen = 0; -static int copyright_seen = 0; -static int compiler_seen = 0; - -/* Unused by SOM. */ - -void -obj_read_begin_hook () -{ -} - -/* Handle a .compiler directive. This is intended to create the - compilation unit auxiliary header for MPE such that the linkeditor - can handle SOM extraction from archives. The format of the quoted - string is "sourcefile language version" and is delimited by blanks. */ - -void -obj_som_compiler (unused) - int unused; -{ - char *buf; - char c; - char *filename; - char *language_name; - char *p; - char *version_id; - - if (compiler_seen) - { - as_bad ("Only one .compiler pseudo-op per file!"); - ignore_rest_of_line (); - return; - } - - SKIP_WHITESPACE (); - if (*input_line_pointer == '\"') - { - buf = input_line_pointer; - ++input_line_pointer; - while (is_a_char (next_char_of_string ())) - ; - c = *input_line_pointer; - *input_line_pointer = '\000'; - } - else - { - as_bad ("Expected quoted string"); - ignore_rest_of_line (); - return; - } - - /* Parse the quoted string into its component parts. Skip the - quote. */ - filename = buf + 1; - p = filename; - while (*p != ' ' && *p != '\000') - p++; - if (*p == '\000') - { - as_bad (".compiler directive missing language and version"); - return; - } - *p = '\000'; - - language_name = ++p; - while (*p != ' ' && *p != '\000') - p++; - if (*p == '\000') - { - as_bad (".compiler directive missing version"); - return; - } - *p = '\000'; - - version_id = ++p; - while (*p != '\000') - p++; - /* Remove the trailing quote. */ - *(--p) = '\000'; - - compiler_seen = 1; - if (! bfd_som_attach_compilation_unit (stdoutput, filename, language_name, - "GNU Tools", version_id)) - { - bfd_perror (stdoutput->filename); - as_fatal ("FATAL: Attaching compiler header %s", stdoutput->filename); - } - *input_line_pointer = c; - demand_empty_rest_of_line (); -} - -/* Handle a .version directive. */ - -void -obj_som_version (unused) - int unused; -{ - char *version, c; - - if (version_seen) - { - as_bad (_("Only one .version pseudo-op per file!")); - ignore_rest_of_line (); - return; - } - - SKIP_WHITESPACE (); - if (*input_line_pointer == '\"') - { - version = input_line_pointer; - ++input_line_pointer; - while (is_a_char (next_char_of_string ())) - ; - c = *input_line_pointer; - *input_line_pointer = '\000'; - } - else - { - as_bad (_("Expected quoted string")); - ignore_rest_of_line (); - return; - } - - version_seen = 1; - if (!bfd_som_attach_aux_hdr (stdoutput, VERSION_AUX_ID, version)) - { - bfd_perror (stdoutput->filename); - as_perror (_("FATAL: Attaching version header %s"), - stdoutput->filename); - exit (EXIT_FAILURE); - } - *input_line_pointer = c; - demand_empty_rest_of_line (); -} - -/* Handle a .copyright directive. This probably isn't complete, but - it's of dubious value anyway and (IMHO) not worth the time to finish. - If you care about copyright strings that much, you fix it. */ - -void -obj_som_copyright (unused) - int unused; -{ - char *copyright, c; - - if (copyright_seen) - { - as_bad (_("Only one .copyright pseudo-op per file!")); - ignore_rest_of_line (); - return; - } - - SKIP_WHITESPACE (); - if (*input_line_pointer == '\"') - { - copyright = input_line_pointer; - ++input_line_pointer; - while (is_a_char (next_char_of_string ())) - ; - c = *input_line_pointer; - *input_line_pointer = '\000'; - } - else - { - as_bad (_("Expected quoted string")); - ignore_rest_of_line (); - return; - } - - copyright_seen = 1; - if (!bfd_som_attach_aux_hdr (stdoutput, COPYRIGHT_AUX_ID, copyright)) - { - bfd_perror (stdoutput->filename); - as_perror (_("FATAL: Attaching copyright header %s"), - stdoutput->filename); - exit (EXIT_FAILURE); - } - *input_line_pointer = c; - demand_empty_rest_of_line (); -} - -/* Perform any initialization necessary for stabs support. - - For SOM we need to create the space which will contain the - two stabs subspaces. Additionally we need to set up the - space/subspace relationships and set space/subspace attributes - which BFD does not understand. */ - -void -obj_som_init_stab_section (seg) - segT seg; -{ - segT saved_seg = now_seg; - segT space; - subsegT saved_subseg = now_subseg; - char *p, *file; - unsigned int stroff; - - /* Make the space which will contain the debug subspaces. */ - space = bfd_make_section_old_way (stdoutput, "$GDB_DEBUG$"); - - /* Set SOM specific attributes for the space. In particular we set - the space "defined", "private", "sort_key", and "spnum" values. - - Due to a bug in pxdb (called by hpux linker), the sort keys - of the various stabs spaces/subspaces need to be "small". We - reserve range 72/73 which appear to work well. */ - obj_set_section_attributes (space, 1, 1, 72, 2); - bfd_set_section_alignment (stdoutput, space, 2); - - /* Set the containing space for both stab sections to be $GDB_DEBUG$ - (just created above). Also set some attributes which BFD does - not understand. In particular, access bits, sort keys, and load - quadrant. */ - obj_set_subsection_attributes (seg, space, 0x1f, 73, 0); - bfd_set_section_alignment (stdoutput, seg, 2); - - /* Make some space for the first special stab entry and zero the memory. - It contains information about the length of this file's - stab string and the like. Using it avoids the need to - relocate the stab strings. - - The $GDB_STRINGS$ space will be created as a side effect of - the call to get_stab_string_offset. */ - p = frag_more (12); - memset (p, 0, 12); - as_where (&file, (unsigned int *) NULL); - stroff = get_stab_string_offset (file, "$GDB_STRINGS$"); - know (stroff == 1); - md_number_to_chars (p, stroff, 4); - seg_info (seg)->stabu.p = p; - - /* Set the containing space for both stab sections to be $GDB_DEBUG$ - (just created above). Also set some attributes which BFD does - not understand. In particular, access bits, sort keys, and load - quadrant. */ - seg = bfd_get_section_by_name (stdoutput, "$GDB_STRINGS$"); - obj_set_subsection_attributes (seg, space, 0x1f, 72, 0); - bfd_set_section_alignment (stdoutput, seg, 2); - - subseg_set (saved_seg, saved_subseg); -} - -/* Fill in the counts in the first entry in a .stabs section. */ - -static void -adjust_stab_sections (abfd, sec, xxx) - bfd *abfd; - asection *sec; - PTR xxx; -{ - asection *strsec; - char *p; - int strsz, nsyms; - - if (strcmp ("$GDB_SYMBOLS$", sec->name)) - return; - - strsec = bfd_get_section_by_name (abfd, "$GDB_STRINGS$"); - if (strsec) - strsz = bfd_section_size (abfd, strsec); - else - strsz = 0; - nsyms = bfd_section_size (abfd, sec) / 12 - 1; - - p = seg_info (sec)->stabu.p; - assert (p != 0); - - bfd_h_put_16 (abfd, (bfd_vma) nsyms, (bfd_byte *) p + 6); - bfd_h_put_32 (abfd, (bfd_vma) strsz, (bfd_byte *) p + 8); -} - -/* Called late in the assembly phase to adjust the special - stab entry and to set the starting address for each code subspace. */ - -void -som_frob_file () -{ - bfd_map_over_sections (stdoutput, adjust_stab_sections, (PTR) 0); -} - -static void -obj_som_weak (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *name; - int c; - symbolS *symbolP; - - do - { - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - S_SET_WEAK (symbolP); -#if 0 - symbol_get_obj (symbolP)->local = 1; -#endif - if (c == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') - c = '\n'; - } - } - while (c == ','); - demand_empty_rest_of_line (); -} diff --git a/gas/config/obj-som.h b/gas/config/obj-som.h deleted file mode 100644 index 23d79eb2b..000000000 --- a/gas/config/obj-som.h +++ /dev/null @@ -1,73 +0,0 @@ -/* SOM object file format. - Copyright 1993, 1994, 1995, 1998, 2000 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 1, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - - Written by the Center for Software Science at the University of Utah - and by Cygnus Support. */ - -#ifndef _OBJ_SOM_H -#define _OBJ_SOM_H - -#define OBJ_SOM 1 - -#include "bfd.h" -#include "bfd/som.h" -#include "targ-cpu.h" - -#ifndef FALSE -#define FALSE 0 -#define TRUE !FALSE -#endif - -/* should be conditional on address size! */ -#define som_symbol(asymbol) ((som_symbol_type *) (&(asymbol)->the_bfd)) - -extern void som_file_symbol PARAMS ((char *)); -extern void obj_som_version PARAMS ((int)); -extern void obj_som_init_stab_section PARAMS ((segT)); -extern void obj_som_copyright PARAMS ((int)); -extern void obj_som_compiler PARAMS ((int)); - -#define obj_symbol_new_hook(s) {;} - -/* SOM has several attributes for spaces/subspaces which can not - be easily expressed in BFD. We use these macros to trigger calls - into the SOM BFD backend to set these attributes. */ -#define obj_set_section_attributes bfd_som_set_section_attributes -#define obj_set_subsection_attributes bfd_som_set_subsection_attributes - -/* Likewise for symbol types. */ -#define obj_set_symbol_type bfd_som_set_symbol_type - -/* Stabs go in a separate sections. GDB expects to find them in sections - with the names $GDB_SYMBOLS$ and $GDB_STRINGS$ rather than .stab and - .stabstr. */ -#define SEPARATE_STAB_SECTIONS 1 -#define STAB_SECTION_NAME "$GDB_SYMBOLS$" -#define STAB_STRING_SECTION_NAME "$GDB_STRINGS$" - -/* We use INIT_STAB_SECTION to record the space/subspace relationships - for the various debugging sections. */ -#define INIT_STAB_SECTION(seg) obj_som_init_stab_section (seg) - -/* We'll be updating the magic 1st stab entry once the entire assembly - fail has been processed. */ -#define obj_frob_file() som_frob_file() - -#endif /* _OBJ_SOM_H */ diff --git a/gas/config/obj-vms.c b/gas/config/obj-vms.c deleted file mode 100644 index 18b4fd409..000000000 --- a/gas/config/obj-vms.c +++ /dev/null @@ -1,4933 +0,0 @@ -/* vms.c -- Write out a VAX/VMS object file - Copyright 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, - 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Written by David L. Kashtan */ -/* Modified by Eric Youngdale to write VMS debug records for program - variables */ - -/* Want all of obj-vms.h (as obj-format.h, via targ-env.h, via as.h). */ -#define WANT_VMS_OBJ_DEFS - -#include "as.h" -#include "config.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "obstack.h" -#include - -/* What we do if there is a goof. */ -#define error as_fatal - -#ifdef VMS /* These are of no use if we are cross assembling. */ -#include /* Define File Access Block. */ -#include /* Define NAM Block. */ -#include /* Define XAB - all different types. */ -extern int sys$open(), sys$close(), sys$asctim(); -#endif - -/* Version string of the compiler that produced the code we are - assembling. (And this assembler, if we do not have compiler info). */ -char *compiler_version_string; - -extern int flag_hash_long_names; /* -+ */ -extern int flag_one; /* -1; compatibility with gcc 1.x */ -extern int flag_show_after_trunc; /* -H */ -extern int flag_no_hash_mixed_case; /* -h NUM */ - -/* Flag that determines how we map names. This takes several values, and - is set with the -h switch. A value of zero implies names should be - upper case, and the presence of the -h switch inhibits the case hack. - No -h switch at all sets vms_name_mapping to 0, and allows case hacking. - A value of 2 (set with -h2) implies names should be - all lower case, with no case hack. A value of 3 (set with -h3) implies - that case should be preserved. */ - -/* If the -+ switch is given, then the hash is appended to any name that is - longer than 31 characters, regardless of the setting of the -h switch. */ - -char vms_name_mapping = 0; - -static symbolS *Entry_Point_Symbol = 0; /* Pointer to "_main" */ - -/* We augment the "gas" symbol structure with this. */ - -struct VMS_Symbol -{ - struct VMS_Symbol *Next; - symbolS *Symbol; - int Size; - int Psect_Index; - int Psect_Offset; -}; - -struct VMS_Symbol *VMS_Symbols = 0; -struct VMS_Symbol *Ctors_Symbols = 0; -struct VMS_Symbol *Dtors_Symbols = 0; - -/* We need this to keep track of the various input files, so that we can - give the debugger the correct source line. */ - -struct input_file -{ - struct input_file *next; - struct input_file *same_file_fpnt; - int file_number; - int max_line; - int min_line; - int offset; - char flag; - char *name; - symbolS *spnt; -}; - -static struct input_file *file_root = (struct input_file *) NULL; - -/* Styles of PSECTS (program sections) that we generate; just shorthand - to avoid lists of section attributes. Used by VMS_Psect_Spec(). */ -enum ps_type -{ - ps_TEXT, ps_DATA, ps_COMMON, ps_CONST, ps_CTORS, ps_DTORS -}; - -/* This enum is used to keep track of the various types of variables that - may be present. */ - -enum advanced_type -{ - BASIC, POINTER, ARRAY, ENUM, STRUCT, UNION, FUNCTION, VOID, ALIAS, UNKNOWN -}; - -/* This structure contains the information from the stabs directives, and the - information is filled in by VMS_typedef_parse. Everything that is needed - to generate the debugging record for a given symbol is present here. - This could be done more efficiently, using nested struct/unions, but for - now I am happy that it works. */ - -struct VMS_DBG_Symbol -{ - struct VMS_DBG_Symbol *next; - /* Description of what this is. */ - enum advanced_type advanced; - /* This record is for this type. */ - int dbx_type; - /* For advanced types this is the type referred to. I.e., the type - a pointer points to, or the type of object that makes up an - array. */ - int type2; - /* Use this type when generating a variable def. */ - int VMS_type; - /* Used for arrays - this will be present for all. */ - int index_min; - /* Entries, but will be meaningless for non-arrays. */ - int index_max; - /* Size in bytes of the data type. For an array, this is the size - of one element in the array. */ - int data_size; - /* Number of the structure/union/enum - used for ref. */ - int struc_numb; -}; - -#define SYMTYPLST_SIZE (1<<4) /* 16; Must be power of two. */ -#define SYMTYP_HASH(x) ((unsigned) (x) & (SYMTYPLST_SIZE - 1)) - -struct VMS_DBG_Symbol *VMS_Symbol_type_list[SYMTYPLST_SIZE]; - -/* We need this structure to keep track of forward references to - struct/union/enum that have not been defined yet. When they are - ultimately defined, then we can go back and generate the TIR - commands to make a back reference. */ - -struct forward_ref -{ - struct forward_ref *next; - int dbx_type; - int struc_numb; - char resolved; -}; - -struct forward_ref *f_ref_root = (struct forward_ref *) NULL; - -/* This routine is used to compare the names of certain types to various - fixed types that are known by the debugger. */ - -#define type_check(X) !strcmp (symbol_name, X) - -/* This variable is used to keep track of the name of the symbol we are - working on while we are parsing the stabs directives. */ - -static const char *symbol_name; - -/* We use this counter to assign numbers to all of the structures, unions - and enums that we define. When we actually declare a variable to the - debugger, we can simply do it by number, rather than describing the - whole thing each time. */ - -static int structure_count = 0; - -/* This variable is used to indicate that we are making the last attempt to - parse the stabs, and that we should define as much as we can, and ignore - the rest. */ - -static int final_pass; - -/* This variable is used to keep track of the current structure number - for a given variable. If this is < 0, that means that the structure - has not yet been defined to the debugger. This is still cool, since - the VMS object language has ways of fixing things up after the fact, - so we just make a note of this, and generate fixups at the end. */ - -static int struct_number; - -/* This is used to distinguish between D_float and G_float for telling - the debugger about doubles. gcc outputs the same .stabs regardless - of whether -mg is used to select alternate doubles. */ - -static int vax_g_doubles = 0; - -/* Local symbol references (used to handle N_ABS symbols; gcc does not - generate those, but they're possible with hand-coded assembler input) - are always made relative to some particular environment. If the current - input has any such symbols, then we expect this to get incremented - exactly once and end up having all of them be in environment #0. */ - -static int Current_Environment = -1; - -/* Every object file must specify an module name, which is also used by - traceback records. Set in Write_VMS_MHD_Records(). */ - -static char Module_Name[255+1]; - -/* Variable descriptors are used tell the debugger the data types of certain - more complicated variables (basically anything involving a structure, - union, enum, array or pointer). Some non-pointer variables of the - basic types that the debugger knows about do not require a variable - descriptor. - - Since it is impossible to have a variable descriptor longer than 128 - bytes by virtue of the way that the VMS object language is set up, - it makes not sense to make the arrays any longer than this, or worrying - about dynamic sizing of the array. - - These are the arrays and counters that we use to build a variable - descriptor. */ - -#define MAX_DEBUG_RECORD 128 -static char Local[MAX_DEBUG_RECORD]; /* Buffer for variable descriptor. */ -static char Asuffix[MAX_DEBUG_RECORD]; /* Buffer for array descriptor. */ -static int Lpnt; /* Index into Local. */ -static int Apoint; /* Index into Asuffix. */ -static char overflow; /* Flag to indicate we have written too much. */ -static int total_len; /* Used to calculate the total length of - variable descriptor plus array descriptor - - used for len byte. */ - -/* Flag if we have told user about finding global constants in the text - section. */ -static int gave_compiler_message = 0; - -/* Global data (Object records limited to 512 bytes by VAX-11 "C" runtime). */ - -static int VMS_Object_File_FD; /* File Descriptor for object file. */ -static char Object_Record_Buffer[512]; /* Buffer for object file records. */ -static size_t Object_Record_Offset; /* Offset to end of data. */ -static int Current_Object_Record_Type; /* Type of record in above. */ - -/* Macros for moving data around. Must work on big-endian systems. */ - -#ifdef VMS /* These are more efficient for VMS->VMS systems. */ -#define COPY_LONG(dest,val) ( *(long *) (dest) = (val) ) -#define COPY_SHORT(dest,val) ( *(short *) (dest) = (val) ) -#else -#define COPY_LONG(dest,val) md_number_to_chars ((dest), (val), 4) -#define COPY_SHORT(dest,val) md_number_to_chars ((dest), (val), 2) -#endif - -/* Macros for placing data into the object record buffer. */ - -#define PUT_LONG(val) \ - ( COPY_LONG (&Object_Record_Buffer[Object_Record_Offset], (val)), \ - Object_Record_Offset += 4 ) - -#define PUT_SHORT(val) \ - ( COPY_SHORT (&Object_Record_Buffer[Object_Record_Offset], (val)), \ - Object_Record_Offset += 2 ) - -#define PUT_CHAR(val) (Object_Record_Buffer[Object_Record_Offset++] = (val)) - -#define PUT_COUNTED_STRING(cp) \ - do \ - { \ - const char *p = (cp); \ - \ - PUT_CHAR ((char) strlen (p)); \ - while (*p) \ - PUT_CHAR (*p++); \ - } \ - while (0) - -/* Macro for determining if a Name has psect attributes attached - to it. */ - -#define PSECT_ATTRIBUTES_STRING "$$PsectAttributes_" -#define PSECT_ATTRIBUTES_STRING_LENGTH 18 - -#define HAS_PSECT_ATTRIBUTES(Name) \ - (strncmp ((*Name == '_' ? Name + 1 : Name), \ - PSECT_ATTRIBUTES_STRING, \ - PSECT_ATTRIBUTES_STRING_LENGTH) == 0) - - - /* in: segT out: N_TYPE bits */ -const short seg_N_TYPE[] = -{ - N_ABS, - N_TEXT, - N_DATA, - N_BSS, - N_UNDF, /* unknown */ - N_UNDF, /* error */ - N_UNDF, /* expression */ - N_UNDF, /* debug */ - N_UNDF, /* ntv */ - N_UNDF, /* ptv */ - N_REGISTER, /* register */ -}; - -const segT N_TYPE_seg[N_TYPE + 2] = -{ /* N_TYPE == 0x1E = 32-2 */ - SEG_UNKNOWN, /* N_UNDF == 0 */ - SEG_GOOF, - SEG_ABSOLUTE, /* N_ABS == 2 */ - SEG_GOOF, - SEG_TEXT, /* N_TEXT == 4 */ - SEG_GOOF, - SEG_DATA, /* N_DATA == 6 */ - SEG_GOOF, - SEG_BSS, /* N_BSS == 8 */ - SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_REGISTER, /* dummy N_REGISTER for regs = 30 */ - SEG_GOOF, -}; - - -/* The following code defines the special types of pseudo-ops that we - use with VMS. */ - -unsigned char const_flag = IN_DEFAULT_SECTION; - -static void -s_const (int arg) -{ - /* Since we don't need `arg', use it as our scratch variable so that - we won't get any "not used" warnings about it. */ - arg = get_absolute_expression (); - subseg_set (SEG_DATA, (subsegT) arg); - const_flag = 1; - demand_empty_rest_of_line (); -} - -const pseudo_typeS obj_pseudo_table[] = -{ - {"const", s_const, 0}, - {0, 0, 0}, -}; /* obj_pseudo_table */ - -/* Routine to perform RESOLVE_SYMBOL_REDEFINITION(). */ - -int -vms_resolve_symbol_redef (symbolS *sym) -{ - /* If the new symbol is .comm AND it has a size of zero, - we ignore it (i.e. the old symbol overrides it). */ - if (SEGMENT_TO_SYMBOL_TYPE ((int) now_seg) == (N_UNDF | N_EXT) - && frag_now_fix () == 0) - { - as_warn (_("compiler emitted zero-size common symbol `%s' already defined"), - S_GET_NAME (sym)); - return 1; - } - /* If the old symbol is .comm and it has a size of zero, - we override it with the new symbol value. */ - if (S_IS_EXTERNAL (sym) && S_IS_DEFINED (sym) && S_GET_VALUE (sym) == 0) - { - as_warn (_("compiler redefined zero-size common symbol `%s'"), - S_GET_NAME (sym)); - sym->sy_frag = frag_now; - S_SET_OTHER (sym, const_flag); - S_SET_VALUE (sym, frag_now_fix ()); - /* Keep N_EXT bit. */ - sym->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE ((int) now_seg); - return 1; - } - - return 0; -} - -/* `tc_frob_label' handler for colon(symbols.c), used to examine the - dummy label(s) gcc inserts at the beginning of each file it generates. - gcc 1.x put "gcc_compiled."; gcc 2.x (as of 2.7) puts "gcc2_compiled." - and "__gnu_language_" and possibly "__vax__doubles". */ - -void -vms_check_for_special_label (symbolS *symbolP) -{ - /* Special labels only occur prior to explicit section directives. */ - if ((const_flag & IN_DEFAULT_SECTION) != 0) - { - char *sym_name = S_GET_NAME (symbolP); - - if (*sym_name == '_') - ++sym_name; - - if (!strcmp (sym_name, "__vax_g_doubles")) - vax_g_doubles = 1; -#if 0 /* not necessary */ - else if (!strcmp (sym_name, "__vax_d_doubles")) - vax_g_doubles = 0; -#endif -#if 0 /* These are potential alternatives to tc-vax.c's md_parse_options(). */ - else if (!strcmp (sym_name, "gcc_compiled.")) - flag_one = 1; - else if (!strcmp (sym_name, "__gnu_language_cplusplus")) - flag_hash_long_names = 1; -#endif - } -} - -void -obj_read_begin_hook (void) -{ -} - -void -obj_crawl_symbol_chain (object_headers *headers) -{ - symbolS *symbolP; - symbolS **symbolPP; - int symbol_number = 0; - - symbolPP = &symbol_rootP; /* -> last symbol chain link. */ - while ((symbolP = *symbolPP) != NULL) - { - resolve_symbol_value (symbolP); - - /* OK, here is how we decide which symbols go out into the - brave new symtab. Symbols that do are: - - * symbols with no name (stabd's?) - * symbols with debug info in their N_TYPE - * symbols with \1 as their 3rd character (numeric labels) - * "local labels" needed for PIC fixups - - Symbols that don't are: - * symbols that are registers - - All other symbols are output. We complain if a deleted - symbol was marked external. */ - - if (!S_IS_REGISTER (symbolP)) - { - symbolP->sy_number = symbol_number++; - symbolP->sy_name_offset = 0; - symbolPP = &symbolP->sy_next; - } - else - { - if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP)) - as_bad (_("Local symbol %s never defined"), - S_GET_NAME (symbolP)); - - /* Unhook it from the chain. */ - *symbolPP = symbol_next (symbolP); - } - } - - H_SET_STRING_SIZE (headers, string_byte_count); - H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number); -} - - -/* VMS OBJECT FILE HACKING ROUTINES. */ - -/* Create the VMS object file. */ - -static void -Create_VMS_Object_File (void) -{ -#ifdef eunice - VMS_Object_File_FD = creat (out_file_name, 0777, "var"); -#else -#ifndef VMS - VMS_Object_File_FD = creat (out_file_name, 0777); -#else /* VMS */ - VMS_Object_File_FD = creat (out_file_name, 0, "rfm=var", - "ctx=bin", "mbc=16", "deq=64", "fop=tef", - "shr=nil"); -#endif /* !VMS */ -#endif /* !eunice */ - /* Deal with errors. */ - if (VMS_Object_File_FD < 0) - as_fatal (_("Couldn't create VMS object file \"%s\""), out_file_name); - /* Initialize object file hacking variables. */ - Object_Record_Offset = 0; - Current_Object_Record_Type = -1; -} - -/* Flush the object record buffer to the object file. */ - -static void -Flush_VMS_Object_Record_Buffer (void) -{ - /* If the buffer is empty, there's nothing to do. */ - if (Object_Record_Offset == 0) - return; - -#ifndef VMS /* For cross-assembly purposes. */ - { - char RecLen[2]; - - /* "Variable-length record" files have a two byte length field - prepended to each record. It's normally out-of-band, and native - VMS output will insert it automatically for this type of file. - When cross-assembling, we must write it explicitly. */ - md_number_to_chars (RecLen, Object_Record_Offset, 2); - if (write (VMS_Object_File_FD, RecLen, 2) != 2) - error (_("I/O error writing VMS object file (length prefix)")); - /* We also need to force the actual record to be an even number of - bytes. For native output, that's automatic; when cross-assembling, - pad with a NUL byte if length is odd. Do so _after_ writing the - pre-padded length. Since our buffer is defined with even size, - an odd offset implies that it has some room left. */ - if ((Object_Record_Offset & 1) != 0) - Object_Record_Buffer[Object_Record_Offset++] = '\0'; - } -#endif /* not VMS */ - - /* Write the data to the file. */ - if ((size_t) write (VMS_Object_File_FD, Object_Record_Buffer, - Object_Record_Offset) != Object_Record_Offset) - error (_("I/O error writing VMS object file")); - - /* The buffer is now empty. */ - Object_Record_Offset = 0; -} - -/* Declare a particular type of object file record. */ - -static void -Set_VMS_Object_File_Record (int Type) -{ - /* If the type matches, we are done. */ - if (Type == Current_Object_Record_Type) - return; - /* Otherwise: flush the buffer. */ - Flush_VMS_Object_Record_Buffer (); - /* Remember the new type. */ - Current_Object_Record_Type = Type; -} - -/* Close the VMS Object file. */ - -static void -Close_VMS_Object_File (void) -{ - /* Flush (should never be necessary) and reset saved record-type context. */ - Set_VMS_Object_File_Record (-1); - -#ifndef VMS /* For cross-assembly purposes. */ - { - char RecLen[2]; - int minus_one = -1; - - /* Write a 2 byte record-length field of -1 into the file, which - means end-of-block when read, hence end-of-file when occurring - in the file's last block. It is only needed for variable-length - record files transferred to VMS as fixed-length record files - (typical for binary FTP; NFS shouldn't need it, but it won't hurt). */ - md_number_to_chars (RecLen, minus_one, 2); - write (VMS_Object_File_FD, RecLen, 2); - } -#else - /* When written on a VMS system, the file header (cf inode) will record - the actual end-of-file position and no inline marker is needed. */ -#endif - - close (VMS_Object_File_FD); -} - -/* Text Information and Relocation routines. */ - -/* Stack Psect base followed by signed, varying-sized offset. - Common to several object records. */ - -static void -vms_tir_stack_psect (int Psect_Index, int Offset, int Force) -{ - int psect_width, offset_width; - - psect_width = ((unsigned) Psect_Index > 255) ? 2 : 1; - offset_width = (Force || Offset > 32767 || Offset < -32768) ? 4 - : (Offset > 127 || Offset < -128) ? 2 : 1; -#define Sta_P(p,o) (((o)<<1) | ((p)-1)) - /* Byte or word psect; byte, word, or longword offset. */ - switch (Sta_P(psect_width,offset_width)) - { - case Sta_P(1,1): PUT_CHAR (TIR_S_C_STA_PB); - PUT_CHAR ((char) (unsigned char) Psect_Index); - PUT_CHAR ((char) Offset); - break; - case Sta_P(1,2): PUT_CHAR (TIR_S_C_STA_PW); - PUT_CHAR ((char) (unsigned char) Psect_Index); - PUT_SHORT (Offset); - break; - case Sta_P(1,4): PUT_CHAR (TIR_S_C_STA_PL); - PUT_CHAR ((char) (unsigned char) Psect_Index); - PUT_LONG (Offset); - break; - case Sta_P(2,1): PUT_CHAR (TIR_S_C_STA_WPB); - PUT_SHORT (Psect_Index); - PUT_CHAR ((char) Offset); - break; - case Sta_P(2,2): PUT_CHAR (TIR_S_C_STA_WPW); - PUT_SHORT (Psect_Index); - PUT_SHORT (Offset); - break; - case Sta_P(2,4): PUT_CHAR (TIR_S_C_STA_WPL); - PUT_SHORT (Psect_Index); - PUT_LONG (Offset); - break; - } -#undef Sta_P -} - -/* Store immediate data in current Psect. */ - -static void -VMS_Store_Immediate_Data (const char *Pointer, int Size, int Record_Type) -{ - int i; - - Set_VMS_Object_File_Record (Record_Type); - /* We can only store as most 128 bytes at a time due to the way that - TIR commands are encoded. */ - while (Size > 0) - { - i = (Size > 128) ? 128 : Size; - Size -= i; - /* If we cannot accommodate this record, flush the buffer. */ - if ((Object_Record_Offset + i + 1) >= sizeof Object_Record_Buffer) - Flush_VMS_Object_Record_Buffer (); - /* If the buffer is empty we must insert record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (Record_Type); - /* Store the count. The Store Immediate TIR command is implied by - a negative command byte, and the length of the immediate data - is abs(command_byte). So, we write the negated length value. */ - PUT_CHAR ((char) (-i & 0xff)); - /* Now store the data. */ - while (--i >= 0) - PUT_CHAR (*Pointer++); - } - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - -/* Make a data reference. */ - -static void -VMS_Set_Data (int Psect_Index, int Offset, int Record_Type, int Force) -{ - Set_VMS_Object_File_Record (Record_Type); - /* If the buffer is empty we must insert the record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (Record_Type); - /* Stack the Psect base with its offset. */ - vms_tir_stack_psect (Psect_Index, Offset, Force); - /* Set relocation base. */ - PUT_CHAR (TIR_S_C_STO_PIDR); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - -/* Make a debugger reference to a struct, union or enum. */ - -static void -VMS_Store_Struct (int Struct_Index) -{ - /* We are writing a debug record. */ - Set_VMS_Object_File_Record (OBJ_S_C_DBG); - /* If the buffer is empty we must insert the record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_DBG); - PUT_CHAR (TIR_S_C_STA_UW); - PUT_SHORT (Struct_Index); - PUT_CHAR (TIR_S_C_CTL_STKDL); - PUT_CHAR (TIR_S_C_STO_L); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - -/* Make a debugger reference to partially define a struct, union or enum. */ - -static void -VMS_Def_Struct (int Struct_Index) -{ - /* We are writing a debug record. */ - Set_VMS_Object_File_Record (OBJ_S_C_DBG); - /* If the buffer is empty we must insert the record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_DBG); - PUT_CHAR (TIR_S_C_STA_UW); - PUT_SHORT (Struct_Index); - PUT_CHAR (TIR_S_C_CTL_DFLOC); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - -static void -VMS_Set_Struct (int Struct_Index) -{ - Set_VMS_Object_File_Record (OBJ_S_C_DBG); - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_DBG); - PUT_CHAR (TIR_S_C_STA_UW); - PUT_SHORT (Struct_Index); - PUT_CHAR (TIR_S_C_CTL_STLOC); - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - -/* Traceback Information routines. */ - -/* Write the Traceback Module Begin record. */ - -static void -VMS_TBT_Module_Begin (void) -{ - char *cp, *cp1; - int Size; - char Local[256]; - - /* Arrange to store the data locally (leave room for size byte). */ - cp = &Local[1]; - /* Begin module. */ - *cp++ = DST_S_C_MODBEG; - *cp++ = 0; /* flags; not used */ - /* Language type == "C" - (FIXME: this should be based on the input...) */ - COPY_LONG (cp, DST_S_C_C); - cp += 4; - /* Store the module name. */ - *cp++ = (char) strlen (Module_Name); - cp1 = Module_Name; - while (*cp1) - *cp++ = *cp1++; - /* Now we can store the record size. */ - Size = (cp - Local); - Local[0] = Size - 1; - /* Put it into the object record. */ - VMS_Store_Immediate_Data (Local, Size, OBJ_S_C_TBT); -} - -/* Write the Traceback Module End record. */ - -static void -VMS_TBT_Module_End (void) -{ - char Local[2]; - - /* End module. */ - Local[0] = 1; - Local[1] = DST_S_C_MODEND; - /* Put it into the object record. */ - VMS_Store_Immediate_Data (Local, 2, OBJ_S_C_TBT); -} - -/* Write a Traceback Routine Begin record. */ - -static void -VMS_TBT_Routine_Begin (symbolS *symbolP, int Psect) -{ - char *cp, *cp1; - char *Name; - int Offset; - int Size; - char Local[512]; - - /* Strip the leading "_" from the name. */ - Name = S_GET_NAME (symbolP); - if (*Name == '_') - Name++; - /* Get the text psect offset. */ - Offset = S_GET_VALUE (symbolP); - /* Set the record size. */ - Size = 1 + 1 + 4 + 1 + strlen (Name); - Local[0] = Size; - /* DST type "routine begin". */ - Local[1] = DST_S_C_RTNBEG; - /* Uses CallS/CallG. */ - Local[2] = 0; - /* Store the data so far. */ - VMS_Store_Immediate_Data (Local, 3, OBJ_S_C_TBT); - /* Make sure we are still generating a OBJ_S_C_TBT record. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_TBT); - /* Stack the address. */ - vms_tir_stack_psect (Psect, Offset, 0); - /* Store the data reference. */ - PUT_CHAR (TIR_S_C_STO_PIDR); - /* Store the counted string as data. */ - cp = Local; - cp1 = Name; - Size = strlen (cp1) + 1; - *cp++ = Size - 1; - while (*cp1) - *cp++ = *cp1++; - VMS_Store_Immediate_Data (Local, Size, OBJ_S_C_TBT); -} - -/* Write a Traceback Routine End record. - - We *must* search the symbol table to find the next routine, since the - assembler has a way of reassembling the symbol table OUT OF ORDER Thus - the next routine in the symbol list is not necessarily the next one in - memory. For debugging to work correctly we must know the size of the - routine. */ - -static void -VMS_TBT_Routine_End (int Max_Size, symbolS *sp) -{ - symbolS *symbolP; - unsigned long Size = 0x7fffffff; - char Local[16]; - valueT sym_value, sp_value = S_GET_VALUE (sp); - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - if (!S_IS_DEBUG (symbolP) && S_GET_TYPE (symbolP) == N_TEXT) - { - if (*S_GET_NAME (symbolP) == 'L') - continue; - sym_value = S_GET_VALUE (symbolP); - if (sym_value > sp_value && sym_value < Size) - Size = sym_value; - - /* Dummy labels like "gcc_compiled." should no longer reach here. */ -#if 0 - else - /* Check if gcc_compiled. has size of zero. */ - if (sym_value == sp_value && - sp != symbolP && - (!strcmp (S_GET_NAME (sp), "gcc_compiled.") || - !strcmp (S_GET_NAME (sp), "gcc2_compiled."))) - Size = sym_value; -#endif - } - } - if (Size == 0x7fffffff) - Size = Max_Size; - Size -= sp_value; /* and get the size of the routine */ - /* Record Size. */ - Local[0] = 6; - /* DST type is "routine end". */ - Local[1] = DST_S_C_RTNEND; - Local[2] = 0; /* unused */ - /* Size of routine. */ - COPY_LONG (&Local[3], Size); - /* Store the record. */ - VMS_Store_Immediate_Data (Local, 7, OBJ_S_C_TBT); -} - -/* Write a Traceback Block Begin record. */ - -static void -VMS_TBT_Block_Begin (symbolS *symbolP, int Psect, char *Name) -{ - char *cp, *cp1; - int Offset; - int Size; - char Local[512]; - - /* Set the record size. */ - Size = 1 + 1 + 4 + 1 + strlen (Name); - Local[0] = Size; - /* DST type is "begin block"; we simulate with a phony routine. */ - Local[1] = DST_S_C_BLKBEG; - /* Uses CallS/CallG. */ - Local[2] = 0; - /* Store the data so far. */ - VMS_Store_Immediate_Data (Local, 3, OBJ_S_C_DBG); - /* Make sure we are still generating a debug record. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_DBG); - /* Now get the symbol address. */ - PUT_CHAR (TIR_S_C_STA_WPL); - PUT_SHORT (Psect); - /* Get the text psect offset. */ - Offset = S_GET_VALUE (symbolP); - PUT_LONG (Offset); - /* Store the data reference. */ - PUT_CHAR (TIR_S_C_STO_PIDR); - /* Store the counted string as data. */ - cp = Local; - cp1 = Name; - Size = strlen (cp1) + 1; - *cp++ = Size - 1; - while (*cp1) - *cp++ = *cp1++; - VMS_Store_Immediate_Data (Local, Size, OBJ_S_C_DBG); -} - -/* Write a Traceback Block End record. */ - -static void -VMS_TBT_Block_End (valueT Size) -{ - char Local[16]; - - Local[0] = 6; /* record length */ - /* DST type is "block end"; simulate with a phony end routine. */ - Local[1] = DST_S_C_BLKEND; - Local[2] = 0; /* unused, must be zero */ - COPY_LONG (&Local[3], Size); - VMS_Store_Immediate_Data (Local, 7, OBJ_S_C_DBG); -} - - -/* Write a Line number <-> Program Counter correlation record. */ - -static void -VMS_TBT_Line_PC_Correlation (int Line_Number, int Offset, - int Psect, int Do_Delta) -{ - char *cp; - char Local[64]; - - if (Do_Delta == 0) - { - /* If not delta, set our PC/Line number correlation. */ - cp = &Local[1]; /* Put size in Local[0] later. */ - /* DST type is "Line Number/PC correlation". */ - *cp++ = DST_S_C_LINE_NUM; - /* Set Line number. */ - if (Line_Number - 1 <= 255) - { - *cp++ = DST_S_C_SET_LINUM_B; - *cp++ = (char) (Line_Number - 1); - } - else if (Line_Number - 1 <= 65535) - { - *cp++ = DST_S_C_SET_LINE_NUM; - COPY_SHORT (cp, Line_Number - 1), cp += 2; - } - else - { - *cp++ = DST_S_C_SET_LINUM_L; - COPY_LONG (cp, Line_Number - 1), cp += 4; - } - /* Set PC. */ - *cp++ = DST_S_C_SET_ABS_PC; - /* Store size now that we know it, then output the data. */ - Local[0] = cp - &Local[1]; - /* Account for the space that TIR_S_C_STO_PIDR will use for the PC. */ - Local[0] += 4; /* size includes length of another longword */ - VMS_Store_Immediate_Data (Local, cp - Local, OBJ_S_C_TBT); - /* Make sure we are still generating a OBJ_S_C_TBT record. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_TBT); - vms_tir_stack_psect (Psect, Offset, 0); - PUT_CHAR (TIR_S_C_STO_PIDR); - /* Do a PC offset of 0 to register the line number. */ - Local[0] = 2; - Local[1] = DST_S_C_LINE_NUM; - Local[2] = 0; /* Increment PC by 0 and register line # */ - VMS_Store_Immediate_Data (Local, 3, OBJ_S_C_TBT); - } - else - { - if (Do_Delta < 0) - { - /* When delta is negative, terminate the line numbers. */ - Local[0] = 1 + 1 + 4; - Local[1] = DST_S_C_LINE_NUM; - Local[2] = DST_S_C_TERM_L; - COPY_LONG (&Local[3], Offset); - VMS_Store_Immediate_Data (Local, 7, OBJ_S_C_TBT); - return; - } - /* Do a PC/Line delta. */ - cp = &Local[1]; - *cp++ = DST_S_C_LINE_NUM; - if (Line_Number > 1) - { - /* We need to increment the line number. */ - if (Line_Number - 1 <= 255) - { - *cp++ = DST_S_C_INCR_LINUM; - *cp++ = Line_Number - 1; - } - else if (Line_Number - 1 <= 65535) - { - *cp++ = DST_S_C_INCR_LINUM_W; - COPY_SHORT (cp, Line_Number - 1), cp += 2; - } - else - { - *cp++ = DST_S_C_INCR_LINUM_L; - COPY_LONG (cp, Line_Number - 1), cp += 4; - } - } - /* Increment the PC. */ - if (Offset <= 128) - { - /* Small offsets are encoded as negative numbers, rather than the - usual non-negative type code followed by another data field. */ - *cp++ = (char) -Offset; - } - else if (Offset <= 65535) - { - *cp++ = DST_S_C_DELTA_PC_W; - COPY_SHORT (cp, Offset), cp += 2; - } - else - { - *cp++ = DST_S_C_DELTA_PC_L; - COPY_LONG (cp, Offset), cp += 4; - } - /* Set size now that be know it, then output the data. */ - Local[0] = cp - &Local[1]; - VMS_Store_Immediate_Data (Local, cp - Local, OBJ_S_C_TBT); - } -} - - -/* Describe a source file to the debugger. */ - -static int -VMS_TBT_Source_File (char *Filename, int ID_Number) -{ - char *cp; - int len, rfo, ffb, ebk; - char cdt[8]; - char Local[512]; -#ifdef VMS /* Used for native assembly */ - unsigned Status; - struct FAB fab; /* RMS file access block */ - struct NAM nam; /* file name information */ - struct XABDAT xabdat; /* date+time fields */ - struct XABFHC xabfhc; /* file header characteristics */ - char resultant_string_buffer[255 + 1]; - - /* Set up RMS structures: */ - /* FAB -- file access block */ - memset ((char *) &fab, 0, sizeof fab); - fab.fab$b_bid = FAB$C_BID; - fab.fab$b_bln = (unsigned char) sizeof fab; - fab.fab$l_fna = Filename; - fab.fab$b_fns = (unsigned char) strlen (Filename); - fab.fab$l_nam = (char *) &nam; - fab.fab$l_xab = (char *) &xabdat; - /* NAM -- file name block. */ - memset ((char *) &nam, 0, sizeof nam); - nam.nam$b_bid = NAM$C_BID; - nam.nam$b_bln = (unsigned char) sizeof nam; - nam.nam$l_rsa = resultant_string_buffer; - nam.nam$b_rss = (unsigned char) (sizeof resultant_string_buffer - 1); - /* XABs -- extended attributes blocks. */ - memset ((char *) &xabdat, 0, sizeof xabdat); - xabdat.xab$b_cod = XAB$C_DAT; - xabdat.xab$b_bln = (unsigned char) sizeof xabdat; - xabdat.xab$l_nxt = (char *) &xabfhc; - memset ((char *) &xabfhc, 0, sizeof xabfhc); - xabfhc.xab$b_cod = XAB$C_FHC; - xabfhc.xab$b_bln = (unsigned char) sizeof xabfhc; - xabfhc.xab$l_nxt = 0; - - /* Get the file information. */ - Status = sys$open (&fab); - if (!(Status & 1)) - { - as_tsktsk (_("Couldn't find source file \"%s\", status=%%X%x"), - Filename, Status); - return 0; - } - sys$close (&fab); - /* Now extract fields of interest. */ - memcpy (cdt, (char *) &xabdat.xab$q_cdt, 8); /* creation date */ - ebk = xabfhc.xab$l_ebk; /* end-of-file block */ - ffb = xabfhc.xab$w_ffb; /* first free byte of last block */ - rfo = xabfhc.xab$b_rfo; /* record format */ - len = nam.nam$b_rsl; /* length of Filename */ - resultant_string_buffer[len] = '\0'; - Filename = resultant_string_buffer; /* full filename */ -#else /* Cross-assembly */ - /* [Perhaps we ought to use actual values derived from stat() here?] */ - memset (cdt, 0, 8); /* null VMS quadword binary time */ - ebk = ffb = rfo = 0; - len = strlen (Filename); - if (len > 255) /* a single byte is used as count prefix */ - { - Filename += (len - 255); /* tail end is more significant */ - len = 255; - } -#endif /* VMS */ - - cp = &Local[1]; /* fill in record length later */ - *cp++ = DST_S_C_SOURCE; /* DST type is "source file" */ - *cp++ = DST_S_C_SRC_FORMFEED; /* formfeeds count as source records */ - *cp++ = DST_S_C_SRC_DECLFILE; /* declare source file */ - know (cp == &Local[4]); - *cp++ = 0; /* fill in this length below */ - *cp++ = 0; /* flags; must be zero */ - COPY_SHORT (cp, ID_Number), cp += 2; /* file ID number */ - memcpy (cp, cdt, 8), cp += 8; /* creation date+time */ - COPY_LONG (cp, ebk), cp += 4; /* end-of-file block */ - COPY_SHORT (cp, ffb), cp += 2; /* first free byte of last block */ - *cp++ = (char) rfo; /* RMS record format */ - /* Filename. */ - *cp++ = (char) len; - while (--len >= 0) - *cp++ = *Filename++; - /* Library module name (none). */ - *cp++ = 0; - /* Now that size is known, fill it in and write out the record. */ - Local[4] = cp - &Local[5]; /* source file declaration size */ - Local[0] = cp - &Local[1]; /* TBT record size */ - VMS_Store_Immediate_Data (Local, cp - Local, OBJ_S_C_TBT); - return 1; -} - -/* Traceback information is described in terms of lines from compiler - listing files, not lines from source files. We need to set up the - correlation between listing line numbers and source line numbers. - Since gcc's .stabn directives refer to the source lines, we just - need to describe a one-to-one correspondence. */ - -static void -VMS_TBT_Source_Lines (int ID_Number, int Starting_Line_Number, - int Number_Of_Lines) -{ - char *cp; - int chunk_limit; - char Local[128]; /* room enough to describe 1310700 lines... */ - - cp = &Local[1]; /* Put size in Local[0] later. */ - *cp++ = DST_S_C_SOURCE; /* DST type is "source file". */ - *cp++ = DST_S_C_SRC_SETFILE; /* Set Source File. */ - COPY_SHORT (cp, ID_Number), cp += 2; /* File ID Number. */ - /* Set record number and define lines. Since no longword form of - SRC_DEFLINES is available, we need to be able to cope with any huge - files a chunk at a time. It doesn't matter for tracebacks, since - unspecified lines are mapped one-to-one and work out right, but it - does matter within the debugger. Without this explicit mapping, - it will complain about lines not existing in the module. */ - chunk_limit = (sizeof Local - 5) / 6; - if (Number_Of_Lines > 65535 * chunk_limit) /* avoid buffer overflow */ - Number_Of_Lines = 65535 * chunk_limit; - while (Number_Of_Lines > 65535) - { - *cp++ = DST_S_C_SRC_SETREC_L; - COPY_LONG (cp, Starting_Line_Number), cp += 4; - *cp++ = DST_S_C_SRC_DEFLINES_W; - COPY_SHORT (cp, 65535), cp += 2; - Starting_Line_Number += 65535; - Number_Of_Lines -= 65535; - } - /* Set record number and define lines, normal case. */ - if (Starting_Line_Number <= 65535) - { - *cp++ = DST_S_C_SRC_SETREC_W; - COPY_SHORT (cp, Starting_Line_Number), cp += 2; - } - else - { - *cp++ = DST_S_C_SRC_SETREC_L; - COPY_LONG (cp, Starting_Line_Number), cp += 4; - } - *cp++ = DST_S_C_SRC_DEFLINES_W; - COPY_SHORT (cp, Number_Of_Lines), cp += 2; - /* Set size now that be know it, then output the data. */ - Local[0] = cp - &Local[1]; - VMS_Store_Immediate_Data (Local, cp - Local, OBJ_S_C_TBT); -} - - -/* Debugger Information support routines. */ - -/* This routine locates a file in the list of files. If an entry does - not exist, one is created. For include files, a new entry is always - created such that inline functions can be properly debugged. */ - -static struct input_file * -find_file (symbolS *sp) -{ - struct input_file *same_file = 0; - struct input_file *fpnt, *last = 0; - char *sp_name; - - for (fpnt = file_root; fpnt; fpnt = fpnt->next) - { - if (fpnt->spnt == sp) - return fpnt; - last = fpnt; - } - sp_name = S_GET_NAME (sp); - for (fpnt = file_root; fpnt; fpnt = fpnt->next) - { - if (strcmp (sp_name, fpnt->name) == 0) - { - if (fpnt->flag == 1) - return fpnt; - same_file = fpnt; - break; - } - } - fpnt = xmalloc (sizeof (struct input_file)); - if (!file_root) - file_root = fpnt; - else - last->next = fpnt; - fpnt->next = 0; - fpnt->name = sp_name; - fpnt->min_line = 0x7fffffff; - fpnt->max_line = 0; - fpnt->offset = 0; - fpnt->flag = 0; - fpnt->file_number = 0; - fpnt->spnt = sp; - fpnt->same_file_fpnt = same_file; - return fpnt; -} - -/* This routine converts a number string into an integer, and stops when - it sees an invalid character. The return value is the address of the - character just past the last character read. No error is generated. */ - -static char * -cvt_integer (char *str, int *rtn) -{ - int ival = 0, sgn = 1; - - if (*str == '-') - sgn = -1, ++str; - while (*str >= '0' && *str <= '9') - ival = 10 * ival + *str++ - '0'; - *rtn = sgn * ival; - return str; -} - - -/* The following functions and definitions are used to generate object - records that will describe program variables to the VMS debugger. - - This file contains many of the routines needed to output debugging info - into the object file that the VMS debugger needs to understand symbols. - These routines are called very late in the assembly process, and thus - we can be fairly lax about changing things, since the GSD and the TIR - sections have already been output. */ - -/* This routine fixes the names that are generated by C++, ".this" is a good - example. The period does not work for the debugger, since it looks like - the syntax for a structure element, and thus it gets mightily confused. - - We also use this to strip the PsectAttribute hack from the name before we - write a debugger record. */ - -static char * -fix_name (char *pnt) -{ - char *pnt1; - - /* Kill any leading "_". */ - if (*pnt == '_') - pnt++; - - /* Is there a Psect Attribute to skip?? */ - if (HAS_PSECT_ATTRIBUTES (pnt)) - { - /* Yes: Skip it. */ - pnt += PSECT_ATTRIBUTES_STRING_LENGTH; - while (*pnt) - { - if ((pnt[0] == '$') && (pnt[1] == '$')) - { - pnt += 2; - break; - } - pnt++; - } - } - - /* Here we fix the .this -> $this conversion. */ - for (pnt1 = pnt; *pnt1 != 0; pnt1++) - if (*pnt1 == '.') - *pnt1 = '$'; - - return pnt; -} - -/* When defining a structure, this routine is called to find the name of - the actual structure. It is assumed that str points to the equal sign - in the definition, and it moves backward until it finds the start of the - name. If it finds a 0, then it knows that this structure def is in the - outermost level, and thus symbol_name points to the symbol name. */ - -static char * -get_struct_name (char *str) -{ - char *pnt; - pnt = str; - while ((*pnt != ':') && (*pnt != '\0')) - pnt--; - if (*pnt == '\0') - return (char *) symbol_name; - *pnt-- = '\0'; - while ((*pnt != ';') && (*pnt != '=')) - pnt--; - if (*pnt == ';') - return pnt + 1; - while ((*pnt < '0') || (*pnt > '9')) - pnt++; - while ((*pnt >= '0') && (*pnt <= '9')) - pnt++; - return pnt; -} - -/* Search symbol list for type number dbx_type. - Return a pointer to struct. */ - -static struct VMS_DBG_Symbol * -find_symbol (int dbx_type) -{ - struct VMS_DBG_Symbol *spnt; - - spnt = VMS_Symbol_type_list[SYMTYP_HASH (dbx_type)]; - while (spnt) - { - if (spnt->dbx_type == dbx_type) - break; - spnt = spnt->next; - } - if (!spnt || spnt->advanced != ALIAS) - return spnt; - return find_symbol (spnt->type2); -} - -#if 0 /* obsolete */ -/* This routine puts info into either Local or Asuffix, depending on the sign - of size. The reason is that it is easier to build the variable descriptor - backwards, while the array descriptor is best built forwards. In the end - they get put together, if there is not a struct/union/enum along the way. */ - -static void -push (int value, int size1) -{ - if (size1 < 0) - { - size1 = -size1; - if (Lpnt < size1) - { - overflow = 1; - Lpnt = 1; - return; - } - Lpnt -= size1; - md_number_to_chars (&Local[Lpnt + 1], value, size1); - } - else - { - if (Apoint + size1 >= MAX_DEBUG_RECORD) - { - overflow = 1; - Apoint = MAX_DEBUG_RECORD - 1; - return; - } - md_number_to_chars (&Asuffix[Apoint], value, size1); - Apoint += size1; - } -} -#endif - -static void -fpush (int value, int size) -{ - if (Apoint + size >= MAX_DEBUG_RECORD) - { - overflow = 1; - Apoint = MAX_DEBUG_RECORD - 1; - return; - } - if (size == 1) - Asuffix[Apoint++] = (char) value; - else - { - md_number_to_chars (&Asuffix[Apoint], value, size); - Apoint += size; - } -} - -static void -rpush (int value, int size) -{ - if (Lpnt < size) - { - overflow = 1; - Lpnt = 1; - return; - } - if (size == 1) - Local[Lpnt--] = (char) value; - else - { - Lpnt -= size; - md_number_to_chars (&Local[Lpnt + 1], value, size); - } -} - -/* This routine generates the array descriptor for a given array. */ - -static void -array_suffix (struct VMS_DBG_Symbol *spnt2) -{ - struct VMS_DBG_Symbol *spnt; - struct VMS_DBG_Symbol *spnt1; - int rank; - int total_size; - - rank = 0; - spnt = spnt2; - while (spnt->advanced != ARRAY) - { - spnt = find_symbol (spnt->type2); - if (!spnt) - return; - } - spnt1 = spnt; - total_size = 1; - while (spnt1->advanced == ARRAY) - { - rank++; - total_size *= (spnt1->index_max - spnt1->index_min + 1); - spnt1 = find_symbol (spnt1->type2); - } - total_size = total_size * spnt1->data_size; - fpush (spnt1->data_size, 2); /* element size */ - if (spnt1->VMS_type == DBG_S_C_ADVANCED_TYPE) - fpush (0, 1); - else - fpush (spnt1->VMS_type, 1); /* element type */ - fpush (DSC_K_CLASS_A, 1); /* descriptor class */ - fpush (0, 4); /* base address */ - fpush (0, 1); /* scale factor -- not applicable */ - fpush (0, 1); /* digit count -- not applicable */ - fpush (0xc0, 1); /* flags: multiplier block & bounds present */ - fpush (rank, 1); /* number of dimensions */ - fpush (total_size, 4); - fpush (0, 4); /* pointer to element [0][0]...[0] */ - spnt1 = spnt; - while (spnt1->advanced == ARRAY) - { - fpush (spnt1->index_max - spnt1->index_min + 1, 4); - spnt1 = find_symbol (spnt1->type2); - } - spnt1 = spnt; - while (spnt1->advanced == ARRAY) - { - fpush (spnt1->index_min, 4); - fpush (spnt1->index_max, 4); - spnt1 = find_symbol (spnt1->type2); - } -} - -/* This routine generates the start of a variable descriptor based upon - a struct/union/enum that has yet to be defined. We define this spot as - a new location, and save four bytes for the address. When the struct is - finally defined, then we can go back and plug in the correct address. */ - -static void -new_forward_ref (int dbx_type) -{ - struct forward_ref *fpnt; - - fpnt = xmalloc (sizeof (struct forward_ref)); - fpnt->next = f_ref_root; - f_ref_root = fpnt; - fpnt->dbx_type = dbx_type; - fpnt->struc_numb = ++structure_count; - fpnt->resolved = 'N'; - rpush (DST_K_TS_IND, 1); /* indirect type specification */ - total_len = 5; - rpush (total_len, 2); - struct_number = -fpnt->struc_numb; -} - -/* This routine generates the variable descriptor used to describe non-basic - variables. It calls itself recursively until it gets to the bottom of it - all, and then builds the descriptor backwards. It is easiest to do it - this way since we must periodically write length bytes, and it is easiest - if we know the value when it is time to write it. */ - -static int -gen1 (struct VMS_DBG_Symbol *spnt, int array_suffix_len) -{ - struct VMS_DBG_Symbol *spnt1; - int i; - - switch (spnt->advanced) - { - case VOID: - rpush (DBG_S_C_VOID, 1); - total_len += 1; - rpush (total_len, 2); - return 0; - case BASIC: - case FUNCTION: - if (array_suffix_len == 0) - { - rpush (spnt->VMS_type, 1); - rpush (DBG_S_C_BASIC, 1); - total_len = 2; - rpush (total_len, 2); - return 1; - } - rpush (0, 4); - rpush (DST_K_VFLAGS_DSC, 1); - rpush (DST_K_TS_DSC, 1); /* Descriptor type specification. */ - total_len = -2; - return 1; - case STRUCT: - case UNION: - case ENUM: - struct_number = spnt->struc_numb; - if (struct_number < 0) - { - new_forward_ref (spnt->dbx_type); - return 1; - } - rpush (DBG_S_C_STRUCT, 1); - total_len = 5; - rpush (total_len, 2); - return 1; - case POINTER: - spnt1 = find_symbol (spnt->type2); - i = 1; - if (!spnt1) - new_forward_ref (spnt->type2); - else - i = gen1 (spnt1, 0); - if (i) - { - /* (*void) is a special case, do not put pointer suffix. */ - rpush (DBG_S_C_POINTER, 1); - total_len += 3; - rpush (total_len, 2); - } - return 1; - case ARRAY: - spnt1 = spnt; - while (spnt1->advanced == ARRAY) - { - spnt1 = find_symbol (spnt1->type2); - if (!spnt1) - { - as_tsktsk (_("debugger forward reference error, dbx type %d"), - spnt->type2); - return 0; - } - } - /* It is too late to generate forward references, so the user - gets a message. This should only happen on a compiler error. */ - (void) gen1 (spnt1, 1); - i = Apoint; - array_suffix (spnt); - array_suffix_len = Apoint - i; - switch (spnt1->advanced) - { - case BASIC: - case FUNCTION: - break; - default: - rpush (0, 2); - total_len += 2; - rpush (total_len, 2); - rpush (DST_K_VFLAGS_DSC, 1); - rpush (1, 1); /* Flags: element value spec included. */ - rpush (1, 1); /* One dimension. */ - rpush (DBG_S_C_COMPLEX_ARRAY, 1); - } - total_len += array_suffix_len + 8; - rpush (total_len, 2); - break; - default: - break; - } - return 0; -} - -/* This generates a suffix for a variable. If it is not a defined type yet, - then dbx_type contains the type we are expecting so we can generate a - forward reference. This calls gen1 to build most of the descriptor, and - then it puts the icing on at the end. It then dumps whatever is needed - to get a complete descriptor (i.e. struct reference, array suffix). */ - -static void -generate_suffix (struct VMS_DBG_Symbol *spnt, int dbx_type) -{ - static const char pvoid[6] = - { - 5, /* record.length == 5 */ - DST_K_TYPSPEC, /* record.type == 1 (type specification) */ - 0, /* name.length == 0, no name follows */ - 1, 0, /* type.length == 1 {2 bytes, little endian} */ - DBG_S_C_VOID /* type.type == 5 (pointer to unspecified) */ - }; - int i; - - Apoint = 0; - Lpnt = MAX_DEBUG_RECORD - 1; - total_len = 0; - struct_number = 0; - overflow = 0; - if (!spnt) - new_forward_ref (dbx_type); - else - { - if (spnt->VMS_type != DBG_S_C_ADVANCED_TYPE) - return; /* no suffix needed */ - gen1 (spnt, 0); - } - rpush (0, 1); /* no name (len==0) */ - rpush (DST_K_TYPSPEC, 1); - total_len += 4; - rpush (total_len, 1); - /* If the variable descriptor overflows the record, output a descriptor - for a pointer to void. */ - if ((total_len >= MAX_DEBUG_RECORD) || overflow) - { - as_warn (_("Variable descriptor %d too complicated. Defined as `void *'."), - spnt->dbx_type); - VMS_Store_Immediate_Data (pvoid, 6, OBJ_S_C_DBG); - return; - } - i = 0; - while (Lpnt < MAX_DEBUG_RECORD - 1) - Local[i++] = Local[++Lpnt]; - Lpnt = i; - /* We use this for reference to structure that has already been defined. */ - if (struct_number > 0) - { - VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); - Lpnt = 0; - VMS_Store_Struct (struct_number); - } - /* We use this for a forward reference to a structure that has yet to - be defined. We store four bytes of zero to make room for the actual - address once it is known. */ - if (struct_number < 0) - { - struct_number = -struct_number; - VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); - Lpnt = 0; - VMS_Def_Struct (struct_number); - COPY_LONG (&Local[Lpnt], 0L); - Lpnt += 4; - VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); - Lpnt = 0; - } - i = 0; - while (i < Apoint) - Local[Lpnt++] = Asuffix[i++]; - if (Lpnt != 0) - VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); - Lpnt = 0; -} - -/* "novel length" type doesn't work for simple atomic types. */ -#define USE_BITSTRING_DESCRIPTOR(t) ((t)->advanced == BASIC) -#undef SETUP_BASIC_TYPES - -/* This routine generates a type description for a bitfield. */ - -static void -bitfield_suffix (struct VMS_DBG_Symbol *spnt, int width) -{ - Local[Lpnt++] = 13; /* rec.len==13 */ - Local[Lpnt++] = DST_K_TYPSPEC; /* a type specification record */ - Local[Lpnt++] = 0; /* not named */ - COPY_SHORT (&Local[Lpnt], 9); /* typ.len==9 */ - Lpnt += 2; - Local[Lpnt++] = DST_K_TS_NOV_LENG; /* This type is a "novel length" - incarnation of some other type. */ - COPY_LONG (&Local[Lpnt], width); /* size in bits == novel length */ - Lpnt += 4; - VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); - Lpnt = 0; - /* assert( spnt->struc_numb > 0 ); */ - VMS_Store_Struct (spnt->struc_numb); /* output 4 more bytes */ -} - -/* Formally define a builtin type, so that it can serve as the target of - an indirect reference. It makes bitfield_suffix() easier by avoiding - the need to use a forward reference for the first occurrence of each - type used in a bitfield. */ - -static void -setup_basic_type (struct VMS_DBG_Symbol *spnt ATTRIBUTE_UNUSED) -{ -#ifdef SETUP_BASIC_TYPES - /* This would be very useful if "novel length" fields actually worked - with basic types like they do with enumerated types. However, - they do not, so this isn't worth doing just so that you can use - EXAMINE/TYPE=(__long_long_int) instead of EXAMINE/QUAD. */ - char *p; -#ifndef SETUP_SYNONYM_TYPES - /* This determines whether compatible things like `int' and `long int' - ought to have distinct type records rather than sharing one. */ - struct VMS_DBG_Symbol *spnt2; - - /* First check whether this type has already been seen by another name. */ - for (spnt2 = VMS_Symbol_type_list[SYMTYP_HASH (spnt->VMS_type)]; - spnt2; - spnt2 = spnt2->next) - if (spnt2 != spnt && spnt2->VMS_type == spnt->VMS_type) - { - spnt->struc_numb = spnt2->struc_numb; - return; - } -#endif - - /* `structure number' doesn't really mean `structure'; it means an index - into a linker maintained set of saved locations which can be referenced - again later. */ - spnt->struc_numb = ++structure_count; - VMS_Def_Struct (spnt->struc_numb); /* remember where this type lives */ - /* define the simple scalar type */ - Local[Lpnt++] = 6 + strlen (symbol_name) + 2; /* rec.len */ - Local[Lpnt++] = DST_K_TYPSPEC; /* rec.typ==type specification */ - Local[Lpnt++] = strlen (symbol_name) + 2; - Local[Lpnt++] = '_'; /* prefix name with "__" */ - Local[Lpnt++] = '_'; - for (p = symbol_name; *p; p++) - Local[Lpnt++] = *p == ' ' ? '_' : *p; - COPY_SHORT (&Local[Lpnt], 2); /* typ.len==2 */ - Lpnt += 2; - Local[Lpnt++] = DST_K_TS_ATOM; /* typ.kind is simple type */ - Local[Lpnt++] = spnt->VMS_type; /* typ.type */ - VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); - Lpnt = 0; -#endif /* SETUP_BASIC_TYPES */ -} - -/* This routine generates a symbol definition for a C symbol for the - debugger. It takes a psect and offset for global symbols; if psect < 0, - then this is a local variable and the offset is relative to FP. In this - case it can be either a variable (Offset < 0) or a parameter (Offset > 0). */ - -static void -VMS_DBG_record (struct VMS_DBG_Symbol *spnt, int Psect, - int Offset, char *Name) -{ - char *Name_pnt; - int len; - int i = 0; - - /* If there are bad characters in name, convert them. */ - Name_pnt = fix_name (Name); - - len = strlen (Name_pnt); - if (Psect < 0) - { - /* This is a local variable, referenced to SP. */ - Local[i++] = 7 + len; - Local[i++] = spnt->VMS_type; - Local[i++] = (Offset > 0) ? DBG_C_FUNCTION_PARAM : DBG_C_LOCAL_SYM; - COPY_LONG (&Local[i], Offset); - i += 4; - } - else - { - Local[i++] = 7 + len; - Local[i++] = spnt->VMS_type; - Local[i++] = DST_K_VALKIND_ADDR; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - VMS_Set_Data (Psect, Offset, OBJ_S_C_DBG, 0); - } - Local[i++] = len; - while (*Name_pnt != '\0') - Local[i++] = *Name_pnt++; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - if (spnt->VMS_type == DBG_S_C_ADVANCED_TYPE) - generate_suffix (spnt, 0); -} - -/* This routine parses the stabs entries in order to make the definition - for the debugger of local symbols and function parameters. */ - -static void -VMS_local_stab_Parse (symbolS *sp) -{ - struct VMS_DBG_Symbol *spnt; - char *pnt; - char *pnt1; - char *str; - int dbx_type; - - dbx_type = 0; - str = S_GET_NAME (sp); - pnt = (char *) strchr (str, ':'); - if (!pnt) - return; - - /* Save this for later, and skip colon. */ - pnt1 = pnt++; - - /* Ignore static constants. */ - if (*pnt == 'c') - return; - - /* There is one little catch that we must be aware of. Sometimes function - parameters are optimized into registers, and the compiler, in its - infiite wisdom outputs stabs records for *both*. In general we want to - use the register if it is present, so we must search the rest of the - symbols for this function to see if this parameter is assigned to a - register. */ - { - symbolS *sp1; - char *str1; - char *pnt2; - - if (*pnt == 'p') - { - for (sp1 = symbol_next (sp); sp1; sp1 = symbol_next (sp1)) - { - if (!S_IS_DEBUG (sp1)) - continue; - if (S_GET_RAW_TYPE (sp1) == N_FUN) - { - pnt2 = (char *) strchr (S_GET_NAME (sp1), ':') + 1; - if (*pnt2 == 'F' || *pnt2 == 'f') - break; - } - if (S_GET_RAW_TYPE (sp1) != N_RSYM) - continue; - str1 = S_GET_NAME (sp1); /* and get the name */ - pnt2 = str; - while (*pnt2 != ':') - { - if (*pnt2 != *str1) - break; - pnt2++; - str1++; - } - if (*str1 == ':' && *pnt2 == ':') - return; /* They are the same! Let's skip this one. */ - } - - /* Skip p in case no register. */ - pnt++; - } - } - - pnt = cvt_integer (pnt, &dbx_type); - - spnt = find_symbol (dbx_type); - if (!spnt) - /* Dunno what this is. */ - return; - - *pnt1 = '\0'; - VMS_DBG_record (spnt, -1, S_GET_VALUE (sp), str); - - /* ...and restore the string. */ - *pnt1 = ':'; -} - -/* This routine parses a stabs entry to find the information required - to define a variable. It is used for global and static variables. - Basically we need to know the address of the symbol. With older - versions of the compiler, const symbols are treated differently, in - that if they are global they are written into the text psect. The - global symbol entry for such a const is actually written as a program - entry point (Yuk!!), so if we cannot find a symbol in the list of - psects, we must search the entry points as well. static consts are - even harder, since they are never assigned a memory address. The - compiler passes a stab to tell us the value, but I am not sure what - to do with it. */ - -static void -VMS_stab_parse (symbolS *sp, int expected_type, - int type1, int type2, int Text_Psect) -{ - char *pnt; - char *pnt1; - char *str; - symbolS *sp1; - struct VMS_DBG_Symbol *spnt; - struct VMS_Symbol *vsp; - int dbx_type; - - dbx_type = 0; - str = S_GET_NAME (sp); - - pnt = (char *) strchr (str, ':'); - if (!pnt) - /* No colon present. */ - return; - - /* Save this for later. */ - pnt1 = pnt; - pnt++; - if (*pnt == expected_type) - { - pnt = cvt_integer (pnt + 1, &dbx_type); - spnt = find_symbol (dbx_type); - if (!spnt) - return; /*Dunno what this is*/ - /* Now we need to search the symbol table to find the psect and - offset for this variable. */ - *pnt1 = '\0'; - vsp = VMS_Symbols; - while (vsp) - { - pnt = S_GET_NAME (vsp->Symbol); - if (pnt && *pnt++ == '_' - /* make sure name is the same and symbol type matches */ - && strcmp (pnt, str) == 0 - && (S_GET_RAW_TYPE (vsp->Symbol) == type1 - || S_GET_RAW_TYPE (vsp->Symbol) == type2)) - break; - vsp = vsp->Next; - } - if (vsp) - { - VMS_DBG_record (spnt, vsp->Psect_Index, vsp->Psect_Offset, str); - *pnt1 = ':'; /* and restore the string */ - return; - } - /* The symbol was not in the symbol list, but it may be an - "entry point" if it was a constant. */ - for (sp1 = symbol_rootP; sp1; sp1 = symbol_next (sp1)) - { - /* Dispatch on STAB type. */ - if (S_IS_DEBUG (sp1) || (S_GET_TYPE (sp1) != N_TEXT)) - continue; - pnt = S_GET_NAME (sp1); - if (*pnt == '_') - pnt++; - if (strcmp (pnt, str) == 0) - { - if (!gave_compiler_message && expected_type == 'G') - { - char *long_const_msg = _("\ -***Warning - the assembly code generated by the compiler has placed \n\ - global constant(s) in the text psect. These will not be available to \n\ - other modules, since this is not the correct way to handle this. You \n\ - have two options: 1) get a patched compiler that does not put global \n\ - constants in the text psect, or 2) remove the 'const' keyword from \n\ - definitions of global variables in your source module(s). Don't say \n\ - I didn't warn you! \n"); - - as_tsktsk (long_const_msg); - gave_compiler_message = 1; - } - VMS_DBG_record (spnt, - Text_Psect, - S_GET_VALUE (sp1), - str); - *pnt1 = ':'; - /* Fool assembler to not output this as a routine in the TBT. */ - pnt1 = S_GET_NAME (sp1); - *pnt1 = 'L'; - S_SET_NAME (sp1, pnt1); - return; - } - } - } - - /* ...and restore the string. */ - *pnt1 = ':'; -} - -/* Simpler interfaces into VMS_stab_parse(). */ - -static void -VMS_GSYM_Parse (symbolS *sp, int Text_Psect) -{ /* Global variables */ - VMS_stab_parse (sp, 'G', (N_UNDF | N_EXT), (N_DATA | N_EXT), Text_Psect); -} - -static void -VMS_LCSYM_Parse (symbolS *sp, int Text_Psect) -{ - VMS_stab_parse (sp, 'S', N_BSS, -1, Text_Psect); -} - -static void -VMS_STSYM_Parse (symbolS *sp, int Text_Psect) -{ - VMS_stab_parse (sp, 'S', N_DATA, -1, Text_Psect); -} - -/* For register symbols, we must figure out what range of addresses - within the psect are valid. We will use the brackets in the stab - directives to give us guidance as to the PC range that this variable - is in scope. I am still not completely comfortable with this but - as I learn more, I seem to get a better handle on what is going on. - Caveat Emptor. */ - -static void -VMS_RSYM_Parse (symbolS *sp, symbolS *Current_Routine ATTRIBUTE_UNUSED, - int Text_Psect) -{ - symbolS *symbolP; - struct VMS_DBG_Symbol *spnt; - char *pnt; - char *pnt1; - char *str; - int dbx_type; - int len; - int i = 0; - int bcnt = 0; - int Min_Offset = -1; /* min PC of validity */ - int Max_Offset = 0; /* max PC of validity */ - - for (symbolP = sp; symbolP; symbolP = symbol_next (symbolP)) - { - /* Dispatch on STAB type. */ - switch (S_GET_RAW_TYPE (symbolP)) - { - case N_LBRAC: - if (bcnt++ == 0) - Min_Offset = S_GET_VALUE (symbolP); - break; - case N_RBRAC: - if (--bcnt == 0) - Max_Offset = S_GET_VALUE (symbolP) - 1; - break; - } - if ((Min_Offset != -1) && (bcnt == 0)) - break; - if (S_GET_RAW_TYPE (symbolP) == N_FUN) - { - pnt = (char *) strchr (S_GET_NAME (symbolP), ':') + 1; - if (*pnt == 'F' || *pnt == 'f') break; - } - } - - /* Check to see that the addresses were defined. If not, then there - were no brackets in the function, and we must try to search for - the next function. Since functions can be in any order, we should - search all of the symbol list to find the correct ending address. */ - if (Min_Offset == -1) - { - int Max_Source_Offset; - int This_Offset; - - Min_Offset = S_GET_VALUE (sp); - Max_Source_Offset = Min_Offset; /* just in case no N_SLINEs found */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - switch (S_GET_RAW_TYPE (symbolP)) - { - case N_TEXT | N_EXT: - This_Offset = S_GET_VALUE (symbolP); - if (This_Offset > Min_Offset && This_Offset < Max_Offset) - Max_Offset = This_Offset; - break; - case N_SLINE: - This_Offset = S_GET_VALUE (symbolP); - if (This_Offset > Max_Source_Offset) - Max_Source_Offset = This_Offset; - break; - } - /* If this is the last routine, then we use the PC of the last source - line as a marker of the max PC for which this reg is valid. */ - if (Max_Offset == 0x7fffffff) - Max_Offset = Max_Source_Offset; - } - - dbx_type = 0; - str = S_GET_NAME (sp); - if ((pnt = (char *) strchr (str, ':')) == 0) - return; /* no colon present */ - pnt1 = pnt; /* save this for later*/ - pnt++; - if (*pnt != 'r') - return; - pnt = cvt_integer (pnt + 1, &dbx_type); - spnt = find_symbol (dbx_type); - if (!spnt) - return; /*Dunno what this is yet*/ - *pnt1 = '\0'; - pnt = fix_name (S_GET_NAME (sp)); /* if there are bad characters in name, convert them */ - len = strlen (pnt); - Local[i++] = 25 + len; - Local[i++] = spnt->VMS_type; - Local[i++] = DST_K_VFLAGS_TVS; /* trailing value specified */ - COPY_LONG (&Local[i], 1 + len); /* relative offset, beyond name */ - i += 4; - Local[i++] = len; /* name length (ascic prefix) */ - while (*pnt != '\0') - Local[i++] = *pnt++; - Local[i++] = DST_K_VS_FOLLOWS; /* value specification follows */ - COPY_SHORT (&Local[i], 15); /* length of rest of record */ - i += 2; - Local[i++] = DST_K_VS_ALLOC_SPLIT; /* split lifetime */ - Local[i++] = 1; /* one binding follows */ - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - VMS_Set_Data (Text_Psect, Min_Offset, OBJ_S_C_DBG, 1); - VMS_Set_Data (Text_Psect, Max_Offset, OBJ_S_C_DBG, 1); - Local[i++] = DST_K_VALKIND_REG; /* nested value spec */ - COPY_LONG (&Local[i], S_GET_VALUE (sp)); - i += 4; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - *pnt1 = ':'; - if (spnt->VMS_type == DBG_S_C_ADVANCED_TYPE) - generate_suffix (spnt, 0); -} - -/* This function examines a structure definition, checking all of the elements - to make sure that all of them are fully defined. The only thing that we - kick out are arrays of undefined structs, since we do not know how big - they are. All others we can handle with a normal forward reference. */ - -static int -forward_reference (char *pnt) -{ - struct VMS_DBG_Symbol *spnt, *spnt1; - int i; - - pnt = cvt_integer (pnt + 1, &i); - if (*pnt == ';') - return 0; /* no forward references */ - do - { - pnt = (char *) strchr (pnt, ':'); - pnt = cvt_integer (pnt + 1, &i); - spnt = find_symbol (i); - while (spnt && (spnt->advanced == POINTER || spnt->advanced == ARRAY)) - { - spnt1 = find_symbol (spnt->type2); - if (spnt->advanced == ARRAY && !spnt1) - return 1; - spnt = spnt1; - } - pnt = cvt_integer (pnt + 1, &i); - pnt = cvt_integer (pnt + 1, &i); - } while (*++pnt != ';'); - return 0; /* no forward references found */ -} - -/* Used to check a single element of a structure on the final pass. */ - -static int -final_forward_reference (struct VMS_DBG_Symbol *spnt) -{ - struct VMS_DBG_Symbol *spnt1; - - while (spnt && (spnt->advanced == POINTER || spnt->advanced == ARRAY)) - { - spnt1 = find_symbol (spnt->type2); - if (spnt->advanced == ARRAY && !spnt1) - return 1; - spnt = spnt1; - } - return 0; /* no forward references found */ -} - -/* This routine parses the stabs directives to find any definitions of dbx - type numbers. It makes a note of all of them, creating a structure - element of VMS_DBG_Symbol that describes it. This also generates the - info for the debugger that describes the struct/union/enum, so that - further references to these data types will be by number - - We have to process pointers right away, since there can be references - to them later in the same stabs directive. We cannot have forward - references to pointers, (but we can have a forward reference to a - pointer to a structure/enum/union) and this is why we process them - immediately. After we process the pointer, then we search for defs - that are nested even deeper. - - 8/15/92: We have to process arrays right away too, because there can - be multiple references to identical array types in one structure - definition, and only the first one has the definition. */ - -static int -VMS_typedef_parse (char *str) -{ - char *pnt; - char *pnt1; - const char *pnt2; - int i; - int dtype; - struct forward_ref *fpnt; - int i1, i2, i3, len; - struct VMS_DBG_Symbol *spnt; - struct VMS_DBG_Symbol *spnt1; - - /* check for any nested def's */ - pnt = (char *) strchr (str + 1, '='); - if (pnt && str[1] != '*' && (str[1] != 'a' || str[2] != 'r') - && VMS_typedef_parse (pnt) == 1) - return 1; - /* now find dbx_type of entry */ - pnt = str - 1; - if (*pnt == 'c') - { /* check for static constants */ - *str = '\0'; /* for now we ignore them */ - return 0; - } - while ((*pnt <= '9') && (*pnt >= '0')) - pnt--; - pnt++; /* and get back to the number */ - cvt_integer (pnt, &i1); - spnt = find_symbol (i1); - /* First see if this has been defined already, due to forward reference. */ - if (!spnt) - { - i2 = SYMTYP_HASH (i1); - spnt = xmalloc (sizeof (struct VMS_DBG_Symbol)); - spnt->next = VMS_Symbol_type_list[i2]; - VMS_Symbol_type_list[i2] = spnt; - spnt->dbx_type = i1; /* and save the type */ - spnt->type2 = spnt->VMS_type = spnt->data_size = 0; - spnt->index_min = spnt->index_max = spnt->struc_numb = 0; - } - - /* For structs and unions, do a partial parse, otherwise we sometimes get - circular definitions that are impossible to resolve. We read enough - info so that any reference to this type has enough info to be resolved. */ - - /* Point to character past equal sign. */ - pnt = str + 1; - - if (*pnt >= '0' && *pnt <= '9') - { - if (type_check ("void")) - { /* this is the void symbol */ - *str = '\0'; - spnt->advanced = VOID; - return 0; - } - if (type_check ("unknown type")) - { - *str = '\0'; - spnt->advanced = UNKNOWN; - return 0; - } - pnt1 = cvt_integer (pnt, &i1); - if (i1 != spnt->dbx_type) - { - spnt->advanced = ALIAS; - spnt->type2 = i1; - strcpy (str, pnt1); - return 0; - } - as_tsktsk (_("debugginer output: %d is an unknown untyped variable."), - spnt->dbx_type); - return 1; /* do not know what this is */ - } - - /* Point to character past equal sign. */ - pnt = str + 1; - - switch (*pnt) - { - case 'r': - spnt->advanced = BASIC; - if (type_check ("int")) - { - spnt->VMS_type = DBG_S_C_SLINT; - spnt->data_size = 4; - } - else if (type_check ("long int")) - { - spnt->VMS_type = DBG_S_C_SLINT; - spnt->data_size = 4; - } - else if (type_check ("unsigned int")) - { - spnt->VMS_type = DBG_S_C_ULINT; - spnt->data_size = 4; - } - else if (type_check ("long unsigned int")) - { - spnt->VMS_type = DBG_S_C_ULINT; - spnt->data_size = 4; - } - else if (type_check ("short int")) - { - spnt->VMS_type = DBG_S_C_SSINT; - spnt->data_size = 2; - } - else if (type_check ("short unsigned int")) - { - spnt->VMS_type = DBG_S_C_USINT; - spnt->data_size = 2; - } - else if (type_check ("char")) - { - spnt->VMS_type = DBG_S_C_SCHAR; - spnt->data_size = 1; - } - else if (type_check ("signed char")) - { - spnt->VMS_type = DBG_S_C_SCHAR; - spnt->data_size = 1; - } - else if (type_check ("unsigned char")) - { - spnt->VMS_type = DBG_S_C_UCHAR; - spnt->data_size = 1; - } - else if (type_check ("float")) - { - spnt->VMS_type = DBG_S_C_REAL4; - spnt->data_size = 4; - } - else if (type_check ("double")) - { - spnt->VMS_type = vax_g_doubles ? DBG_S_C_REAL8_G : DBG_S_C_REAL8; - spnt->data_size = 8; - } - else if (type_check ("long double")) - { - /* same as double, at least for now */ - spnt->VMS_type = vax_g_doubles ? DBG_S_C_REAL8_G : DBG_S_C_REAL8; - spnt->data_size = 8; - } - else if (type_check ("long long int")) - { - spnt->VMS_type = DBG_S_C_SQUAD; /* signed quadword */ - spnt->data_size = 8; - } - else if (type_check ("long long unsigned int")) - { - spnt->VMS_type = DBG_S_C_UQUAD; /* unsigned quadword */ - spnt->data_size = 8; - } - else if (type_check ("complex float")) - { - spnt->VMS_type = DBG_S_C_COMPLX4; - spnt->data_size = 2 * 4; - } - else if (type_check ("complex double")) - { - spnt->VMS_type = vax_g_doubles ? DBG_S_C_COMPLX8_G : DBG_S_C_COMPLX8; - spnt->data_size = 2 * 8; - } - else if (type_check ("complex long double")) - { - /* same as complex double, at least for now */ - spnt->VMS_type = vax_g_doubles ? DBG_S_C_COMPLX8_G : DBG_S_C_COMPLX8; - spnt->data_size = 2 * 8; - } - else - { - /* Shouldn't get here, but if we do, something - more substantial ought to be done... */ - spnt->VMS_type = 0; - spnt->data_size = 0; - } - if (spnt->VMS_type != 0) - setup_basic_type (spnt); - pnt1 = (char *) strchr (str, ';') + 1; - break; - case 's': - case 'u': - spnt->advanced = (*pnt == 's') ? STRUCT : UNION; - spnt->VMS_type = DBG_S_C_ADVANCED_TYPE; - pnt1 = cvt_integer (pnt + 1, &spnt->data_size); - if (!final_pass && forward_reference (pnt)) - { - spnt->struc_numb = -1; - return 1; - } - spnt->struc_numb = ++structure_count; - pnt1--; - pnt = get_struct_name (str); - VMS_Def_Struct (spnt->struc_numb); - i = 0; - for (fpnt = f_ref_root; fpnt; fpnt = fpnt->next) - if (fpnt->dbx_type == spnt->dbx_type) - { - fpnt->resolved = 'Y'; - VMS_Set_Struct (fpnt->struc_numb); - VMS_Store_Struct (spnt->struc_numb); - i++; - } - if (i > 0) - VMS_Set_Struct (spnt->struc_numb); - i = 0; - Local[i++] = 11 + strlen (pnt); - Local[i++] = DBG_S_C_STRUCT_START; - Local[i++] = DST_K_VFLAGS_NOVAL; /* structure definition only */ - COPY_LONG (&Local[i], 0L); /* hence value is unused */ - i += 4; - Local[i++] = strlen (pnt); - pnt2 = pnt; - while (*pnt2 != '\0') - Local[i++] = *pnt2++; - i2 = spnt->data_size * 8; /* number of bits */ - COPY_LONG (&Local[i], i2); - i += 4; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - if (pnt != symbol_name) - { - pnt += strlen (pnt); - /* Replace colon for later. */ - *pnt = ':'; - } - - while (*++pnt1 != ';') - { - pnt = (char *) strchr (pnt1, ':'); - *pnt = '\0'; - pnt2 = pnt1; - pnt1 = cvt_integer (pnt + 1, &dtype); - pnt1 = cvt_integer (pnt1 + 1, &i2); - pnt1 = cvt_integer (pnt1 + 1, &i3); - spnt1 = find_symbol (dtype); - len = strlen (pnt2); - if (spnt1 && (spnt1->advanced == BASIC || spnt1->advanced == ENUM) - && ((i3 != spnt1->data_size * 8) || (i2 % 8 != 0))) - { /* bitfield */ - if (USE_BITSTRING_DESCRIPTOR (spnt1)) - { - /* This uses a type descriptor, which doesn't work if - the enclosing structure has been placed in a register. - Also, enum bitfields degenerate to simple integers. */ - int unsigned_type = (spnt1->VMS_type == DBG_S_C_ULINT - || spnt1->VMS_type == DBG_S_C_USINT - || spnt1->VMS_type == DBG_S_C_UCHAR - || spnt1->VMS_type == DBG_S_C_UQUAD - || spnt1->advanced == ENUM); - Apoint = 0; - fpush (19 + len, 1); - fpush (unsigned_type ? DBG_S_C_UBITU : DBG_S_C_SBITU, 1); - fpush (DST_K_VFLAGS_DSC, 1); /* specified by descriptor */ - fpush (1 + len, 4); /* relative offset to descriptor */ - fpush (len, 1); /* length byte (ascic prefix) */ - while (*pnt2 != '\0') /* name bytes */ - fpush (*pnt2++, 1); - fpush (i3, 2); /* dsc length == size of bitfield */ - /* dsc type == un?signed bitfield */ - fpush (unsigned_type ? DBG_S_C_UBITU : DBG_S_C_SBITU, 1); - fpush (DSC_K_CLASS_UBS, 1); /* dsc class == unaligned bitstring */ - fpush (0x00, 4); /* dsc pointer == zeroes */ - fpush (i2, 4); /* start position */ - VMS_Store_Immediate_Data (Asuffix, Apoint, OBJ_S_C_DBG); - Apoint = 0; - } - else - { - /* Use a "novel length" type specification, which works - right for register structures and for enum bitfields - but results in larger object modules. */ - Local[i++] = 7 + len; - Local[i++] = DBG_S_C_ADVANCED_TYPE; /* type spec follows */ - Local[i++] = DBG_S_C_STRUCT_ITEM; /* value is a bit offset */ - COPY_LONG (&Local[i], i2); /* bit offset */ - i += 4; - Local[i++] = strlen (pnt2); - while (*pnt2 != '\0') - Local[i++] = *pnt2++; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - bitfield_suffix (spnt1, i3); - } - } - else /* Not a bitfield. */ - { - /* Check if this is a forward reference. */ - if (final_pass && final_forward_reference (spnt1)) - { - as_tsktsk (_("debugger output: structure element `%s' has undefined type"), - pnt2); - continue; - } - Local[i++] = 7 + len; - Local[i++] = spnt1 ? spnt1->VMS_type : DBG_S_C_ADVANCED_TYPE; - Local[i++] = DBG_S_C_STRUCT_ITEM; - COPY_LONG (&Local[i], i2); /* bit offset */ - i += 4; - Local[i++] = strlen (pnt2); - while (*pnt2 != '\0') - Local[i++] = *pnt2++; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - if (!spnt1) - generate_suffix (spnt1, dtype); - else if (spnt1->VMS_type == DBG_S_C_ADVANCED_TYPE) - generate_suffix (spnt1, 0); - } - } - pnt1++; - Local[i++] = 0x01; /* length byte */ - Local[i++] = DBG_S_C_STRUCT_END; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - break; - case 'e': - spnt->advanced = ENUM; - spnt->VMS_type = DBG_S_C_ADVANCED_TYPE; - spnt->struc_numb = ++structure_count; - spnt->data_size = 4; - VMS_Def_Struct (spnt->struc_numb); - i = 0; - for (fpnt = f_ref_root; fpnt; fpnt = fpnt->next) - if (fpnt->dbx_type == spnt->dbx_type) - { - fpnt->resolved = 'Y'; - VMS_Set_Struct (fpnt->struc_numb); - VMS_Store_Struct (spnt->struc_numb); - i++; - } - if (i > 0) - VMS_Set_Struct (spnt->struc_numb); - i = 0; - len = strlen (symbol_name); - Local[i++] = 3 + len; - Local[i++] = DBG_S_C_ENUM_START; - Local[i++] = 4 * 8; /* enum values are 32 bits */ - Local[i++] = len; - pnt2 = symbol_name; - while (*pnt2 != '\0') - Local[i++] = *pnt2++; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - while (*++pnt != ';') - { - pnt1 = (char *) strchr (pnt, ':'); - *pnt1++ = '\0'; - pnt1 = cvt_integer (pnt1, &i1); - len = strlen (pnt); - Local[i++] = 7 + len; - Local[i++] = DBG_S_C_ENUM_ITEM; - Local[i++] = DST_K_VALKIND_LITERAL; - COPY_LONG (&Local[i], i1); - i += 4; - Local[i++] = len; - pnt2 = pnt; - while (*pnt != '\0') - Local[i++] = *pnt++; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - pnt = pnt1; /* Skip final semicolon */ - } - Local[i++] = 0x01; /* len byte */ - Local[i++] = DBG_S_C_ENUM_END; - VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); - i = 0; - pnt1 = pnt + 1; - break; - case 'a': - spnt->advanced = ARRAY; - spnt->VMS_type = DBG_S_C_ADVANCED_TYPE; - pnt = (char *) strchr (pnt, ';'); - if (!pnt) - return 1; - pnt1 = cvt_integer (pnt + 1, &spnt->index_min); - pnt1 = cvt_integer (pnt1 + 1, &spnt->index_max); - pnt1 = cvt_integer (pnt1 + 1, &spnt->type2); - pnt = (char *) strchr (str + 1, '='); - if (pnt && VMS_typedef_parse (pnt) == 1) - return 1; - break; - case 'f': - spnt->advanced = FUNCTION; - spnt->VMS_type = DBG_S_C_FUNCTION_ADDR; - /* this masquerades as a basic type*/ - spnt->data_size = 4; - pnt1 = cvt_integer (pnt + 1, &spnt->type2); - break; - case '*': - spnt->advanced = POINTER; - spnt->VMS_type = DBG_S_C_ADVANCED_TYPE; - spnt->data_size = 4; - pnt1 = cvt_integer (pnt + 1, &spnt->type2); - pnt = (char *) strchr (str + 1, '='); - if (pnt && VMS_typedef_parse (pnt) == 1) - return 1; - break; - default: - spnt->advanced = UNKNOWN; - spnt->VMS_type = 0; - as_tsktsk (_("debugger output: %d is an unknown type of variable."), - spnt->dbx_type); - return 1; /* unable to decipher */ - } - /* This removes the evidence of the definition so that the outer levels - of parsing do not have to worry about it. */ - pnt = str; - while (*pnt1 != '\0') - *pnt++ = *pnt1++; - *pnt = '\0'; - return 0; -} - -/* This is the root routine that parses the stabs entries for definitions. - it calls VMS_typedef_parse, which can in turn call itself. We need to - be careful, since sometimes there are forward references to other symbol - types, and these cannot be resolved until we have completed the parse. - - Also check and see if we are using continuation stabs, if we are, then - paste together the entire contents of the stab before we pass it to - VMS_typedef_parse. */ - -static void -VMS_LSYM_Parse (void) -{ - char *pnt; - char *pnt1; - char *pnt2; - char *str; - char *parse_buffer = 0; - char fixit[10]; - int incomplete, pass, incom1; - struct forward_ref *fpnt; - symbolS *sp; - - pass = 0; - final_pass = 0; - incomplete = 0; - do - { - incom1 = incomplete; - incomplete = 0; - for (sp = symbol_rootP; sp; sp = symbol_next (sp)) - { - /* Deal with STAB symbols. */ - if (S_IS_DEBUG (sp)) - { - /* Dispatch on STAB type. */ - switch (S_GET_RAW_TYPE (sp)) - { - case N_GSYM: - case N_LCSYM: - case N_STSYM: - case N_PSYM: - case N_RSYM: - case N_LSYM: - case N_FUN: /* Sometimes these contain typedefs. */ - str = S_GET_NAME (sp); - symbol_name = str; - pnt = str + strlen (str) - 1; - if (*pnt == '?') /* Continuation stab. */ - { - symbolS *spnext; - int tlen = 0; - - spnext = sp; - do - { - tlen += strlen (str) - 1; - spnext = symbol_next (spnext); - str = S_GET_NAME (spnext); - pnt = str + strlen (str) - 1; - } - while (*pnt == '?'); - - tlen += strlen (str); - parse_buffer = xmalloc (tlen + 1); - strcpy (parse_buffer, S_GET_NAME (sp)); - pnt2 = parse_buffer + strlen (parse_buffer) - 1; - *pnt2 = '\0'; - spnext = sp; - - do - { - spnext = symbol_next (spnext); - str = S_GET_NAME (spnext); - strcat (pnt2, str); - pnt2 += strlen (str) - 1; - *str = '\0'; /* Erase this string */ - /* S_SET_NAME (spnext, str); */ - if (*pnt2 != '?') break; - *pnt2 = '\0'; - } - while (1); - - str = parse_buffer; - symbol_name = str; - } - - if ((pnt = (char *) strchr (str, ':')) != 0) - { - *pnt = '\0'; - pnt1 = pnt + 1; - if ((pnt2 = (char *) strchr (pnt1, '=')) != 0) - incomplete += VMS_typedef_parse (pnt2); - if (parse_buffer) - { - /* At this point the parse buffer should just - contain name:nn. If it does not, then we - are in real trouble. Anyway, this is always - shorter than the original line. */ - pnt2 = S_GET_NAME (sp); - strcpy (pnt2, parse_buffer); - /* S_SET_NAME (sp, pnt2); */ - free (parse_buffer), parse_buffer = 0; - } - /* Put back colon to restore dbx_type. */ - *pnt = ':'; - } - break; - } - } - } - pass++; - - /* Make one last pass, if needed, and define whatever we can - that is left. */ - if (final_pass == 0 && incomplete == incom1) - { - final_pass = 1; - incom1++; /* Force one last pass through. */ - } - } - while (incomplete != 0 && incomplete != incom1); - - if (incomplete != 0) - as_tsktsk (_("debugger output: Unable to resolve %d circular references."), - incomplete); - - fpnt = f_ref_root; - symbol_name = "\0"; - while (fpnt) - { - if (fpnt->resolved != 'Y') - { - if (find_symbol (fpnt->dbx_type)) - { - as_tsktsk (_("debugger forward reference error, dbx type %d"), - fpnt->dbx_type); - break; - } - fixit[0] = 0; - sprintf (&fixit[1], "%d=s4;", fpnt->dbx_type); - pnt2 = (char *) strchr (&fixit[1], '='); - VMS_typedef_parse (pnt2); - } - fpnt = fpnt->next; - } -} - -static void -Define_Local_Symbols (symbolS *s0P, symbolS *s2P, symbolS *Current_Routine, - int Text_Psect) -{ - symbolS *s1P; /* Each symbol from s0P .. s2P (exclusive). */ - - for (s1P = symbol_next (s0P); s1P != s2P; s1P = symbol_next (s1P)) - { - if (!s1P) - break; /* and return */ - if (S_GET_RAW_TYPE (s1P) == N_FUN) - { - char *pnt = (char *) strchr (S_GET_NAME (s1P), ':') + 1; - if (*pnt == 'F' || *pnt == 'f') break; - } - if (!S_IS_DEBUG (s1P)) - continue; - /* Dispatch on STAB type. */ - switch (S_GET_RAW_TYPE (s1P)) - { - default: - /* Not left or right brace. */ - continue; - - case N_LSYM: - case N_PSYM: - VMS_local_stab_Parse (s1P); - break; - - case N_RSYM: - VMS_RSYM_Parse (s1P, Current_Routine, Text_Psect); - break; - } - } -} - -/* This function crawls the symbol chain searching for local symbols that - need to be described to the debugger. When we enter a new scope with - a "{", it creates a new "block", which helps the debugger keep track - of which scope we are currently in. */ - -static symbolS * -Define_Routine (symbolS *s0P, int Level, symbolS *Current_Routine, - int Text_Psect) -{ - symbolS *s1P; - valueT Offset; - int rcount = 0; - - for (s1P = symbol_next (s0P); s1P != 0; s1P = symbol_next (s1P)) - { - if (S_GET_RAW_TYPE (s1P) == N_FUN) - { - char *pnt = (char *) strchr (S_GET_NAME (s1P), ':') + 1; - if (*pnt == 'F' || *pnt == 'f') break; - } - if (!S_IS_DEBUG (s1P)) - continue; - /* Dispatch on STAB type. */ - switch (S_GET_RAW_TYPE (s1P)) - { - default: - continue; - - case N_LBRAC: - if (Level != 0) - { - char str[10]; - sprintf (str, "$%d", rcount++); - VMS_TBT_Block_Begin (s1P, Text_Psect, str); - } - /* Side-effect: fully resolve symbol. */ - Offset = S_GET_VALUE (s1P); - Define_Local_Symbols (s0P, s1P, Current_Routine, Text_Psect); - s1P = Define_Routine (s1P, Level + 1, Current_Routine, Text_Psect); - if (Level != 0) - VMS_TBT_Block_End (S_GET_VALUE (s1P) - Offset); - s0P = s1P; - break; - - case N_RBRAC: - return s1P; - } - } - - /* We end up here if there were no brackets in this function. - Define everything. */ - Define_Local_Symbols (s0P, (symbolS *)0, Current_Routine, Text_Psect); - return s1P; -} - - -#ifndef VMS -#include -#include -static void get_VMS_time_on_unix (char *); - -/* Manufacture a VMS-like time string on a Unix based system. */ -static void -get_VMS_time_on_unix (char *Now) -{ - char *pnt; - time_t timeb; - - time (&timeb); - pnt = ctime (&timeb); - pnt[3] = 0; - pnt[7] = 0; - pnt[10] = 0; - pnt[16] = 0; - pnt[24] = 0; - sprintf (Now, "%2s-%3s-%s %s", pnt + 8, pnt + 4, pnt + 20, pnt + 11); -} -#endif /* not VMS */ - -/* Write the MHD (Module Header) records. */ - -static void -Write_VMS_MHD_Records (void) -{ - const char *cp; - char *cp1; - int i; -#ifdef VMS - struct { unsigned short len, mbz; char *ptr; } Descriptor; -#endif - char Now[17+1]; - - /* We are writing a module header record. */ - Set_VMS_Object_File_Record (OBJ_S_C_HDR); - /* MAIN MODULE HEADER RECORD. */ - /* Store record type and header type. */ - PUT_CHAR (OBJ_S_C_HDR); - PUT_CHAR (MHD_S_C_MHD); - /* Structure level is 0. */ - PUT_CHAR (OBJ_S_C_STRLVL); - /* Maximum record size is size of the object record buffer. */ - PUT_SHORT (sizeof (Object_Record_Buffer)); - - /* FIXME: module name and version should be user - specifiable via `.ident' and/or `#pragma ident'. */ - - /* Get module name (the FILENAME part of the object file). */ - cp = out_file_name; - cp1 = Module_Name; - while (*cp) - { - if (*cp == ']' || *cp == '>' || *cp == ':' || *cp == '/') - { - cp1 = Module_Name; - cp++; - continue; - } - *cp1++ = TOUPPER (*cp++); - } - *cp1 = '\0'; - - /* Limit it to 31 characters and store in the object record. */ - while (--cp1 >= Module_Name) - if (*cp1 == '.') - *cp1 = '\0'; - if (strlen (Module_Name) > 31) - { - if (flag_hash_long_names) - as_tsktsk (_("Module name truncated: %s\n"), Module_Name); - Module_Name[31] = '\0'; - } - PUT_COUNTED_STRING (Module_Name); - /* Module Version is "V1.0". */ - PUT_COUNTED_STRING ("V1.0"); - /* Creation time is "now" (17 chars of time string): "dd-MMM-yyyy hh:mm". */ -#ifndef VMS - get_VMS_time_on_unix (Now); -#else /* VMS */ - Descriptor.len = sizeof Now - 1; - Descriptor.mbz = 0; /* type & class unspecified */ - Descriptor.ptr = Now; - (void) sys$asctim ((unsigned short *)0, &Descriptor, (long *)0, 0); -#endif /* VMS */ - for (i = 0; i < 17; i++) - PUT_CHAR (Now[i]); - /* Patch time is "never" (17 zeros). */ - for (i = 0; i < 17; i++) - PUT_CHAR (0); - /* Force this to be a separate output record. */ - Flush_VMS_Object_Record_Buffer (); - - /* LANGUAGE PROCESSOR NAME. */ - - /* Store record type and header type. */ - PUT_CHAR (OBJ_S_C_HDR); - PUT_CHAR (MHD_S_C_LNM); - - /* Store language processor name and version (not a counted string!). - This is normally supplied by the gcc driver for the command line - which invokes gas. If absent, we fall back to gas's version. */ - - cp = compiler_version_string; - if (cp == 0) - { - cp = "GNU AS V"; - while (*cp) - PUT_CHAR (*cp++); - cp = VERSION; - } - while (*cp >= ' ') - PUT_CHAR (*cp++); - /* Force this to be a separate output record. */ - Flush_VMS_Object_Record_Buffer (); -} - -/* Write the EOM (End Of Module) record. */ - -static void -Write_VMS_EOM_Record (int Psect, valueT Offset) -{ - /* We are writing an end-of-module record - (this assumes that the entry point will always be in a psect - represented by a single byte, which is the case for code in - Text_Psect==0). */ - - Set_VMS_Object_File_Record (OBJ_S_C_EOM); - PUT_CHAR (OBJ_S_C_EOM); /* Record type. */ - PUT_CHAR (0); /* Error severity level (we ignore it). */ - /* Store the entry point, if it exists. */ - if (Psect >= 0) - { - PUT_CHAR (Psect); - PUT_LONG (Offset); - } - /* Flush the record; this will be our final output. */ - Flush_VMS_Object_Record_Buffer (); -} - - -/* This hash routine borrowed from GNU-EMACS, and strengthened slightly - ERY. */ - -static int -hash_string (const char *ptr) -{ - const unsigned char *p = (unsigned char *) ptr; - const unsigned char *end = p + strlen (ptr); - unsigned char c; - int hash = 0; - - while (p != end) - { - c = *p++; - hash = ((hash << 3) + (hash << 15) + (hash >> 28) + c); - } - return hash; -} - -/* Generate a Case-Hacked VMS symbol name (limited to 31 chars). */ - -static void -VMS_Case_Hack_Symbol (const char *In, char *Out) -{ - long int init; - long int result; - char *pnt = 0; - char *new_name; - const char *old_name; - int i; - int destructor = 0; /* Hack to allow for case sens in a destructor. */ - int truncate = 0; - int Case_Hack_Bits = 0; - int Saw_Dollar = 0; - static char Hex_Table[16] = - {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; - - /* Kill any leading "_". */ - if ((In[0] == '_') && ((In[1] > '9') || (In[1] < '0'))) - In++; - - new_name = Out; /* Save this for later. */ - -#if 0 - if ((In[0] == '_') && (In[1] == '$') && (In[2] == '_')) - destructor = 1; -#endif - - /* We may need to truncate the symbol, save the hash for later. */ - result = (strlen (In) > 23) ? hash_string (In) : 0; - /* Is there a Psect Attribute to skip? */ - if (HAS_PSECT_ATTRIBUTES (In)) - { - /* Yes: Skip it. */ - In += PSECT_ATTRIBUTES_STRING_LENGTH; - while (*In) - { - if ((In[0] == '$') && (In[1] == '$')) - { - In += 2; - break; - } - In++; - } - } - - old_name = In; -#if 0 - if (strlen (In) > 31 && flag_hash_long_names) - as_tsktsk ("Symbol name truncated: %s\n", In); -#endif - /* Do the case conversion. */ - /* Maximum of 23 chars */ - i = 23; - while (*In && (--i >= 0)) - { - Case_Hack_Bits <<= 1; - if (*In == '$') - Saw_Dollar = 1; - if ((destructor == 1) && (i == 21)) - Saw_Dollar = 0; - - switch (vms_name_mapping) - { - case 0: - if (ISUPPER (*In)) - { - *Out++ = *In++; - Case_Hack_Bits |= 1; - } - else - *Out++ = TOUPPER (*In++); - break; - - case 3: - *Out++ = *In++; - break; - - case 2: - if (ISLOWER (*In)) - *Out++ = *In++; - else - *Out++ = TOLOWER (*In++); - break; - } - } - /* If we saw a dollar sign, we don't do case hacking. */ - if (flag_no_hash_mixed_case || Saw_Dollar) - Case_Hack_Bits = 0; - - /* If we have more than 23 characters and everything is lowercase - we can insert the full 31 characters. */ - if (*In) - { - /* We have more than 23 characters - If we must add the case hack, then we have truncated the str. */ - pnt = Out; - truncate = 1; - if (Case_Hack_Bits == 0) - { - /* And so far they are all lower case: - Check up to 8 more characters - and ensure that they are lowercase. */ - for (i = 0; (In[i] != 0) && (i < 8); i++) - if (ISUPPER (In[i]) && !Saw_Dollar && !flag_no_hash_mixed_case) - break; - - if (In[i] == 0) - truncate = 0; - - if ((i == 8) || (In[i] == 0)) - { - /* They are: Copy up to 31 characters - to the output string. */ - i = 8; - while ((--i >= 0) && (*In)) - switch (vms_name_mapping){ - case 0: *Out++ = TOUPPER (*In++); - break; - case 3: *Out++ = *In++; - break; - case 2: *Out++ = TOLOWER (*In++); - break; - } - } - } - } - /* If there were any uppercase characters in the name we - take on the case hacking string. */ - - /* Old behavior for regular GNU-C compiler. */ - if (!flag_hash_long_names) - truncate = 0; - if ((Case_Hack_Bits != 0) || (truncate == 1)) - { - if (truncate == 0) - { - *Out++ = '_'; - for (i = 0; i < 6; i++) - { - *Out++ = Hex_Table[Case_Hack_Bits & 0xf]; - Case_Hack_Bits >>= 4; - } - *Out++ = 'X'; - } - else - { - Out = pnt; /* Cut back to 23 characters maximum. */ - *Out++ = '_'; - for (i = 0; i < 7; i++) - { - init = result & 0x01f; - *Out++ = (init < 10) ? ('0' + init) : ('A' + init - 10); - result = result >> 5; - } - } - } - /* Done. */ - *Out = 0; - if (truncate == 1 && flag_hash_long_names && flag_show_after_trunc) - as_tsktsk (_("Symbol %s replaced by %s\n"), old_name, new_name); -} - - -/* Scan a symbol name for a psect attribute specification. */ - -#define GLOBALSYMBOL_BIT 0x10000 -#define GLOBALVALUE_BIT 0x20000 - -static void -VMS_Modify_Psect_Attributes (const char *Name, int *Attribute_Pointer) -{ - int i; - const char *cp; - int Negate; - static const struct - { - const char *Name; - int Value; - } Attributes[] = - { - {"PIC", GPS_S_M_PIC}, - {"LIB", GPS_S_M_LIB}, - {"OVR", GPS_S_M_OVR}, - {"REL", GPS_S_M_REL}, - {"GBL", GPS_S_M_GBL}, - {"SHR", GPS_S_M_SHR}, - {"EXE", GPS_S_M_EXE}, - {"RD", GPS_S_M_RD}, - {"WRT", GPS_S_M_WRT}, - {"VEC", GPS_S_M_VEC}, - {"GLOBALSYMBOL", GLOBALSYMBOL_BIT}, - {"GLOBALVALUE", GLOBALVALUE_BIT}, - {0, 0} - }; - - /* Kill leading "_". */ - if (*Name == '_') - Name++; - /* Check for a PSECT attribute list. */ - if (!HAS_PSECT_ATTRIBUTES (Name)) - return; - /* Skip the attribute list indicator. */ - Name += PSECT_ATTRIBUTES_STRING_LENGTH; - /* Process the attributes ("_" separated, "$" terminated). */ - while (*Name != '$') - { - /* Assume not negating. */ - Negate = 0; - /* Check for "NO". */ - if ((Name[0] == 'N') && (Name[1] == 'O')) - { - /* We are negating (and skip the NO). */ - Negate = 1; - Name += 2; - } - /* Find the token delimiter. */ - cp = Name; - while (*cp && (*cp != '_') && (*cp != '$')) - cp++; - /* Look for the token in the attribute list. */ - for (i = 0; Attributes[i].Name; i++) - { - /* If the strings match, set/clear the attr. */ - if (strncmp (Name, Attributes[i].Name, cp - Name) == 0) - { - /* Set or clear. */ - if (Negate) - *Attribute_Pointer &= - ~Attributes[i].Value; - else - *Attribute_Pointer |= - Attributes[i].Value; - /* Done. */ - break; - } - } - /* Now skip the attribute. */ - Name = cp; - if (*Name == '_') - Name++; - } -} - - -#define GBLSYM_REF 0 -#define GBLSYM_DEF 1 -#define GBLSYM_VAL 2 -#define GBLSYM_LCL 4 /* not GBL after all... */ -#define GBLSYM_WEAK 8 - -/* Define a global symbol (or possibly a local one). */ - -static void -VMS_Global_Symbol_Spec (const char *Name, int Psect_Number, int Psect_Offset, int Flags) -{ - char Local[32]; - - /* We are writing a GSD record. */ - Set_VMS_Object_File_Record (OBJ_S_C_GSD); - - /* If the buffer is empty we must insert the GSD record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_GSD); - - /* We are writing a Global (or local) symbol definition subrecord. */ - PUT_CHAR ((Flags & GBLSYM_LCL) != 0 ? GSD_S_C_LSY : - ((unsigned) Psect_Number <= 255) ? GSD_S_C_SYM : GSD_S_C_SYMW); - - /* Data type is undefined. */ - PUT_CHAR (0); - - /* Switch on Definition/Reference. */ - if ((Flags & GBLSYM_DEF) == 0) - { - /* Reference. */ - PUT_SHORT (((Flags & GBLSYM_VAL) == 0) ? GSY_S_M_REL : 0); - if ((Flags & GBLSYM_LCL) != 0) /* local symbols have extra field */ - PUT_SHORT (Current_Environment); - } - else - { - int sym_flags; - - /* Definition - [ assert (LSY_S_M_DEF == GSY_S_M_DEF && LSY_S_M_REL == GSY_S_M_REL); ]. */ - sym_flags = GSY_S_M_DEF; - if (Flags & GBLSYM_WEAK) - sym_flags |= GSY_S_M_WEAK; - if ((Flags & GBLSYM_VAL) == 0) - sym_flags |= GSY_S_M_REL; - PUT_SHORT (sym_flags); - if ((Flags & GBLSYM_LCL) != 0) /* local symbols have extra field */ - PUT_SHORT (Current_Environment); - - /* Psect Number. */ - if ((Flags & GBLSYM_LCL) == 0 && (unsigned) Psect_Number <= 255) - PUT_CHAR (Psect_Number); - else - PUT_SHORT (Psect_Number); - - /* Offset. */ - PUT_LONG (Psect_Offset); - } - - /* Finally, the global symbol name. */ - VMS_Case_Hack_Symbol (Name, Local); - PUT_COUNTED_STRING (Local); - - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - -/* Define an environment to support local symbol references. - This is just to mollify the linker; we don't actually do - anything useful with it. */ - -static void -VMS_Local_Environment_Setup (const char *Env_Name) -{ - /* We are writing a GSD record. */ - Set_VMS_Object_File_Record (OBJ_S_C_GSD); - /* If the buffer is empty we must insert the GSD record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_GSD); - /* We are writing an ENV subrecord. */ - PUT_CHAR (GSD_S_C_ENV); - - ++Current_Environment; /* index of environment being defined */ - - /* ENV$W_FLAGS: we are defining the next environment. It's not nested. */ - PUT_SHORT (ENV_S_M_DEF); - /* ENV$W_ENVINDX: index is always 0 for non-nested definitions. */ - PUT_SHORT (0); - - /* ENV$B_NAMLNG + ENV$T_NAME: environment name in ASCIC format. */ - if (!Env_Name) Env_Name = ""; - PUT_COUNTED_STRING ((char *)Env_Name); - - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - - -/* Define a psect. */ - -static int -VMS_Psect_Spec (const char *Name, int Size, enum ps_type Type, struct VMS_Symbol *vsp) -{ - char Local[32]; - int Psect_Attributes; - - /* Generate the appropriate PSECT flags given the PSECT type. */ - switch (Type) - { - case ps_TEXT: - /* Text psects are PIC,noOVR,REL,noGBL,SHR,EXE,RD,noWRT. */ - Psect_Attributes = (GPS_S_M_PIC|GPS_S_M_REL|GPS_S_M_SHR|GPS_S_M_EXE - |GPS_S_M_RD); - break; - case ps_DATA: - /* Data psects are PIC,noOVR,REL,noGBL,noSHR,noEXE,RD,WRT. */ - Psect_Attributes = (GPS_S_M_PIC|GPS_S_M_REL|GPS_S_M_RD|GPS_S_M_WRT); - break; - case ps_COMMON: - /* Common block psects are: PIC,OVR,REL,GBL,noSHR,noEXE,RD,WRT. */ - Psect_Attributes = (GPS_S_M_PIC|GPS_S_M_OVR|GPS_S_M_REL|GPS_S_M_GBL - |GPS_S_M_RD|GPS_S_M_WRT); - break; - case ps_CONST: - /* Const data psects are: PIC,OVR,REL,GBL,noSHR,noEXE,RD,noWRT. */ - Psect_Attributes = (GPS_S_M_PIC|GPS_S_M_OVR|GPS_S_M_REL|GPS_S_M_GBL - |GPS_S_M_RD); - break; - case ps_CTORS: - /* Ctor psects are PIC,noOVR,REL,GBL,noSHR,noEXE,RD,noWRT. */ - Psect_Attributes = (GPS_S_M_PIC|GPS_S_M_REL|GPS_S_M_GBL|GPS_S_M_RD); - break; - case ps_DTORS: - /* Dtor psects are PIC,noOVR,REL,GBL,noSHR,noEXE,RD,noWRT. */ - Psect_Attributes = (GPS_S_M_PIC|GPS_S_M_REL|GPS_S_M_GBL|GPS_S_M_RD); - break; - default: - /* impossible */ - error (_("Unknown VMS psect type (%ld)"), (long) Type); - break; - } - /* Modify the psect attributes according to any attribute string. */ - if (vsp && S_GET_TYPE (vsp->Symbol) == N_ABS) - Psect_Attributes |= GLOBALVALUE_BIT; - else if (HAS_PSECT_ATTRIBUTES (Name)) - VMS_Modify_Psect_Attributes (Name, &Psect_Attributes); - /* Check for globalref/def/val. */ - if ((Psect_Attributes & GLOBALVALUE_BIT) != 0) - { - /* globalvalue symbols were generated before. This code - prevents unsightly psect buildup, and makes sure that - fixup references are emitted correctly. */ - vsp->Psect_Index = -1; /* to catch errors */ - S_SET_TYPE (vsp->Symbol, N_UNDF); /* make refs work */ - return 1; /* decrement psect counter */ - } - - if ((Psect_Attributes & GLOBALSYMBOL_BIT) != 0) - { - switch (S_GET_RAW_TYPE (vsp->Symbol)) - { - case N_UNDF | N_EXT: - VMS_Global_Symbol_Spec (Name, vsp->Psect_Index, - vsp->Psect_Offset, GBLSYM_REF); - vsp->Psect_Index = -1; - S_SET_TYPE (vsp->Symbol, N_UNDF); - /* Return and indicate no psect. */ - return 1; - - case N_DATA | N_EXT: - VMS_Global_Symbol_Spec (Name, vsp->Psect_Index, - vsp->Psect_Offset, GBLSYM_DEF); - /* In this case we still generate the psect. */ - break; - - default: - as_fatal (_("Globalsymbol attribute for symbol %s was unexpected."), - Name); - break; - } - } - - /* Clear out the globalref/def stuff. */ - Psect_Attributes &= 0xffff; - /* We are writing a GSD record. */ - Set_VMS_Object_File_Record (OBJ_S_C_GSD); - /* If the buffer is empty we must insert the GSD record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_GSD); - /* We are writing a PSECT definition subrecord. */ - PUT_CHAR (GSD_S_C_PSC); - /* Psects are always LONGWORD aligned. */ - PUT_CHAR (2); - /* Specify the psect attributes. */ - PUT_SHORT (Psect_Attributes); - /* Specify the allocation. */ - PUT_LONG (Size); - /* Finally, the psect name. */ - VMS_Case_Hack_Symbol (Name, Local); - PUT_COUNTED_STRING (Local); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); - return 0; -} - - -/* Given the pointer to a symbol we calculate how big the data at the - symbol is. We do this by looking for the next symbol (local or global) - which will indicate the start of another datum. */ - -static offsetT -VMS_Initialized_Data_Size (symbolS *s0P, unsigned End_Of_Data) -{ - symbolS *s1P; - valueT s0P_val = S_GET_VALUE (s0P), s1P_val, - nearest_val = (valueT) End_Of_Data; - - /* Find the nearest symbol what follows this one. */ - for (s1P = symbol_rootP; s1P; s1P = symbol_next (s1P)) - { - /* The data type must match. */ - if (S_GET_TYPE (s1P) != N_DATA) - continue; - s1P_val = S_GET_VALUE (s1P); - if (s1P_val > s0P_val && s1P_val < nearest_val) - nearest_val = s1P_val; - } - /* Calculate its size. */ - return (offsetT) (nearest_val - s0P_val); -} - -/* Check symbol names for the Psect hack with a globalvalue, and then - generate globalvalues for those that have it. */ - -static void -VMS_Emit_Globalvalues (unsigned text_siz, unsigned data_siz, - char *Data_Segment) -{ - symbolS *sp; - char *stripped_name, *Name; - int Size; - int Psect_Attributes; - int globalvalue; - int typ, abstyp; - - /* Scan the symbol table for globalvalues, and emit def/ref when - required. These will be caught again later and converted to - N_UNDF. */ - for (sp = symbol_rootP; sp; sp = sp->sy_next) - { - typ = S_GET_RAW_TYPE (sp); - abstyp = ((typ & ~N_EXT) == N_ABS); - /* See if this is something we want to look at. */ - if (!abstyp && - typ != (N_DATA | N_EXT) && - typ != (N_UNDF | N_EXT)) - continue; - /* See if this has globalvalue specification. */ - Name = S_GET_NAME (sp); - - if (abstyp) - { - stripped_name = 0; - Psect_Attributes = GLOBALVALUE_BIT; - } - else if (HAS_PSECT_ATTRIBUTES (Name)) - { - stripped_name = xmalloc (strlen (Name) + 1); - strcpy (stripped_name, Name); - Psect_Attributes = 0; - VMS_Modify_Psect_Attributes (stripped_name, &Psect_Attributes); - } - else - continue; - - if ((Psect_Attributes & GLOBALVALUE_BIT) != 0) - { - switch (typ) - { - case N_ABS: - /* Local symbol references will want - to have an environment defined. */ - if (Current_Environment < 0) - VMS_Local_Environment_Setup (".N_ABS"); - VMS_Global_Symbol_Spec (Name, 0, - S_GET_VALUE (sp), - GBLSYM_DEF|GBLSYM_VAL|GBLSYM_LCL); - break; - case N_ABS | N_EXT: - VMS_Global_Symbol_Spec (Name, 0, - S_GET_VALUE (sp), - GBLSYM_DEF|GBLSYM_VAL); - break; - case N_UNDF | N_EXT: - VMS_Global_Symbol_Spec (stripped_name, 0, 0, GBLSYM_VAL); - break; - case N_DATA | N_EXT: - Size = VMS_Initialized_Data_Size (sp, text_siz + data_siz); - if (Size > 4) - error (_("Invalid data type for globalvalue")); - globalvalue = md_chars_to_number (Data_Segment + - S_GET_VALUE (sp) - text_siz , Size); - /* Three times for good luck. The linker seems to get confused - if there are fewer than three */ - VMS_Global_Symbol_Spec (stripped_name, 0, 0, GBLSYM_VAL); - VMS_Global_Symbol_Spec (stripped_name, 0, globalvalue, - GBLSYM_DEF|GBLSYM_VAL); - VMS_Global_Symbol_Spec (stripped_name, 0, globalvalue, - GBLSYM_DEF|GBLSYM_VAL); - break; - default: - as_warn (_("Invalid globalvalue of %s"), stripped_name); - break; - } - } - - if (stripped_name) - free (stripped_name); - } - -} - - -/* Define a procedure entry pt/mask. */ - -static void -VMS_Procedure_Entry_Pt (char *Name, int Psect_Number, int Psect_Offset, - int Entry_Mask) -{ - char Local[32]; - - /* We are writing a GSD record. */ - Set_VMS_Object_File_Record (OBJ_S_C_GSD); - /* If the buffer is empty we must insert the GSD record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (OBJ_S_C_GSD); - /* We are writing a Procedure Entry Pt/Mask subrecord. */ - PUT_CHAR (((unsigned) Psect_Number <= 255) ? GSD_S_C_EPM : GSD_S_C_EPMW); - /* Data type is undefined. */ - PUT_CHAR (0); - /* Flags = "RELOCATABLE" and "DEFINED". */ - PUT_SHORT (GSY_S_M_DEF | GSY_S_M_REL); - /* Psect Number. */ - if ((unsigned) Psect_Number <= 255) - PUT_CHAR (Psect_Number); - else - PUT_SHORT (Psect_Number); - /* Offset. */ - PUT_LONG (Psect_Offset); - /* Entry mask. */ - PUT_SHORT (Entry_Mask); - /* Finally, the global symbol name. */ - VMS_Case_Hack_Symbol (Name, Local); - PUT_COUNTED_STRING (Local); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - - -/* Set the current location counter to a particular Psect and Offset. */ - -static void -VMS_Set_Psect (int Psect_Index, int Offset, int Record_Type) -{ - /* We are writing a "Record_Type" record. */ - Set_VMS_Object_File_Record (Record_Type); - /* If the buffer is empty we must insert the record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (Record_Type); - /* Stack the Psect base + Offset. */ - vms_tir_stack_psect (Psect_Index, Offset, 0); - /* Set relocation base. */ - PUT_CHAR (TIR_S_C_CTL_SETRB); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - - -/* Store repeated immediate data in current Psect. */ - -static void -VMS_Store_Repeated_Data (int Repeat_Count, char *Pointer, int Size, - int Record_Type) -{ - /* Ignore zero bytes/words/longwords. */ - switch (Size) - { - case 4: - if (Pointer[3] != 0 || Pointer[2] != 0) break; - /* else FALLTHRU */ - case 2: - if (Pointer[1] != 0) break; - /* else FALLTHRU */ - case 1: - if (Pointer[0] != 0) break; - /* zero value */ - return; - default: - break; - } - /* If the data is too big for a TIR_S_C_STO_RIVB sub-record - then we do it manually. */ - if (Size > 255) - { - while (--Repeat_Count >= 0) - VMS_Store_Immediate_Data (Pointer, Size, Record_Type); - return; - } - /* We are writing a "Record_Type" record. */ - Set_VMS_Object_File_Record (Record_Type); - /* If the buffer is empty we must insert record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (Record_Type); - /* Stack the repeat count. */ - PUT_CHAR (TIR_S_C_STA_LW); - PUT_LONG (Repeat_Count); - /* And now the command and its data. */ - PUT_CHAR (TIR_S_C_STO_RIVB); - PUT_CHAR (Size); - while (--Size >= 0) - PUT_CHAR (*Pointer++); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - - -/* Store a Position Independent Reference. */ - -static void -VMS_Store_PIC_Symbol_Reference (symbolS *Symbol, int Offset, int PC_Relative, - int Psect, int Psect_Offset, int Record_Type) -{ - struct VMS_Symbol *vsp = Symbol->sy_obj; - char Local[32]; - int local_sym = 0; - - /* We are writing a "Record_Type" record. */ - Set_VMS_Object_File_Record (Record_Type); - /* If the buffer is empty we must insert record type. */ - if (Object_Record_Offset == 0) - PUT_CHAR (Record_Type); - /* Set to the appropriate offset in the Psect. - For a Code reference we need to fix the operand - specifier as well, so back up 1 byte; - for a Data reference we just store HERE. */ - VMS_Set_Psect (Psect, - PC_Relative ? Psect_Offset - 1 : Psect_Offset, - Record_Type); - /* Make sure we are still generating a "Record Type" record. */ - if (Object_Record_Offset == 0) - PUT_CHAR (Record_Type); - /* Dispatch on symbol type (so we can stack its value). */ - switch (S_GET_RAW_TYPE (Symbol)) - { - /* Global symbol. */ - case N_ABS: - local_sym = 1; - /*FALLTHRU*/ - case N_ABS | N_EXT: -#ifdef NOT_VAX_11_C_COMPATIBLE - case N_UNDF | N_EXT: - case N_DATA | N_EXT: -#endif /* NOT_VAX_11_C_COMPATIBLE */ - case N_UNDF: - case N_TEXT | N_EXT: - /* Get the symbol name (case hacked). */ - VMS_Case_Hack_Symbol (S_GET_NAME (Symbol), Local); - /* Stack the global symbol value. */ - if (!local_sym) - { - PUT_CHAR (TIR_S_C_STA_GBL); - } - else - { - /* Local symbols have an extra field. */ - PUT_CHAR (TIR_S_C_STA_LSY); - PUT_SHORT (Current_Environment); - } - PUT_COUNTED_STRING (Local); - if (Offset) - { - /* Stack the longword offset. */ - PUT_CHAR (TIR_S_C_STA_LW); - PUT_LONG (Offset); - /* Add the two, leaving the result on the stack. */ - PUT_CHAR (TIR_S_C_OPR_ADD); - } - break; - /* Uninitialized local data. */ - case N_BSS: - /* Stack the Psect (+offset). */ - vms_tir_stack_psect (vsp->Psect_Index, - vsp->Psect_Offset + Offset, - 0); - break; - /* Local text. */ - case N_TEXT: - /* Stack the Psect (+offset). */ - vms_tir_stack_psect (vsp->Psect_Index, - S_GET_VALUE (Symbol) + Offset, - 0); - break; - /* Initialized local or global data. */ - case N_DATA: -#ifndef NOT_VAX_11_C_COMPATIBLE - case N_UNDF | N_EXT: - case N_DATA | N_EXT: -#endif /* NOT_VAX_11_C_COMPATIBLE */ - /* Stack the Psect (+offset). */ - vms_tir_stack_psect (vsp->Psect_Index, - vsp->Psect_Offset + Offset, - 0); - break; - } - /* Store either a code or data reference. */ - PUT_CHAR (PC_Relative ? TIR_S_C_STO_PICR : TIR_S_C_STO_PIDR); - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - - -/* Check in the text area for an indirect pc-relative reference - and fix it up with addressing mode 0xff [PC indirect] - - THIS SHOULD BE REPLACED BY THE USE OF TIR_S_C_STO_PIRR IN THE - PIC CODE GENERATING FIXUP ROUTINE. */ - -static void -VMS_Fix_Indirect_Reference (int Text_Psect, addressT Offset, - fragS *fragP, fragS *text_frag_root) -{ - /* The addressing mode byte is 1 byte before the address. */ - Offset--; - /* Is it in THIS frag? */ - if ((Offset < fragP->fr_address) || - (Offset >= (fragP->fr_address + fragP->fr_fix))) - { - /* We need to search for the fragment containing this - Offset. */ - for (fragP = text_frag_root; fragP; fragP = fragP->fr_next) - { - if ((Offset >= fragP->fr_address) && - (Offset < (fragP->fr_address + fragP->fr_fix))) - break; - } - /* If we couldn't find the frag, things are BAD! */ - if (fragP == 0) - error (_("Couldn't find fixup fragment when checking for indirect reference")); - } - /* Check for indirect PC relative addressing mode. */ - if (fragP->fr_literal[Offset - fragP->fr_address] == (char) 0xff) - { - static char Address_Mode = (char) 0xff; - - /* Yes: Store the indirect mode back into the image - to fix up the damage done by STO_PICR. */ - VMS_Set_Psect (Text_Psect, Offset, OBJ_S_C_TIR); - VMS_Store_Immediate_Data (&Address_Mode, 1, OBJ_S_C_TIR); - } -} - - -/* If the procedure "main()" exists we have to add the instruction - "jsb c$main_args" at the beginning to be compatible with VAX-11 "C". - - FIXME: the macro name `HACK_DEC_C_STARTUP' should be renamed - to `HACK_VAXCRTL_STARTUP' because Digital's compiler - named "DEC C" uses run-time library "DECC$SHR", but this - startup code is for "VAXCRTL", the library for Digital's - older "VAX C". Also, this extra code isn't needed for - supporting gcc because it already generates the VAXCRTL - startup call when compiling main(). The reference to - `flag_hash_long_names' looks very suspicious too; - probably an old-style command line option was inadvertently - overloaded here, then blindly converted into the new one. */ -void -vms_check_for_main (void) -{ - symbolS *symbolP; -#ifdef HACK_DEC_C_STARTUP /* JF */ - struct frchain *frchainP; - fragS *fragP; - fragS **prev_fragPP; - struct fix *fixP; - fragS *New_Frag; - int i; -#endif /* HACK_DEC_C_STARTUP */ - - symbolP = (symbolS *) symbol_find ("_main"); - if (symbolP && !S_IS_DEBUG (symbolP) && - S_IS_EXTERNAL (symbolP) && (S_GET_TYPE (symbolP) == N_TEXT)) - { -#ifdef HACK_DEC_C_STARTUP - if (!flag_hash_long_names) - { -#endif - /* Remember the entry point symbol. */ - Entry_Point_Symbol = symbolP; -#ifdef HACK_DEC_C_STARTUP - } - else - { - /* Scan all the fragment chains for the one with "_main" - (Actually we know the fragment from the symbol, but we need - the previous fragment so we can change its pointer). */ - frchainP = frchain_root; - while (frchainP) - { - /* Scan all the fragments in this chain, remembering - the "previous fragment". */ - prev_fragPP = &frchainP->frch_root; - fragP = frchainP->frch_root; - while (fragP && (fragP != frchainP->frch_last)) - { - /* Is this the fragment ? */ - if (fragP == symbolP->sy_frag) - { - /* Yes: Modify the fragment by replacing - it with a new fragment. */ - New_Frag = - xmalloc (sizeof (*New_Frag) + - fragP->fr_fix + - fragP->fr_var + - 5); - /* The fragments are the same except - that the "fixed" area is larger. */ - *New_Frag = *fragP; - New_Frag->fr_fix += 6; - /* Copy the literal data opening a hole - 2 bytes after "_main" (i.e. just after - the entry mask). Into which we place - the JSB instruction. */ - New_Frag->fr_literal[0] = fragP->fr_literal[0]; - New_Frag->fr_literal[1] = fragP->fr_literal[1]; - New_Frag->fr_literal[2] = 0x16; /* Jsb */ - New_Frag->fr_literal[3] = 0xef; - New_Frag->fr_literal[4] = 0; - New_Frag->fr_literal[5] = 0; - New_Frag->fr_literal[6] = 0; - New_Frag->fr_literal[7] = 0; - for (i = 2; i < fragP->fr_fix + fragP->fr_var; i++) - New_Frag->fr_literal[i + 6] = - fragP->fr_literal[i]; - /* Now replace the old fragment with the - newly generated one. */ - *prev_fragPP = New_Frag; - /* Remember the entry point symbol. */ - Entry_Point_Symbol = symbolP; - /* Scan the text area fixup structures - as offsets in the fragment may have changed. */ - for (fixP = text_fix_root; fixP; fixP = fixP->fx_next) - { - /* Look for references to this fragment. */ - if (fixP->fx_frag == fragP) - { - /* Change the fragment pointer. */ - fixP->fx_frag = New_Frag; - /* If the offset is after the entry mask we need - to account for the JSB instruction we just - inserted. */ - if (fixP->fx_where >= 2) - fixP->fx_where += 6; - } - } - /* Scan the symbols as offsets in the - fragment may have changed. */ - for (symbolP = symbol_rootP; - symbolP; - symbolP = symbol_next (symbolP)) - { - /* Look for references to this fragment. */ - if (symbolP->sy_frag == fragP) - { - /* Change the fragment pointer. */ - symbolP->sy_frag = New_Frag; - /* If the offset is after the entry mask we need - to account for the JSB instruction we just - inserted. */ - if (S_GET_VALUE (symbolP) >= 2) - S_SET_VALUE (symbolP, - S_GET_VALUE (symbolP) + 6); - } - } - /* Make a symbol reference to "_c$main_args" so we - can get its address inserted into the JSB - instruction. */ - symbolP = xmalloc (sizeof (*symbolP)); - S_SET_NAME (symbolP, "_C$MAIN_ARGS"); - S_SET_TYPE (symbolP, N_UNDF); - S_SET_OTHER (symbolP, 0); - S_SET_DESC (symbolP, 0); - S_SET_VALUE (symbolP, 0); - symbolP->sy_name_offset = 0; - symbolP->sy_number = 0; - symbolP->sy_obj = 0; - symbolP->sy_frag = New_Frag; - symbolP->sy_resolved = 0; - symbolP->sy_resolving = 0; - /* This actually inserts at the beginning of the list. */ - symbol_append (symbol_rootP, symbolP, - &symbol_rootP, &symbol_lastP); - - symbol_rootP = symbolP; - /* Generate a text fixup structure - to get "_c$main_args" stored into the - JSB instruction. */ - fixP = xmalloc (sizeof (*fixP)); - fixP->fx_frag = New_Frag; - fixP->fx_where = 4; - fixP->fx_addsy = symbolP; - fixP->fx_subsy = 0; - fixP->fx_offset = 0; - fixP->fx_size = 4; - fixP->fx_pcrel = 1; - fixP->fx_next = text_fix_root; - text_fix_root = fixP; - /* Now make sure we exit from the loop. */ - frchainP = 0; - break; - } - /* Try the next fragment. */ - prev_fragPP = &fragP->fr_next; - fragP = fragP->fr_next; - } - /* Try the next fragment chain. */ - if (frchainP) - frchainP = frchainP->frch_next; - } - } -#endif /* HACK_DEC_C_STARTUP */ - } -} - - -/* Beginning of vms_write_object_file(). */ - -static -struct vms_obj_state -{ - /* Next program section index to use. */ - int psect_number; - - /* Psect index for code. Always ends up #0. */ - int text_psect; - - /* Psect index for initialized static variables. */ - int data_psect; - - /* Psect index for uninitialized static variables. */ - int bss_psect; - - /* Psect index for static constructors. */ - int ctors_psect; - - /* Psect index for static destructors. */ - int dtors_psect; - - /* Number of bytes used for local symbol data. */ - int local_initd_data_size; - - /* Dynamic buffer for initialized data. */ - char *data_segment; - -} vms_obj_state; - -#define Psect_Number vms_obj_state.psect_number -#define Text_Psect vms_obj_state.text_psect -#define Data_Psect vms_obj_state.data_psect -#define Bss_Psect vms_obj_state.bss_psect -#define Ctors_Psect vms_obj_state.ctors_psect -#define Dtors_Psect vms_obj_state.dtors_psect -#define Local_Initd_Data_Size vms_obj_state.local_initd_data_size -#define Data_Segment vms_obj_state.data_segment - -#define IS_GXX_VTABLE(symP) (strncmp (S_GET_NAME (symP), "__vt.", 5) == 0) -#define IS_GXX_XTOR(symP) (strncmp (S_GET_NAME (symP), "__GLOBAL_.", 10) == 0) -#define XTOR_SIZE 4 - - -/* Perform text segment fixups. */ - -static void -vms_fixup_text_section (unsigned text_siz ATTRIBUTE_UNUSED, - struct frag *text_frag_root, - struct frag *data_frag_root) -{ - fragS *fragP; - struct fix *fixP; - offsetT dif; - - /* Scan the text fragments. */ - for (fragP = text_frag_root; fragP; fragP = fragP->fr_next) - { - /* Stop if we get to the data fragments. */ - if (fragP == data_frag_root) - break; - /* Ignore fragments with no data. */ - if ((fragP->fr_fix == 0) && (fragP->fr_var == 0)) - continue; - /* Go to the appropriate offset in the Text Psect. */ - VMS_Set_Psect (Text_Psect, fragP->fr_address, OBJ_S_C_TIR); - /* Store the "fixed" part. */ - if (fragP->fr_fix) - VMS_Store_Immediate_Data (fragP->fr_literal, - fragP->fr_fix, - OBJ_S_C_TIR); - /* Store the "variable" part. */ - if (fragP->fr_var && fragP->fr_offset) - VMS_Store_Repeated_Data (fragP->fr_offset, - fragP->fr_literal + fragP->fr_fix, - fragP->fr_var, - OBJ_S_C_TIR); - } - - /* Now we go through the text segment fixups and generate - TIR records to fix up addresses within the Text Psect. */ - for (fixP = text_fix_root; fixP; fixP = fixP->fx_next) - { - /* We DO handle the case of "Symbol - Symbol" as - long as it is in the same segment. */ - if (fixP->fx_subsy && fixP->fx_addsy) - { - /* They need to be in the same segment. */ - if (S_GET_RAW_TYPE (fixP->fx_subsy) != - S_GET_RAW_TYPE (fixP->fx_addsy)) - error (_("Fixup data addsy and subsy don't have the same type")); - /* And they need to be in one that we can check the psect on. */ - if ((S_GET_TYPE (fixP->fx_addsy) != N_DATA) && - (S_GET_TYPE (fixP->fx_addsy) != N_TEXT)) - error (_("Fixup data addsy and subsy don't have an appropriate type")); - /* This had better not be PC relative! */ - if (fixP->fx_pcrel) - error (_("Fixup data is erroneously \"pcrel\"")); - /* Subtract their values to get the difference. */ - dif = S_GET_VALUE (fixP->fx_addsy) - S_GET_VALUE (fixP->fx_subsy); - md_number_to_chars (Local, (valueT)dif, fixP->fx_size); - /* Now generate the fixup object records; - set the psect and store the data. */ - VMS_Set_Psect (Text_Psect, - fixP->fx_where + fixP->fx_frag->fr_address, - OBJ_S_C_TIR); - VMS_Store_Immediate_Data (Local, - fixP->fx_size, - OBJ_S_C_TIR); - continue; - } - /* Size will HAVE to be "long". */ - if (fixP->fx_size != 4) - error (_("Fixup datum is not a longword")); - /* Symbol must be "added" (if it is ever - subtracted we can fix this assumption). */ - if (fixP->fx_addsy == 0) - error (_("Fixup datum is not \"fixP->fx_addsy\"")); - /* Store the symbol value in a PIC fashion. */ - VMS_Store_PIC_Symbol_Reference (fixP->fx_addsy, - fixP->fx_offset, - fixP->fx_pcrel, - Text_Psect, - fixP->fx_where + fixP->fx_frag->fr_address, - OBJ_S_C_TIR); - /* Check for indirect address reference, which has to be fixed up - (as the linker will screw it up with TIR_S_C_STO_PICR). */ - if (fixP->fx_pcrel) - VMS_Fix_Indirect_Reference (Text_Psect, - fixP->fx_where + fixP->fx_frag->fr_address, - fixP->fx_frag, - text_frag_root); - } -} - - -/* Create a buffer holding the data segment. */ - -static void -synthesize_data_segment (unsigned data_siz, unsigned text_siz, - struct frag *data_frag_root) -{ - fragS *fragP; - char *fill_literal; - long fill_size, count, i; - - /* Allocate the data segment. */ - Data_Segment = xmalloc (data_siz); - - /* Run through the data fragments, filling in the segment. */ - for (fragP = data_frag_root; fragP; fragP = fragP->fr_next) - { - i = fragP->fr_address - text_siz; - if (fragP->fr_fix) - memcpy (Data_Segment + i, fragP->fr_literal, fragP->fr_fix); - i += fragP->fr_fix; - - if ((fill_size = fragP->fr_var) != 0) - { - fill_literal = fragP->fr_literal + fragP->fr_fix; - for (count = fragP->fr_offset; count; count--) - { - memcpy (Data_Segment + i, fill_literal, fill_size); - i += fill_size; - } - } - } -} - -/* Perform data segment fixups. */ - -static void -vms_fixup_data_section (unsigned int data_siz ATTRIBUTE_UNUSED, - unsigned int text_siz) -{ - struct VMS_Symbol *vsp; - struct fix *fixP; - symbolS *sp; - addressT fr_address; - offsetT dif; - valueT val; - - /* Run through all the data symbols and store the data. */ - for (vsp = VMS_Symbols; vsp; vsp = vsp->Next) - { - /* Ignore anything other than data symbols. */ - if (S_GET_TYPE (vsp->Symbol) != N_DATA) - continue; - /* Set the Psect + Offset. */ - VMS_Set_Psect (vsp->Psect_Index, - vsp->Psect_Offset, - OBJ_S_C_TIR); - /* Store the data. */ - val = S_GET_VALUE (vsp->Symbol); - VMS_Store_Immediate_Data (Data_Segment + val - text_siz, - vsp->Size, - OBJ_S_C_TIR); - } /* N_DATA symbol loop */ - - /* Now we go through the data segment fixups and generate - TIR records to fix up addresses within the Data Psects. */ - for (fixP = data_fix_root; fixP; fixP = fixP->fx_next) - { - /* Find the symbol for the containing datum. */ - for (vsp = VMS_Symbols; vsp; vsp = vsp->Next) - { - /* Only bother with Data symbols. */ - sp = vsp->Symbol; - if (S_GET_TYPE (sp) != N_DATA) - continue; - /* Ignore symbol if After fixup. */ - val = S_GET_VALUE (sp); - fr_address = fixP->fx_frag->fr_address; - if (val > fixP->fx_where + fr_address) - continue; - /* See if the datum is here. */ - if (val + vsp->Size <= fixP->fx_where + fr_address) - continue; - /* We DO handle the case of "Symbol - Symbol" as - long as it is in the same segment. */ - if (fixP->fx_subsy && fixP->fx_addsy) - { - /* They need to be in the same segment. */ - if (S_GET_RAW_TYPE (fixP->fx_subsy) != - S_GET_RAW_TYPE (fixP->fx_addsy)) - error (_("Fixup data addsy and subsy don't have the same type")); - /* And they need to be in one that we can check the psect on. */ - if ((S_GET_TYPE (fixP->fx_addsy) != N_DATA) && - (S_GET_TYPE (fixP->fx_addsy) != N_TEXT)) - error (_("Fixup data addsy and subsy don't have an appropriate type")); - /* This had better not be PC relative! */ - if (fixP->fx_pcrel) - error (_("Fixup data is erroneously \"pcrel\"")); - /* Subtract their values to get the difference. */ - dif = S_GET_VALUE (fixP->fx_addsy) - S_GET_VALUE (fixP->fx_subsy); - md_number_to_chars (Local, (valueT)dif, fixP->fx_size); - /* Now generate the fixup object records; - set the psect and store the data. */ - VMS_Set_Psect (vsp->Psect_Index, - fr_address + fixP->fx_where - - val + vsp->Psect_Offset, - OBJ_S_C_TIR); - VMS_Store_Immediate_Data (Local, - fixP->fx_size, - OBJ_S_C_TIR); - break; /* done with this fixup */ - } - /* Size will HAVE to be "long". */ - if (fixP->fx_size != 4) - error (_("Fixup datum is not a longword")); - /* Symbol must be "added" (if it is ever - subtracted we can fix this assumption). */ - if (fixP->fx_addsy == 0) - error (_("Fixup datum is not \"fixP->fx_addsy\"")); - /* Store the symbol value in a PIC fashion. */ - VMS_Store_PIC_Symbol_Reference (fixP->fx_addsy, - fixP->fx_offset, - fixP->fx_pcrel, - vsp->Psect_Index, - fr_address + fixP->fx_where - - val + vsp->Psect_Offset, - OBJ_S_C_TIR); - /* Done with this fixup. */ - break; - } - } -} - -/* Perform ctors/dtors segment fixups. */ - -static void -vms_fixup_xtors_section (struct VMS_Symbol *symbols, - int sect_no ATTRIBUTE_UNUSED) -{ - struct VMS_Symbol *vsp; - - /* Run through all the symbols and store the data. */ - for (vsp = symbols; vsp; vsp = vsp->Next) - { - symbolS *sp; - - /* Set relocation base. */ - VMS_Set_Psect (vsp->Psect_Index, vsp->Psect_Offset, OBJ_S_C_TIR); - - sp = vsp->Symbol; - /* Stack the Psect base with its offset. */ - VMS_Set_Data (Text_Psect, S_GET_VALUE (sp), OBJ_S_C_TIR, 0); - } - /* Flush the buffer if it is more than 75% full. */ - if (Object_Record_Offset > (sizeof (Object_Record_Buffer) * 3 / 4)) - Flush_VMS_Object_Record_Buffer (); -} - - -/* Define symbols for the linker. */ - -static void -global_symbol_directory (unsigned text_siz, unsigned data_siz) -{ - fragS *fragP; - symbolS *sp; - struct VMS_Symbol *vsp; - int Globalref, define_as_global_symbol; - -#if 0 - /* The g++ compiler does not write out external references to - vtables correctly. Check for this and holler if we see it - happening. If that compiler bug is ever fixed we can remove - this. - - (Jun'95: gcc 2.7.0's cc1plus still exhibits this behavior.) - - This was reportedly fixed as of June 2, 1998. */ - - for (sp = symbol_rootP; sp; sp = symbol_next (sp)) - if (S_GET_RAW_TYPE (sp) == N_UNDF && IS_GXX_VTABLE (sp)) - { - S_SET_TYPE (sp, N_UNDF | N_EXT); - S_SET_OTHER (sp, 1); - as_warn (_("g++ wrote an extern reference to `%s' as a routine.\nI will fix it, but I hope that it was note really a routine."), - S_GET_NAME (sp)); - } -#endif - - /* Now scan the symbols and emit the appropriate GSD records. */ - for (sp = symbol_rootP; sp; sp = symbol_next (sp)) - { - define_as_global_symbol = 0; - vsp = 0; - /* Dispatch on symbol type. */ - switch (S_GET_RAW_TYPE (sp)) - { - - /* Global uninitialized data. */ - case N_UNDF | N_EXT: - /* Make a VMS data symbol entry. */ - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = S_GET_VALUE (sp); - vsp->Psect_Index = Psect_Number++; - vsp->Psect_Offset = 0; - vsp->Next = VMS_Symbols; - VMS_Symbols = vsp; - sp->sy_obj = vsp; - /* Make the psect for this data. */ - Globalref = VMS_Psect_Spec (S_GET_NAME (sp), - vsp->Size, - S_GET_OTHER (sp) ? ps_CONST : ps_COMMON, - vsp); - if (Globalref) - Psect_Number--; -#ifdef NOT_VAX_11_C_COMPATIBLE - define_as_global_symbol = 1; -#else - /* See if this is an external vtable. We want to help the - linker find these things in libraries, so we make a symbol - reference. This is not compatible with VAX-C usage for - variables, but since vtables are only used internally by - g++, we can get away with this hack. */ - define_as_global_symbol = IS_GXX_VTABLE (sp); -#endif - break; - - /* Local uninitialized data. */ - case N_BSS: - /* Make a VMS data symbol entry. */ - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = 0; - vsp->Psect_Index = Bss_Psect; - vsp->Psect_Offset = S_GET_VALUE (sp) - bss_address_frag.fr_address; - vsp->Next = VMS_Symbols; - VMS_Symbols = vsp; - sp->sy_obj = vsp; - break; - - /* Global initialized data. */ - case N_DATA | N_EXT: - /* Make a VMS data symbol entry. */ - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = VMS_Initialized_Data_Size (sp, text_siz + data_siz); - vsp->Psect_Index = Psect_Number++; - vsp->Psect_Offset = 0; - vsp->Next = VMS_Symbols; - VMS_Symbols = vsp; - sp->sy_obj = vsp; - /* Make its psect. */ - Globalref = VMS_Psect_Spec (S_GET_NAME (sp), - vsp->Size, - S_GET_OTHER (sp) ? ps_CONST : ps_COMMON, - vsp); - if (Globalref) - Psect_Number--; -#ifdef NOT_VAX_11_C_COMPATIBLE - define_as_global_symbol = 1; -#else - /* See N_UNDF|N_EXT above for explanation. */ - define_as_global_symbol = IS_GXX_VTABLE (sp); -#endif - break; - - /* Local initialized data. */ - case N_DATA: - { - char *sym_name = S_GET_NAME (sp); - - /* Always suppress local numeric labels. */ - if (sym_name && strcmp (sym_name, FAKE_LABEL_NAME) == 0) - break; - - /* Make a VMS data symbol entry. */ - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = VMS_Initialized_Data_Size (sp, text_siz + data_siz); - vsp->Psect_Index = Data_Psect; - vsp->Psect_Offset = Local_Initd_Data_Size; - Local_Initd_Data_Size += vsp->Size; - vsp->Next = VMS_Symbols; - VMS_Symbols = vsp; - sp->sy_obj = vsp; - } - break; - - /* Global Text definition. */ - case N_TEXT | N_EXT: - { - - if (IS_GXX_XTOR (sp)) - { - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = XTOR_SIZE; - sp->sy_obj = vsp; - switch ((S_GET_NAME (sp))[10]) - { - case 'I': - vsp->Psect_Index = Ctors_Psect; - vsp->Psect_Offset = (Ctors_Symbols==0)?0:(Ctors_Symbols->Psect_Offset+XTOR_SIZE); - vsp->Next = Ctors_Symbols; - Ctors_Symbols = vsp; - break; - case 'D': - vsp->Psect_Index = Dtors_Psect; - vsp->Psect_Offset = (Dtors_Symbols==0)?0:(Dtors_Symbols->Psect_Offset+XTOR_SIZE); - vsp->Next = Dtors_Symbols; - Dtors_Symbols = vsp; - break; - case 'G': - as_warn (_("Can't handle global xtors symbols yet.")); - break; - default: - as_warn (_("Unknown %s"), S_GET_NAME (sp)); - break; - } - } - else - { - unsigned short Entry_Mask; - - /* Get the entry mask. */ - fragP = sp->sy_frag; - /* First frag might be empty if we're generating listings. - So skip empty rs_fill frags. */ - while (fragP && fragP->fr_type == rs_fill && fragP->fr_fix == 0) - fragP = fragP->fr_next; - - /* If first frag doesn't contain the data, what do we do? - If it's possibly smaller than two bytes, that would - imply that the entry mask is not stored where we're - expecting it. - - If you can find a test case that triggers this, report - it (and tell me what the entry mask field ought to be), - and I'll try to fix it. KR */ - if (fragP->fr_fix < 2) - abort (); - - Entry_Mask = (fragP->fr_literal[0] & 0x00ff) | - ((fragP->fr_literal[1] & 0x00ff) << 8); - /* Define the procedure entry point. */ - VMS_Procedure_Entry_Pt (S_GET_NAME (sp), - Text_Psect, - S_GET_VALUE (sp), - Entry_Mask); - } - break; - } - - /* Local Text definition. */ - case N_TEXT: - /* Make a VMS data symbol entry. */ - if (Text_Psect != -1) - { - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = 0; - vsp->Psect_Index = Text_Psect; - vsp->Psect_Offset = S_GET_VALUE (sp); - vsp->Next = VMS_Symbols; - VMS_Symbols = vsp; - sp->sy_obj = vsp; - } - break; - - /* Global Reference. */ - case N_UNDF: - /* Make a GSD global symbol reference record. */ - VMS_Global_Symbol_Spec (S_GET_NAME (sp), - 0, - 0, - GBLSYM_REF); - break; - - /* Absolute symbol. */ - case N_ABS: - case N_ABS | N_EXT: - /* gcc doesn't generate these; - VMS_Emit_Globalvalue handles them though. */ - vsp = xmalloc (sizeof *vsp); - vsp->Symbol = sp; - vsp->Size = 4; /* always assume 32 bits */ - vsp->Psect_Index = 0; - vsp->Psect_Offset = S_GET_VALUE (sp); - vsp->Next = VMS_Symbols; - VMS_Symbols = vsp; - sp->sy_obj = vsp; - break; - - /* Anything else. */ - default: - /* Ignore STAB symbols, including .stabs emitted by g++. */ - if (S_IS_DEBUG (sp) || (S_GET_TYPE (sp) == 22)) - break; - /* - * Error otherwise. - */ - as_tsktsk (_("unhandled stab type %d"), S_GET_TYPE (sp)); - break; - } - - /* Global symbols have different linkage than external variables. */ - if (define_as_global_symbol) - VMS_Global_Symbol_Spec (S_GET_NAME (sp), - vsp->Psect_Index, - 0, - GBLSYM_DEF); - } -} - - -/* Output debugger symbol table information for symbols which - are local to a specific routine. */ - -static void -local_symbols_DST (symbolS *s0P, symbolS *Current_Routine) -{ - symbolS *s1P; - char *s0P_name, *pnt0, *pnt1; - - s0P_name = S_GET_NAME (s0P); - if (*s0P_name++ != '_') - return; - - for (s1P = Current_Routine; s1P; s1P = symbol_next (s1P)) - { -#if 0 /* redundant; RAW_TYPE != N_FUN suffices */ - if (!S_IS_DEBUG (s1P)) - continue; -#endif - if (S_GET_RAW_TYPE (s1P) != N_FUN) - continue; - pnt0 = s0P_name; - pnt1 = S_GET_NAME (s1P); - /* We assume the two strings are never exactly equal... */ - while (*pnt0++ == *pnt1++) - { - } - /* Found it if s0P name is exhausted and s1P name has ":F" or ":f" next. - Note: both pointers have advanced one past the non-matching char. */ - if ((*pnt1 == 'F' || *pnt1 == 'f') && *--pnt1 == ':' && *--pnt0 == '\0') - { - Define_Routine (s1P, 0, Current_Routine, Text_Psect); - return; - } - } -} - -/* Construct and output the debug symbol table. */ - -static void -vms_build_DST (unsigned text_siz) -{ - symbolS *symbolP; - symbolS *Current_Routine = 0; - struct input_file *Cur_File = 0; - offsetT Cur_Offset = -1; - int Cur_Line_Number = 0; - int File_Number = 0; - int Debugger_Offset = 0; - int file_available; - int dsc; - offsetT val; - - /* Write the Traceback Begin Module record. */ - VMS_TBT_Module_Begin (); - - /* Output debugging info for global variables and static variables - that are not specific to one routine. We also need to examine - all stabs directives, to find the definitions to all of the - advanced data types, and this is done by VMS_LSYM_Parse. This - needs to be done before any definitions are output to the object - file, since there can be forward references in the stabs - directives. When through with parsing, the text of the stabs - directive is altered, with the definitions removed, so that later - passes will see directives as they would be written if the type - were already defined. - - We also look for files and include files, and make a list of - them. We examine the source file numbers to establish the actual - lines that code was generated from, and then generate offsets. */ - VMS_LSYM_Parse (); - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Only deal with STAB symbols here. */ - if (!S_IS_DEBUG (symbolP)) - continue; - /* Dispatch on STAB type. */ - switch (S_GET_RAW_TYPE (symbolP)) - { - case N_SLINE: - dsc = S_GET_DESC (symbolP); - if (dsc > Cur_File->max_line) - Cur_File->max_line = dsc; - if (dsc < Cur_File->min_line) - Cur_File->min_line = dsc; - break; - case N_SO: - Cur_File = find_file (symbolP); - Cur_File->flag = 1; - Cur_File->min_line = 1; - break; - case N_SOL: - Cur_File = find_file (symbolP); - break; - case N_GSYM: - VMS_GSYM_Parse (symbolP, Text_Psect); - break; - case N_LCSYM: - VMS_LCSYM_Parse (symbolP, Text_Psect); - break; - case N_FUN: /* For static constant symbols */ - case N_STSYM: - VMS_STSYM_Parse (symbolP, Text_Psect); - break; - default: - break; - } - } - - /* Now we take a quick sweep through the files and assign offsets - to each one. This will essentially be the starting line number to - the debugger for each file. Output the info for the debugger to - specify the files, and then tell it how many lines to use. */ - for (Cur_File = file_root; Cur_File; Cur_File = Cur_File->next) - { - if (Cur_File->max_line == 0) - continue; - if ((strncmp (Cur_File->name, "GNU_GXX_INCLUDE:", 16) == 0) && - !flag_debug) - continue; - if ((strncmp (Cur_File->name, "GNU_CC_INCLUDE:", 15) == 0) && - !flag_debug) - continue; - /* show a few extra lines at the start of the region selected */ - if (Cur_File->min_line > 2) - Cur_File->min_line -= 2; - Cur_File->offset = Debugger_Offset - Cur_File->min_line + 1; - Debugger_Offset += Cur_File->max_line - Cur_File->min_line + 1; - if (Cur_File->same_file_fpnt) - { - Cur_File->file_number = Cur_File->same_file_fpnt->file_number; - } - else - { - Cur_File->file_number = ++File_Number; - file_available = VMS_TBT_Source_File (Cur_File->name, - Cur_File->file_number); - if (!file_available) - { - Cur_File->file_number = 0; - File_Number--; - continue; - } - } - VMS_TBT_Source_Lines (Cur_File->file_number, - Cur_File->min_line, - Cur_File->max_line - Cur_File->min_line + 1); - } /* for */ - Cur_File = (struct input_file *) NULL; - - /* Scan the symbols and write out the routines - (this makes the assumption that symbols are in - order of ascending text segment offset). */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Deal with text symbols. */ - if (!S_IS_DEBUG (symbolP) && S_GET_TYPE (symbolP) == N_TEXT) - { - /* Ignore symbols starting with "L", as they are local symbols. */ - if (*S_GET_NAME (symbolP) == 'L') - continue; - /* If there is a routine start defined, terminate it. */ - if (Current_Routine) - VMS_TBT_Routine_End (text_siz, Current_Routine); - - /* Check for & skip dummy labels like "gcc_compiled.". - * They're identified by the IN_DEFAULT_SECTION flag. */ - if ((S_GET_OTHER (symbolP) & IN_DEFAULT_SECTION) != 0 && - S_GET_VALUE (symbolP) == 0) - continue; - /* Store the routine begin traceback info. */ - VMS_TBT_Routine_Begin (symbolP, Text_Psect); - Current_Routine = symbolP; - /* Define symbols local to this routine. */ - local_symbols_DST (symbolP, Current_Routine); - /* Done. */ - continue; - - } - /* Deal with STAB symbols. */ - else if (S_IS_DEBUG (symbolP)) - { - /* Dispatch on STAB type. */ - switch (S_GET_RAW_TYPE (symbolP)) - { - /* Line number. */ - case N_SLINE: - /* Offset the line into the correct portion of the file. */ - if (Cur_File->file_number == 0) - break; - val = S_GET_VALUE (symbolP); - /* Sometimes the same offset gets several source lines - assigned to it. We should be selective about which - lines we allow, we should prefer lines that are in - the main source file when debugging inline functions. */ - if (val == Cur_Offset && Cur_File->file_number != 1) - break; - - /* Calculate actual debugger source line. */ - dsc = S_GET_DESC (symbolP) + Cur_File->offset; - S_SET_DESC (symbolP, dsc); - /* Define PC/Line correlation. */ - if (Cur_Offset == -1) - { - /* First N_SLINE; set up initial correlation. */ - VMS_TBT_Line_PC_Correlation (dsc, - val, - Text_Psect, - 0); - } - else if ((dsc - Cur_Line_Number) <= 0) - { - /* Line delta is not +ve, we need to close the line and - start a new PC/Line correlation. */ - VMS_TBT_Line_PC_Correlation (0, - val - Cur_Offset, - 0, - -1); - VMS_TBT_Line_PC_Correlation (dsc, - val, - Text_Psect, - 0); - } - else - { - /* Line delta is +ve, all is well. */ - VMS_TBT_Line_PC_Correlation (dsc - Cur_Line_Number, - val - Cur_Offset, - 0, - 1); - } - /* Update the current line/PC info. */ - Cur_Line_Number = dsc; - Cur_Offset = val; - break; - - /* Source file. */ - case N_SO: - /* Remember that we had a source file and emit - the source file debugger record. */ - Cur_File = find_file (symbolP); - break; - - case N_SOL: - /* We need to make sure that we are really in the actual - source file when we compute the maximum line number. - Otherwise the debugger gets really confused. */ - Cur_File = find_file (symbolP); - break; - - default: - break; - } - } - } - - /* If there is a routine start defined, terminate it - (and the line numbers). */ - if (Current_Routine) - { - /* Terminate the line numbers. */ - VMS_TBT_Line_PC_Correlation (0, - text_siz - S_GET_VALUE (Current_Routine), - 0, - -1); - /* Terminate the routine. */ - VMS_TBT_Routine_End (text_siz, Current_Routine); - } - - /* Write the Traceback End Module TBT record. */ - VMS_TBT_Module_End (); -} - - -/* Write a VAX/VMS object file (everything else has been done!). */ - -void -vms_write_object_file (unsigned text_siz, unsigned data_siz, unsigned bss_siz, - fragS *text_frag_root, fragS *data_frag_root) -{ - struct VMS_Symbol *vsp; - - /* Initialize program section indices; values get updated later. */ - Psect_Number = 0; /* next Psect Index to use */ - Text_Psect = -1; /* Text Psect Index */ - Data_Psect = -2; /* Data Psect Index JF: Was -1 */ - Bss_Psect = -3; /* Bss Psect Index JF: Was -1 */ - Ctors_Psect = -4; /* Ctors Psect Index */ - Dtors_Psect = -5; /* Dtors Psect Index */ - /* Initialize other state variables. */ - Data_Segment = 0; - Local_Initd_Data_Size = 0; - - /* Create the actual output file and populate it with required - "module header" information. */ - Create_VMS_Object_File (); - Write_VMS_MHD_Records (); - - /* Create the Data segment: - - Since this is REALLY hard to do any other way, - we actually manufacture the data segment and - then store the appropriate values out of it. - We need to generate this early, so that globalvalues - can be properly emitted. */ - if (data_siz > 0) - synthesize_data_segment (data_siz, text_siz, data_frag_root); - - /* Global Symbol Directory. */ - - /* Emit globalvalues now. We must do this before the text psect is - defined, or we will get linker warnings about multiply defined - symbols. All of the globalvalues "reference" psect 0, although - it really does not have anything to do with it. */ - VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment); - /* Define the Text Psect. */ - Text_Psect = Psect_Number++; - VMS_Psect_Spec ("$code", text_siz, ps_TEXT, 0); - /* Define the BSS Psect. */ - if (bss_siz > 0) - { - Bss_Psect = Psect_Number++; - VMS_Psect_Spec ("$uninitialized_data", bss_siz, ps_DATA, 0); - } - /* Define symbols to the linker. */ - global_symbol_directory (text_siz, data_siz); - /* Define the Data Psect. */ - if (data_siz > 0 && Local_Initd_Data_Size > 0) - { - Data_Psect = Psect_Number++; - VMS_Psect_Spec ("$data", Local_Initd_Data_Size, ps_DATA, 0); - /* Local initialized data (N_DATA) symbols need to be updated to the - proper value of Data_Psect now that it's actually been defined. - (A dummy value was used in global_symbol_directory() above.) */ - for (vsp = VMS_Symbols; vsp; vsp = vsp->Next) - if (vsp->Psect_Index < 0 && S_GET_RAW_TYPE (vsp->Symbol) == N_DATA) - vsp->Psect_Index = Data_Psect; - } - - if (Ctors_Symbols != 0) - { - char *ps_name = "$ctors"; - Ctors_Psect = Psect_Number++; - VMS_Psect_Spec (ps_name, Ctors_Symbols->Psect_Offset + XTOR_SIZE, - ps_CTORS, 0); - VMS_Global_Symbol_Spec (ps_name, Ctors_Psect, - 0, GBLSYM_DEF|GBLSYM_WEAK); - for (vsp = Ctors_Symbols; vsp; vsp = vsp->Next) - vsp->Psect_Index = Ctors_Psect; - } - - if (Dtors_Symbols != 0) - { - char *ps_name = "$dtors"; - Dtors_Psect = Psect_Number++; - VMS_Psect_Spec (ps_name, Dtors_Symbols->Psect_Offset + XTOR_SIZE, - ps_DTORS, 0); - VMS_Global_Symbol_Spec (ps_name, Dtors_Psect, - 0, GBLSYM_DEF|GBLSYM_WEAK); - for (vsp = Dtors_Symbols; vsp; vsp = vsp->Next) - vsp->Psect_Index = Dtors_Psect; - } - - /* Text Information and Relocation Records. */ - - /* Write the text segment data. */ - if (text_siz > 0) - vms_fixup_text_section (text_siz, text_frag_root, data_frag_root); - /* Write the data segment data, then discard it. */ - if (data_siz > 0) - { - vms_fixup_data_section (data_siz, text_siz); - free (Data_Segment), Data_Segment = 0; - } - - if (Ctors_Symbols != 0) - vms_fixup_xtors_section (Ctors_Symbols, Ctors_Psect); - - if (Dtors_Symbols != 0) - vms_fixup_xtors_section (Dtors_Symbols, Dtors_Psect); - - /* Debugger Symbol Table Records. */ - - vms_build_DST (text_siz); - - /* Wrap things up. */ - - /* Write the End Of Module record. */ - if (Entry_Point_Symbol) - Write_VMS_EOM_Record (Text_Psect, S_GET_VALUE (Entry_Point_Symbol)); - else - Write_VMS_EOM_Record (-1, (valueT) 0); - - /* All done, close the object file. */ - Close_VMS_Object_File (); -} diff --git a/gas/config/obj-vms.h b/gas/config/obj-vms.h deleted file mode 100644 index bd75896b4..000000000 --- a/gas/config/obj-vms.h +++ /dev/null @@ -1,554 +0,0 @@ -/* VMS object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, - 2002, 2003 Free Software Foundation, Inc. - -This file is part of GAS, the GNU Assembler. - -GAS is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as -published by the Free Software Foundation; either version 2, -or (at your option) any later version. - -GAS is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See -the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GAS; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -/* Tag to validate a.out object file format processing */ -#define OBJ_VMS 1 - -#include "targ-cpu.h" - -#define LONGWORD_ALIGNMENT 2 - -/* This macro controls subsection alignment within a section. - * - * Under VAX/VMS, the linker (and PSECT specifications) - * take care of correctly aligning the segments. - * Doing the alignment here (on initialized data) can - * mess up the calculation of global data PSECT sizes. - */ -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ - (((SEG) == data_section) ? 0 : LONGWORD_ALIGNMENT) - -/* This flag is used to remember whether we are in the const or the - data section. By and large they are identical, but we set a no-write - bit for psects in the const section. */ - -extern unsigned char const_flag; - -/* This is overloaded onto const_flag, for convenience. It's used to flag - dummy labels like "gcc2_compiled." which occur before the first .text - or .data section directive. */ - -#define IN_DEFAULT_SECTION 0x80 - -/* These are defined in obj-vms.c. */ -extern const short seg_N_TYPE[]; -extern const segT N_TYPE_seg[]; - -#undef NO_RELOC -enum reloc_type - { - NO_RELOC, RELOC_32 - }; - -#define N_BADMAG(x) (0) -#define N_TXTOFF(x) ( sizeof (struct exec) ) -#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text ) -#define N_TROFF(x) ( N_DATOFF(x) + (x).a_data ) -#define N_DROFF(x) ( N_TROFF(x) + (x).a_trsize ) -#define N_SYMOFF(x) ( N_DROFF(x) + (x).a_drsize ) -#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms ) - -/* We use this copy of the exec header for VMS. We do not actually use it, but - what we actually do is let gas fill in the relevant slots, and when we get - around to writing an obj file, we just pick out what we need. */ - -struct exec -{ - unsigned long a_text; /* length of text, in bytes */ - unsigned long a_data; /* length of data, in bytes */ - unsigned long a_bss; /* length of uninitialized data area for file, in bytes */ - unsigned long a_trsize; /* length of relocation info for text, in bytes */ - unsigned long a_drsize; /* length of relocation info for data, in bytes */ - unsigned long a_entry; /* start address */ - unsigned long a_syms; /* length of symbol table data in file, in bytes */ -}; - -typedef struct - { - struct exec header; /* a.out header */ - long string_table_size; /* names + '\0' + sizeof (int) */ - } -object_headers; - -/* A single entry in the symbol table - * (this started as a clone of bout.h's nlist, but much was unneeded). - */ -struct nlist - { - char *n_name; - unsigned char n_type; /* See below */ - unsigned char n_other; /* used for const_flag and "default section" */ - unsigned : 16; /* padding for alignment */ - int n_desc; /* source line number for N_SLINE stabs */ - }; - -/* Legal values of n_type (see aout/stab.def for the majority of the codes). - */ -#define N_UNDF 0 /* Undefined symbol */ -#define N_ABS 2 /* Absolute symbol */ -#define N_TEXT 4 /* Text symbol */ -#define N_DATA 6 /* Data symbol */ -#define N_BSS 8 /* BSS symbol */ -#define N_FN 31 /* Filename symbol */ - -#define N_EXT 1 /* External symbol (OR'd in with one of above) */ -#define N_TYPE 036 /* Mask for all the type bits */ - -#define N_STAB 0340 /* Mask for all bits used for SDB entries */ - -#include "aout/stab_gnu.h" - -/* SYMBOL TABLE */ -/* Symbol table entry data type */ - -typedef struct nlist obj_symbol_type; /* Symbol table entry */ - -/* Symbol table macros and constants */ - -#define OBJ_SYMFIELD_TYPE struct VMS_Symbol * - -/* - * Macros to extract information from a symbol table entry. - * This syntactic indirection allows independence regarding a.out or coff. - * The argument (s) of all these macros is a pointer to a symbol table entry. - */ - -/* True if the symbol is external */ -#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT) - -/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */ -#define S_IS_DEFINED(s) (S_GET_TYPE(s) != N_UNDF) - -#define S_IS_COMMON(s) (S_GET_TYPE(s) == N_UNDF && S_GET_VALUE(s) != 0) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s))) - -#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER) - -/* True if a debug special symbol entry */ -#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB) -/* True if a symbol is local symbol name */ -/* A symbol name whose name begin with ^A is a gas internal pseudo symbol - nameless symbols come from .stab directives. */ -#define S_IS_LOCAL(s) (S_GET_NAME(s) && \ - !S_IS_DEBUG(s) && \ - (strchr(S_GET_NAME(s), '\001') != 0 || \ - strchr(S_GET_NAME(s), '\002') != 0 || \ - (S_LOCAL_NAME(s) && !flag_keep_locals))) -/* True if a symbol is not defined in this file */ -#define S_IS_EXTERN(s) ((s)->sy_symbol.n_type & N_EXT) -/* True if the symbol has been generated because of a .stabd directive */ -#define S_IS_STABD(s) (S_GET_NAME(s) == (char *)0) - -/* Accessors */ -/* The name of the symbol */ -#define S_GET_NAME(s) ((s)->sy_symbol.n_name) -/* The pointer to the string table */ -#define S_GET_OFFSET(s) ((s)->sy_name_offset) -/* The raw type of the symbol */ -#define S_GET_RAW_TYPE(s) ((s)->sy_symbol.n_type) -/* The type of the symbol */ -#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE) -/* The numeric value of the segment */ -#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)]) -/* The n_other expression value */ -#define S_GET_OTHER(s) ((s)->sy_symbol.n_other) -/* The n_desc expression value */ -#define S_GET_DESC(s) ((s)->sy_symbol.n_desc) - -/* Modifiers */ -/* Assume that a symbol cannot be simultaneously in more than on segment */ -/* set segment */ -#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type|=SEGMENT_TO_SYMBOL_TYPE(seg)) -/* The symbol is external */ -#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT) -/* The symbol is not external */ -#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT) -/* Set the name of the symbol */ -#define S_SET_NAME(s,v) ((s)->sy_symbol.n_name = (v)) -/* Set the offset in the string table */ -#define S_SET_OFFSET(s,v) ((s)->sy_name_offset = (v)) -/* Set the n_other expression value */ -#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v)) -/* Set the n_desc expression value */ -#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v)) -/* Set the n_type expression value */ -#define S_SET_TYPE(s,v) ((s)->sy_symbol.n_type = (v)) - -/* File header macro and type definition */ - -#define H_GET_TEXT_SIZE(h) ((h)->header.a_text) -#define H_GET_DATA_SIZE(h) ((h)->header.a_data) -#define H_GET_BSS_SIZE(h) ((h)->header.a_bss) - -#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = md_section_align(SEG_TEXT, (v))) -#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = md_section_align(SEG_DATA, (v))) -#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = md_section_align(SEG_BSS, (v))) - -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * \ - sizeof (struct nlist)) - -/* line numbering stuff. */ -#define OBJ_EMIT_LINENO(a, b, c) {;} - -#define obj_symbol_new_hook(s) {;} - -/* Force structure tags into scope so that their use in prototypes - will never be their first occurrence. */ -struct fix; -struct frag; - -/* obj-vms routines visible to the rest of gas. */ - -extern void tc_aout_fix_to_chars PARAMS ((char *,struct fix *,relax_addressT)); - -extern int vms_resolve_symbol_redef PARAMS ((symbolS *)); -#define RESOLVE_SYMBOL_REDEFINITION(X) vms_resolve_symbol_redef(X) - -/* Compiler-generated label "__vax_g_doubles" is used to augment .stabs. */ -extern void vms_check_for_special_label PARAMS ((symbolS *)); -#define obj_frob_label(X) vms_check_for_special_label(X) - -extern void vms_check_for_main PARAMS ((void)); - -extern void vms_write_object_file PARAMS ((unsigned,unsigned,unsigned, - struct frag *,struct frag *)); - -/* VMS executables are nothing like a.out, but the VMS port of gcc uses - a.out format stabs which obj-vms.c then translates. */ - -#define AOUT_STABS - - -#ifdef WANT_VMS_OBJ_DEFS - -/* The rest of this file contains definitions for constants used within - the actual VMS object file. We do not use a $ in the symbols (as per - usual VMS convention) since System V gags on it. */ - -#define OBJ_S_C_HDR 0 -#define OBJ_S_C_HDR_MHD 0 -#define OBJ_S_C_HDR_LNM 1 -#define OBJ_S_C_HDR_SRC 2 -#define OBJ_S_C_HDR_TTL 3 -#define OBJ_S_C_HDR_CPR 4 -#define OBJ_S_C_HDR_MTC 5 -#define OBJ_S_C_HDR_GTX 6 -#define OBJ_S_C_GSD 1 -#define OBJ_S_C_GSD_PSC 0 -#define OBJ_S_C_GSD_SYM 1 -#define OBJ_S_C_GSD_EPM 2 -#define OBJ_S_C_GSD_PRO 3 -#define OBJ_S_C_GSD_SYMW 4 -#define OBJ_S_C_GSD_EPMW 5 -#define OBJ_S_C_GSD_PROW 6 -#define OBJ_S_C_GSD_IDC 7 -#define OBJ_S_C_GSD_ENV 8 -#define OBJ_S_C_GSD_LSY 9 -#define OBJ_S_C_GSD_LEPM 10 -#define OBJ_S_C_GSD_LPRO 11 -#define OBJ_S_C_GSD_SPSC 12 -#define OBJ_S_C_TIR 2 -#define OBJ_S_C_EOM 3 -#define OBJ_S_C_DBG 4 -#define OBJ_S_C_TBT 5 -#define OBJ_S_C_LNK 6 -#define OBJ_S_C_EOMW 7 -#define OBJ_S_C_MAXRECTYP 7 -#define OBJ_S_K_SUBTYP 1 -#define OBJ_S_C_SUBTYP 1 -#define OBJ_S_C_MAXRECSIZ 2048 -#define OBJ_S_C_STRLVL 0 -#define OBJ_S_C_SYMSIZ 31 -#define OBJ_S_C_STOREPLIM -1 -#define OBJ_S_C_PSCALILIM 9 - -#define MHD_S_C_MHD 0 -#define MHD_S_C_LNM 1 -#define MHD_S_C_SRC 2 -#define MHD_S_C_TTL 3 -#define MHD_S_C_CPR 4 -#define MHD_S_C_MTC 5 -#define MHD_S_C_GTX 6 -#define MHD_S_C_MAXHDRTYP 6 - -#define GSD_S_K_ENTRIES 1 -#define GSD_S_C_ENTRIES 1 -#define GSD_S_C_PSC 0 -#define GSD_S_C_SYM 1 -#define GSD_S_C_EPM 2 -#define GSD_S_C_PRO 3 -#define GSD_S_C_SYMW 4 -#define GSD_S_C_EPMW 5 -#define GSD_S_C_PROW 6 -#define GSD_S_C_IDC 7 -#define GSD_S_C_ENV 8 -#define GSD_S_C_LSY 9 -#define GSD_S_C_LEPM 10 -#define GSD_S_C_LPRO 11 -#define GSD_S_C_SPSC 12 -#define GSD_S_C_SYMV 13 -#define GSD_S_C_EPMV 14 -#define GSD_S_C_PROV 15 -#define GSD_S_C_MAXRECTYP 15 - -#define GSY_S_M_WEAK 1 -#define GSY_S_M_DEF 2 -#define GSY_S_M_UNI 4 -#define GSY_S_M_REL 8 - -#define LSY_S_M_DEF 2 -#define LSY_S_M_REL 8 - -#define ENV_S_M_DEF 1 -#define ENV_S_M_NESTED 2 - -#define GPS_S_M_PIC 1 -#define GPS_S_M_LIB 2 -#define GPS_S_M_OVR 4 -#define GPS_S_M_REL 8 -#define GPS_S_M_GBL 16 -#define GPS_S_M_SHR 32 -#define GPS_S_M_EXE 64 -#define GPS_S_M_RD 128 -#define GPS_S_M_WRT 256 -#define GPS_S_M_VEC 512 -#define GPS_S_K_NAME 9 -#define GPS_S_C_NAME 9 - -#define TIR_S_C_STA_GBL 0 -#define TIR_S_C_STA_SB 1 -#define TIR_S_C_STA_SW 2 -#define TIR_S_C_STA_LW 3 -#define TIR_S_C_STA_PB 4 -#define TIR_S_C_STA_PW 5 -#define TIR_S_C_STA_PL 6 -#define TIR_S_C_STA_UB 7 -#define TIR_S_C_STA_UW 8 -#define TIR_S_C_STA_BFI 9 -#define TIR_S_C_STA_WFI 10 -#define TIR_S_C_STA_LFI 11 -#define TIR_S_C_STA_EPM 12 -#define TIR_S_C_STA_CKARG 13 -#define TIR_S_C_STA_WPB 14 -#define TIR_S_C_STA_WPW 15 -#define TIR_S_C_STA_WPL 16 -#define TIR_S_C_STA_LSY 17 -#define TIR_S_C_STA_LIT 18 -#define TIR_S_C_STA_LEPM 19 -#define TIR_S_C_MAXSTACOD 19 -#define TIR_S_C_MINSTOCOD 20 -#define TIR_S_C_STO_SB 20 -#define TIR_S_C_STO_SW 21 -#define TIR_S_C_STO_L 22 -#define TIR_S_C_STO_BD 23 -#define TIR_S_C_STO_WD 24 -#define TIR_S_C_STO_LD 25 -#define TIR_S_C_STO_LI 26 -#define TIR_S_C_STO_PIDR 27 -#define TIR_S_C_STO_PICR 28 -#define TIR_S_C_STO_RSB 29 -#define TIR_S_C_STO_RSW 30 -#define TIR_S_C_STO_RL 31 -#define TIR_S_C_STO_VPS 32 -#define TIR_S_C_STO_USB 33 -#define TIR_S_C_STO_USW 34 -#define TIR_S_C_STO_RUB 35 -#define TIR_S_C_STO_RUW 36 -#define TIR_S_C_STO_B 37 -#define TIR_S_C_STO_W 38 -#define TIR_S_C_STO_RB 39 -#define TIR_S_C_STO_RW 40 -#define TIR_S_C_STO_RIVB 41 -#define TIR_S_C_STO_PIRR 42 -#define TIR_S_C_MAXSTOCOD 42 -#define TIR_S_C_MINOPRCOD 50 -#define TIR_S_C_OPR_NOP 50 -#define TIR_S_C_OPR_ADD 51 -#define TIR_S_C_OPR_SUB 52 -#define TIR_S_C_OPR_MUL 53 -#define TIR_S_C_OPR_DIV 54 -#define TIR_S_C_OPR_AND 55 -#define TIR_S_C_OPR_IOR 56 -#define TIR_S_C_OPR_EOR 57 -#define TIR_S_C_OPR_NEG 58 -#define TIR_S_C_OPR_COM 59 -#define TIR_S_C_OPR_INSV 60 -#define TIR_S_C_OPR_ASH 61 -#define TIR_S_C_OPR_USH 62 -#define TIR_S_C_OPR_ROT 63 -#define TIR_S_C_OPR_SEL 64 -#define TIR_S_C_OPR_REDEF 65 -#define TIR_S_C_OPR_DFLIT 66 -#define TIR_S_C_MAXOPRCOD 66 -#define TIR_S_C_MINCTLCOD 80 -#define TIR_S_C_CTL_SETRB 80 -#define TIR_S_C_CTL_AUGRB 81 -#define TIR_S_C_CTL_DFLOC 82 -#define TIR_S_C_CTL_STLOC 83 -#define TIR_S_C_CTL_STKDL 84 -#define TIR_S_C_MAXCTLCOD 84 - -/* - * Debugger symbol definitions: These are done by hand, as no - * machine-readable version seems - * to be available. - */ -#define DST_S_C_C 7 /* Language == "C" */ -#define DST_S_C_CXX 15 /* Language == "C++" */ -#define DST_S_C_VERSION 153 -#define DST_S_C_SOURCE 155 /* Source file */ -#define DST_S_C_PROLOG 162 -#define DST_S_C_BLKBEG 176 /* Beginning of block */ -#define DST_S_C_BLKEND 177 /* End of block */ -#define DST_S_C_ENTRY 181 -#define DST_S_C_PSECT 184 -#define DST_S_C_LINE_NUM 185 /* Line Number */ -#define DST_S_C_LBLORLIT 186 -#define DST_S_C_LABEL 187 -#define DST_S_C_MODBEG 188 /* Beginning of module */ -#define DST_S_C_MODEND 189 /* End of module */ -#define DST_S_C_RTNBEG 190 /* Beginning of routine */ -#define DST_S_C_RTNEND 191 /* End of routine */ -#define DST_S_C_DELTA_PC_W 1 /* Incr PC */ -#define DST_S_C_INCR_LINUM 2 /* Incr Line # */ -#define DST_S_C_INCR_LINUM_W 3 /* Incr Line # */ -#define DST_S_C_SET_LINUM_INCR 4 -#define DST_S_C_SET_LINUM_INCR_W 5 -#define DST_S_C_RESET_LINUM_INCR 6 -#define DST_S_C_BEG_STMT_MODE 7 -#define DST_S_C_END_STMT_MODE 8 -#define DST_S_C_SET_LINE_NUM 9 /* Set Line # */ -#define DST_S_C_SET_PC 10 -#define DST_S_C_SET_PC_W 11 -#define DST_S_C_SET_PC_L 12 -#define DST_S_C_SET_STMTNUM 13 -#define DST_S_C_TERM 14 /* End of lines */ -#define DST_S_C_TERM_W 15 /* End of lines */ -#define DST_S_C_SET_ABS_PC 16 /* Set PC */ -#define DST_S_C_DELTA_PC_L 17 /* Incr PC */ -#define DST_S_C_INCR_LINUM_L 18 /* Incr Line # */ -#define DST_S_C_SET_LINUM_B 19 /* Set Line # */ -#define DST_S_C_SET_LINUM_L 20 /* Set Line # */ -#define DST_S_C_TERM_L 21 /* End of lines */ -/* these are used with DST_S_C_SOURCE */ -#define DST_S_C_SRC_DECLFILE 1 /* Declare source file */ -#define DST_S_C_SRC_SETFILE 2 /* Set source file */ -#define DST_S_C_SRC_SETREC_L 3 /* Set record, longword value */ -#define DST_S_C_SRC_SETREC_W 4 /* Set record, word value */ -#define DST_S_C_SRC_DEFLINES_W 10 /* # of line, word counter */ -#define DST_S_C_SRC_DEFLINES_B 11 /* # of line, byte counter */ -#define DST_S_C_SRC_FORMFEED 16 /* ^L counts as a record */ -/* the following are the codes for the various data types. Anything not on - * the list is included under 'advanced_type' - */ -#define DBG_S_C_UCHAR 0x02 -#define DBG_S_C_USINT 0x03 -#define DBG_S_C_ULINT 0x04 -#define DBG_S_C_UQUAD 0x05 -#define DBG_S_C_SCHAR 0x06 -#define DBG_S_C_SSINT 0x07 -#define DBG_S_C_SLINT 0x08 -#define DBG_S_C_SQUAD 0x09 -#define DBG_S_C_REAL4 0x0a -#define DBG_S_C_REAL8 0x0b /* D_float double */ -#define DBG_S_C_COMPLX4 0x0c /* 2xF_float complex float */ -#define DBG_S_C_COMPLX8 0x0d /* 2xD_float complex double */ -#define DBG_S_C_REAL8_G 0x1b /* G_float double */ -#define DBG_S_C_COMPLX8_G 0x1d /* 2xG_float complex double */ -#define DBG_S_C_FUNCTION_ADDR 0x17 -#define DBG_S_C_ADVANCED_TYPE 0xa3 -/* Some of these are just for future reference. [pr] - */ -#define DBG_S_C_UBITA 0x01 /* unsigned, aligned bit field */ -#define DBG_S_C_UBITU 0x22 /* unsigned, unaligned bit field */ -#define DBG_S_C_SBITA 0x29 /* signed, aligned bit field */ -#define DBG_S_C_SBITU 0x2a /* signed, unaligned bit field */ -#define DBG_S_C_CSTRING 0x2e /* asciz ('\0' terminated) string */ -#define DBG_S_C_WCHAR 0x38 /* wchar_t */ -/* These are descriptor class codes. - */ -#define DSC_K_CLASS_S 0x01 /* static (fixed length) */ -#define DSC_K_CLASS_D 0x02 /* dynamic string (not via malloc!) */ -#define DSC_K_CLASS_A 0x04 /* array */ -#define DSC_K_CLASS_UBS 0x0d /* unaligned bit string */ -/* These are the codes that are used to generate the definitions of struct - * union and enum records - */ -#define DBG_S_C_ENUM_ITEM 0xa4 -#define DBG_S_C_ENUM_START 0xa5 -#define DBG_S_C_ENUM_END 0xa6 -#define DBG_S_C_STRUCT_ITEM DST_K_VFLAGS_BITOFFS /* 0xff */ -#define DBG_S_C_STRUCT_START 0xab -#define DBG_S_C_STRUCT_END 0xac -#define DST_K_TYPSPEC 0xaf /* type specification */ -/* These codes are used in the generation of the symbol definition records - */ -#define DST_K_VFLAGS_NOVAL 0x80 /* struct definition only */ -#define DST_K_VFLAGS_DSC 0xfa /* descriptor used */ -#define DST_K_VFLAGS_TVS 0xfb /* trailing value specified */ -#define DST_K_VS_FOLLOWS 0xfd /* value spec follows */ -#define DST_K_VFLAGS_BITOFFS 0xff /* value contains bit offset */ -#define DST_K_VALKIND_LITERAL 0 -#define DST_K_VALKIND_ADDR 1 -#define DST_K_VALKIND_DESC 2 -#define DST_K_VALKIND_REG 3 -#define DST_K_REG_VAX_AP 0x0c /* R12 */ -#define DST_K_REG_VAX_FP 0x0d /* R13 */ -#define DST_K_REG_VAX_SP 0x0e /* R14 */ -#define DST_V_VALKIND 0 /* offset of valkind field */ -#define DST_V_INDIRECT 2 /* offset to indirect bit */ -#define DST_V_DISP 3 /* offset to displacement bit */ -#define DST_V_REGNUM 4 /* offset to register number */ -#define DST_M_INDIRECT (1<fr_literal + the_insn.reloc_offset), - 4, /* size */ - &the_insn.exp, - the_insn.pcrel, - the_insn.reloc); - } -} - -static char * -parse_operand (s, operandp, opt) - char *s; - expressionS *operandp; - int opt; -{ - char *save = input_line_pointer; - char *new; - - input_line_pointer = s; - expression (operandp); - if (operandp->X_op == O_absent && ! opt) - as_bad (_("missing operand")); - new = input_line_pointer; - input_line_pointer = save; - return new; -} - -/* Instruction parsing. Takes a string containing the opcode. - Operands are at input_line_pointer. Output is in the_insn. - Warnings or errors are generated. */ - -static void -machine_ip (str) - char *str; -{ - char *s; - const char *args; - struct machine_opcode *insn; - char *argsStart; - unsigned long opcode; - expressionS the_operand; - expressionS *operand = &the_operand; - unsigned int reg; - - /* Must handle `div0' opcode. */ - s = str; - if (ISALPHA (*s)) - for (; ISALNUM (*s); ++s) - *s = TOLOWER (*s); - - switch (*s) - { - case '\0': - break; - - case ' ': /* FIXME-SOMEDAY more whitespace */ - *s++ = '\0'; - break; - - default: - as_bad (_("Unknown opcode: `%s'"), str); - return; - } - if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL) - { - as_bad (_("Unknown opcode `%s'."), str); - return; - } - argsStart = s; - opcode = insn->opcode; - memset (&the_insn, '\0', sizeof (the_insn)); - the_insn.reloc = NO_RELOC; - - /* Build the opcode, checking as we go to make sure that the - operands match. - - If an operand matches, we modify the_insn or opcode appropriately, - and do a "continue". If an operand fails to match, we "break". */ - - if (insn->args[0] != '\0') - { - /* Prime the pump. */ - s = parse_operand (s, operand, insn->args[0] == 'I'); - } - - for (args = insn->args;; ++args) - { - switch (*args) - { - - case '\0': /* end of args */ - if (*s == '\0') - { - /* We are truly done. */ - the_insn.opcode = opcode; - return; - } - as_bad (_("Too many operands: %s"), s); - break; - - case ',': /* Must match a comma */ - if (*s++ == ',') - { - /* Parse next operand. */ - s = parse_operand (s, operand, args[1] == 'I'); - continue; - } - break; - - case 'v': /* Trap numbers (immediate field) */ - if (operand->X_op == O_constant) - { - if (operand->X_add_number < 256) - { - opcode |= (operand->X_add_number << 16); - continue; - } - else - { - as_bad (_("Immediate value of %ld is too large"), - (long) operand->X_add_number); - continue; - } - } - the_insn.reloc = RELOC_8; - the_insn.reloc_offset = 1; /* BIG-ENDIAN Byte 1 of insn */ - the_insn.exp = *operand; - continue; - - case 'b': /* A general register or 8-bit immediate */ - case 'i': - /* We treat the two cases identically since we mashed - them together in the opcode table. */ - if (operand->X_op == O_register) - goto general_reg; - - /* Make sure the 'i' case really exists. */ - if ((insn->opcode | IMMEDIATE_BIT) != (insn + 1)->opcode) - break; - - opcode |= IMMEDIATE_BIT; - if (operand->X_op == O_constant) - { - if (operand->X_add_number < 256) - { - opcode |= operand->X_add_number; - continue; - } - else - { - as_bad (_("Immediate value of %ld is too large"), - (long) operand->X_add_number); - continue; - } - } - the_insn.reloc = RELOC_8; - the_insn.reloc_offset = 3; /* BIG-ENDIAN Byte 3 of insn */ - the_insn.exp = *operand; - continue; - - case 'a': /* next operand must be a register */ - case 'c': - general_reg: - /* lrNNN or grNNN or %%expr or a user-def register name */ - if (operand->X_op != O_register) - break; /* Only registers */ - know (operand->X_add_symbol == 0); - know (operand->X_op_symbol == 0); - reg = operand->X_add_number; - if (reg >= SREG) - break; /* No special registers */ - - /* Got the register, now figure out where it goes in the - opcode. */ - switch (*args) - { - case 'a': - opcode |= reg << 8; - continue; - - case 'b': - case 'i': - opcode |= reg; - continue; - - case 'c': - opcode |= reg << 16; - continue; - } - as_fatal (_("failed sanity check.")); - break; - - case 'x': /* 16 bit constant, zero-extended */ - case 'X': /* 16 bit constant, one-extended */ - if (operand->X_op == O_constant) - { - opcode |= (operand->X_add_number & 0xFF) << 0 | - ((operand->X_add_number & 0xFF00) << 8); - continue; - } - the_insn.reloc = RELOC_CONST; - the_insn.exp = *operand; - continue; - - case 'h': - if (operand->X_op == O_constant) - { - opcode |= (operand->X_add_number & 0x00FF0000) >> 16 | - (((unsigned long) operand->X_add_number - /* avoid sign ext */ & 0xFF000000) >> 8); - continue; - } - the_insn.reloc = RELOC_CONSTH; - the_insn.exp = *operand; - continue; - - case 'P': /* PC-relative jump address */ - case 'A': /* Absolute jump address */ - /* These two are treated together since we folded the - opcode table entries together. */ - if (operand->X_op == O_constant) - { - /* Make sure the 'A' case really exists. */ - if ((insn->opcode | ABSOLUTE_BIT) != (insn + 1)->opcode) - break; - { - bfd_vma v, mask; - mask = 0x1ffff; - v = operand->X_add_number & ~ mask; - if (v) - as_bad ("call/jmp target out of range"); - } - opcode |= ABSOLUTE_BIT | - (operand->X_add_number & 0x0003FC00) << 6 | - ((operand->X_add_number & 0x000003FC) >> 2); - continue; - } - the_insn.reloc = RELOC_JUMPTARG; - the_insn.exp = *operand; - the_insn.pcrel = 1; /* Assume PC-relative jump */ - /* FIXME-SOON, Do we figure out whether abs later, after - know sym val? */ - continue; - - case 'e': /* Coprocessor enable bit for LOAD/STORE insn */ - if (operand->X_op == O_constant) - { - if (operand->X_add_number == 0) - continue; - if (operand->X_add_number == 1) - { - opcode |= CE_BIT; - continue; - } - } - break; - - case 'n': /* Control bits for LOAD/STORE instructions */ - if (operand->X_op == O_constant && - operand->X_add_number < 128) - { - opcode |= (operand->X_add_number << 16); - continue; - } - break; - - case 's': /* Special register number */ - if (operand->X_op != O_register) - break; /* Only registers */ - if (operand->X_add_number < SREG) - break; /* Not a special register */ - opcode |= (operand->X_add_number & 0xFF) << 8; - continue; - - case 'u': /* UI bit of CONVERT */ - if (operand->X_op == O_constant) - { - if (operand->X_add_number == 0) - continue; - if (operand->X_add_number == 1) - { - opcode |= UI_BIT; - continue; - } - } - break; - - case 'r': /* RND bits of CONVERT */ - if (operand->X_op == O_constant && - operand->X_add_number < 8) - { - opcode |= operand->X_add_number << 4; - continue; - } - break; - - case 'I': /* ID bits of INV and IRETINV. */ - /* This operand is optional. */ - if (operand->X_op == O_absent) - continue; - else if (operand->X_op == O_constant - && operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 16; - continue; - } - break; - - case 'd': /* FD bits of CONVERT */ - if (operand->X_op == O_constant && - operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 2; - continue; - } - break; - - case 'f': /* FS bits of CONVERT */ - if (operand->X_op == O_constant && - operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 0; - continue; - } - break; - - case 'C': - if (operand->X_op == O_constant && - operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 16; - continue; - } - break; - - case 'F': - if (operand->X_op == O_constant && - operand->X_add_number < 16) - { - opcode |= operand->X_add_number << 18; - continue; - } - break; - - default: - BAD_CASE (*args); - } - /* Types or values of args don't match. */ - as_bad ("Invalid operands"); - return; - } -} - -/* This is identical to the md_atof in m68k.c. I think this is right, - but I'm not sure. - - Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -/* Equal to MAX_PRECISION in atof-ieee.c */ -#define MAX_LITTLENUMS 6 - -char * -md_atof (type, litP, sizeP) - char type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return "Bad call to MD_ATOF()"; - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -/* - * Write out big-endian. - */ -void -md_number_to_chars (buf, val, n) - char *buf; - valueT val; - int n; -{ - number_to_chars_bigendian (buf, val, n); -} - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT * valP; - segT seg ATTRIBUTE_UNUSED; -{ - long val = *valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - - fixP->fx_addnumber = val; /* Remember value for emit_reloc. */ - - know (fixP->fx_size == 4); - know (fixP->fx_r_type < NO_RELOC); - - /* This is a hack. There should be a better way to handle this. */ - if (fixP->fx_r_type == RELOC_WDISP30 && fixP->fx_addsy) - val += fixP->fx_where + fixP->fx_frag->fr_address; - - switch (fixP->fx_r_type) - { - case RELOC_32: - buf[0] = val >> 24; - buf[1] = val >> 16; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_8: - buf[0] = val; - break; - - case RELOC_WDISP30: - val = (val >> 2) + 1; - buf[0] |= (val >> 24) & 0x3f; - buf[1] = (val >> 16); - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_HI22: - buf[1] |= (val >> 26) & 0x3f; - buf[2] = val >> 18; - buf[3] = val >> 10; - break; - - case RELOC_LO10: - buf[2] |= (val >> 8) & 0x03; - buf[3] = val; - break; - - case RELOC_BASE13: - buf[2] |= (val >> 8) & 0x1f; - buf[3] = val; - break; - - case RELOC_WDISP22: - val = (val >> 2) + 1; - /* FALLTHROUGH */ - case RELOC_BASE22: - buf[1] |= (val >> 16) & 0x3f; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_JUMPTARG: /* 00XX00XX pattern in a word */ - if (!fixP->fx_done) - { - /* The linker tries to support both AMD and old GNU style - R_IREL relocs. That means that if the addend is exactly - the negative of the address within the section, the - linker will not handle it correctly. */ - if (fixP->fx_pcrel - && val != 0 - && val == - (fixP->fx_frag->fr_address + fixP->fx_where)) - as_bad_where - (fixP->fx_file, fixP->fx_line, - "the linker will not handle this relocation correctly"); - } - else if (fixP->fx_pcrel) - { - long v = val >> 17; - - if (v != 0 && v != -1) - as_bad_where (fixP->fx_file, fixP->fx_line, - "call/jmp target out of range"); - } - else - /* This case was supposed to be handled in machine_ip. */ - abort (); - buf[1] = val >> 10; /* Holds bits 0003FFFC of address */ - buf[3] = val >> 2; - break; - - case RELOC_CONST: /* 00XX00XX pattern in a word */ - buf[1] = val >> 8; /* Holds bits 0000XXXX */ - buf[3] = val; - break; - - case RELOC_CONSTH: /* 00XX00XX pattern in a word */ - buf[1] = val >> 24; /* Holds bits XXXX0000 */ - buf[3] = val >> 16; - break; - - case NO_RELOC: - default: - as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type); - break; - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -#ifdef OBJ_COFF -short -tc_coff_fix2rtype (fixP) - fixS *fixP; -{ - - switch (fixP->fx_r_type) - { - case RELOC_32: - return (R_WORD); - case RELOC_8: - return (R_BYTE); - case RELOC_CONST: - return (R_ILOHALF); - case RELOC_CONSTH: - return (R_IHIHALF); - case RELOC_JUMPTARG: - return (R_IREL); - default: - printf (_("need %o3\n"), fixP->fx_r_type); - abort (); - } /* switch on type */ - - return (0); -} - -#endif /* OBJ_COFF */ - -/* should never be called for 29k */ -void -md_convert_frag (headers, seg, fragP) - object_headers *headers ATTRIBUTE_UNUSED; - segT seg ATTRIBUTE_UNUSED; - register fragS *fragP ATTRIBUTE_UNUSED; -{ - as_fatal (_("a29k_convert_frag\n")); -} - -/* should never be called for a29k */ -int -md_estimate_size_before_relax (fragP, segtype) - register fragS *fragP ATTRIBUTE_UNUSED; - segT segtype ATTRIBUTE_UNUSED; -{ - as_fatal (_("a29k_estimate_size_before_relax\n")); - return 0; -} - -#if 0 -/* for debugging only */ -static void -print_insn (insn) - struct machine_it *insn; -{ - char *Reloc[] = - { - "RELOC_8", - "RELOC_16", - "RELOC_32", - "RELOC_DISP8", - "RELOC_DISP16", - "RELOC_DISP32", - "RELOC_WDISP30", - "RELOC_WDISP22", - "RELOC_HI22", - "RELOC_22", - "RELOC_13", - "RELOC_LO10", - "RELOC_SFA_BASE", - "RELOC_SFA_OFF13", - "RELOC_BASE10", - "RELOC_BASE13", - "RELOC_BASE22", - "RELOC_PC10", - "RELOC_PC22", - "RELOC_JMP_TBL", - "RELOC_SEGOFF16", - "RELOC_GLOB_DAT", - "RELOC_JMP_SLOT", - "RELOC_RELATIVE", - "NO_RELOC" - }; - - if (insn->error) - { - fprintf (stderr, "ERROR: %s\n"); - } - fprintf (stderr, "opcode=0x%08x\n", insn->opcode); - fprintf (stderr, "reloc = %s\n", Reloc[insn->reloc]); - fprintf (stderr, "exp = {\n"); - fprintf (stderr, "\t\tX_add_symbol = %s\n", - insn->exp.X_add_symbol ? - (S_GET_NAME (insn->exp.X_add_symbol) ? - S_GET_NAME (insn->exp.X_add_symbol) : "???") : "0"); - fprintf (stderr, "\t\tX_op_symbol = %s\n", - insn->exp.X_op_symbol ? - (S_GET_NAME (insn->exp.X_op_symbol) ? - S_GET_NAME (insn->exp.X_op_symbol) : "???") : "0"); - fprintf (stderr, "\t\tX_add_number = %d\n", - insn->exp.X_add_number); - fprintf (stderr, "}\n"); -} - -#endif - -/* Translate internal representation of relocation info to target format. - - On sparc/29k: first 4 bytes are normal unsigned long address, next three - bytes are index, most sig. byte first. Byte 7 is broken up with - bit 7 as external, bits 6 & 5 unused, and the lower - five bits as relocation type. Next 4 bytes are long addend. */ -/* Thanx and a tip of the hat to Michael Bloom, mb@ttidca.tti.com */ - -#ifdef OBJ_AOUT - -void -tc_aout_fix_to_chars (where, fixP, segment_address_in_file) - char *where; - fixS *fixP; - relax_addressT segment_address_in_file; -{ - long r_symbolnum; - - know (fixP->fx_r_type < NO_RELOC); - know (fixP->fx_addsy != NULL); - - md_number_to_chars (where, - fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file, - 4); - - r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) - ? S_GET_TYPE (fixP->fx_addsy) - : fixP->fx_addsy->sy_number); - - where[4] = (r_symbolnum >> 16) & 0x0ff; - where[5] = (r_symbolnum >> 8) & 0x0ff; - where[6] = r_symbolnum & 0x0ff; - where[7] = (((!S_IS_DEFINED (fixP->fx_addsy)) << 7) & 0x80) | (0 & 0x60) | (fixP->fx_r_type & 0x1F); - /* Also easy */ - md_number_to_chars (&where[8], fixP->fx_addnumber, 4); -} - -#endif /* OBJ_AOUT */ - -const char *md_shortopts = ""; -struct option md_longopts[] = { - {NULL, no_argument, NULL, 0} -}; -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (c, arg) - int c ATTRIBUTE_UNUSED; - char *arg ATTRIBUTE_UNUSED; -{ - return 0; -} - -void -md_show_usage (stream) - FILE *stream ATTRIBUTE_UNUSED; -{ -} - -/* This is called when a line is unrecognized. This is used to handle - definitions of a29k style local labels. */ - -int -a29k_unrecognized_line (c) - int c; -{ - int lab; - char *s; - - if (c != '$' - || ! ISDIGIT (input_line_pointer[0])) - return 0; - - s = input_line_pointer; - - lab = 0; - while (ISDIGIT (*s)) - { - lab = lab * 10 + *s - '0'; - ++s; - } - - if (*s != ':') - { - /* Not a label definition. */ - return 0; - } - - if (dollar_label_defined (lab)) - { - as_bad (_("label \"$%d\" redefined"), lab); - return 0; - } - - define_dollar_label (lab); - colon (dollar_label_name (lab, 0)); - input_line_pointer = s + 1; - - return 1; -} - -/* Default the values of symbols known that should be "predefined". We - don't bother to predefine them unless you actually use one, since there - are a lot of them. */ - -symbolS * -md_undefined_symbol (name) - char *name; -{ - long regnum; - char testbuf[5 + /*SLOP*/ 5]; - - if (name[0] == 'g' || name[0] == 'G' - || name[0] == 'l' || name[0] == 'L' - || name[0] == 's' || name[0] == 'S') - { - /* Perhaps a global or local register name */ - if (name[1] == 'r' || name[1] == 'R') - { - long maxreg; - - /* Parse the number, make sure it has no extra zeroes or - trailing chars. */ - regnum = atol (&name[2]); - - if (name[0] == 's' || name[0] == 'S') - maxreg = 255; - else - maxreg = 127; - if (regnum > maxreg) - return NULL; - - sprintf (testbuf, "%ld", regnum); - if (strcmp (testbuf, &name[2]) != 0) - return NULL; /* gr007 or lr7foo or whatever */ - - /* We have a wiener! Define and return a new symbol for it. */ - if (name[0] == 'l' || name[0] == 'L') - regnum += 128; - else if (name[0] == 's' || name[0] == 'S') - regnum += SREG; - return (symbol_new (name, SEG_REGISTER, (valueT) regnum, - &zero_address_frag)); - } - } - - return NULL; -} - -/* Parse an operand that is machine-specific. */ - -void -md_operand (expressionP) - expressionS *expressionP; -{ - - if (input_line_pointer[0] == '%' && input_line_pointer[1] == '%') - { - /* We have a numeric register expression. No biggy. */ - input_line_pointer += 2; /* Skip %% */ - (void) expression (expressionP); - if (expressionP->X_op != O_constant - || expressionP->X_add_number > 255) - as_bad (_("Invalid expression after %%%%\n")); - expressionP->X_op = O_register; - } - else if (input_line_pointer[0] == '&') - { - /* We are taking the 'address' of a register...this one is not - in the manual, but it *is* in traps/fpsymbol.h! What they - seem to want is the register number, as an absolute number. */ - input_line_pointer++; /* Skip & */ - (void) expression (expressionP); - if (expressionP->X_op != O_register) - as_bad (_("Invalid register in & expression")); - else - expressionP->X_op = O_constant; - } - else if (input_line_pointer[0] == '$' - && ISDIGIT (input_line_pointer[1])) - { - long lab; - char *name; - symbolS *sym; - - /* This is a local label. */ - ++input_line_pointer; - lab = (long) get_absolute_expression (); - if (dollar_label_defined (lab)) - { - name = dollar_label_name (lab, 0); - sym = symbol_find (name); - } - else - { - name = dollar_label_name (lab, 1); - sym = symbol_find_or_make (name); - } - - expressionP->X_op = O_symbol; - expressionP->X_add_symbol = sym; - expressionP->X_add_number = 0; - } - else if (input_line_pointer[0] == '$') - { - char *s; - char type; - int fieldnum, fieldlimit; - LITTLENUM_TYPE floatbuf[8]; - - /* $float(), $doubleN(), or $extendN() convert floating values - to integers. */ - - s = input_line_pointer; - - ++s; - - fieldnum = 0; - if (strncmp (s, "double", sizeof "double" - 1) == 0) - { - s += sizeof "double" - 1; - type = 'd'; - fieldlimit = 2; - } - else if (strncmp (s, "float", sizeof "float" - 1) == 0) - { - s += sizeof "float" - 1; - type = 'f'; - fieldlimit = 1; - } - else if (strncmp (s, "extend", sizeof "extend" - 1) == 0) - { - s += sizeof "extend" - 1; - type = 'x'; - fieldlimit = 4; - } - else - { - return; - } - - if (ISDIGIT (*s)) - { - fieldnum = *s - '0'; - ++s; - } - if (fieldnum >= fieldlimit) - return; - - SKIP_WHITESPACE (); - if (*s != '(') - return; - ++s; - SKIP_WHITESPACE (); - - s = atof_ieee (s, type, floatbuf); - if (s == NULL) - return; - s = s; - - SKIP_WHITESPACE (); - if (*s != ')') - return; - ++s; - SKIP_WHITESPACE (); - - input_line_pointer = s; - expressionP->X_op = O_constant; - expressionP->X_unsigned = 1; - expressionP->X_add_number = ((floatbuf[fieldnum * 2] - << LITTLENUM_NUMBER_OF_BITS) - + floatbuf[fieldnum * 2 + 1]); - } -} - -/* Round up a section size to the appropriate boundary. */ -valueT -md_section_align (segment, size) - segT segment ATTRIBUTE_UNUSED; - valueT size; -{ - return size; /* Byte alignment is fine */ -} - -/* Exactly what point is a PC-relative offset relative TO? - On the 29000, they're relative to the address of the instruction, - which we have set up as the address of the fixup too. */ -long -md_pcrel_from (fixP) - fixS *fixP; -{ - return fixP->fx_where + fixP->fx_frag->fr_address; -} diff --git a/gas/config/tc-a29k.h b/gas/config/tc-a29k.h deleted file mode 100644 index 7f3f1b242..000000000 --- a/gas/config/tc-a29k.h +++ /dev/null @@ -1,55 +0,0 @@ -/* tc-a29k.h -- Assemble for the AMD 29000. - Copyright 1989, 1990, 1991, 1992, 1993, 1995, 1998 - Free Software Foundation, Inc. - -This file is part of GAS, the GNU Assembler. - -GAS is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GAS is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GAS; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#define TC_A29K - -#define TARGET_BYTES_BIG_ENDIAN 1 - -#define WORKING_DOT_WORD - -#define LEX_DOLLAR 1 - -#define tc_unrecognized_line(c) a29k_unrecognized_line (c) -extern int a29k_unrecognized_line PARAMS ((int)); - -#define tc_headers_hook(a) ; /* not used */ -#define tc_headers_hook(a) ; /* not used */ -#define tc_crawl_symbol_chain(a) ; /* not used */ -#define tc_coff_symbol_emit_hook(a) ; /* not used */ - -#define AOUT_MACHTYPE 101 -#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype(fix_ptr) -#define BFD_ARCH bfd_arch_a29k -#define COFF_MAGIC SIPFBOMAGIC -/* Should the reloc be output ? - on the 29k, this is true only if there is a symbol attached. - on the h8, this is always true, since no fixup is done -*/ -#define TC_COUNT_RELOC(x) (x->fx_addsy) -#define TC_CONS_RELOC RELOC_32 - -#define COFF_FLAGS F_AR32W -#define reloc_type int -#define NEED_FX_R_TYPE - -#define ZERO_BASED_SEGMENTS - -/* end of tc-a29k.h */ diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c deleted file mode 100644 index 93600473f..000000000 --- a/gas/config/tc-alpha.c +++ /dev/null @@ -1,5960 +0,0 @@ -/* tc-alpha.c - Processor-specific code for the DEC Alpha AXP CPU. - Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003 Free Software Foundation, Inc. - Contributed by Carnegie Mellon University, 1993. - Written by Alessandro Forin, based on earlier gas-1.38 target CPU files. - Modified by Ken Raeburn for gas-2.x and ECOFF support. - Modified by Richard Henderson for ELF support. - Modified by Klaus K"ampf for EVAX (OpenVMS/Alpha) support. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* - * Mach Operating System - * Copyright (c) 1993 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include "as.h" -#include "subsegs.h" -#include "struc-symbol.h" -#include "ecoff.h" - -#include "opcode/alpha.h" - -#ifdef OBJ_ELF -#include "elf/alpha.h" -#include "dwarf2dbg.h" -#include "dw2gencfi.h" -#endif - -#include "safe-ctype.h" - -/* Local types. */ - -#define TOKENIZE_ERROR -1 -#define TOKENIZE_ERROR_REPORT -2 - -#define MAX_INSN_FIXUPS 2 -#define MAX_INSN_ARGS 5 - -struct alpha_fixup -{ - expressionS exp; - bfd_reloc_code_real_type reloc; -}; - -struct alpha_insn -{ - unsigned insn; - int nfixups; - struct alpha_fixup fixups[MAX_INSN_FIXUPS]; - long sequence; -}; - -enum alpha_macro_arg - { - MACRO_EOA = 1, - MACRO_IR, - MACRO_PIR, - MACRO_OPIR, - MACRO_CPIR, - MACRO_FPR, - MACRO_EXP, - }; - -struct alpha_macro -{ - const char *name; - void (*emit) PARAMS ((const expressionS *, int, const PTR)); - const PTR arg; - enum alpha_macro_arg argsets[16]; -}; - -/* Extra expression types. */ - -#define O_pregister O_md1 /* O_register, in parentheses */ -#define O_cpregister O_md2 /* + a leading comma */ - -/* The alpha_reloc_op table below depends on the ordering of these. */ -#define O_literal O_md3 /* !literal relocation */ -#define O_lituse_addr O_md4 /* !lituse_addr relocation */ -#define O_lituse_base O_md5 /* !lituse_base relocation */ -#define O_lituse_bytoff O_md6 /* !lituse_bytoff relocation */ -#define O_lituse_jsr O_md7 /* !lituse_jsr relocation */ -#define O_lituse_tlsgd O_md8 /* !lituse_tlsgd relocation */ -#define O_lituse_tlsldm O_md9 /* !lituse_tlsldm relocation */ -#define O_gpdisp O_md10 /* !gpdisp relocation */ -#define O_gprelhigh O_md11 /* !gprelhigh relocation */ -#define O_gprellow O_md12 /* !gprellow relocation */ -#define O_gprel O_md13 /* !gprel relocation */ -#define O_samegp O_md14 /* !samegp relocation */ -#define O_tlsgd O_md15 /* !tlsgd relocation */ -#define O_tlsldm O_md16 /* !tlsldm relocation */ -#define O_gotdtprel O_md17 /* !gotdtprel relocation */ -#define O_dtprelhi O_md18 /* !dtprelhi relocation */ -#define O_dtprello O_md19 /* !dtprello relocation */ -#define O_dtprel O_md20 /* !dtprel relocation */ -#define O_gottprel O_md21 /* !gottprel relocation */ -#define O_tprelhi O_md22 /* !tprelhi relocation */ -#define O_tprello O_md23 /* !tprello relocation */ -#define O_tprel O_md24 /* !tprel relocation */ - -#define DUMMY_RELOC_LITUSE_ADDR (BFD_RELOC_UNUSED + 1) -#define DUMMY_RELOC_LITUSE_BASE (BFD_RELOC_UNUSED + 2) -#define DUMMY_RELOC_LITUSE_BYTOFF (BFD_RELOC_UNUSED + 3) -#define DUMMY_RELOC_LITUSE_JSR (BFD_RELOC_UNUSED + 4) -#define DUMMY_RELOC_LITUSE_TLSGD (BFD_RELOC_UNUSED + 5) -#define DUMMY_RELOC_LITUSE_TLSLDM (BFD_RELOC_UNUSED + 6) - -#define USER_RELOC_P(R) ((R) >= O_literal && (R) <= O_tprel) - -/* Macros for extracting the type and number of encoded register tokens. */ - -#define is_ir_num(x) (((x) & 32) == 0) -#define is_fpr_num(x) (((x) & 32) != 0) -#define regno(x) ((x) & 31) - -/* Something odd inherited from the old assembler. */ - -#define note_gpreg(R) (alpha_gprmask |= (1 << (R))) -#define note_fpreg(R) (alpha_fprmask |= (1 << (R))) - -/* Predicates for 16- and 32-bit ranges */ -/* XXX: The non-shift version appears to trigger a compiler bug when - cross-assembling from x86 w/ gcc 2.7.2. */ - -#if 1 -#define range_signed_16(x) \ - (((offsetT) (x) >> 15) == 0 || ((offsetT) (x) >> 15) == -1) -#define range_signed_32(x) \ - (((offsetT) (x) >> 31) == 0 || ((offsetT) (x) >> 31) == -1) -#else -#define range_signed_16(x) ((offsetT) (x) >= -(offsetT) 0x8000 && \ - (offsetT) (x) <= (offsetT) 0x7FFF) -#define range_signed_32(x) ((offsetT) (x) >= -(offsetT) 0x80000000 && \ - (offsetT) (x) <= (offsetT) 0x7FFFFFFF) -#endif - -/* Macros for sign extending from 16- and 32-bits. */ -/* XXX: The cast macros will work on all the systems that I care about, - but really a predicate should be found to use the non-cast forms. */ - -#if 1 -#define sign_extend_16(x) ((short) (x)) -#define sign_extend_32(x) ((int) (x)) -#else -#define sign_extend_16(x) ((offsetT) (((x) & 0xFFFF) ^ 0x8000) - 0x8000) -#define sign_extend_32(x) ((offsetT) (((x) & 0xFFFFFFFF) \ - ^ 0x80000000) - 0x80000000) -#endif - -/* Macros to build tokens. */ - -#define set_tok_reg(t, r) (memset (&(t), 0, sizeof (t)), \ - (t).X_op = O_register, \ - (t).X_add_number = (r)) -#define set_tok_preg(t, r) (memset (&(t), 0, sizeof (t)), \ - (t).X_op = O_pregister, \ - (t).X_add_number = (r)) -#define set_tok_cpreg(t, r) (memset (&(t), 0, sizeof (t)), \ - (t).X_op = O_cpregister, \ - (t).X_add_number = (r)) -#define set_tok_freg(t, r) (memset (&(t), 0, sizeof (t)), \ - (t).X_op = O_register, \ - (t).X_add_number = (r) + 32) -#define set_tok_sym(t, s, a) (memset (&(t), 0, sizeof (t)), \ - (t).X_op = O_symbol, \ - (t).X_add_symbol = (s), \ - (t).X_add_number = (a)) -#define set_tok_const(t, n) (memset (&(t), 0, sizeof (t)), \ - (t).X_op = O_constant, \ - (t).X_add_number = (n)) - -/* Prototypes for all local functions. */ - -static struct alpha_reloc_tag *get_alpha_reloc_tag PARAMS ((long)); -static void alpha_adjust_relocs PARAMS ((bfd *, asection *, PTR)); - -static int tokenize_arguments PARAMS ((char *, expressionS *, int)); -static const struct alpha_opcode *find_opcode_match - PARAMS ((const struct alpha_opcode *, const expressionS *, int *, int *)); -static const struct alpha_macro *find_macro_match - PARAMS ((const struct alpha_macro *, const expressionS *, int *)); -static unsigned insert_operand - PARAMS ((unsigned, const struct alpha_operand *, offsetT, char *, unsigned)); -static void assemble_insn - PARAMS ((const struct alpha_opcode *, const expressionS *, int, - struct alpha_insn *, bfd_reloc_code_real_type)); -static void emit_insn PARAMS ((struct alpha_insn *)); -static void assemble_tokens_to_insn - PARAMS ((const char *, const expressionS *, int, struct alpha_insn *)); -static void assemble_tokens - PARAMS ((const char *, const expressionS *, int, int)); - -static long load_expression - PARAMS ((int, const expressionS *, int *, expressionS *)); - -static void emit_ldgp PARAMS ((const expressionS *, int, const PTR)); -static void emit_division PARAMS ((const expressionS *, int, const PTR)); -static void emit_lda PARAMS ((const expressionS *, int, const PTR)); -static void emit_ldah PARAMS ((const expressionS *, int, const PTR)); -static void emit_ir_load PARAMS ((const expressionS *, int, const PTR)); -static void emit_loadstore PARAMS ((const expressionS *, int, const PTR)); -static void emit_jsrjmp PARAMS ((const expressionS *, int, const PTR)); -static void emit_ldX PARAMS ((const expressionS *, int, const PTR)); -static void emit_ldXu PARAMS ((const expressionS *, int, const PTR)); -static void emit_uldX PARAMS ((const expressionS *, int, const PTR)); -static void emit_uldXu PARAMS ((const expressionS *, int, const PTR)); -static void emit_ldil PARAMS ((const expressionS *, int, const PTR)); -static void emit_stX PARAMS ((const expressionS *, int, const PTR)); -static void emit_ustX PARAMS ((const expressionS *, int, const PTR)); -static void emit_sextX PARAMS ((const expressionS *, int, const PTR)); -static void emit_retjcr PARAMS ((const expressionS *, int, const PTR)); - -static void s_alpha_text PARAMS ((int)); -static void s_alpha_data PARAMS ((int)); -#ifndef OBJ_ELF -static void s_alpha_comm PARAMS ((int)); -static void s_alpha_rdata PARAMS ((int)); -#endif -#ifdef OBJ_ECOFF -static void s_alpha_sdata PARAMS ((int)); -#endif -#ifdef OBJ_ELF -static void s_alpha_section PARAMS ((int)); -static void s_alpha_ent PARAMS ((int)); -static void s_alpha_end PARAMS ((int)); -static void s_alpha_mask PARAMS ((int)); -static void s_alpha_frame PARAMS ((int)); -static void s_alpha_prologue PARAMS ((int)); -static void s_alpha_file PARAMS ((int)); -static void s_alpha_loc PARAMS ((int)); -static void s_alpha_stab PARAMS ((int)); -static void s_alpha_coff_wrapper PARAMS ((int)); -static void s_alpha_usepv PARAMS ((int)); -#endif -#ifdef OBJ_EVAX -static void s_alpha_section PARAMS ((int)); -#endif -static void s_alpha_gprel32 PARAMS ((int)); -static void s_alpha_float_cons PARAMS ((int)); -static void s_alpha_proc PARAMS ((int)); -static void s_alpha_set PARAMS ((int)); -static void s_alpha_base PARAMS ((int)); -static void s_alpha_align PARAMS ((int)); -static void s_alpha_stringer PARAMS ((int)); -static void s_alpha_space PARAMS ((int)); -static void s_alpha_ucons PARAMS ((int)); -static void s_alpha_arch PARAMS ((int)); - -static void create_literal_section PARAMS ((const char *, segT *, symbolS **)); -#ifndef OBJ_ELF -static void select_gp_value PARAMS ((void)); -#endif -static void alpha_align PARAMS ((int, char *, symbolS *, int)); - -/* Generic assembler global variables which must be defined by all - targets. */ - -/* Characters which always start a comment. */ -const char comment_chars[] = "#"; - -/* Characters which start a comment at the beginning of a line. */ -const char line_comment_chars[] = "#"; - -/* Characters which may be used to separate multiple commands on a - single line. */ -const char line_separator_chars[] = ";"; - -/* Characters which are used to indicate an exponent in a floating - point number. */ -const char EXP_CHARS[] = "eE"; - -/* Characters which mean that a number is a floating point constant, - as in 0d1.0. */ -#if 0 -const char FLT_CHARS[] = "dD"; -#else -/* XXX: Do all of these really get used on the alpha?? */ -char FLT_CHARS[] = "rRsSfFdDxXpP"; -#endif - -#ifdef OBJ_EVAX -const char *md_shortopts = "Fm:g+1h:HG:"; -#else -const char *md_shortopts = "Fm:gG:"; -#endif - -struct option md_longopts[] = - { -#define OPTION_32ADDR (OPTION_MD_BASE) - { "32addr", no_argument, NULL, OPTION_32ADDR }, -#define OPTION_RELAX (OPTION_32ADDR + 1) - { "relax", no_argument, NULL, OPTION_RELAX }, -#ifdef OBJ_ELF -#define OPTION_MDEBUG (OPTION_RELAX + 1) -#define OPTION_NO_MDEBUG (OPTION_MDEBUG + 1) - { "mdebug", no_argument, NULL, OPTION_MDEBUG }, - { "no-mdebug", no_argument, NULL, OPTION_NO_MDEBUG }, -#endif - { NULL, no_argument, NULL, 0 } - }; - -size_t md_longopts_size = sizeof (md_longopts); - -#ifdef OBJ_EVAX -#define AXP_REG_R0 0 -#define AXP_REG_R16 16 -#define AXP_REG_R17 17 -#undef AXP_REG_T9 -#define AXP_REG_T9 22 -#undef AXP_REG_T10 -#define AXP_REG_T10 23 -#undef AXP_REG_T11 -#define AXP_REG_T11 24 -#undef AXP_REG_T12 -#define AXP_REG_T12 25 -#define AXP_REG_AI 25 -#undef AXP_REG_FP -#define AXP_REG_FP 29 - -#undef AXP_REG_GP -#define AXP_REG_GP AXP_REG_PV -#endif /* OBJ_EVAX */ - -/* The cpu for which we are generating code. */ -static unsigned alpha_target = AXP_OPCODE_BASE; -static const char *alpha_target_name = ""; - -/* The hash table of instruction opcodes. */ -static struct hash_control *alpha_opcode_hash; - -/* The hash table of macro opcodes. */ -static struct hash_control *alpha_macro_hash; - -#ifdef OBJ_ECOFF -/* The $gp relocation symbol. */ -static symbolS *alpha_gp_symbol; - -/* XXX: what is this, and why is it exported? */ -valueT alpha_gp_value; -#endif - -/* The current $gp register. */ -static int alpha_gp_register = AXP_REG_GP; - -/* A table of the register symbols. */ -static symbolS *alpha_register_table[64]; - -/* Constant sections, or sections of constants. */ -#ifdef OBJ_ECOFF -static segT alpha_lita_section; -#endif -#ifdef OBJ_EVAX -static segT alpha_link_section; -static segT alpha_ctors_section; -static segT alpha_dtors_section; -#endif -static segT alpha_lit8_section; - -/* Symbols referring to said sections. */ -#ifdef OBJ_ECOFF -static symbolS *alpha_lita_symbol; -#endif -#ifdef OBJ_EVAX -static symbolS *alpha_link_symbol; -static symbolS *alpha_ctors_symbol; -static symbolS *alpha_dtors_symbol; -#endif -static symbolS *alpha_lit8_symbol; - -/* Literal for .litX+0x8000 within .lita. */ -#ifdef OBJ_ECOFF -static offsetT alpha_lit8_literal; -#endif - -/* Is the assembler not allowed to use $at? */ -static int alpha_noat_on = 0; - -/* Are macros enabled? */ -static int alpha_macros_on = 1; - -/* Are floats disabled? */ -static int alpha_nofloats_on = 0; - -/* Are addresses 32 bit? */ -static int alpha_addr32_on = 0; - -/* Symbol labelling the current insn. When the Alpha gas sees - foo: - .quad 0 - and the section happens to not be on an eight byte boundary, it - will align both the symbol and the .quad to an eight byte boundary. */ -static symbolS *alpha_insn_label; - -/* Whether we should automatically align data generation pseudo-ops. - .align 0 will turn this off. */ -static int alpha_auto_align_on = 1; - -/* The known current alignment of the current section. */ -static int alpha_current_align; - -/* These are exported to ECOFF code. */ -unsigned long alpha_gprmask, alpha_fprmask; - -/* Whether the debugging option was seen. */ -static int alpha_debug; - -#ifdef OBJ_ELF -/* Whether we are emitting an mdebug section. */ -int alpha_flag_mdebug = -1; -#endif - -/* Don't fully resolve relocations, allowing code movement in the linker. */ -static int alpha_flag_relax; - -/* What value to give to bfd_set_gp_size. */ -static int g_switch_value = 8; - -#ifdef OBJ_EVAX -/* Collect information about current procedure here. */ -static struct { - symbolS *symbol; /* proc pdesc symbol */ - int pdsckind; - int framereg; /* register for frame pointer */ - int framesize; /* size of frame */ - int rsa_offset; - int ra_save; - int fp_save; - long imask; - long fmask; - int type; - int prologue; -} alpha_evax_proc; - -static int alpha_flag_hash_long_names = 0; /* -+ */ -static int alpha_flag_show_after_trunc = 0; /* -H */ - -/* If the -+ switch is given, then a hash is appended to any name that is - longer than 64 characters, else longer symbol names are truncated. */ - -#endif - -#ifdef RELOC_OP_P -/* A table to map the spelling of a relocation operand into an appropriate - bfd_reloc_code_real_type type. The table is assumed to be ordered such - that op-O_literal indexes into it. */ - -#define ALPHA_RELOC_TABLE(op) \ -(&alpha_reloc_op[ ((!USER_RELOC_P (op)) \ - ? (abort (), 0) \ - : (int) (op) - (int) O_literal) ]) - -#define DEF(NAME, RELOC, REQ, ALLOW) \ - { #NAME, sizeof(#NAME)-1, O_##NAME, RELOC, REQ, ALLOW} - -static const struct alpha_reloc_op_tag -{ - const char *name; /* string to lookup */ - size_t length; /* size of the string */ - operatorT op; /* which operator to use */ - bfd_reloc_code_real_type reloc; /* relocation before frob */ - unsigned int require_seq : 1; /* require a sequence number */ - unsigned int allow_seq : 1; /* allow a sequence number */ -} -alpha_reloc_op[] = -{ - DEF(literal, BFD_RELOC_ALPHA_ELF_LITERAL, 0, 1), - DEF(lituse_addr, DUMMY_RELOC_LITUSE_ADDR, 1, 1), - DEF(lituse_base, DUMMY_RELOC_LITUSE_BASE, 1, 1), - DEF(lituse_bytoff, DUMMY_RELOC_LITUSE_BYTOFF, 1, 1), - DEF(lituse_jsr, DUMMY_RELOC_LITUSE_JSR, 1, 1), - DEF(lituse_tlsgd, DUMMY_RELOC_LITUSE_TLSGD, 1, 1), - DEF(lituse_tlsldm, DUMMY_RELOC_LITUSE_TLSLDM, 1, 1), - DEF(gpdisp, BFD_RELOC_ALPHA_GPDISP, 1, 1), - DEF(gprelhigh, BFD_RELOC_ALPHA_GPREL_HI16, 0, 0), - DEF(gprellow, BFD_RELOC_ALPHA_GPREL_LO16, 0, 0), - DEF(gprel, BFD_RELOC_GPREL16, 0, 0), - DEF(samegp, BFD_RELOC_ALPHA_BRSGP, 0, 0), - DEF(tlsgd, BFD_RELOC_ALPHA_TLSGD, 0, 1), - DEF(tlsldm, BFD_RELOC_ALPHA_TLSLDM, 0, 1), - DEF(gotdtprel, BFD_RELOC_ALPHA_GOTDTPREL16, 0, 0), - DEF(dtprelhi, BFD_RELOC_ALPHA_DTPREL_HI16, 0, 0), - DEF(dtprello, BFD_RELOC_ALPHA_DTPREL_LO16, 0, 0), - DEF(dtprel, BFD_RELOC_ALPHA_DTPREL16, 0, 0), - DEF(gottprel, BFD_RELOC_ALPHA_GOTTPREL16, 0, 0), - DEF(tprelhi, BFD_RELOC_ALPHA_TPREL_HI16, 0, 0), - DEF(tprello, BFD_RELOC_ALPHA_TPREL_LO16, 0, 0), - DEF(tprel, BFD_RELOC_ALPHA_TPREL16, 0, 0), -}; - -#undef DEF - -static const int alpha_num_reloc_op - = sizeof (alpha_reloc_op) / sizeof (*alpha_reloc_op); -#endif /* RELOC_OP_P */ - -/* Maximum # digits needed to hold the largest sequence # */ -#define ALPHA_RELOC_DIGITS 25 - -/* Structure to hold explicit sequence information. */ -struct alpha_reloc_tag -{ - fixS *master; /* the literal reloc */ - fixS *slaves; /* head of linked list of lituses */ - segT segment; /* segment relocs are in or undefined_section*/ - long sequence; /* sequence # */ - unsigned n_master; /* # of literals */ - unsigned n_slaves; /* # of lituses */ - unsigned saw_tlsgd : 1; /* true if ... */ - unsigned saw_tlsldm : 1; - unsigned saw_lu_tlsgd : 1; - unsigned saw_lu_tlsldm : 1; - unsigned multi_section_p : 1; /* true if more than one section was used */ - char string[1]; /* printable form of sequence to hash with */ -}; - -/* Hash table to link up literals with the appropriate lituse */ -static struct hash_control *alpha_literal_hash; - -/* Sequence numbers for internal use by macros. */ -static long next_sequence_num = -1; - -/* A table of CPU names and opcode sets. */ - -static const struct cpu_type -{ - const char *name; - unsigned flags; -} -cpu_types[] = -{ - /* Ad hoc convention: cpu number gets palcode, process code doesn't. - This supports usage under DU 4.0b that does ".arch ev4", and - usage in MILO that does -m21064. Probably something more - specific like -m21064-pal should be used, but oh well. */ - - { "21064", AXP_OPCODE_BASE|AXP_OPCODE_EV4 }, - { "21064a", AXP_OPCODE_BASE|AXP_OPCODE_EV4 }, - { "21066", AXP_OPCODE_BASE|AXP_OPCODE_EV4 }, - { "21068", AXP_OPCODE_BASE|AXP_OPCODE_EV4 }, - { "21164", AXP_OPCODE_BASE|AXP_OPCODE_EV5 }, - { "21164a", AXP_OPCODE_BASE|AXP_OPCODE_EV5|AXP_OPCODE_BWX }, - { "21164pc", (AXP_OPCODE_BASE|AXP_OPCODE_EV5|AXP_OPCODE_BWX - |AXP_OPCODE_MAX) }, - { "21264", (AXP_OPCODE_BASE|AXP_OPCODE_EV6|AXP_OPCODE_BWX - |AXP_OPCODE_MAX|AXP_OPCODE_CIX) }, - { "21264a", (AXP_OPCODE_BASE|AXP_OPCODE_EV6|AXP_OPCODE_BWX - |AXP_OPCODE_MAX|AXP_OPCODE_CIX) }, - { "21264b", (AXP_OPCODE_BASE|AXP_OPCODE_EV6|AXP_OPCODE_BWX - |AXP_OPCODE_MAX|AXP_OPCODE_CIX) }, - - { "ev4", AXP_OPCODE_BASE }, - { "ev45", AXP_OPCODE_BASE }, - { "lca45", AXP_OPCODE_BASE }, - { "ev5", AXP_OPCODE_BASE }, - { "ev56", AXP_OPCODE_BASE|AXP_OPCODE_BWX }, - { "pca56", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_MAX }, - { "ev6", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_MAX|AXP_OPCODE_CIX }, - { "ev67", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_MAX|AXP_OPCODE_CIX }, - { "ev68", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_MAX|AXP_OPCODE_CIX }, - - { "all", AXP_OPCODE_BASE }, - { 0, 0 } -}; - -/* The macro table */ - -static const struct alpha_macro alpha_macros[] = -{ -/* Load/Store macros */ - { "lda", emit_lda, NULL, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldah", emit_ldah, NULL, - { MACRO_IR, MACRO_EXP, MACRO_EOA } }, - - { "ldl", emit_ir_load, "ldl", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldl_l", emit_ir_load, "ldl_l", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldq", emit_ir_load, "ldq", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldq_l", emit_ir_load, "ldq_l", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldq_u", emit_ir_load, "ldq_u", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldf", emit_loadstore, "ldf", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldg", emit_loadstore, "ldg", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "lds", emit_loadstore, "lds", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldt", emit_loadstore, "ldt", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - - { "ldb", emit_ldX, (PTR) 0, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldbu", emit_ldXu, (PTR) 0, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldw", emit_ldX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ldwu", emit_ldXu, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - - { "uldw", emit_uldX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "uldwu", emit_uldXu, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "uldl", emit_uldX, (PTR) 2, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "uldlu", emit_uldXu, (PTR) 2, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "uldq", emit_uldXu, (PTR) 3, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - - { "ldgp", emit_ldgp, NULL, - { MACRO_IR, MACRO_EXP, MACRO_PIR, MACRO_EOA } }, - - { "ldi", emit_lda, NULL, - { MACRO_IR, MACRO_EXP, MACRO_EOA } }, - { "ldil", emit_ldil, NULL, - { MACRO_IR, MACRO_EXP, MACRO_EOA } }, - { "ldiq", emit_lda, NULL, - { MACRO_IR, MACRO_EXP, MACRO_EOA } }, -#if 0 - { "ldif" emit_ldiq, NULL, - { MACRO_FPR, MACRO_EXP, MACRO_EOA } }, - { "ldid" emit_ldiq, NULL, - { MACRO_FPR, MACRO_EXP, MACRO_EOA } }, - { "ldig" emit_ldiq, NULL, - { MACRO_FPR, MACRO_EXP, MACRO_EOA } }, - { "ldis" emit_ldiq, NULL, - { MACRO_FPR, MACRO_EXP, MACRO_EOA } }, - { "ldit" emit_ldiq, NULL, - { MACRO_FPR, MACRO_EXP, MACRO_EOA } }, -#endif - - { "stl", emit_loadstore, "stl", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stl_c", emit_loadstore, "stl_c", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stq", emit_loadstore, "stq", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stq_c", emit_loadstore, "stq_c", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stq_u", emit_loadstore, "stq_u", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stf", emit_loadstore, "stf", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stg", emit_loadstore, "stg", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "sts", emit_loadstore, "sts", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stt", emit_loadstore, "stt", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - - { "stb", emit_stX, (PTR) 0, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "stw", emit_stX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ustw", emit_ustX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ustl", emit_ustX, (PTR) 2, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - { "ustq", emit_ustX, (PTR) 3, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, - -/* Arithmetic macros */ -#if 0 - { "absl" emit_absl, 1, { IR } }, - { "absl" emit_absl, 2, { IR, IR } }, - { "absl" emit_absl, 2, { EXP, IR } }, - { "absq" emit_absq, 1, { IR } }, - { "absq" emit_absq, 2, { IR, IR } }, - { "absq" emit_absq, 2, { EXP, IR } }, -#endif - - { "sextb", emit_sextX, (PTR) 0, - { MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EOA, - /* MACRO_EXP, MACRO_IR, MACRO_EOA */ } }, - { "sextw", emit_sextX, (PTR) 1, - { MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EOA, - /* MACRO_EXP, MACRO_IR, MACRO_EOA */ } }, - - { "divl", emit_division, "__divl", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "divlu", emit_division, "__divlu", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "divq", emit_division, "__divq", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "divqu", emit_division, "__divqu", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "reml", emit_division, "__reml", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "remlu", emit_division, "__remlu", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "remq", emit_division, "__remq", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - { "remqu", emit_division, "__remqu", - { MACRO_IR, MACRO_IR, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_IR, MACRO_EOA, - /* MACRO_IR, MACRO_EXP, MACRO_IR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, - - { "jsr", emit_jsrjmp, "jsr", - { MACRO_PIR, MACRO_EXP, MACRO_EOA, - MACRO_PIR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA, - MACRO_EXP, MACRO_EOA } }, - { "jmp", emit_jsrjmp, "jmp", - { MACRO_PIR, MACRO_EXP, MACRO_EOA, - MACRO_PIR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_EOA, - MACRO_EXP, MACRO_EOA } }, - { "ret", emit_retjcr, "ret", - { MACRO_IR, MACRO_EXP, MACRO_EOA, - MACRO_IR, MACRO_EOA, - MACRO_PIR, MACRO_EXP, MACRO_EOA, - MACRO_PIR, MACRO_EOA, - MACRO_EXP, MACRO_EOA, - MACRO_EOA } }, - { "jcr", emit_retjcr, "jcr", - { MACRO_IR, MACRO_EXP, MACRO_EOA, - MACRO_IR, MACRO_EOA, - MACRO_PIR, MACRO_EXP, MACRO_EOA, - MACRO_PIR, MACRO_EOA, - MACRO_EXP, MACRO_EOA, - MACRO_EOA } }, - { "jsr_coroutine", emit_retjcr, "jcr", - { MACRO_IR, MACRO_EXP, MACRO_EOA, - MACRO_IR, MACRO_EOA, - MACRO_PIR, MACRO_EXP, MACRO_EOA, - MACRO_PIR, MACRO_EOA, - MACRO_EXP, MACRO_EOA, - MACRO_EOA } }, -}; - -static const unsigned int alpha_num_macros - = sizeof (alpha_macros) / sizeof (*alpha_macros); - -/* Public interface functions */ - -/* This function is called once, at assembler startup time. It sets - up all the tables, etc. that the MD part of the assembler will - need, that can be determined before arguments are parsed. */ - -void -md_begin () -{ - unsigned int i; - - /* Verify that X_op field is wide enough. */ - { - expressionS e; - e.X_op = O_max; - assert (e.X_op == O_max); - } - - /* Create the opcode hash table. */ - alpha_opcode_hash = hash_new (); - for (i = 0; i < alpha_num_opcodes;) - { - const char *name, *retval, *slash; - - name = alpha_opcodes[i].name; - retval = hash_insert (alpha_opcode_hash, name, (PTR) &alpha_opcodes[i]); - if (retval) - as_fatal (_("internal error: can't hash opcode `%s': %s"), - name, retval); - - /* Some opcodes include modifiers of various sorts with a "/mod" - syntax, like the architecture manual suggests. However, for - use with gcc at least, we also need access to those same opcodes - without the "/". */ - - if ((slash = strchr (name, '/')) != NULL) - { - char *p = xmalloc (strlen (name)); - memcpy (p, name, slash - name); - strcpy (p + (slash - name), slash + 1); - - (void) hash_insert (alpha_opcode_hash, p, (PTR) &alpha_opcodes[i]); - /* Ignore failures -- the opcode table does duplicate some - variants in different forms, like "hw_stq" and "hw_st/q". */ - } - - while (++i < alpha_num_opcodes - && (alpha_opcodes[i].name == name - || !strcmp (alpha_opcodes[i].name, name))) - continue; - } - - /* Create the macro hash table. */ - alpha_macro_hash = hash_new (); - for (i = 0; i < alpha_num_macros;) - { - const char *name, *retval; - - name = alpha_macros[i].name; - retval = hash_insert (alpha_macro_hash, name, (PTR) &alpha_macros[i]); - if (retval) - as_fatal (_("internal error: can't hash macro `%s': %s"), - name, retval); - - while (++i < alpha_num_macros - && (alpha_macros[i].name == name - || !strcmp (alpha_macros[i].name, name))) - continue; - } - - /* Construct symbols for each of the registers. */ - for (i = 0; i < 32; ++i) - { - char name[4]; - - sprintf (name, "$%d", i); - alpha_register_table[i] = symbol_create (name, reg_section, i, - &zero_address_frag); - } - for (; i < 64; ++i) - { - char name[5]; - - sprintf (name, "$f%d", i - 32); - alpha_register_table[i] = symbol_create (name, reg_section, i, - &zero_address_frag); - } - - /* Create the special symbols and sections we'll be using. */ - - /* So .sbss will get used for tiny objects. */ - bfd_set_gp_size (stdoutput, g_switch_value); - -#ifdef OBJ_ECOFF - create_literal_section (".lita", &alpha_lita_section, &alpha_lita_symbol); - - /* For handling the GP, create a symbol that won't be output in the - symbol table. We'll edit it out of relocs later. */ - alpha_gp_symbol = symbol_create ("", alpha_lita_section, 0x8000, - &zero_address_frag); -#endif - -#ifdef OBJ_EVAX - create_literal_section (".link", &alpha_link_section, &alpha_link_symbol); -#endif - -#ifdef OBJ_ELF - if (ECOFF_DEBUGGING) - { - segT sec = subseg_new (".mdebug", (subsegT) 0); - bfd_set_section_flags (stdoutput, sec, SEC_HAS_CONTENTS | SEC_READONLY); - bfd_set_section_alignment (stdoutput, sec, 3); - } -#endif /* OBJ_ELF */ - - /* Create literal lookup hash table. */ - alpha_literal_hash = hash_new (); - - subseg_set (text_section, 0); -} - -/* The public interface to the instruction assembler. */ - -void -md_assemble (str) - char *str; -{ - char opname[32]; /* Current maximum is 13. */ - expressionS tok[MAX_INSN_ARGS]; - int ntok, trunclen; - size_t opnamelen; - - /* Split off the opcode. */ - opnamelen = strspn (str, "abcdefghijklmnopqrstuvwxyz_/46819"); - trunclen = (opnamelen < sizeof (opname) - 1 - ? opnamelen - : sizeof (opname) - 1); - memcpy (opname, str, trunclen); - opname[trunclen] = '\0'; - - /* Tokenize the rest of the line. */ - if ((ntok = tokenize_arguments (str + opnamelen, tok, MAX_INSN_ARGS)) < 0) - { - if (ntok != TOKENIZE_ERROR_REPORT) - as_bad (_("syntax error")); - - return; - } - - /* Finish it off. */ - assemble_tokens (opname, tok, ntok, alpha_macros_on); -} - -/* Round up a section's size to the appropriate boundary. */ - -valueT -md_section_align (seg, size) - segT seg; - valueT size; -{ - int align = bfd_get_section_alignment (stdoutput, seg); - valueT mask = ((valueT) 1 << align) - 1; - - return (size + mask) & ~mask; -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -/* Equal to MAX_PRECISION in atof-ieee.c. */ -#define MAX_LITTLENUMS 6 - -extern char *vax_md_atof PARAMS ((int, char *, int *)); - -char * -md_atof (type, litP, sizeP) - char type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - /* VAX floats */ - case 'G': - /* VAX md_atof doesn't like "G" for some reason. */ - type = 'g'; - case 'F': - case 'D': - return vax_md_atof (type, litP, sizeP); - - /* IEEE floats */ - case 'f': - prec = 2; - break; - - case 'd': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_ATOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * sizeof (LITTLENUM_TYPE); - - for (wordP = words + prec - 1; prec--;) - { - md_number_to_chars (litP, (long) (*wordP--), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return 0; -} - -/* Take care of the target-specific command-line options. */ - -int -md_parse_option (c, arg) - int c; - char *arg; -{ - switch (c) - { - case 'F': - alpha_nofloats_on = 1; - break; - - case OPTION_32ADDR: - alpha_addr32_on = 1; - break; - - case 'g': - alpha_debug = 1; - break; - - case 'G': - g_switch_value = atoi (arg); - break; - - case 'm': - { - const struct cpu_type *p; - for (p = cpu_types; p->name; ++p) - if (strcmp (arg, p->name) == 0) - { - alpha_target_name = p->name, alpha_target = p->flags; - goto found; - } - as_warn (_("Unknown CPU identifier `%s'"), arg); - found:; - } - break; - -#ifdef OBJ_EVAX - case '+': /* For g++. Hash any name > 63 chars long. */ - alpha_flag_hash_long_names = 1; - break; - - case 'H': /* Show new symbol after hash truncation */ - alpha_flag_show_after_trunc = 1; - break; - - case 'h': /* for gnu-c/vax compatibility. */ - break; -#endif - - case OPTION_RELAX: - alpha_flag_relax = 1; - break; - -#ifdef OBJ_ELF - case OPTION_MDEBUG: - alpha_flag_mdebug = 1; - break; - case OPTION_NO_MDEBUG: - alpha_flag_mdebug = 0; - break; -#endif - - default: - return 0; - } - - return 1; -} - -/* Print a description of the command-line options that we accept. */ - -void -md_show_usage (stream) - FILE *stream; -{ - fputs (_("\ -Alpha options:\n\ --32addr treat addresses as 32-bit values\n\ --F lack floating point instructions support\n\ --mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n\ - specify variant of Alpha architecture\n\ --m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n\ - these variants include PALcode opcodes\n"), - stream); -#ifdef OBJ_EVAX - fputs (_("\ -VMS options:\n\ --+ hash encode (don't truncate) names longer than 64 characters\n\ --H show new symbol after hash truncation\n"), - stream); -#endif -} - -/* Decide from what point a pc-relative relocation is relative to, - relative to the pc-relative fixup. Er, relatively speaking. */ - -long -md_pcrel_from (fixP) - fixS *fixP; -{ - valueT addr = fixP->fx_where + fixP->fx_frag->fr_address; - switch (fixP->fx_r_type) - { - case BFD_RELOC_23_PCREL_S2: - case BFD_RELOC_ALPHA_HINT: - case BFD_RELOC_ALPHA_BRSGP: - return addr + 4; - default: - return addr; - } -} - -/* Attempt to simplify or even eliminate a fixup. The return value is - ignored; perhaps it was once meaningful, but now it is historical. - To indicate that a fixup has been eliminated, set fixP->fx_done. - - For ELF, here it is that we transform the GPDISP_HI16 reloc we used - internally into the GPDISP reloc used externally. We had to do - this so that we'd have the GPDISP_LO16 reloc as a tag to compute - the distance to the "lda" instruction for setting the addend to - GPDISP. */ - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT * valP; - segT seg; -{ - char * const fixpos = fixP->fx_frag->fr_literal + fixP->fx_where; - valueT value = * valP; - unsigned image, size; - - switch (fixP->fx_r_type) - { - /* The GPDISP relocations are processed internally with a symbol - referring to the current function's section; we need to drop - in a value which, when added to the address of the start of - the function, gives the desired GP. */ - case BFD_RELOC_ALPHA_GPDISP_HI16: - { - fixS *next = fixP->fx_next; - - /* With user-specified !gpdisp relocations, we can be missing - the matching LO16 reloc. We will have already issued an - error message. */ - if (next) - fixP->fx_offset = (next->fx_frag->fr_address + next->fx_where - - fixP->fx_frag->fr_address - fixP->fx_where); - - value = (value - sign_extend_16 (value)) >> 16; - } -#ifdef OBJ_ELF - fixP->fx_r_type = BFD_RELOC_ALPHA_GPDISP; -#endif - goto do_reloc_gp; - - case BFD_RELOC_ALPHA_GPDISP_LO16: - value = sign_extend_16 (value); - fixP->fx_offset = 0; -#ifdef OBJ_ELF - fixP->fx_done = 1; -#endif - - do_reloc_gp: - fixP->fx_addsy = section_symbol (seg); - md_number_to_chars (fixpos, value, 2); - break; - - case BFD_RELOC_16: - if (fixP->fx_pcrel) - fixP->fx_r_type = BFD_RELOC_16_PCREL; - size = 2; - goto do_reloc_xx; - case BFD_RELOC_32: - if (fixP->fx_pcrel) - fixP->fx_r_type = BFD_RELOC_32_PCREL; - size = 4; - goto do_reloc_xx; - case BFD_RELOC_64: - if (fixP->fx_pcrel) - fixP->fx_r_type = BFD_RELOC_64_PCREL; - size = 8; - do_reloc_xx: - if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0) - { - md_number_to_chars (fixpos, value, size); - goto done; - } - return; - -#ifdef OBJ_ECOFF - case BFD_RELOC_GPREL32: - assert (fixP->fx_subsy == alpha_gp_symbol); - fixP->fx_subsy = 0; - /* FIXME: inherited this obliviousness of `value' -- why? */ - md_number_to_chars (fixpos, -alpha_gp_value, 4); - break; -#else - case BFD_RELOC_GPREL32: -#endif - case BFD_RELOC_GPREL16: - case BFD_RELOC_ALPHA_GPREL_HI16: - case BFD_RELOC_ALPHA_GPREL_LO16: - return; - - case BFD_RELOC_23_PCREL_S2: - if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0) - { - image = bfd_getl32 (fixpos); - image = (image & ~0x1FFFFF) | ((value >> 2) & 0x1FFFFF); - goto write_done; - } - return; - - case BFD_RELOC_ALPHA_HINT: - if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0) - { - image = bfd_getl32 (fixpos); - image = (image & ~0x3FFF) | ((value >> 2) & 0x3FFF); - goto write_done; - } - return; - -#ifdef OBJ_ELF - case BFD_RELOC_ALPHA_BRSGP: - return; - - case BFD_RELOC_ALPHA_TLSGD: - case BFD_RELOC_ALPHA_TLSLDM: - case BFD_RELOC_ALPHA_GOTDTPREL16: - case BFD_RELOC_ALPHA_DTPREL_HI16: - case BFD_RELOC_ALPHA_DTPREL_LO16: - case BFD_RELOC_ALPHA_DTPREL16: - case BFD_RELOC_ALPHA_GOTTPREL16: - case BFD_RELOC_ALPHA_TPREL_HI16: - case BFD_RELOC_ALPHA_TPREL_LO16: - case BFD_RELOC_ALPHA_TPREL16: - if (fixP->fx_addsy) - S_SET_THREAD_LOCAL (fixP->fx_addsy); - return; -#endif - -#ifdef OBJ_ECOFF - case BFD_RELOC_ALPHA_LITERAL: - md_number_to_chars (fixpos, value, 2); - return; -#endif - case BFD_RELOC_ALPHA_ELF_LITERAL: - case BFD_RELOC_ALPHA_LITUSE: - case BFD_RELOC_ALPHA_LINKAGE: - case BFD_RELOC_ALPHA_CODEADDR: - return; - - case BFD_RELOC_VTABLE_INHERIT: - case BFD_RELOC_VTABLE_ENTRY: - return; - - default: - { - const struct alpha_operand *operand; - - if ((int) fixP->fx_r_type >= 0) - as_fatal (_("unhandled relocation type %s"), - bfd_get_reloc_code_name (fixP->fx_r_type)); - - assert (-(int) fixP->fx_r_type < (int) alpha_num_operands); - operand = &alpha_operands[-(int) fixP->fx_r_type]; - - /* The rest of these fixups only exist internally during symbol - resolution and have no representation in the object file. - Therefore they must be completely resolved as constants. */ - - if (fixP->fx_addsy != 0 - && S_GET_SEGMENT (fixP->fx_addsy) != absolute_section) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("non-absolute expression in constant field")); - - image = bfd_getl32 (fixpos); - image = insert_operand (image, operand, (offsetT) value, - fixP->fx_file, fixP->fx_line); - } - goto write_done; - } - - if (fixP->fx_addsy != 0 || fixP->fx_pcrel != 0) - return; - else - { - as_warn_where (fixP->fx_file, fixP->fx_line, - _("type %d reloc done?\n"), (int) fixP->fx_r_type); - goto done; - } - -write_done: - md_number_to_chars (fixpos, image, 4); - -done: - fixP->fx_done = 1; -} - -/* Look for a register name in the given symbol. */ - -symbolS * -md_undefined_symbol (name) - char *name; -{ - if (*name == '$') - { - int is_float = 0, num; - - switch (*++name) - { - case 'f': - if (name[1] == 'p' && name[2] == '\0') - return alpha_register_table[AXP_REG_FP]; - is_float = 32; - /* FALLTHRU */ - - case 'r': - if (!ISDIGIT (*++name)) - break; - /* FALLTHRU */ - - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - if (name[1] == '\0') - num = name[0] - '0'; - else if (name[0] != '0' && ISDIGIT (name[1]) && name[2] == '\0') - { - num = (name[0] - '0') * 10 + name[1] - '0'; - if (num >= 32) - break; - } - else - break; - - if (!alpha_noat_on && (num + is_float) == AXP_REG_AT) - as_warn (_("Used $at without \".set noat\"")); - return alpha_register_table[num + is_float]; - - case 'a': - if (name[1] == 't' && name[2] == '\0') - { - if (!alpha_noat_on) - as_warn (_("Used $at without \".set noat\"")); - return alpha_register_table[AXP_REG_AT]; - } - break; - - case 'g': - if (name[1] == 'p' && name[2] == '\0') - return alpha_register_table[alpha_gp_register]; - break; - - case 's': - if (name[1] == 'p' && name[2] == '\0') - return alpha_register_table[AXP_REG_SP]; - break; - } - } - return NULL; -} - -#ifdef OBJ_ECOFF -/* @@@ Magic ECOFF bits. */ - -void -alpha_frob_ecoff_data () -{ - select_gp_value (); - /* $zero and $f31 are read-only */ - alpha_gprmask &= ~1; - alpha_fprmask &= ~1; -} -#endif - -/* Hook to remember a recently defined label so that the auto-align - code can adjust the symbol after we know what alignment will be - required. */ - -void -alpha_define_label (sym) - symbolS *sym; -{ - alpha_insn_label = sym; -} - -/* Return true if we must always emit a reloc for a type and false if - there is some hope of resolving it at assembly time. */ - -int -alpha_force_relocation (f) - fixS *f; -{ - if (alpha_flag_relax) - return 1; - - switch (f->fx_r_type) - { - case BFD_RELOC_ALPHA_GPDISP_HI16: - case BFD_RELOC_ALPHA_GPDISP_LO16: - case BFD_RELOC_ALPHA_GPDISP: - case BFD_RELOC_ALPHA_LITERAL: - case BFD_RELOC_ALPHA_ELF_LITERAL: - case BFD_RELOC_ALPHA_LITUSE: - case BFD_RELOC_GPREL16: - case BFD_RELOC_GPREL32: - case BFD_RELOC_ALPHA_GPREL_HI16: - case BFD_RELOC_ALPHA_GPREL_LO16: - case BFD_RELOC_ALPHA_LINKAGE: - case BFD_RELOC_ALPHA_CODEADDR: - case BFD_RELOC_ALPHA_BRSGP: - case BFD_RELOC_ALPHA_TLSGD: - case BFD_RELOC_ALPHA_TLSLDM: - case BFD_RELOC_ALPHA_GOTDTPREL16: - case BFD_RELOC_ALPHA_DTPREL_HI16: - case BFD_RELOC_ALPHA_DTPREL_LO16: - case BFD_RELOC_ALPHA_DTPREL16: - case BFD_RELOC_ALPHA_GOTTPREL16: - case BFD_RELOC_ALPHA_TPREL_HI16: - case BFD_RELOC_ALPHA_TPREL_LO16: - case BFD_RELOC_ALPHA_TPREL16: - return 1; - - default: - break; - } - - return generic_force_reloc (f); -} - -/* Return true if we can partially resolve a relocation now. */ - -int -alpha_fix_adjustable (f) - fixS *f; -{ - /* Are there any relocation types for which we must generate a reloc - but we can adjust the values contained within it? */ - switch (f->fx_r_type) - { - case BFD_RELOC_ALPHA_GPDISP_HI16: - case BFD_RELOC_ALPHA_GPDISP_LO16: - case BFD_RELOC_ALPHA_GPDISP: - return 0; - - case BFD_RELOC_ALPHA_LITERAL: - case BFD_RELOC_ALPHA_ELF_LITERAL: - case BFD_RELOC_ALPHA_LITUSE: - case BFD_RELOC_ALPHA_LINKAGE: - case BFD_RELOC_ALPHA_CODEADDR: - return 1; - - case BFD_RELOC_VTABLE_ENTRY: - case BFD_RELOC_VTABLE_INHERIT: - return 0; - - case BFD_RELOC_GPREL16: - case BFD_RELOC_GPREL32: - case BFD_RELOC_ALPHA_GPREL_HI16: - case BFD_RELOC_ALPHA_GPREL_LO16: - case BFD_RELOC_23_PCREL_S2: - case BFD_RELOC_32: - case BFD_RELOC_64: - case BFD_RELOC_ALPHA_HINT: - return 1; - - case BFD_RELOC_ALPHA_TLSGD: - case BFD_RELOC_ALPHA_TLSLDM: - case BFD_RELOC_ALPHA_GOTDTPREL16: - case BFD_RELOC_ALPHA_DTPREL_HI16: - case BFD_RELOC_ALPHA_DTPREL_LO16: - case BFD_RELOC_ALPHA_DTPREL16: - case BFD_RELOC_ALPHA_GOTTPREL16: - case BFD_RELOC_ALPHA_TPREL_HI16: - case BFD_RELOC_ALPHA_TPREL_LO16: - case BFD_RELOC_ALPHA_TPREL16: - /* ??? No idea why we can't return a reference to .tbss+10, but - we're preventing this in the other assemblers. Follow for now. */ - return 0; - -#ifdef OBJ_ELF - case BFD_RELOC_ALPHA_BRSGP: - /* If we have a BRSGP reloc to a local symbol, adjust it to BRADDR and - let it get resolved at assembly time. */ - { - symbolS *sym = f->fx_addsy; - const char *name; - int offset = 0; - - if (generic_force_reloc (f)) - return 0; - - switch (S_GET_OTHER (sym) & STO_ALPHA_STD_GPLOAD) - { - case STO_ALPHA_NOPV: - break; - case STO_ALPHA_STD_GPLOAD: - offset = 8; - break; - default: - if (S_IS_LOCAL (sym)) - name = ""; - else - name = S_GET_NAME (sym); - as_bad_where (f->fx_file, f->fx_line, - _("!samegp reloc against symbol without .prologue: %s"), - name); - break; - } - f->fx_r_type = BFD_RELOC_23_PCREL_S2; - f->fx_offset += offset; - return 1; - } -#endif - - default: - return 1; - } - /*NOTREACHED*/ -} - -/* Generate the BFD reloc to be stuck in the object file from the - fixup used internally in the assembler. */ - -arelent * -tc_gen_reloc (sec, fixp) - asection *sec ATTRIBUTE_UNUSED; - fixS *fixp; -{ - arelent *reloc; - - reloc = (arelent *) xmalloc (sizeof (arelent)); - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; - - /* Make sure none of our internal relocations make it this far. - They'd better have been fully resolved by this point. */ - assert ((int) fixp->fx_r_type > 0); - - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); - if (reloc->howto == NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("cannot represent `%s' relocation in object file"), - bfd_get_reloc_code_name (fixp->fx_r_type)); - return NULL; - } - - if (!fixp->fx_pcrel != !reloc->howto->pc_relative) - { - as_fatal (_("internal error? cannot generate `%s' relocation"), - bfd_get_reloc_code_name (fixp->fx_r_type)); - } - assert (!fixp->fx_pcrel == !reloc->howto->pc_relative); - -#ifdef OBJ_ECOFF - if (fixp->fx_r_type == BFD_RELOC_ALPHA_LITERAL) - { - /* Fake out bfd_perform_relocation. sigh. */ - reloc->addend = -alpha_gp_value; - } - else -#endif - { - reloc->addend = fixp->fx_offset; -#ifdef OBJ_ELF - /* Ohhh, this is ugly. The problem is that if this is a local global - symbol, the relocation will entirely be performed at link time, not - at assembly time. bfd_perform_reloc doesn't know about this sort - of thing, and as a result we need to fake it out here. */ - if ((S_IS_EXTERN (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy) - || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE) - || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_THREAD_LOCAL)) - && !S_IS_COMMON (fixp->fx_addsy)) - reloc->addend -= symbol_get_bfdsym (fixp->fx_addsy)->value; -#endif - } - - return reloc; -} - -/* Parse a register name off of the input_line and return a register - number. Gets md_undefined_symbol above to do the register name - matching for us. - - Only called as a part of processing the ECOFF .frame directive. */ - -int -tc_get_register (frame) - int frame ATTRIBUTE_UNUSED; -{ - int framereg = AXP_REG_SP; - - SKIP_WHITESPACE (); - if (*input_line_pointer == '$') - { - char *s = input_line_pointer; - char c = get_symbol_end (); - symbolS *sym = md_undefined_symbol (s); - - *strchr (s, '\0') = c; - if (sym && (framereg = S_GET_VALUE (sym)) <= 31) - goto found; - } - as_warn (_("frame reg expected, using $%d."), framereg); - -found: - note_gpreg (framereg); - return framereg; -} - -/* This is called before the symbol table is processed. In order to - work with gcc when using mips-tfile, we must keep all local labels. - However, in other cases, we want to discard them. If we were - called with -g, but we didn't see any debugging information, it may - mean that gcc is smuggling debugging information through to - mips-tfile, in which case we must generate all local labels. */ - -#ifdef OBJ_ECOFF - -void -alpha_frob_file_before_adjust () -{ - if (alpha_debug != 0 - && ! ecoff_debugging_seen) - flag_keep_locals = 1; -} - -#endif /* OBJ_ECOFF */ - -static struct alpha_reloc_tag * -get_alpha_reloc_tag (sequence) - long sequence; -{ - char buffer[ALPHA_RELOC_DIGITS]; - struct alpha_reloc_tag *info; - - sprintf (buffer, "!%ld", sequence); - - info = (struct alpha_reloc_tag *) hash_find (alpha_literal_hash, buffer); - if (! info) - { - size_t len = strlen (buffer); - const char *errmsg; - - info = (struct alpha_reloc_tag *) - xcalloc (sizeof (struct alpha_reloc_tag) + len, 1); - - info->segment = now_seg; - info->sequence = sequence; - strcpy (info->string, buffer); - errmsg = hash_insert (alpha_literal_hash, info->string, (PTR) info); - if (errmsg) - as_fatal (errmsg); - } - - return info; -} - -/* Before the relocations are written, reorder them, so that user - supplied !lituse relocations follow the appropriate !literal - relocations, and similarly for !gpdisp relocations. */ - -void -alpha_before_fix () -{ - if (alpha_literal_hash) - bfd_map_over_sections (stdoutput, alpha_adjust_relocs, NULL); -} - -static void -alpha_adjust_relocs (abfd, sec, ptr) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; - PTR ptr ATTRIBUTE_UNUSED; -{ - segment_info_type *seginfo = seg_info (sec); - fixS **prevP; - fixS *fixp; - fixS *next; - fixS *slave; - - /* If seginfo is NULL, we did not create this section; don't do - anything with it. By using a pointer to a pointer, we can update - the links in place. */ - if (seginfo == NULL) - return; - - /* If there are no relocations, skip the section. */ - if (! seginfo->fix_root) - return; - - /* First rebuild the fixup chain without the explicit lituse and - gpdisp_lo16 relocs. */ - prevP = &seginfo->fix_root; - for (fixp = seginfo->fix_root; fixp; fixp = next) - { - next = fixp->fx_next; - fixp->fx_next = (fixS *) 0; - - switch (fixp->fx_r_type) - { - case BFD_RELOC_ALPHA_LITUSE: - if (fixp->tc_fix_data.info->n_master == 0) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("No !literal!%ld was found"), - fixp->tc_fix_data.info->sequence); -#ifdef RELOC_OP_P - if (fixp->fx_offset == LITUSE_ALPHA_TLSGD) - { - if (! fixp->tc_fix_data.info->saw_tlsgd) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("No !tlsgd!%ld was found"), - fixp->tc_fix_data.info->sequence); - } - else if (fixp->fx_offset == LITUSE_ALPHA_TLSLDM) - { - if (! fixp->tc_fix_data.info->saw_tlsldm) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("No !tlsldm!%ld was found"), - fixp->tc_fix_data.info->sequence); - } -#endif - break; - - case BFD_RELOC_ALPHA_GPDISP_LO16: - if (fixp->tc_fix_data.info->n_master == 0) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("No ldah !gpdisp!%ld was found"), - fixp->tc_fix_data.info->sequence); - break; - - case BFD_RELOC_ALPHA_ELF_LITERAL: - if (fixp->tc_fix_data.info - && (fixp->tc_fix_data.info->saw_tlsgd - || fixp->tc_fix_data.info->saw_tlsldm)) - break; - /* FALLTHRU */ - - default: - *prevP = fixp; - prevP = &fixp->fx_next; - break; - } - } - - /* Go back and re-chain dependent relocations. They are currently - linked through the next_reloc field in reverse order, so as we - go through the next_reloc chain, we effectively reverse the chain - once again. - - Except if there is more than one !literal for a given sequence - number. In that case, the programmer and/or compiler is not sure - how control flows from literal to lituse, and we can't be sure to - get the relaxation correct. - - ??? Well, actually we could, if there are enough lituses such that - we can make each literal have at least one of each lituse type - present. Not implemented. - - Also suppress the optimization if the !literals/!lituses are spread - in different segments. This can happen with "intersting" uses of - inline assembly; examples are present in the Linux kernel semaphores. */ - - for (fixp = seginfo->fix_root; fixp; fixp = next) - { - next = fixp->fx_next; - switch (fixp->fx_r_type) - { - case BFD_RELOC_ALPHA_TLSGD: - case BFD_RELOC_ALPHA_TLSLDM: - if (!fixp->tc_fix_data.info) - break; - if (fixp->tc_fix_data.info->n_master == 0) - break; - else if (fixp->tc_fix_data.info->n_master > 1) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("too many !literal!%ld for %s"), - fixp->tc_fix_data.info->sequence, - (fixp->fx_r_type == BFD_RELOC_ALPHA_TLSGD - ? "!tlsgd" : "!tlsldm")); - break; - } - - fixp->tc_fix_data.info->master->fx_next = fixp->fx_next; - fixp->fx_next = fixp->tc_fix_data.info->master; - fixp = fixp->fx_next; - /* FALLTHRU */ - - case BFD_RELOC_ALPHA_ELF_LITERAL: - if (fixp->tc_fix_data.info - && fixp->tc_fix_data.info->n_master == 1 - && ! fixp->tc_fix_data.info->multi_section_p) - { - for (slave = fixp->tc_fix_data.info->slaves; - slave != (fixS *) 0; - slave = slave->tc_fix_data.next_reloc) - { - slave->fx_next = fixp->fx_next; - fixp->fx_next = slave; - } - } - break; - - case BFD_RELOC_ALPHA_GPDISP_HI16: - if (fixp->tc_fix_data.info->n_slaves == 0) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("No lda !gpdisp!%ld was found"), - fixp->tc_fix_data.info->sequence); - else - { - slave = fixp->tc_fix_data.info->slaves; - slave->fx_next = next; - fixp->fx_next = slave; - } - break; - - default: - break; - } - } -} - -#ifdef DEBUG_ALPHA -static void -debug_exp (tok, ntok) - expressionS tok[]; - int ntok; -{ - int i; - - fprintf (stderr, "debug_exp: %d tokens", ntok); - for (i = 0; i < ntok; i++) - { - expressionS *t = &tok[i]; - const char *name; - - switch (t->X_op) - { - default: name = "unknown"; break; - case O_illegal: name = "O_illegal"; break; - case O_absent: name = "O_absent"; break; - case O_constant: name = "O_constant"; break; - case O_symbol: name = "O_symbol"; break; - case O_symbol_rva: name = "O_symbol_rva"; break; - case O_register: name = "O_register"; break; - case O_big: name = "O_big"; break; - case O_uminus: name = "O_uminus"; break; - case O_bit_not: name = "O_bit_not"; break; - case O_logical_not: name = "O_logical_not"; break; - case O_multiply: name = "O_multiply"; break; - case O_divide: name = "O_divide"; break; - case O_modulus: name = "O_modulus"; break; - case O_left_shift: name = "O_left_shift"; break; - case O_right_shift: name = "O_right_shift"; break; - case O_bit_inclusive_or: name = "O_bit_inclusive_or"; break; - case O_bit_or_not: name = "O_bit_or_not"; break; - case O_bit_exclusive_or: name = "O_bit_exclusive_or"; break; - case O_bit_and: name = "O_bit_and"; break; - case O_add: name = "O_add"; break; - case O_subtract: name = "O_subtract"; break; - case O_eq: name = "O_eq"; break; - case O_ne: name = "O_ne"; break; - case O_lt: name = "O_lt"; break; - case O_le: name = "O_le"; break; - case O_ge: name = "O_ge"; break; - case O_gt: name = "O_gt"; break; - case O_logical_and: name = "O_logical_and"; break; - case O_logical_or: name = "O_logical_or"; break; - case O_index: name = "O_index"; break; - case O_pregister: name = "O_pregister"; break; - case O_cpregister: name = "O_cpregister"; break; - case O_literal: name = "O_literal"; break; - case O_lituse_addr: name = "O_lituse_addr"; break; - case O_lituse_base: name = "O_lituse_base"; break; - case O_lituse_bytoff: name = "O_lituse_bytoff"; break; - case O_lituse_jsr: name = "O_lituse_jsr"; break; - case O_lituse_tlsgd: name = "O_lituse_tlsgd"; break; - case O_lituse_tlsldm: name = "O_lituse_tlsldm"; break; - case O_gpdisp: name = "O_gpdisp"; break; - case O_gprelhigh: name = "O_gprelhigh"; break; - case O_gprellow: name = "O_gprellow"; break; - case O_gprel: name = "O_gprel"; break; - case O_samegp: name = "O_samegp"; break; - case O_tlsgd: name = "O_tlsgd"; break; - case O_tlsldm: name = "O_tlsldm"; break; - case O_gotdtprel: name = "O_gotdtprel"; break; - case O_dtprelhi: name = "O_dtprelhi"; break; - case O_dtprello: name = "O_dtprello"; break; - case O_dtprel: name = "O_dtprel"; break; - case O_gottprel: name = "O_gottprel"; break; - case O_tprelhi: name = "O_tprelhi"; break; - case O_tprello: name = "O_tprello"; break; - case O_tprel: name = "O_tprel"; break; - } - - fprintf (stderr, ", %s(%s, %s, %d)", name, - (t->X_add_symbol) ? S_GET_NAME (t->X_add_symbol) : "--", - (t->X_op_symbol) ? S_GET_NAME (t->X_op_symbol) : "--", - (int) t->X_add_number); - } - fprintf (stderr, "\n"); - fflush (stderr); -} -#endif - -/* Parse the arguments to an opcode. */ - -static int -tokenize_arguments (str, tok, ntok) - char *str; - expressionS tok[]; - int ntok; -{ - expressionS *end_tok = tok + ntok; - char *old_input_line_pointer; - int saw_comma = 0, saw_arg = 0; -#ifdef DEBUG_ALPHA - expressionS *orig_tok = tok; -#endif -#ifdef RELOC_OP_P - char *p; - const struct alpha_reloc_op_tag *r; - int c, i; - size_t len; - int reloc_found_p = 0; -#endif - - memset (tok, 0, sizeof (*tok) * ntok); - - /* Save and restore input_line_pointer around this function. */ - old_input_line_pointer = input_line_pointer; - input_line_pointer = str; - -#ifdef RELOC_OP_P - /* ??? Wrest control of ! away from the regular expression parser. */ - is_end_of_line[(unsigned char) '!'] = 1; -#endif - - while (tok < end_tok && *input_line_pointer) - { - SKIP_WHITESPACE (); - switch (*input_line_pointer) - { - case '\0': - goto fini; - -#ifdef RELOC_OP_P - case '!': - /* A relocation operand can be placed after the normal operand on an - assembly language statement, and has the following form: - !relocation_type!sequence_number. */ - if (reloc_found_p) - { - /* Only support one relocation op per insn. */ - as_bad (_("More than one relocation op per insn")); - goto err_report; - } - - if (!saw_arg) - goto err; - - ++input_line_pointer; - SKIP_WHITESPACE (); - p = input_line_pointer; - c = get_symbol_end (); - - /* Parse !relocation_type. */ - len = input_line_pointer - p; - if (len == 0) - { - as_bad (_("No relocation operand")); - goto err_report; - } - - r = &alpha_reloc_op[0]; - for (i = alpha_num_reloc_op - 1; i >= 0; i--, r++) - if (len == r->length && memcmp (p, r->name, len) == 0) - break; - if (i < 0) - { - as_bad (_("Unknown relocation operand: !%s"), p); - goto err_report; - } - - *input_line_pointer = c; - SKIP_WHITESPACE (); - if (*input_line_pointer != '!') - { - if (r->require_seq) - { - as_bad (_("no sequence number after !%s"), p); - goto err_report; - } - - tok->X_add_number = 0; - } - else - { - if (! r->allow_seq) - { - as_bad (_("!%s does not use a sequence number"), p); - goto err_report; - } - - input_line_pointer++; - - /* Parse !sequence_number. */ - expression (tok); - if (tok->X_op != O_constant || tok->X_add_number <= 0) - { - as_bad (_("Bad sequence number: !%s!%s"), - r->name, input_line_pointer); - goto err_report; - } - } - - tok->X_op = r->op; - reloc_found_p = 1; - ++tok; - break; -#endif /* RELOC_OP_P */ - - case ',': - ++input_line_pointer; - if (saw_comma || !saw_arg) - goto err; - saw_comma = 1; - break; - - case '(': - { - char *hold = input_line_pointer++; - - /* First try for parenthesized register ... */ - expression (tok); - if (*input_line_pointer == ')' && tok->X_op == O_register) - { - tok->X_op = (saw_comma ? O_cpregister : O_pregister); - saw_comma = 0; - saw_arg = 1; - ++input_line_pointer; - ++tok; - break; - } - - /* ... then fall through to plain expression. */ - input_line_pointer = hold; - } - - default: - if (saw_arg && !saw_comma) - goto err; - - expression (tok); - if (tok->X_op == O_illegal || tok->X_op == O_absent) - goto err; - - saw_comma = 0; - saw_arg = 1; - ++tok; - break; - } - } - -fini: - if (saw_comma) - goto err; - input_line_pointer = old_input_line_pointer; - -#ifdef DEBUG_ALPHA - debug_exp (orig_tok, ntok - (end_tok - tok)); -#endif -#ifdef RELOC_OP_P - is_end_of_line[(unsigned char) '!'] = 0; -#endif - - return ntok - (end_tok - tok); - -err: -#ifdef RELOC_OP_P - is_end_of_line[(unsigned char) '!'] = 0; -#endif - input_line_pointer = old_input_line_pointer; - return TOKENIZE_ERROR; - -#ifdef RELOC_OP_P -err_report: - is_end_of_line[(unsigned char) '!'] = 0; -#endif - input_line_pointer = old_input_line_pointer; - return TOKENIZE_ERROR_REPORT; -} - -/* Search forward through all variants of an opcode looking for a - syntax match. */ - -static const struct alpha_opcode * -find_opcode_match (first_opcode, tok, pntok, pcpumatch) - const struct alpha_opcode *first_opcode; - const expressionS *tok; - int *pntok; - int *pcpumatch; -{ - const struct alpha_opcode *opcode = first_opcode; - int ntok = *pntok; - int got_cpu_match = 0; - - do - { - const unsigned char *opidx; - int tokidx = 0; - - /* Don't match opcodes that don't exist on this architecture. */ - if (!(opcode->flags & alpha_target)) - goto match_failed; - - got_cpu_match = 1; - - for (opidx = opcode->operands; *opidx; ++opidx) - { - const struct alpha_operand *operand = &alpha_operands[*opidx]; - - /* Only take input from real operands. */ - if (operand->flags & AXP_OPERAND_FAKE) - continue; - - /* When we expect input, make sure we have it. */ - if (tokidx >= ntok) - { - if ((operand->flags & AXP_OPERAND_OPTIONAL_MASK) == 0) - goto match_failed; - continue; - } - - /* Match operand type with expression type. */ - switch (operand->flags & AXP_OPERAND_TYPECHECK_MASK) - { - case AXP_OPERAND_IR: - if (tok[tokidx].X_op != O_register - || !is_ir_num (tok[tokidx].X_add_number)) - goto match_failed; - break; - case AXP_OPERAND_FPR: - if (tok[tokidx].X_op != O_register - || !is_fpr_num (tok[tokidx].X_add_number)) - goto match_failed; - break; - case AXP_OPERAND_IR | AXP_OPERAND_PARENS: - if (tok[tokidx].X_op != O_pregister - || !is_ir_num (tok[tokidx].X_add_number)) - goto match_failed; - break; - case AXP_OPERAND_IR | AXP_OPERAND_PARENS | AXP_OPERAND_COMMA: - if (tok[tokidx].X_op != O_cpregister - || !is_ir_num (tok[tokidx].X_add_number)) - goto match_failed; - break; - - case AXP_OPERAND_RELATIVE: - case AXP_OPERAND_SIGNED: - case AXP_OPERAND_UNSIGNED: - switch (tok[tokidx].X_op) - { - case O_illegal: - case O_absent: - case O_register: - case O_pregister: - case O_cpregister: - goto match_failed; - - default: - break; - } - break; - - default: - /* Everything else should have been fake. */ - abort (); - } - ++tokidx; - } - - /* Possible match -- did we use all of our input? */ - if (tokidx == ntok) - { - *pntok = ntok; - return opcode; - } - - match_failed:; - } - while (++opcode - alpha_opcodes < (int) alpha_num_opcodes - && !strcmp (opcode->name, first_opcode->name)); - - if (*pcpumatch) - *pcpumatch = got_cpu_match; - - return NULL; -} - -/* Search forward through all variants of a macro looking for a syntax - match. */ - -static const struct alpha_macro * -find_macro_match (first_macro, tok, pntok) - const struct alpha_macro *first_macro; - const expressionS *tok; - int *pntok; -{ - const struct alpha_macro *macro = first_macro; - int ntok = *pntok; - - do - { - const enum alpha_macro_arg *arg = macro->argsets; - int tokidx = 0; - - while (*arg) - { - switch (*arg) - { - case MACRO_EOA: - if (tokidx == ntok) - return macro; - else - tokidx = 0; - break; - - /* Index register. */ - case MACRO_IR: - if (tokidx >= ntok || tok[tokidx].X_op != O_register - || !is_ir_num (tok[tokidx].X_add_number)) - goto match_failed; - ++tokidx; - break; - - /* Parenthesized index register. */ - case MACRO_PIR: - if (tokidx >= ntok || tok[tokidx].X_op != O_pregister - || !is_ir_num (tok[tokidx].X_add_number)) - goto match_failed; - ++tokidx; - break; - - /* Optional parenthesized index register. */ - case MACRO_OPIR: - if (tokidx < ntok && tok[tokidx].X_op == O_pregister - && is_ir_num (tok[tokidx].X_add_number)) - ++tokidx; - break; - - /* Leading comma with a parenthesized index register. */ - case MACRO_CPIR: - if (tokidx >= ntok || tok[tokidx].X_op != O_cpregister - || !is_ir_num (tok[tokidx].X_add_number)) - goto match_failed; - ++tokidx; - break; - - /* Floating point register. */ - case MACRO_FPR: - if (tokidx >= ntok || tok[tokidx].X_op != O_register - || !is_fpr_num (tok[tokidx].X_add_number)) - goto match_failed; - ++tokidx; - break; - - /* Normal expression. */ - case MACRO_EXP: - if (tokidx >= ntok) - goto match_failed; - switch (tok[tokidx].X_op) - { - case O_illegal: - case O_absent: - case O_register: - case O_pregister: - case O_cpregister: - case O_literal: - case O_lituse_base: - case O_lituse_bytoff: - case O_lituse_jsr: - case O_gpdisp: - case O_gprelhigh: - case O_gprellow: - case O_gprel: - case O_samegp: - goto match_failed; - - default: - break; - } - ++tokidx; - break; - - match_failed: - while (*arg != MACRO_EOA) - ++arg; - tokidx = 0; - break; - } - ++arg; - } - } - while (++macro - alpha_macros < (int) alpha_num_macros - && !strcmp (macro->name, first_macro->name)); - - return NULL; -} - -/* Insert an operand value into an instruction. */ - -static unsigned -insert_operand (insn, operand, val, file, line) - unsigned insn; - const struct alpha_operand *operand; - offsetT val; - char *file; - unsigned line; -{ - if (operand->bits != 32 && !(operand->flags & AXP_OPERAND_NOOVERFLOW)) - { - offsetT min, max; - - if (operand->flags & AXP_OPERAND_SIGNED) - { - max = (1 << (operand->bits - 1)) - 1; - min = -(1 << (operand->bits - 1)); - } - else - { - max = (1 << operand->bits) - 1; - min = 0; - } - - if (val < min || val > max) - { - const char *err = - _("operand out of range (%s not between %d and %d)"); - char buf[sizeof (val) * 3 + 2]; - - sprint_value (buf, val); - if (file) - as_warn_where (file, line, err, buf, min, max); - else - as_warn (err, buf, min, max); - } - } - - if (operand->insert) - { - const char *errmsg = NULL; - - insn = (*operand->insert) (insn, val, &errmsg); - if (errmsg) - as_warn (errmsg); - } - else - insn |= ((val & ((1 << operand->bits) - 1)) << operand->shift); - - return insn; -} - -/* Turn an opcode description and a set of arguments into - an instruction and a fixup. */ - -static void -assemble_insn (opcode, tok, ntok, insn, reloc) - const struct alpha_opcode *opcode; - const expressionS *tok; - int ntok; - struct alpha_insn *insn; - bfd_reloc_code_real_type reloc; -{ - const struct alpha_operand *reloc_operand = NULL; - const expressionS *reloc_exp = NULL; - const unsigned char *argidx; - unsigned image; - int tokidx = 0; - - memset (insn, 0, sizeof (*insn)); - image = opcode->opcode; - - for (argidx = opcode->operands; *argidx; ++argidx) - { - const struct alpha_operand *operand = &alpha_operands[*argidx]; - const expressionS *t = (const expressionS *) 0; - - if (operand->flags & AXP_OPERAND_FAKE) - { - /* fake operands take no value and generate no fixup */ - image = insert_operand (image, operand, 0, NULL, 0); - continue; - } - - if (tokidx >= ntok) - { - switch (operand->flags & AXP_OPERAND_OPTIONAL_MASK) - { - case AXP_OPERAND_DEFAULT_FIRST: - t = &tok[0]; - break; - case AXP_OPERAND_DEFAULT_SECOND: - t = &tok[1]; - break; - case AXP_OPERAND_DEFAULT_ZERO: - { - static expressionS zero_exp; - t = &zero_exp; - zero_exp.X_op = O_constant; - zero_exp.X_unsigned = 1; - } - break; - default: - abort (); - } - } - else - t = &tok[tokidx++]; - - switch (t->X_op) - { - case O_register: - case O_pregister: - case O_cpregister: - image = insert_operand (image, operand, regno (t->X_add_number), - NULL, 0); - break; - - case O_constant: - image = insert_operand (image, operand, t->X_add_number, NULL, 0); - assert (reloc_operand == NULL); - reloc_operand = operand; - reloc_exp = t; - break; - - default: - /* This is only 0 for fields that should contain registers, - which means this pattern shouldn't have matched. */ - if (operand->default_reloc == 0) - abort (); - - /* There is one special case for which an insn receives two - relocations, and thus the user-supplied reloc does not - override the operand reloc. */ - if (operand->default_reloc == BFD_RELOC_ALPHA_HINT) - { - struct alpha_fixup *fixup; - - if (insn->nfixups >= MAX_INSN_FIXUPS) - as_fatal (_("too many fixups")); - - fixup = &insn->fixups[insn->nfixups++]; - fixup->exp = *t; - fixup->reloc = BFD_RELOC_ALPHA_HINT; - } - else - { - if (reloc == BFD_RELOC_UNUSED) - reloc = operand->default_reloc; - - assert (reloc_operand == NULL); - reloc_operand = operand; - reloc_exp = t; - } - break; - } - } - - if (reloc != BFD_RELOC_UNUSED) - { - struct alpha_fixup *fixup; - - if (insn->nfixups >= MAX_INSN_FIXUPS) - as_fatal (_("too many fixups")); - - /* ??? My but this is hacky. But the OSF/1 assembler uses the same - relocation tag for both ldah and lda with gpdisp. Choose the - correct internal relocation based on the opcode. */ - if (reloc == BFD_RELOC_ALPHA_GPDISP) - { - if (strcmp (opcode->name, "ldah") == 0) - reloc = BFD_RELOC_ALPHA_GPDISP_HI16; - else if (strcmp (opcode->name, "lda") == 0) - reloc = BFD_RELOC_ALPHA_GPDISP_LO16; - else - as_bad (_("invalid relocation for instruction")); - } - - /* If this is a real relocation (as opposed to a lituse hint), then - the relocation width should match the operand width. */ - else if (reloc < BFD_RELOC_UNUSED) - { - reloc_howto_type *reloc_howto - = bfd_reloc_type_lookup (stdoutput, reloc); - if (reloc_howto->bitsize != reloc_operand->bits) - { - as_bad (_("invalid relocation for field")); - return; - } - } - - fixup = &insn->fixups[insn->nfixups++]; - if (reloc_exp) - fixup->exp = *reloc_exp; - else - fixup->exp.X_op = O_absent; - fixup->reloc = reloc; - } - - insn->insn = image; -} - -/* Actually output an instruction with its fixup. */ - -static void -emit_insn (insn) - struct alpha_insn *insn; -{ - char *f; - int i; - - /* Take care of alignment duties. */ - if (alpha_auto_align_on && alpha_current_align < 2) - alpha_align (2, (char *) NULL, alpha_insn_label, 0); - if (alpha_current_align > 2) - alpha_current_align = 2; - alpha_insn_label = NULL; - - /* Write out the instruction. */ - f = frag_more (4); - md_number_to_chars (f, insn->insn, 4); - -#ifdef OBJ_ELF - dwarf2_emit_insn (4); -#endif - - /* Apply the fixups in order. */ - for (i = 0; i < insn->nfixups; ++i) - { - const struct alpha_operand *operand = (const struct alpha_operand *) 0; - struct alpha_fixup *fixup = &insn->fixups[i]; - struct alpha_reloc_tag *info = NULL; - int size, pcrel; - fixS *fixP; - - /* Some fixups are only used internally and so have no howto. */ - if ((int) fixup->reloc < 0) - { - operand = &alpha_operands[-(int) fixup->reloc]; - size = 4; - pcrel = ((operand->flags & AXP_OPERAND_RELATIVE) != 0); - } - else if (fixup->reloc > BFD_RELOC_UNUSED - || fixup->reloc == BFD_RELOC_ALPHA_GPDISP_HI16 - || fixup->reloc == BFD_RELOC_ALPHA_GPDISP_LO16) - { - size = 2; - pcrel = 0; - } - else - { - reloc_howto_type *reloc_howto - = bfd_reloc_type_lookup (stdoutput, fixup->reloc); - assert (reloc_howto); - - size = bfd_get_reloc_size (reloc_howto); - assert (size >= 1 && size <= 4); - - pcrel = reloc_howto->pc_relative; - } - - fixP = fix_new_exp (frag_now, f - frag_now->fr_literal, size, - &fixup->exp, pcrel, fixup->reloc); - - /* Turn off complaints that the addend is too large for some fixups, - and copy in the sequence number for the explicit relocations. */ - switch (fixup->reloc) - { - case BFD_RELOC_ALPHA_HINT: - case BFD_RELOC_GPREL32: - case BFD_RELOC_GPREL16: - case BFD_RELOC_ALPHA_GPREL_HI16: - case BFD_RELOC_ALPHA_GPREL_LO16: - case BFD_RELOC_ALPHA_GOTDTPREL16: - case BFD_RELOC_ALPHA_DTPREL_HI16: - case BFD_RELOC_ALPHA_DTPREL_LO16: - case BFD_RELOC_ALPHA_DTPREL16: - case BFD_RELOC_ALPHA_GOTTPREL16: - case BFD_RELOC_ALPHA_TPREL_HI16: - case BFD_RELOC_ALPHA_TPREL_LO16: - case BFD_RELOC_ALPHA_TPREL16: - fixP->fx_no_overflow = 1; - break; - - case BFD_RELOC_ALPHA_GPDISP_HI16: - fixP->fx_no_overflow = 1; - fixP->fx_addsy = section_symbol (now_seg); - fixP->fx_offset = 0; - - info = get_alpha_reloc_tag (insn->sequence); - if (++info->n_master > 1) - as_bad (_("too many ldah insns for !gpdisp!%ld"), insn->sequence); - if (info->segment != now_seg) - as_bad (_("both insns for !gpdisp!%ld must be in the same section"), - insn->sequence); - fixP->tc_fix_data.info = info; - break; - - case BFD_RELOC_ALPHA_GPDISP_LO16: - fixP->fx_no_overflow = 1; - - info = get_alpha_reloc_tag (insn->sequence); - if (++info->n_slaves > 1) - as_bad (_("too many lda insns for !gpdisp!%ld"), insn->sequence); - if (info->segment != now_seg) - as_bad (_("both insns for !gpdisp!%ld must be in the same section"), - insn->sequence); - fixP->tc_fix_data.info = info; - info->slaves = fixP; - break; - - case BFD_RELOC_ALPHA_LITERAL: - case BFD_RELOC_ALPHA_ELF_LITERAL: - fixP->fx_no_overflow = 1; - - if (insn->sequence == 0) - break; - info = get_alpha_reloc_tag (insn->sequence); - info->master = fixP; - info->n_master++; - if (info->segment != now_seg) - info->multi_section_p = 1; - fixP->tc_fix_data.info = info; - break; - -#ifdef RELOC_OP_P - case DUMMY_RELOC_LITUSE_ADDR: - fixP->fx_offset = LITUSE_ALPHA_ADDR; - goto do_lituse; - case DUMMY_RELOC_LITUSE_BASE: - fixP->fx_offset = LITUSE_ALPHA_BASE; - goto do_lituse; - case DUMMY_RELOC_LITUSE_BYTOFF: - fixP->fx_offset = LITUSE_ALPHA_BYTOFF; - goto do_lituse; - case DUMMY_RELOC_LITUSE_JSR: - fixP->fx_offset = LITUSE_ALPHA_JSR; - goto do_lituse; - case DUMMY_RELOC_LITUSE_TLSGD: - fixP->fx_offset = LITUSE_ALPHA_TLSGD; - goto do_lituse; - case DUMMY_RELOC_LITUSE_TLSLDM: - fixP->fx_offset = LITUSE_ALPHA_TLSLDM; - goto do_lituse; - do_lituse: - fixP->fx_addsy = section_symbol (now_seg); - fixP->fx_r_type = BFD_RELOC_ALPHA_LITUSE; - - info = get_alpha_reloc_tag (insn->sequence); - if (fixup->reloc == DUMMY_RELOC_LITUSE_TLSGD) - info->saw_lu_tlsgd = 1; - else if (fixup->reloc == DUMMY_RELOC_LITUSE_TLSLDM) - info->saw_lu_tlsldm = 1; - if (++info->n_slaves > 1) - { - if (info->saw_lu_tlsgd) - as_bad (_("too many lituse insns for !lituse_tlsgd!%ld"), - insn->sequence); - else if (info->saw_lu_tlsldm) - as_bad (_("too many lituse insns for !lituse_tlsldm!%ld"), - insn->sequence); - } - fixP->tc_fix_data.info = info; - fixP->tc_fix_data.next_reloc = info->slaves; - info->slaves = fixP; - if (info->segment != now_seg) - info->multi_section_p = 1; - break; - - case BFD_RELOC_ALPHA_TLSGD: - fixP->fx_no_overflow = 1; - - if (insn->sequence == 0) - break; - info = get_alpha_reloc_tag (insn->sequence); - if (info->saw_tlsgd) - as_bad (_("duplicate !tlsgd!%ld"), insn->sequence); - else if (info->saw_tlsldm) - as_bad (_("sequence number in use for !tlsldm!%ld"), - insn->sequence); - else - info->saw_tlsgd = 1; - fixP->tc_fix_data.info = info; - break; - - case BFD_RELOC_ALPHA_TLSLDM: - fixP->fx_no_overflow = 1; - - if (insn->sequence == 0) - break; - info = get_alpha_reloc_tag (insn->sequence); - if (info->saw_tlsldm) - as_bad (_("duplicate !tlsldm!%ld"), insn->sequence); - else if (info->saw_tlsgd) - as_bad (_("sequence number in use for !tlsgd!%ld"), - insn->sequence); - else - info->saw_tlsldm = 1; - fixP->tc_fix_data.info = info; - break; -#endif - default: - if ((int) fixup->reloc < 0) - { - if (operand->flags & AXP_OPERAND_NOOVERFLOW) - fixP->fx_no_overflow = 1; - } - break; - } - } -} - -/* Given an opcode name and a pre-tokenized set of arguments, assemble - the insn, but do not emit it. - - Note that this implies no macros allowed, since we can't store more - than one insn in an insn structure. */ - -static void -assemble_tokens_to_insn (opname, tok, ntok, insn) - const char *opname; - const expressionS *tok; - int ntok; - struct alpha_insn *insn; -{ - const struct alpha_opcode *opcode; - - /* search opcodes */ - opcode = (const struct alpha_opcode *) hash_find (alpha_opcode_hash, opname); - if (opcode) - { - int cpumatch; - opcode = find_opcode_match (opcode, tok, &ntok, &cpumatch); - if (opcode) - { - assemble_insn (opcode, tok, ntok, insn, BFD_RELOC_UNUSED); - return; - } - else if (cpumatch) - as_bad (_("inappropriate arguments for opcode `%s'"), opname); - else - as_bad (_("opcode `%s' not supported for target %s"), opname, - alpha_target_name); - } - else - as_bad (_("unknown opcode `%s'"), opname); -} - -/* Given an opcode name and a pre-tokenized set of arguments, take the - opcode all the way through emission. */ - -static void -assemble_tokens (opname, tok, ntok, local_macros_on) - const char *opname; - const expressionS *tok; - int ntok; - int local_macros_on; -{ - int found_something = 0; - const struct alpha_opcode *opcode; - const struct alpha_macro *macro; - int cpumatch = 1; - bfd_reloc_code_real_type reloc = BFD_RELOC_UNUSED; - -#ifdef RELOC_OP_P - /* If a user-specified relocation is present, this is not a macro. */ - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - reloc = ALPHA_RELOC_TABLE (tok[ntok - 1].X_op)->reloc; - ntok--; - } - else -#endif - if (local_macros_on) - { - macro = ((const struct alpha_macro *) - hash_find (alpha_macro_hash, opname)); - if (macro) - { - found_something = 1; - macro = find_macro_match (macro, tok, &ntok); - if (macro) - { - (*macro->emit) (tok, ntok, macro->arg); - return; - } - } - } - - /* Search opcodes. */ - opcode = (const struct alpha_opcode *) hash_find (alpha_opcode_hash, opname); - if (opcode) - { - found_something = 1; - opcode = find_opcode_match (opcode, tok, &ntok, &cpumatch); - if (opcode) - { - struct alpha_insn insn; - assemble_insn (opcode, tok, ntok, &insn, reloc); - - /* Copy the sequence number for the reloc from the reloc token. */ - if (reloc != BFD_RELOC_UNUSED) - insn.sequence = tok[ntok].X_add_number; - - emit_insn (&insn); - return; - } - } - - if (found_something) - { - if (cpumatch) - as_bad (_("inappropriate arguments for opcode `%s'"), opname); - else - as_bad (_("opcode `%s' not supported for target %s"), opname, - alpha_target_name); - } - else - as_bad (_("unknown opcode `%s'"), opname); -} - -/* Some instruction sets indexed by lg(size). */ -static const char * const sextX_op[] = { "sextb", "sextw", "sextl", NULL }; -static const char * const insXl_op[] = { "insbl", "inswl", "insll", "insql" }; -static const char * const insXh_op[] = { NULL, "inswh", "inslh", "insqh" }; -static const char * const extXl_op[] = { "extbl", "extwl", "extll", "extql" }; -static const char * const extXh_op[] = { NULL, "extwh", "extlh", "extqh" }; -static const char * const mskXl_op[] = { "mskbl", "mskwl", "mskll", "mskql" }; -static const char * const mskXh_op[] = { NULL, "mskwh", "msklh", "mskqh" }; -static const char * const stX_op[] = { "stb", "stw", "stl", "stq" }; -static const char * const ldXu_op[] = { "ldbu", "ldwu", NULL, NULL }; - -/* Implement the ldgp macro. */ - -static void -emit_ldgp (tok, ntok, unused) - const expressionS *tok; - int ntok ATTRIBUTE_UNUSED; - const PTR unused ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_AOUT -FIXME -#endif -#if defined(OBJ_ECOFF) || defined(OBJ_ELF) - /* from "ldgp r1,n(r2)", generate "ldah r1,X(R2); lda r1,Y(r1)" - with appropriate constants and relocations. */ - struct alpha_insn insn; - expressionS newtok[3]; - expressionS addend; - -#ifdef OBJ_ECOFF - if (regno (tok[2].X_add_number) == AXP_REG_PV) - ecoff_set_gp_prolog_size (0); -#endif - - newtok[0] = tok[0]; - set_tok_const (newtok[1], 0); - newtok[2] = tok[2]; - - assemble_tokens_to_insn ("ldah", newtok, 3, &insn); - - addend = tok[1]; - -#ifdef OBJ_ECOFF - if (addend.X_op != O_constant) - as_bad (_("can not resolve expression")); - addend.X_op = O_symbol; - addend.X_add_symbol = alpha_gp_symbol; -#endif - - insn.nfixups = 1; - insn.fixups[0].exp = addend; - insn.fixups[0].reloc = BFD_RELOC_ALPHA_GPDISP_HI16; - insn.sequence = next_sequence_num; - - emit_insn (&insn); - - set_tok_preg (newtok[2], tok[0].X_add_number); - - assemble_tokens_to_insn ("lda", newtok, 3, &insn); - -#ifdef OBJ_ECOFF - addend.X_add_number += 4; -#endif - - insn.nfixups = 1; - insn.fixups[0].exp = addend; - insn.fixups[0].reloc = BFD_RELOC_ALPHA_GPDISP_LO16; - insn.sequence = next_sequence_num--; - - emit_insn (&insn); -#endif /* OBJ_ECOFF || OBJ_ELF */ -} - -#ifdef OBJ_EVAX - -/* Add symbol+addend to link pool. - Return offset from basesym to entry in link pool. - - Add new fixup only if offset isn't 16bit. */ - -valueT -add_to_link_pool (basesym, sym, addend) - symbolS *basesym; - symbolS *sym; - offsetT addend; -{ - segT current_section = now_seg; - int current_subsec = now_subseg; - valueT offset; - bfd_reloc_code_real_type reloc_type; - char *p; - segment_info_type *seginfo = seg_info (alpha_link_section); - fixS *fixp; - - offset = - *symbol_get_obj (basesym); - - /* @@ This assumes all entries in a given section will be of the same - size... Probably correct, but unwise to rely on. */ - /* This must always be called with the same subsegment. */ - - if (seginfo->frchainP) - for (fixp = seginfo->frchainP->fix_root; - fixp != (fixS *) NULL; - fixp = fixp->fx_next, offset += 8) - { - if (fixp->fx_addsy == sym && fixp->fx_offset == addend) - { - if (range_signed_16 (offset)) - { - return offset; - } - } - } - - /* Not found in 16bit signed range. */ - - subseg_set (alpha_link_section, 0); - p = frag_more (8); - memset (p, 0, 8); - - fix_new (frag_now, p - frag_now->fr_literal, 8, sym, addend, 0, - BFD_RELOC_64); - - subseg_set (current_section, current_subsec); - seginfo->literal_pool_size += 8; - return offset; -} - -#endif /* OBJ_EVAX */ - -/* Load a (partial) expression into a target register. - - If poffset is not null, after the call it will either contain - O_constant 0, or a 16-bit offset appropriate for any MEM format - instruction. In addition, pbasereg will be modified to point to - the base register to use in that MEM format instruction. - - In any case, *pbasereg should contain a base register to add to the - expression. This will normally be either AXP_REG_ZERO or - alpha_gp_register. Symbol addresses will always be loaded via $gp, - so "foo($0)" is interpreted as adding the address of foo to $0; - i.e. "ldq $targ, LIT($gp); addq $targ, $0, $targ". Odd, perhaps, - but this is what OSF/1 does. - - If explicit relocations of the form !literal! are allowed, - and used, then explicit_reloc with be an expression pointer. - - Finally, the return value is nonzero if the calling macro may emit - a LITUSE reloc if otherwise appropriate; the return value is the - sequence number to use. */ - -static long -load_expression (targreg, exp, pbasereg, poffset) - int targreg; - const expressionS *exp; - int *pbasereg; - expressionS *poffset; -{ - long emit_lituse = 0; - offsetT addend = exp->X_add_number; - int basereg = *pbasereg; - struct alpha_insn insn; - expressionS newtok[3]; - - switch (exp->X_op) - { - case O_symbol: - { -#ifdef OBJ_ECOFF - offsetT lit; - - /* Attempt to reduce .lit load by splitting the offset from - its symbol when possible, but don't create a situation in - which we'd fail. */ - if (!range_signed_32 (addend) && - (alpha_noat_on || targreg == AXP_REG_AT)) - { - lit = add_to_literal_pool (exp->X_add_symbol, addend, - alpha_lita_section, 8); - addend = 0; - } - else - { - lit = add_to_literal_pool (exp->X_add_symbol, 0, - alpha_lita_section, 8); - } - - if (lit >= 0x8000) - as_fatal (_("overflow in literal (.lita) table")); - - /* emit "ldq r, lit(gp)" */ - - if (basereg != alpha_gp_register && targreg == basereg) - { - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - if (targreg == AXP_REG_AT) - as_bad (_("macro requires $at while $at in use")); - - set_tok_reg (newtok[0], AXP_REG_AT); - } - else - set_tok_reg (newtok[0], targreg); - set_tok_sym (newtok[1], alpha_lita_symbol, lit); - set_tok_preg (newtok[2], alpha_gp_register); - - assemble_tokens_to_insn ("ldq", newtok, 3, &insn); - - assert (insn.nfixups == 1); - insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITERAL; - insn.sequence = emit_lituse = next_sequence_num--; -#endif /* OBJ_ECOFF */ -#ifdef OBJ_ELF - /* emit "ldq r, gotoff(gp)" */ - - if (basereg != alpha_gp_register && targreg == basereg) - { - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - if (targreg == AXP_REG_AT) - as_bad (_("macro requires $at while $at in use")); - - set_tok_reg (newtok[0], AXP_REG_AT); - } - else - set_tok_reg (newtok[0], targreg); - - /* XXX: Disable this .got minimizing optimization so that we can get - better instruction offset knowledge in the compiler. This happens - very infrequently anyway. */ - if (1 - || (!range_signed_32 (addend) - && (alpha_noat_on || targreg == AXP_REG_AT))) - { - newtok[1] = *exp; - addend = 0; - } - else - { - set_tok_sym (newtok[1], exp->X_add_symbol, 0); - } - - set_tok_preg (newtok[2], alpha_gp_register); - - assemble_tokens_to_insn ("ldq", newtok, 3, &insn); - - assert (insn.nfixups == 1); - insn.fixups[0].reloc = BFD_RELOC_ALPHA_ELF_LITERAL; - insn.sequence = emit_lituse = next_sequence_num--; -#endif /* OBJ_ELF */ -#ifdef OBJ_EVAX - offsetT link; - - /* Find symbol or symbol pointer in link section. */ - - if (exp->X_add_symbol == alpha_evax_proc.symbol) - { - if (range_signed_16 (addend)) - { - set_tok_reg (newtok[0], targreg); - set_tok_const (newtok[1], addend); - set_tok_preg (newtok[2], basereg); - assemble_tokens_to_insn ("lda", newtok, 3, &insn); - addend = 0; - } - else - { - set_tok_reg (newtok[0], targreg); - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], basereg); - assemble_tokens_to_insn ("lda", newtok, 3, &insn); - } - } - else - { - if (!range_signed_32 (addend)) - { - link = add_to_link_pool (alpha_evax_proc.symbol, - exp->X_add_symbol, addend); - addend = 0; - } - else - { - link = add_to_link_pool (alpha_evax_proc.symbol, - exp->X_add_symbol, 0); - } - set_tok_reg (newtok[0], targreg); - set_tok_const (newtok[1], link); - set_tok_preg (newtok[2], basereg); - assemble_tokens_to_insn ("ldq", newtok, 3, &insn); - } -#endif /* OBJ_EVAX */ - - emit_insn (&insn); - -#ifndef OBJ_EVAX - if (basereg != alpha_gp_register && basereg != AXP_REG_ZERO) - { - /* emit "addq r, base, r" */ - - set_tok_reg (newtok[1], basereg); - set_tok_reg (newtok[2], targreg); - assemble_tokens ("addq", newtok, 3, 0); - } -#endif - - basereg = targreg; - } - break; - - case O_constant: - break; - - case O_subtract: - /* Assume that this difference expression will be resolved to an - absolute value and that that value will fit in 16 bits. */ - - set_tok_reg (newtok[0], targreg); - newtok[1] = *exp; - set_tok_preg (newtok[2], basereg); - assemble_tokens ("lda", newtok, 3, 0); - - if (poffset) - set_tok_const (*poffset, 0); - return 0; - - case O_big: - if (exp->X_add_number > 0) - as_bad (_("bignum invalid; zero assumed")); - else - as_bad (_("floating point number invalid; zero assumed")); - addend = 0; - break; - - default: - as_bad (_("can't handle expression")); - addend = 0; - break; - } - - if (!range_signed_32 (addend)) - { - offsetT lit; - long seq_num = next_sequence_num--; - - /* For 64-bit addends, just put it in the literal pool. */ - -#ifdef OBJ_EVAX - /* emit "ldq targreg, lit(basereg)" */ - lit = add_to_link_pool (alpha_evax_proc.symbol, - section_symbol (absolute_section), addend); - set_tok_reg (newtok[0], targreg); - set_tok_const (newtok[1], lit); - set_tok_preg (newtok[2], alpha_gp_register); - assemble_tokens ("ldq", newtok, 3, 0); -#else - - if (alpha_lit8_section == NULL) - { - create_literal_section (".lit8", - &alpha_lit8_section, - &alpha_lit8_symbol); - -#ifdef OBJ_ECOFF - alpha_lit8_literal = add_to_literal_pool (alpha_lit8_symbol, 0x8000, - alpha_lita_section, 8); - if (alpha_lit8_literal >= 0x8000) - as_fatal (_("overflow in literal (.lita) table")); -#endif - } - - lit = add_to_literal_pool (NULL, addend, alpha_lit8_section, 8) - 0x8000; - if (lit >= 0x8000) - as_fatal (_("overflow in literal (.lit8) table")); - - /* emit "lda litreg, .lit8+0x8000" */ - - if (targreg == basereg) - { - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - if (targreg == AXP_REG_AT) - as_bad (_("macro requires $at while $at in use")); - - set_tok_reg (newtok[0], AXP_REG_AT); - } - else - set_tok_reg (newtok[0], targreg); -#ifdef OBJ_ECOFF - set_tok_sym (newtok[1], alpha_lita_symbol, alpha_lit8_literal); -#endif -#ifdef OBJ_ELF - set_tok_sym (newtok[1], alpha_lit8_symbol, 0x8000); -#endif - set_tok_preg (newtok[2], alpha_gp_register); - - assemble_tokens_to_insn ("ldq", newtok, 3, &insn); - - assert (insn.nfixups == 1); -#ifdef OBJ_ECOFF - insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITERAL; -#endif -#ifdef OBJ_ELF - insn.fixups[0].reloc = BFD_RELOC_ALPHA_ELF_LITERAL; -#endif - insn.sequence = seq_num; - - emit_insn (&insn); - - /* emit "ldq litreg, lit(litreg)" */ - - set_tok_const (newtok[1], lit); - set_tok_preg (newtok[2], newtok[0].X_add_number); - - assemble_tokens_to_insn ("ldq", newtok, 3, &insn); - - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = seq_num; - emit_lituse = 0; - - emit_insn (&insn); - - /* emit "addq litreg, base, target" */ - - if (basereg != AXP_REG_ZERO) - { - set_tok_reg (newtok[1], basereg); - set_tok_reg (newtok[2], targreg); - assemble_tokens ("addq", newtok, 3, 0); - } -#endif /* !OBJ_EVAX */ - - if (poffset) - set_tok_const (*poffset, 0); - *pbasereg = targreg; - } - else - { - offsetT low, high, extra, tmp; - - /* for 32-bit operands, break up the addend */ - - low = sign_extend_16 (addend); - tmp = addend - low; - high = sign_extend_16 (tmp >> 16); - - if (tmp - (high << 16)) - { - extra = 0x4000; - tmp -= 0x40000000; - high = sign_extend_16 (tmp >> 16); - } - else - extra = 0; - - set_tok_reg (newtok[0], targreg); - set_tok_preg (newtok[2], basereg); - - if (extra) - { - /* emit "ldah r, extra(r) */ - set_tok_const (newtok[1], extra); - assemble_tokens ("ldah", newtok, 3, 0); - set_tok_preg (newtok[2], basereg = targreg); - } - - if (high) - { - /* emit "ldah r, high(r) */ - set_tok_const (newtok[1], high); - assemble_tokens ("ldah", newtok, 3, 0); - basereg = targreg; - set_tok_preg (newtok[2], basereg); - } - - if ((low && !poffset) || (!poffset && basereg != targreg)) - { - /* emit "lda r, low(base)" */ - set_tok_const (newtok[1], low); - assemble_tokens ("lda", newtok, 3, 0); - basereg = targreg; - low = 0; - } - - if (poffset) - set_tok_const (*poffset, low); - *pbasereg = basereg; - } - - return emit_lituse; -} - -/* The lda macro differs from the lda instruction in that it handles - most simple expressions, particularly symbol address loads and - large constants. */ - -static void -emit_lda (tok, ntok, unused) - const expressionS *tok; - int ntok; - const PTR unused ATTRIBUTE_UNUSED; -{ - int basereg; - - if (ntok == 2) - basereg = (tok[1].X_op == O_constant ? AXP_REG_ZERO : alpha_gp_register); - else - basereg = tok[2].X_add_number; - - (void) load_expression (tok[0].X_add_number, &tok[1], &basereg, NULL); -} - -/* The ldah macro differs from the ldah instruction in that it has $31 - as an implied base register. */ - -static void -emit_ldah (tok, ntok, unused) - const expressionS *tok; - int ntok ATTRIBUTE_UNUSED; - const PTR unused ATTRIBUTE_UNUSED; -{ - expressionS newtok[3]; - - newtok[0] = tok[0]; - newtok[1] = tok[1]; - set_tok_preg (newtok[2], AXP_REG_ZERO); - - assemble_tokens ("ldah", newtok, 3, 0); -} - -/* Handle all "simple" integer register loads -- ldq, ldq_l, ldq_u, - etc. They differ from the real instructions in that they do simple - expressions like the lda macro. */ - -static void -emit_ir_load (tok, ntok, opname) - const expressionS *tok; - int ntok; - const PTR opname; -{ - int basereg; - long lituse; - expressionS newtok[3]; - struct alpha_insn insn; - - if (ntok == 2) - basereg = (tok[1].X_op == O_constant ? AXP_REG_ZERO : alpha_gp_register); - else - basereg = tok[2].X_add_number; - - lituse = load_expression (tok[0].X_add_number, &tok[1], &basereg, - &newtok[1]); - - newtok[0] = tok[0]; - set_tok_preg (newtok[2], basereg); - - assemble_tokens_to_insn ((const char *) opname, newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); -} - -/* Handle fp register loads, and both integer and fp register stores. - Again, we handle simple expressions. */ - -static void -emit_loadstore (tok, ntok, opname) - const expressionS *tok; - int ntok; - const PTR opname; -{ - int basereg; - long lituse; - expressionS newtok[3]; - struct alpha_insn insn; - - if (ntok == 2) - basereg = (tok[1].X_op == O_constant ? AXP_REG_ZERO : alpha_gp_register); - else - basereg = tok[2].X_add_number; - - if (tok[1].X_op != O_constant || !range_signed_16 (tok[1].X_add_number)) - { - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - - lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, &newtok[1]); - } - else - { - newtok[1] = tok[1]; - lituse = 0; - } - - newtok[0] = tok[0]; - set_tok_preg (newtok[2], basereg); - - assemble_tokens_to_insn ((const char *) opname, newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); -} - -/* Load a half-word or byte as an unsigned value. */ - -static void -emit_ldXu (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - if (alpha_target & AXP_OPCODE_BWX) - emit_ir_load (tok, ntok, ldXu_op[(long) vlgsize]); - else - { - expressionS newtok[3]; - struct alpha_insn insn; - int basereg; - long lituse; - - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - - if (ntok == 2) - basereg = (tok[1].X_op == O_constant - ? AXP_REG_ZERO : alpha_gp_register); - else - basereg = tok[2].X_add_number; - - /* emit "lda $at, exp" */ - - lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, NULL); - - /* emit "ldq_u targ, 0($at)" */ - - newtok[0] = tok[0]; - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], basereg); - assemble_tokens_to_insn ("ldq_u", newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); - - /* emit "extXl targ, $at, targ" */ - - set_tok_reg (newtok[1], basereg); - newtok[2] = newtok[0]; - assemble_tokens_to_insn (extXl_op[(long) vlgsize], newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BYTOFF; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); - } -} - -/* Load a half-word or byte as a signed value. */ - -static void -emit_ldX (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - emit_ldXu (tok, ntok, vlgsize); - assemble_tokens (sextX_op[(long) vlgsize], tok, 1, 1); -} - -/* Load an integral value from an unaligned address as an unsigned - value. */ - -static void -emit_uldXu (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - long lgsize = (long) vlgsize; - expressionS newtok[3]; - - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - - /* emit "lda $at, exp" */ - - memcpy (newtok, tok, sizeof (expressionS) * ntok); - newtok[0].X_add_number = AXP_REG_AT; - assemble_tokens ("lda", newtok, ntok, 1); - - /* emit "ldq_u $t9, 0($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens ("ldq_u", newtok, 3, 1); - - /* emit "ldq_u $t10, size-1($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_const (newtok[1], (1 << lgsize) - 1); - assemble_tokens ("ldq_u", newtok, 3, 1); - - /* emit "extXl $t9, $at, $t9" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_reg (newtok[1], AXP_REG_AT); - set_tok_reg (newtok[2], AXP_REG_T9); - assemble_tokens (extXl_op[lgsize], newtok, 3, 1); - - /* emit "extXh $t10, $at, $t10" */ - - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_reg (newtok[2], AXP_REG_T10); - assemble_tokens (extXh_op[lgsize], newtok, 3, 1); - - /* emit "or $t9, $t10, targ" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_reg (newtok[1], AXP_REG_T10); - newtok[2] = tok[0]; - assemble_tokens ("or", newtok, 3, 1); -} - -/* Load an integral value from an unaligned address as a signed value. - Note that quads should get funneled to the unsigned load since we - don't have to do the sign extension. */ - -static void -emit_uldX (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - emit_uldXu (tok, ntok, vlgsize); - assemble_tokens (sextX_op[(long) vlgsize], tok, 1, 1); -} - -/* Implement the ldil macro. */ - -static void -emit_ldil (tok, ntok, unused) - const expressionS *tok; - int ntok; - const PTR unused ATTRIBUTE_UNUSED; -{ - expressionS newtok[2]; - - memcpy (newtok, tok, sizeof (newtok)); - newtok[1].X_add_number = sign_extend_32 (tok[1].X_add_number); - - assemble_tokens ("lda", newtok, ntok, 1); -} - -/* Store a half-word or byte. */ - -static void -emit_stX (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - int lgsize = (int) (long) vlgsize; - - if (alpha_target & AXP_OPCODE_BWX) - emit_loadstore (tok, ntok, stX_op[lgsize]); - else - { - expressionS newtok[3]; - struct alpha_insn insn; - int basereg; - long lituse; - - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - - if (ntok == 2) - basereg = (tok[1].X_op == O_constant - ? AXP_REG_ZERO : alpha_gp_register); - else - basereg = tok[2].X_add_number; - - /* emit "lda $at, exp" */ - - lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, NULL); - - /* emit "ldq_u $t9, 0($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], basereg); - assemble_tokens_to_insn ("ldq_u", newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); - - /* emit "insXl src, $at, $t10" */ - - newtok[0] = tok[0]; - set_tok_reg (newtok[1], basereg); - set_tok_reg (newtok[2], AXP_REG_T10); - assemble_tokens_to_insn (insXl_op[lgsize], newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BYTOFF; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); - - /* emit "mskXl $t9, $at, $t9" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - newtok[2] = newtok[0]; - assemble_tokens_to_insn (mskXl_op[lgsize], newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BYTOFF; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); - - /* emit "or $t9, $t10, $t9" */ - - set_tok_reg (newtok[1], AXP_REG_T10); - assemble_tokens ("or", newtok, 3, 1); - - /* emit "stq_u $t9, 0($at) */ - - set_tok_const(newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens_to_insn ("stq_u", newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); - } -} - -/* Store an integer to an unaligned address. */ - -static void -emit_ustX (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - int lgsize = (int) (long) vlgsize; - expressionS newtok[3]; - - /* emit "lda $at, exp" */ - - memcpy (newtok, tok, sizeof (expressionS) * ntok); - newtok[0].X_add_number = AXP_REG_AT; - assemble_tokens ("lda", newtok, ntok, 1); - - /* emit "ldq_u $9, 0($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens ("ldq_u", newtok, 3, 1); - - /* emit "ldq_u $10, size-1($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_const (newtok[1], (1 << lgsize) - 1); - assemble_tokens ("ldq_u", newtok, 3, 1); - - /* emit "insXl src, $at, $t11" */ - - newtok[0] = tok[0]; - set_tok_reg (newtok[1], AXP_REG_AT); - set_tok_reg (newtok[2], AXP_REG_T11); - assemble_tokens (insXl_op[lgsize], newtok, 3, 1); - - /* emit "insXh src, $at, $t12" */ - - set_tok_reg (newtok[2], AXP_REG_T12); - assemble_tokens (insXh_op[lgsize], newtok, 3, 1); - - /* emit "mskXl $t9, $at, $t9" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - newtok[2] = newtok[0]; - assemble_tokens (mskXl_op[lgsize], newtok, 3, 1); - - /* emit "mskXh $t10, $at, $t10" */ - - set_tok_reg (newtok[0], AXP_REG_T10); - newtok[2] = newtok[0]; - assemble_tokens (mskXh_op[lgsize], newtok, 3, 1); - - /* emit "or $t9, $t11, $t9" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_reg (newtok[1], AXP_REG_T11); - newtok[2] = newtok[0]; - assemble_tokens ("or", newtok, 3, 1); - - /* emit "or $t10, $t12, $t10" */ - - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_reg (newtok[1], AXP_REG_T12); - newtok[2] = newtok[0]; - assemble_tokens ("or", newtok, 3, 1); - - /* emit "stq_u $t9, 0($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens ("stq_u", newtok, 3, 1); - - /* emit "stq_u $t10, size-1($at)" */ - - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_const (newtok[1], (1 << lgsize) - 1); - assemble_tokens ("stq_u", newtok, 3, 1); -} - -/* Sign extend a half-word or byte. The 32-bit sign extend is - implemented as "addl $31, $r, $t" in the opcode table. */ - -static void -emit_sextX (tok, ntok, vlgsize) - const expressionS *tok; - int ntok; - const PTR vlgsize; -{ - long lgsize = (long) vlgsize; - - if (alpha_target & AXP_OPCODE_BWX) - assemble_tokens (sextX_op[lgsize], tok, ntok, 0); - else - { - int bitshift = 64 - 8 * (1 << lgsize); - expressionS newtok[3]; - - /* emit "sll src,bits,dst" */ - - newtok[0] = tok[0]; - set_tok_const (newtok[1], bitshift); - newtok[2] = tok[ntok - 1]; - assemble_tokens ("sll", newtok, 3, 1); - - /* emit "sra dst,bits,dst" */ - - newtok[0] = newtok[2]; - assemble_tokens ("sra", newtok, 3, 1); - } -} - -/* Implement the division and modulus macros. */ - -#ifdef OBJ_EVAX - -/* Make register usage like in normal procedure call. - Don't clobber PV and RA. */ - -static void -emit_division (tok, ntok, symname) - const expressionS *tok; - int ntok; - const PTR symname; -{ - /* DIVISION and MODULUS. Yech. - - Convert - OP x,y,result - to - mov x,R16 # if x != R16 - mov y,R17 # if y != R17 - lda AT,__OP - jsr AT,(AT),0 - mov R0,result - - with appropriate optimizations if R0,R16,R17 are the registers - specified by the compiler. */ - - int xr, yr, rr; - symbolS *sym; - expressionS newtok[3]; - - xr = regno (tok[0].X_add_number); - yr = regno (tok[1].X_add_number); - - if (ntok < 3) - rr = xr; - else - rr = regno (tok[2].X_add_number); - - /* Move the operands into the right place. */ - if (yr == AXP_REG_R16 && xr == AXP_REG_R17) - { - /* They are in exactly the wrong order -- swap through AT. */ - - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - - set_tok_reg (newtok[0], AXP_REG_R16); - set_tok_reg (newtok[1], AXP_REG_AT); - assemble_tokens ("mov", newtok, 2, 1); - - set_tok_reg (newtok[0], AXP_REG_R17); - set_tok_reg (newtok[1], AXP_REG_R16); - assemble_tokens ("mov", newtok, 2, 1); - - set_tok_reg (newtok[0], AXP_REG_AT); - set_tok_reg (newtok[1], AXP_REG_R17); - assemble_tokens ("mov", newtok, 2, 1); - } - else - { - if (yr == AXP_REG_R16) - { - set_tok_reg (newtok[0], AXP_REG_R16); - set_tok_reg (newtok[1], AXP_REG_R17); - assemble_tokens ("mov", newtok, 2, 1); - } - - if (xr != AXP_REG_R16) - { - set_tok_reg (newtok[0], xr); - set_tok_reg (newtok[1], AXP_REG_R16); - assemble_tokens ("mov", newtok, 2, 1); - } - - if (yr != AXP_REG_R16 && yr != AXP_REG_R17) - { - set_tok_reg (newtok[0], yr); - set_tok_reg (newtok[1], AXP_REG_R17); - assemble_tokens ("mov", newtok, 2, 1); - } - } - - sym = symbol_find_or_make ((const char *) symname); - - set_tok_reg (newtok[0], AXP_REG_AT); - set_tok_sym (newtok[1], sym, 0); - assemble_tokens ("lda", newtok, 2, 1); - - /* Call the division routine. */ - set_tok_reg (newtok[0], AXP_REG_AT); - set_tok_cpreg (newtok[1], AXP_REG_AT); - set_tok_const (newtok[2], 0); - assemble_tokens ("jsr", newtok, 3, 1); - - /* Move the result to the right place. */ - if (rr != AXP_REG_R0) - { - set_tok_reg (newtok[0], AXP_REG_R0); - set_tok_reg (newtok[1], rr); - assemble_tokens ("mov", newtok, 2, 1); - } -} - -#else /* !OBJ_EVAX */ - -static void -emit_division (tok, ntok, symname) - const expressionS *tok; - int ntok; - const PTR symname; -{ - /* DIVISION and MODULUS. Yech. - Convert - OP x,y,result - to - lda pv,__OP - mov x,t10 - mov y,t11 - jsr t9,(pv),__OP - mov t12,result - - with appropriate optimizations if t10,t11,t12 are the registers - specified by the compiler. */ - - int xr, yr, rr; - symbolS *sym; - expressionS newtok[3]; - - xr = regno (tok[0].X_add_number); - yr = regno (tok[1].X_add_number); - - if (ntok < 3) - rr = xr; - else - rr = regno (tok[2].X_add_number); - - sym = symbol_find_or_make ((const char *) symname); - - /* Move the operands into the right place. */ - if (yr == AXP_REG_T10 && xr == AXP_REG_T11) - { - /* They are in exactly the wrong order -- swap through AT. */ - if (alpha_noat_on) - as_bad (_("macro requires $at register while noat in effect")); - - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_reg (newtok[1], AXP_REG_AT); - assemble_tokens ("mov", newtok, 2, 1); - - set_tok_reg (newtok[0], AXP_REG_T11); - set_tok_reg (newtok[1], AXP_REG_T10); - assemble_tokens ("mov", newtok, 2, 1); - - set_tok_reg (newtok[0], AXP_REG_AT); - set_tok_reg (newtok[1], AXP_REG_T11); - assemble_tokens ("mov", newtok, 2, 1); - } - else - { - if (yr == AXP_REG_T10) - { - set_tok_reg (newtok[0], AXP_REG_T10); - set_tok_reg (newtok[1], AXP_REG_T11); - assemble_tokens ("mov", newtok, 2, 1); - } - - if (xr != AXP_REG_T10) - { - set_tok_reg (newtok[0], xr); - set_tok_reg (newtok[1], AXP_REG_T10); - assemble_tokens ("mov", newtok, 2, 1); - } - - if (yr != AXP_REG_T10 && yr != AXP_REG_T11) - { - set_tok_reg (newtok[0], yr); - set_tok_reg (newtok[1], AXP_REG_T11); - assemble_tokens ("mov", newtok, 2, 1); - } - } - - /* Call the division routine. */ - set_tok_reg (newtok[0], AXP_REG_T9); - set_tok_sym (newtok[1], sym, 0); - assemble_tokens ("jsr", newtok, 2, 1); - - /* Reload the GP register. */ -#ifdef OBJ_AOUT -FIXME -#endif -#if defined(OBJ_ECOFF) || defined(OBJ_ELF) - set_tok_reg (newtok[0], alpha_gp_register); - set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_T9); - assemble_tokens ("ldgp", newtok, 3, 1); -#endif - - /* Move the result to the right place. */ - if (rr != AXP_REG_T12) - { - set_tok_reg (newtok[0], AXP_REG_T12); - set_tok_reg (newtok[1], rr); - assemble_tokens ("mov", newtok, 2, 1); - } -} - -#endif /* !OBJ_EVAX */ - -/* The jsr and jmp macros differ from their instruction counterparts - in that they can load the target address and default most - everything. */ - -static void -emit_jsrjmp (tok, ntok, vopname) - const expressionS *tok; - int ntok; - const PTR vopname; -{ - const char *opname = (const char *) vopname; - struct alpha_insn insn; - expressionS newtok[3]; - int r, tokidx = 0; - long lituse = 0; - - if (tokidx < ntok && tok[tokidx].X_op == O_register) - r = regno (tok[tokidx++].X_add_number); - else - r = strcmp (opname, "jmp") == 0 ? AXP_REG_ZERO : AXP_REG_RA; - - set_tok_reg (newtok[0], r); - - if (tokidx < ntok && - (tok[tokidx].X_op == O_pregister || tok[tokidx].X_op == O_cpregister)) - r = regno (tok[tokidx++].X_add_number); -#ifdef OBJ_EVAX - /* keep register if jsr $n. */ -#else - else - { - int basereg = alpha_gp_register; - lituse = load_expression (r = AXP_REG_PV, &tok[tokidx], &basereg, NULL); - } -#endif - - set_tok_cpreg (newtok[1], r); - -#ifdef OBJ_EVAX - /* FIXME: Add hint relocs to BFD for evax. */ -#else - if (tokidx < ntok) - newtok[2] = tok[tokidx]; - else -#endif - set_tok_const (newtok[2], 0); - - assemble_tokens_to_insn (opname, newtok, 3, &insn); - - if (lituse) - { - assert (insn.nfixups < MAX_INSN_FIXUPS); - insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_JSR; - insn.fixups[insn.nfixups].exp.X_op = O_absent; - insn.nfixups++; - insn.sequence = lituse; - } - - emit_insn (&insn); -} - -/* The ret and jcr instructions differ from their instruction - counterparts in that everything can be defaulted. */ - -static void -emit_retjcr (tok, ntok, vopname) - const expressionS *tok; - int ntok; - const PTR vopname; -{ - const char *opname = (const char *) vopname; - expressionS newtok[3]; - int r, tokidx = 0; - - if (tokidx < ntok && tok[tokidx].X_op == O_register) - r = regno (tok[tokidx++].X_add_number); - else - r = AXP_REG_ZERO; - - set_tok_reg (newtok[0], r); - - if (tokidx < ntok && - (tok[tokidx].X_op == O_pregister || tok[tokidx].X_op == O_cpregister)) - r = regno (tok[tokidx++].X_add_number); - else - r = AXP_REG_RA; - - set_tok_cpreg (newtok[1], r); - - if (tokidx < ntok) - newtok[2] = tok[tokidx]; - else - set_tok_const (newtok[2], strcmp (opname, "ret") == 0); - - assemble_tokens (opname, newtok, 3, 0); -} - -/* Assembler directives. */ - -/* Handle the .text pseudo-op. This is like the usual one, but it - clears alpha_insn_label and restores auto alignment. */ - -static void -s_alpha_text (i) - int i; - -{ -#ifdef OBJ_ELF - obj_elf_text (i); -#else - s_text (i); -#endif - alpha_insn_label = NULL; - alpha_auto_align_on = 1; - alpha_current_align = 0; -} - -/* Handle the .data pseudo-op. This is like the usual one, but it - clears alpha_insn_label and restores auto alignment. */ - -static void -s_alpha_data (i) - int i; -{ -#ifdef OBJ_ELF - obj_elf_data (i); -#else - s_data (i); -#endif - alpha_insn_label = NULL; - alpha_auto_align_on = 1; - alpha_current_align = 0; -} - -#if defined (OBJ_ECOFF) || defined (OBJ_EVAX) - -/* Handle the OSF/1 and openVMS .comm pseudo quirks. - openVMS constructs a section for every common symbol. */ - -static void -s_alpha_comm (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - register char *name; - register char c; - register char *p; - offsetT temp; - register symbolS *symbolP; - -#ifdef OBJ_EVAX - segT current_section = now_seg; - int current_subsec = now_subseg; - segT new_seg; -#endif - - name = input_line_pointer; - c = get_symbol_end (); - - /* just after name is now '\0' */ - p = input_line_pointer; - *p = c; - - SKIP_WHITESPACE (); - - /* Alpha OSF/1 compiler doesn't provide the comma, gcc does. */ - if (*input_line_pointer == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - } - if ((temp = get_absolute_expression ()) < 0) - { - as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) temp); - ignore_rest_of_line (); - return; - } - - *p = 0; - symbolP = symbol_find_or_make (name); - -#ifdef OBJ_EVAX - /* Make a section for the common symbol. */ - new_seg = subseg_new (xstrdup (name), 0); -#endif - - *p = c; - -#ifdef OBJ_EVAX - /* alignment might follow */ - if (*input_line_pointer == ',') - { - offsetT align; - - input_line_pointer++; - align = get_absolute_expression (); - bfd_set_section_alignment (stdoutput, new_seg, align); - } -#endif - - if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP)) - { - as_bad (_("Ignoring attempt to re-define symbol")); - ignore_rest_of_line (); - return; - } - -#ifdef OBJ_EVAX - if (bfd_section_size (stdoutput, new_seg) > 0) - { - if (bfd_section_size (stdoutput, new_seg) != temp) - as_bad (_("Length of .comm \"%s\" is already %ld. Not changed to %ld."), - S_GET_NAME (symbolP), - (long) bfd_section_size (stdoutput, new_seg), - (long) temp); - } -#else - if (S_GET_VALUE (symbolP)) - { - if (S_GET_VALUE (symbolP) != (valueT) temp) - as_bad (_("Length of .comm \"%s\" is already %ld. Not changed to %ld."), - S_GET_NAME (symbolP), - (long) S_GET_VALUE (symbolP), - (long) temp); - } -#endif - else - { -#ifdef OBJ_EVAX - subseg_set (new_seg, 0); - p = frag_more (temp); - new_seg->flags |= SEC_IS_COMMON; - if (! S_IS_DEFINED (symbolP)) - S_SET_SEGMENT (symbolP, new_seg); -#else - S_SET_VALUE (symbolP, (valueT) temp); -#endif - S_SET_EXTERNAL (symbolP); - } - -#ifdef OBJ_EVAX - subseg_set (current_section, current_subsec); -#endif - - know (symbol_get_frag (symbolP) == &zero_address_frag); - - demand_empty_rest_of_line (); -} - -#endif /* ! OBJ_ELF */ - -#ifdef OBJ_ECOFF - -/* Handle the .rdata pseudo-op. This is like the usual one, but it - clears alpha_insn_label and restores auto alignment. */ - -static void -s_alpha_rdata (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int temp; - - temp = get_absolute_expression (); - subseg_new (".rdata", 0); - demand_empty_rest_of_line (); - alpha_insn_label = NULL; - alpha_auto_align_on = 1; - alpha_current_align = 0; -} - -#endif - -#ifdef OBJ_ECOFF - -/* Handle the .sdata pseudo-op. This is like the usual one, but it - clears alpha_insn_label and restores auto alignment. */ - -static void -s_alpha_sdata (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int temp; - - temp = get_absolute_expression (); - subseg_new (".sdata", 0); - demand_empty_rest_of_line (); - alpha_insn_label = NULL; - alpha_auto_align_on = 1; - alpha_current_align = 0; -} -#endif - -#ifdef OBJ_ELF -struct alpha_elf_frame_data -{ - symbolS *func_sym; - symbolS *func_end_sym; - symbolS *prologue_sym; - unsigned int mask; - unsigned int fmask; - int fp_regno; - int ra_regno; - offsetT frame_size; - offsetT mask_offset; - offsetT fmask_offset; - - struct alpha_elf_frame_data *next; -}; - -static struct alpha_elf_frame_data *all_frame_data; -static struct alpha_elf_frame_data **plast_frame_data = &all_frame_data; -static struct alpha_elf_frame_data *cur_frame_data; - -/* Handle the .section pseudo-op. This is like the usual one, but it - clears alpha_insn_label and restores auto alignment. */ - -static void -s_alpha_section (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - obj_elf_section (ignore); - - alpha_insn_label = NULL; - alpha_auto_align_on = 1; - alpha_current_align = 0; -} - -static void -s_alpha_ent (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - if (ECOFF_DEBUGGING) - ecoff_directive_ent (0); - else - { - char *name, name_end; - name = input_line_pointer; - name_end = get_symbol_end (); - - if (! is_name_beginner (*name)) - { - as_warn (_(".ent directive has no name")); - *input_line_pointer = name_end; - } - else - { - symbolS *sym; - - if (cur_frame_data) - as_warn (_("nested .ent directives")); - - sym = symbol_find_or_make (name); - symbol_get_bfdsym (sym)->flags |= BSF_FUNCTION; - - cur_frame_data = calloc (1, sizeof (*cur_frame_data)); - cur_frame_data->func_sym = sym; - - /* Provide sensible defaults. */ - cur_frame_data->fp_regno = 30; /* sp */ - cur_frame_data->ra_regno = 26; /* ra */ - - *plast_frame_data = cur_frame_data; - plast_frame_data = &cur_frame_data->next; - - /* The .ent directive is sometimes followed by a number. Not sure - what it really means, but ignore it. */ - *input_line_pointer = name_end; - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - { - input_line_pointer++; - SKIP_WHITESPACE (); - } - if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-') - (void) get_absolute_expression (); - } - demand_empty_rest_of_line (); - } -} - -static void -s_alpha_end (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - if (ECOFF_DEBUGGING) - ecoff_directive_end (0); - else - { - char *name, name_end; - name = input_line_pointer; - name_end = get_symbol_end (); - - if (! is_name_beginner (*name)) - { - as_warn (_(".end directive has no name")); - *input_line_pointer = name_end; - } - else - { - symbolS *sym; - - sym = symbol_find (name); - if (!cur_frame_data) - as_warn (_(".end directive without matching .ent")); - else if (sym != cur_frame_data->func_sym) - as_warn (_(".end directive names different symbol than .ent")); - - /* Create an expression to calculate the size of the function. */ - if (sym && cur_frame_data) - { - OBJ_SYMFIELD_TYPE *obj = symbol_get_obj (sym); - expressionS *exp = xmalloc (sizeof (expressionS)); - - obj->size = exp; - exp->X_op = O_subtract; - exp->X_add_symbol = symbol_temp_new_now (); - exp->X_op_symbol = sym; - exp->X_add_number = 0; - - cur_frame_data->func_end_sym = exp->X_add_symbol; - } - - cur_frame_data = NULL; - - *input_line_pointer = name_end; - } - demand_empty_rest_of_line (); - } -} - -static void -s_alpha_mask (fp) - int fp; -{ - if (ECOFF_DEBUGGING) - { - if (fp) - ecoff_directive_fmask (0); - else - ecoff_directive_mask (0); - } - else - { - long val; - offsetT offset; - - if (!cur_frame_data) - { - if (fp) - as_warn (_(".fmask outside of .ent")); - else - as_warn (_(".mask outside of .ent")); - discard_rest_of_line (); - return; - } - - if (get_absolute_expression_and_terminator (&val) != ',') - { - if (fp) - as_warn (_("bad .fmask directive")); - else - as_warn (_("bad .mask directive")); - --input_line_pointer; - discard_rest_of_line (); - return; - } - - offset = get_absolute_expression (); - demand_empty_rest_of_line (); - - if (fp) - { - cur_frame_data->fmask = val; - cur_frame_data->fmask_offset = offset; - } - else - { - cur_frame_data->mask = val; - cur_frame_data->mask_offset = offset; - } - } -} - -static void -s_alpha_frame (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - if (ECOFF_DEBUGGING) - ecoff_directive_frame (0); - else - { - long val; - - if (!cur_frame_data) - { - as_warn (_(".frame outside of .ent")); - discard_rest_of_line (); - return; - } - - cur_frame_data->fp_regno = tc_get_register (1); - - SKIP_WHITESPACE (); - if (*input_line_pointer++ != ',' - || get_absolute_expression_and_terminator (&val) != ',') - { - as_warn (_("bad .frame directive")); - --input_line_pointer; - discard_rest_of_line (); - return; - } - cur_frame_data->frame_size = val; - - cur_frame_data->ra_regno = tc_get_register (0); - - /* Next comes the "offset of saved $a0 from $sp". In gcc terms - this is current_function_pretend_args_size. There's no place - to put this value, so ignore it. */ - s_ignore (42); - } -} - -static void -s_alpha_prologue (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - symbolS *sym; - int arg; - - arg = get_absolute_expression (); - demand_empty_rest_of_line (); - - if (ECOFF_DEBUGGING) - sym = ecoff_get_cur_proc_sym (); - else - sym = cur_frame_data ? cur_frame_data->func_sym : NULL; - - if (sym == NULL) - { - as_bad (_(".prologue directive without a preceding .ent directive")); - return; - } - - switch (arg) - { - case 0: /* No PV required. */ - S_SET_OTHER (sym, STO_ALPHA_NOPV - | (S_GET_OTHER (sym) & ~STO_ALPHA_STD_GPLOAD)); - break; - case 1: /* Std GP load. */ - S_SET_OTHER (sym, STO_ALPHA_STD_GPLOAD - | (S_GET_OTHER (sym) & ~STO_ALPHA_STD_GPLOAD)); - break; - case 2: /* Non-std use of PV. */ - break; - - default: - as_bad (_("Invalid argument %d to .prologue."), arg); - break; - } - - if (cur_frame_data) - cur_frame_data->prologue_sym = symbol_temp_new_now (); -} - -static char *first_file_directive; - -static void -s_alpha_file (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* Save the first .file directive we see, so that we can change our - minds about whether ecoff debugging should or shouldn't be enabled. */ - if (alpha_flag_mdebug < 0 && ! first_file_directive) - { - char *start = input_line_pointer; - size_t len; - - discard_rest_of_line (); - - len = input_line_pointer - start; - first_file_directive = xmalloc (len + 1); - memcpy (first_file_directive, start, len); - first_file_directive[len] = '\0'; - - input_line_pointer = start; - } - - if (ECOFF_DEBUGGING) - ecoff_directive_file (0); - else - dwarf2_directive_file (0); -} - -static void -s_alpha_loc (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (ECOFF_DEBUGGING) - ecoff_directive_loc (0); - else - dwarf2_directive_loc (0); -} - -static void -s_alpha_stab (n) - int n; -{ - /* If we've been undecided about mdebug, make up our minds in favour. */ - if (alpha_flag_mdebug < 0) - { - segT sec = subseg_new (".mdebug", 0); - bfd_set_section_flags (stdoutput, sec, SEC_HAS_CONTENTS | SEC_READONLY); - bfd_set_section_alignment (stdoutput, sec, 3); - - ecoff_read_begin_hook (); - - if (first_file_directive) - { - char *save_ilp = input_line_pointer; - input_line_pointer = first_file_directive; - ecoff_directive_file (0); - input_line_pointer = save_ilp; - free (first_file_directive); - } - - alpha_flag_mdebug = 1; - } - s_stab (n); -} - -static void -s_alpha_coff_wrapper (which) - int which; -{ - static void (* const fns[]) PARAMS ((int)) = { - ecoff_directive_begin, - ecoff_directive_bend, - ecoff_directive_def, - ecoff_directive_dim, - ecoff_directive_endef, - ecoff_directive_scl, - ecoff_directive_tag, - ecoff_directive_val, - }; - - assert (which >= 0 && which < (int) (sizeof (fns)/sizeof (*fns))); - - if (ECOFF_DEBUGGING) - (*fns[which]) (0); - else - { - as_bad (_("ECOFF debugging is disabled.")); - ignore_rest_of_line (); - } -} - -/* Called at the end of assembly. Here we emit unwind info for frames - unless the compiler has done it for us. */ - -void -alpha_elf_md_end (void) -{ - struct alpha_elf_frame_data *p; - - if (cur_frame_data) - as_warn (_(".ent directive without matching .end")); - - /* If someone has generated the unwind info themselves, great. */ - if (bfd_get_section_by_name (stdoutput, ".eh_frame") != NULL) - return; - - /* Generate .eh_frame data for the unwind directives specified. */ - for (p = all_frame_data; p ; p = p->next) - if (p->prologue_sym) - { - /* Create a temporary symbol at the same location as our - function symbol. This prevents problems with globals. */ - cfi_new_fde (symbol_temp_new (S_GET_SEGMENT (p->func_sym), - S_GET_VALUE (p->func_sym), - symbol_get_frag (p->func_sym))); - - cfi_set_return_column (p->ra_regno); - cfi_add_CFA_def_cfa_register (30); - if (p->fp_regno != 30 || p->mask || p->fmask || p->frame_size) - { - unsigned int mask; - offsetT offset; - - cfi_add_advance_loc (p->prologue_sym); - - if (p->fp_regno != 30) - if (p->frame_size != 0) - cfi_add_CFA_def_cfa (p->fp_regno, p->frame_size); - else - cfi_add_CFA_def_cfa_register (p->fp_regno); - else if (p->frame_size != 0) - cfi_add_CFA_def_cfa_offset (p->frame_size); - - mask = p->mask; - offset = p->mask_offset; - - /* Recall that $26 is special-cased and stored first. */ - if ((mask >> 26) & 1) - { - cfi_add_CFA_offset (26, offset); - offset += 8; - mask &= ~(1 << 26); - } - while (mask) - { - unsigned int i; - i = mask & -mask; - mask ^= i; - i = ffs (i) - 1; - - cfi_add_CFA_offset (i, offset); - offset += 8; - } - - mask = p->fmask; - offset = p->fmask_offset; - while (mask) - { - unsigned int i; - i = mask & -mask; - mask ^= i; - i = ffs (i) - 1; - - cfi_add_CFA_offset (i + 32, offset); - offset += 8; - } - } - - cfi_end_fde (p->func_end_sym); - } -} - -static void -s_alpha_usepv (int unused ATTRIBUTE_UNUSED) -{ - char *name, name_end; - char *which, which_end; - symbolS *sym; - int other; - - name = input_line_pointer; - name_end = get_symbol_end (); - - if (! is_name_beginner (*name)) - { - as_bad (_(".usepv directive has no name")); - *input_line_pointer = name_end; - ignore_rest_of_line (); - return; - } - - sym = symbol_find_or_make (name); - *input_line_pointer++ = name_end; - - if (name_end != ',') - { - as_bad (_(".usepv directive has no type")); - ignore_rest_of_line (); - return; - } - - SKIP_WHITESPACE (); - which = input_line_pointer; - which_end = get_symbol_end (); - - if (strcmp (which, "no") == 0) - other = STO_ALPHA_NOPV; - else if (strcmp (which, "std") == 0) - other = STO_ALPHA_STD_GPLOAD; - else - { - as_bad (_("unknown argument for .usepv")); - other = 0; - } - - *input_line_pointer = which_end; - demand_empty_rest_of_line (); - - S_SET_OTHER (sym, other | (S_GET_OTHER (sym) & ~STO_ALPHA_STD_GPLOAD)); -} -#endif /* OBJ_ELF */ - -/* Standard calling conventions leaves the CFA at $30 on entry. */ - -void -alpha_cfi_frame_initial_instructions () -{ - cfi_add_CFA_def_cfa_register (30); -} - -#ifdef OBJ_EVAX - -/* Handle the section specific pseudo-op. */ - -static void -s_alpha_section (secid) - int secid; -{ - int temp; -#define EVAX_SECTION_COUNT 5 - static char *section_name[EVAX_SECTION_COUNT + 1] = - { "NULL", ".rdata", ".comm", ".link", ".ctors", ".dtors" }; - - if ((secid <= 0) || (secid > EVAX_SECTION_COUNT)) - { - as_fatal (_("Unknown section directive")); - demand_empty_rest_of_line (); - return; - } - temp = get_absolute_expression (); - subseg_new (section_name[secid], 0); - demand_empty_rest_of_line (); - alpha_insn_label = NULL; - alpha_auto_align_on = 1; - alpha_current_align = 0; -} - -/* Parse .ent directives. */ - -static void -s_alpha_ent (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - symbolS *symbol; - expressionS symexpr; - - alpha_evax_proc.pdsckind = 0; - alpha_evax_proc.framereg = -1; - alpha_evax_proc.framesize = 0; - alpha_evax_proc.rsa_offset = 0; - alpha_evax_proc.ra_save = AXP_REG_RA; - alpha_evax_proc.fp_save = -1; - alpha_evax_proc.imask = 0; - alpha_evax_proc.fmask = 0; - alpha_evax_proc.prologue = 0; - alpha_evax_proc.type = 0; - - expression (&symexpr); - - if (symexpr.X_op != O_symbol) - { - as_fatal (_(".ent directive has no symbol")); - demand_empty_rest_of_line (); - return; - } - - symbol = make_expr_symbol (&symexpr); - symbol_get_bfdsym (symbol)->flags |= BSF_FUNCTION; - alpha_evax_proc.symbol = symbol; - - demand_empty_rest_of_line (); -} - -/* Parse .frame ,,RA, directives. */ - -static void -s_alpha_frame (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - long val; - - alpha_evax_proc.framereg = tc_get_register (1); - - SKIP_WHITESPACE (); - if (*input_line_pointer++ != ',' - || get_absolute_expression_and_terminator (&val) != ',') - { - as_warn (_("Bad .frame directive 1./2. param")); - --input_line_pointer; - demand_empty_rest_of_line (); - return; - } - - alpha_evax_proc.framesize = val; - - (void) tc_get_register (1); - SKIP_WHITESPACE (); - if (*input_line_pointer++ != ',') - { - as_warn (_("Bad .frame directive 3./4. param")); - --input_line_pointer; - demand_empty_rest_of_line (); - return; - } - alpha_evax_proc.rsa_offset = get_absolute_expression (); -} - -static void -s_alpha_pdesc (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char *name; - char name_end; - long val; - register char *p; - expressionS exp; - symbolS *entry_sym; - fixS *fixp; - segment_info_type *seginfo = seg_info (alpha_link_section); - - if (now_seg != alpha_link_section) - { - as_bad (_(".pdesc directive not in link (.link) section")); - demand_empty_rest_of_line (); - return; - } - - if ((alpha_evax_proc.symbol == 0) - || (!S_IS_DEFINED (alpha_evax_proc.symbol))) - { - as_fatal (_(".pdesc has no matching .ent")); - demand_empty_rest_of_line (); - return; - } - - *symbol_get_obj (alpha_evax_proc.symbol) = - (valueT) seginfo->literal_pool_size; - - expression (&exp); - if (exp.X_op != O_symbol) - { - as_warn (_(".pdesc directive has no entry symbol")); - demand_empty_rest_of_line (); - return; - } - - entry_sym = make_expr_symbol (&exp); - /* Save bfd symbol of proc desc in function symbol. */ - symbol_get_bfdsym (alpha_evax_proc.symbol)->udata.p - = symbol_get_bfdsym (entry_sym); - - SKIP_WHITESPACE (); - if (*input_line_pointer++ != ',') - { - as_warn (_("No comma after .pdesc ")); - demand_empty_rest_of_line (); - return; - } - - SKIP_WHITESPACE (); - name = input_line_pointer; - name_end = get_symbol_end (); - - if (strncmp (name, "stack", 5) == 0) - { - alpha_evax_proc.pdsckind = PDSC_S_K_KIND_FP_STACK; - } - else if (strncmp (name, "reg", 3) == 0) - { - alpha_evax_proc.pdsckind = PDSC_S_K_KIND_FP_REGISTER; - } - else if (strncmp (name, "null", 4) == 0) - { - alpha_evax_proc.pdsckind = PDSC_S_K_KIND_NULL; - } - else - { - as_fatal (_("unknown procedure kind")); - demand_empty_rest_of_line (); - return; - } - - *input_line_pointer = name_end; - demand_empty_rest_of_line (); - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - frag_align (3, 0, 0); - p = frag_more (16); - fixp = fix_new (frag_now, p - frag_now->fr_literal, 8, 0, 0, 0, 0); - fixp->fx_done = 1; - seginfo->literal_pool_size += 16; - - *p = alpha_evax_proc.pdsckind - | ((alpha_evax_proc.framereg == 29) ? PDSC_S_M_BASE_REG_IS_FP : 0); - *(p + 1) = PDSC_S_M_NATIVE | PDSC_S_M_NO_JACKET; - - switch (alpha_evax_proc.pdsckind) - { - case PDSC_S_K_KIND_NULL: - *(p + 2) = 0; - *(p + 3) = 0; - break; - case PDSC_S_K_KIND_FP_REGISTER: - *(p + 2) = alpha_evax_proc.fp_save; - *(p + 3) = alpha_evax_proc.ra_save; - break; - case PDSC_S_K_KIND_FP_STACK: - md_number_to_chars (p + 2, (valueT) alpha_evax_proc.rsa_offset, 2); - break; - default: /* impossible */ - break; - } - - *(p + 4) = 0; - *(p + 5) = alpha_evax_proc.type & 0x0f; - - /* Signature offset. */ - md_number_to_chars (p + 6, (valueT) 0, 2); - - fix_new_exp (frag_now, p - frag_now->fr_literal+8, 8, &exp, 0, BFD_RELOC_64); - - if (alpha_evax_proc.pdsckind == PDSC_S_K_KIND_NULL) - return; - - /* Add dummy fix to make add_to_link_pool work. */ - p = frag_more (8); - fixp = fix_new (frag_now, p - frag_now->fr_literal, 8, 0, 0, 0, 0); - fixp->fx_done = 1; - seginfo->literal_pool_size += 8; - - /* pdesc+16: Size. */ - md_number_to_chars (p, (valueT) alpha_evax_proc.framesize, 4); - - md_number_to_chars (p + 4, (valueT) 0, 2); - - /* Entry length. */ - md_number_to_chars (p + 6, alpha_evax_proc.prologue, 2); - - if (alpha_evax_proc.pdsckind == PDSC_S_K_KIND_FP_REGISTER) - return; - - /* Add dummy fix to make add_to_link_pool work. */ - p = frag_more (8); - fixp = fix_new (frag_now, p - frag_now->fr_literal, 8, 0, 0, 0, 0); - fixp->fx_done = 1; - seginfo->literal_pool_size += 8; - - /* pdesc+24: register masks. */ - - md_number_to_chars (p, alpha_evax_proc.imask, 4); - md_number_to_chars (p + 4, alpha_evax_proc.fmask, 4); -} - -/* Support for crash debug on vms. */ - -static void -s_alpha_name (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - register char *p; - expressionS exp; - segment_info_type *seginfo = seg_info (alpha_link_section); - - if (now_seg != alpha_link_section) - { - as_bad (_(".name directive not in link (.link) section")); - demand_empty_rest_of_line (); - return; - } - - expression (&exp); - if (exp.X_op != O_symbol) - { - as_warn (_(".name directive has no symbol")); - demand_empty_rest_of_line (); - return; - } - - demand_empty_rest_of_line (); - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - frag_align (3, 0, 0); - p = frag_more (8); - seginfo->literal_pool_size += 8; - - fix_new_exp (frag_now, p - frag_now->fr_literal, 8, &exp, 0, BFD_RELOC_64); -} - -static void -s_alpha_linkage (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - expressionS exp; - char *p; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - expression (&exp); - if (exp.X_op != O_symbol) - { - as_fatal (_("No symbol after .linkage")); - } - else - { - p = frag_more (LKP_S_K_SIZE); - memset (p, 0, LKP_S_K_SIZE); - fix_new_exp (frag_now, p - frag_now->fr_literal, LKP_S_K_SIZE, &exp, 0,\ - BFD_RELOC_ALPHA_LINKAGE); - } - demand_empty_rest_of_line (); -} - -static void -s_alpha_code_address (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - expressionS exp; - char *p; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - expression (&exp); - if (exp.X_op != O_symbol) - { - as_fatal (_("No symbol after .code_address")); - } - else - { - p = frag_more (8); - memset (p, 0, 8); - fix_new_exp (frag_now, p - frag_now->fr_literal, 8, &exp, 0,\ - BFD_RELOC_ALPHA_CODEADDR); - } - demand_empty_rest_of_line (); -} - -static void -s_alpha_fp_save (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - - alpha_evax_proc.fp_save = tc_get_register (1); - - demand_empty_rest_of_line (); -} - -static void -s_alpha_mask (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - long val; - - if (get_absolute_expression_and_terminator (&val) != ',') - { - as_warn (_("Bad .mask directive")); - --input_line_pointer; - } - else - { - alpha_evax_proc.imask = val; - (void) get_absolute_expression (); - } - demand_empty_rest_of_line (); -} - -static void -s_alpha_fmask (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - long val; - - if (get_absolute_expression_and_terminator (&val) != ',') - { - as_warn (_("Bad .fmask directive")); - --input_line_pointer; - } - else - { - alpha_evax_proc.fmask = val; - (void) get_absolute_expression (); - } - demand_empty_rest_of_line (); -} - -static void -s_alpha_end (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - char c; - - c = get_symbol_end (); - *input_line_pointer = c; - demand_empty_rest_of_line (); - alpha_evax_proc.symbol = 0; -} - -static void -s_alpha_file (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - symbolS *s; - int length; - static char case_hack[32]; - - sprintf (case_hack, "", - alpha_flag_hash_long_names, alpha_flag_show_after_trunc); - - s = symbol_find_or_make (case_hack); - symbol_get_bfdsym (s)->flags |= BSF_FILE; - - get_absolute_expression (); - s = symbol_find_or_make (demand_copy_string (&length)); - symbol_get_bfdsym (s)->flags |= BSF_FILE; - demand_empty_rest_of_line (); -} -#endif /* OBJ_EVAX */ - -/* Handle the .gprel32 pseudo op. */ - -static void -s_alpha_gprel32 (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - expressionS e; - char *p; - - SKIP_WHITESPACE (); - expression (&e); - -#ifdef OBJ_ELF - switch (e.X_op) - { - case O_constant: - e.X_add_symbol = section_symbol (absolute_section); - e.X_op = O_symbol; - /* FALLTHRU */ - case O_symbol: - break; - default: - abort (); - } -#else -#ifdef OBJ_ECOFF - switch (e.X_op) - { - case O_constant: - e.X_add_symbol = section_symbol (absolute_section); - /* fall through */ - case O_symbol: - e.X_op = O_subtract; - e.X_op_symbol = alpha_gp_symbol; - break; - default: - abort (); - } -#endif -#endif - - if (alpha_auto_align_on && alpha_current_align < 2) - alpha_align (2, (char *) NULL, alpha_insn_label, 0); - if (alpha_current_align > 2) - alpha_current_align = 2; - alpha_insn_label = NULL; - - p = frag_more (4); - memset (p, 0, 4); - fix_new_exp (frag_now, p - frag_now->fr_literal, 4, - &e, 0, BFD_RELOC_GPREL32); -} - -/* Handle floating point allocation pseudo-ops. This is like the - generic vresion, but it makes sure the current label, if any, is - correctly aligned. */ - -static void -s_alpha_float_cons (type) - int type; -{ - int log_size; - - switch (type) - { - default: - case 'f': - case 'F': - log_size = 2; - break; - - case 'd': - case 'D': - case 'G': - log_size = 3; - break; - - case 'x': - case 'X': - case 'p': - case 'P': - log_size = 4; - break; - } - - if (alpha_auto_align_on && alpha_current_align < log_size) - alpha_align (log_size, (char *) NULL, alpha_insn_label, 0); - if (alpha_current_align > log_size) - alpha_current_align = log_size; - alpha_insn_label = NULL; - - float_cons (type); -} - -/* Handle the .proc pseudo op. We don't really do much with it except - parse it. */ - -static void -s_alpha_proc (is_static) - int is_static ATTRIBUTE_UNUSED; -{ - char *name; - char c; - char *p; - symbolS *symbolP; - int temp; - - /* Takes ".proc name,nargs" */ - SKIP_WHITESPACE (); - name = input_line_pointer; - c = get_symbol_end (); - p = input_line_pointer; - symbolP = symbol_find_or_make (name); - *p = c; - SKIP_WHITESPACE (); - if (*input_line_pointer != ',') - { - *p = 0; - as_warn (_("Expected comma after name \"%s\""), name); - *p = c; - temp = 0; - ignore_rest_of_line (); - } - else - { - input_line_pointer++; - temp = get_absolute_expression (); - } - /* *symbol_get_obj (symbolP) = (signed char) temp; */ - as_warn (_("unhandled: .proc %s,%d"), name, temp); - demand_empty_rest_of_line (); -} - -/* Handle the .set pseudo op. This is used to turn on and off most of - the assembler features. */ - -static void -s_alpha_set (x) - int x ATTRIBUTE_UNUSED; -{ - char *name, ch, *s; - int yesno = 1; - - SKIP_WHITESPACE (); - name = input_line_pointer; - ch = get_symbol_end (); - - s = name; - if (s[0] == 'n' && s[1] == 'o') - { - yesno = 0; - s += 2; - } - if (!strcmp ("reorder", s)) - /* ignore */ ; - else if (!strcmp ("at", s)) - alpha_noat_on = !yesno; - else if (!strcmp ("macro", s)) - alpha_macros_on = yesno; - else if (!strcmp ("move", s)) - /* ignore */ ; - else if (!strcmp ("volatile", s)) - /* ignore */ ; - else - as_warn (_("Tried to .set unrecognized mode `%s'"), name); - - *input_line_pointer = ch; - demand_empty_rest_of_line (); -} - -/* Handle the .base pseudo op. This changes the assembler's notion of - the $gp register. */ - -static void -s_alpha_base (ignore) - int ignore ATTRIBUTE_UNUSED; -{ -#if 0 - if (first_32bit_quadrant) - { - /* not fatal, but it might not work in the end */ - as_warn (_("File overrides no-base-register option.")); - first_32bit_quadrant = 0; - } -#endif - - SKIP_WHITESPACE (); - if (*input_line_pointer == '$') - { /* $rNN form */ - input_line_pointer++; - if (*input_line_pointer == 'r') - input_line_pointer++; - } - - alpha_gp_register = get_absolute_expression (); - if (alpha_gp_register < 0 || alpha_gp_register > 31) - { - alpha_gp_register = AXP_REG_GP; - as_warn (_("Bad base register, using $%d."), alpha_gp_register); - } - - demand_empty_rest_of_line (); -} - -/* Handle the .align pseudo-op. This aligns to a power of two. It - also adjusts any current instruction label. We treat this the same - way the MIPS port does: .align 0 turns off auto alignment. */ - -static void -s_alpha_align (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int align; - char fill, *pfill; - long max_alignment = 15; - - align = get_absolute_expression (); - if (align > max_alignment) - { - align = max_alignment; - as_bad (_("Alignment too large: %d. assumed"), align); - } - else if (align < 0) - { - as_warn (_("Alignment negative: 0 assumed")); - align = 0; - } - - if (*input_line_pointer == ',') - { - input_line_pointer++; - fill = get_absolute_expression (); - pfill = &fill; - } - else - pfill = NULL; - - if (align != 0) - { - alpha_auto_align_on = 1; - alpha_align (align, pfill, alpha_insn_label, 1); - } - else - { - alpha_auto_align_on = 0; - } - - demand_empty_rest_of_line (); -} - -/* Hook the normal string processor to reset known alignment. */ - -static void -s_alpha_stringer (terminate) - int terminate; -{ - alpha_current_align = 0; - alpha_insn_label = NULL; - stringer (terminate); -} - -/* Hook the normal space processing to reset known alignment. */ - -static void -s_alpha_space (ignore) - int ignore; -{ - alpha_current_align = 0; - alpha_insn_label = NULL; - s_space (ignore); -} - -/* Hook into cons for auto-alignment. */ - -void -alpha_cons_align (size) - int size; -{ - int log_size; - - log_size = 0; - while ((size >>= 1) != 0) - ++log_size; - - if (alpha_auto_align_on && alpha_current_align < log_size) - alpha_align (log_size, (char *) NULL, alpha_insn_label, 0); - if (alpha_current_align > log_size) - alpha_current_align = log_size; - alpha_insn_label = NULL; -} - -/* Here come the .uword, .ulong, and .uquad explicitly unaligned - pseudos. We just turn off auto-alignment and call down to cons. */ - -static void -s_alpha_ucons (bytes) - int bytes; -{ - int hold = alpha_auto_align_on; - alpha_auto_align_on = 0; - cons (bytes); - alpha_auto_align_on = hold; -} - -/* Switch the working cpu type. */ - -static void -s_alpha_arch (ignored) - int ignored ATTRIBUTE_UNUSED; -{ - char *name, ch; - const struct cpu_type *p; - - SKIP_WHITESPACE (); - name = input_line_pointer; - ch = get_symbol_end (); - - for (p = cpu_types; p->name; ++p) - if (strcmp (name, p->name) == 0) - { - alpha_target_name = p->name, alpha_target = p->flags; - goto found; - } - as_warn ("Unknown CPU identifier `%s'", name); - -found: - *input_line_pointer = ch; - demand_empty_rest_of_line (); -} - -#ifdef DEBUG1 -/* print token expression with alpha specific extension. */ - -static void -alpha_print_token (f, exp) - FILE *f; - const expressionS *exp; -{ - switch (exp->X_op) - { - case O_cpregister: - putc (',', f); - /* FALLTHRU */ - case O_pregister: - putc ('(', f); - { - expressionS nexp = *exp; - nexp.X_op = O_register; - print_expr (f, &nexp); - } - putc (')', f); - break; - default: - print_expr (f, exp); - break; - } -} -#endif - -/* The target specific pseudo-ops which we support. */ - -const pseudo_typeS md_pseudo_table[] = { -#ifdef OBJ_ECOFF - {"comm", s_alpha_comm, 0}, /* osf1 compiler does this */ - {"rdata", s_alpha_rdata, 0}, -#endif - {"text", s_alpha_text, 0}, - {"data", s_alpha_data, 0}, -#ifdef OBJ_ECOFF - {"sdata", s_alpha_sdata, 0}, -#endif -#ifdef OBJ_ELF - {"section", s_alpha_section, 0}, - {"section.s", s_alpha_section, 0}, - {"sect", s_alpha_section, 0}, - {"sect.s", s_alpha_section, 0}, -#endif -#ifdef OBJ_EVAX - { "pdesc", s_alpha_pdesc, 0}, - { "name", s_alpha_name, 0}, - { "linkage", s_alpha_linkage, 0}, - { "code_address", s_alpha_code_address, 0}, - { "ent", s_alpha_ent, 0}, - { "frame", s_alpha_frame, 0}, - { "fp_save", s_alpha_fp_save, 0}, - { "mask", s_alpha_mask, 0}, - { "fmask", s_alpha_fmask, 0}, - { "end", s_alpha_end, 0}, - { "file", s_alpha_file, 0}, - { "rdata", s_alpha_section, 1}, - { "comm", s_alpha_comm, 0}, - { "link", s_alpha_section, 3}, - { "ctors", s_alpha_section, 4}, - { "dtors", s_alpha_section, 5}, -#endif -#ifdef OBJ_ELF - /* Frame related pseudos. */ - {"ent", s_alpha_ent, 0}, - {"end", s_alpha_end, 0}, - {"mask", s_alpha_mask, 0}, - {"fmask", s_alpha_mask, 1}, - {"frame", s_alpha_frame, 0}, - {"prologue", s_alpha_prologue, 0}, - {"file", s_alpha_file, 5}, - {"loc", s_alpha_loc, 9}, - {"stabs", s_alpha_stab, 's'}, - {"stabn", s_alpha_stab, 'n'}, - {"usepv", s_alpha_usepv, 0}, - /* COFF debugging related pseudos. */ - {"begin", s_alpha_coff_wrapper, 0}, - {"bend", s_alpha_coff_wrapper, 1}, - {"def", s_alpha_coff_wrapper, 2}, - {"dim", s_alpha_coff_wrapper, 3}, - {"endef", s_alpha_coff_wrapper, 4}, - {"scl", s_alpha_coff_wrapper, 5}, - {"tag", s_alpha_coff_wrapper, 6}, - {"val", s_alpha_coff_wrapper, 7}, -#else - {"prologue", s_ignore, 0}, -#endif - {"gprel32", s_alpha_gprel32, 0}, - {"t_floating", s_alpha_float_cons, 'd'}, - {"s_floating", s_alpha_float_cons, 'f'}, - {"f_floating", s_alpha_float_cons, 'F'}, - {"g_floating", s_alpha_float_cons, 'G'}, - {"d_floating", s_alpha_float_cons, 'D'}, - - {"proc", s_alpha_proc, 0}, - {"aproc", s_alpha_proc, 1}, - {"set", s_alpha_set, 0}, - {"reguse", s_ignore, 0}, - {"livereg", s_ignore, 0}, - {"base", s_alpha_base, 0}, /*??*/ - {"option", s_ignore, 0}, - {"aent", s_ignore, 0}, - {"ugen", s_ignore, 0}, - {"eflag", s_ignore, 0}, - - {"align", s_alpha_align, 0}, - {"double", s_alpha_float_cons, 'd'}, - {"float", s_alpha_float_cons, 'f'}, - {"single", s_alpha_float_cons, 'f'}, - {"ascii", s_alpha_stringer, 0}, - {"asciz", s_alpha_stringer, 1}, - {"string", s_alpha_stringer, 1}, - {"space", s_alpha_space, 0}, - {"skip", s_alpha_space, 0}, - {"zero", s_alpha_space, 0}, - -/* Unaligned data pseudos. */ - {"uword", s_alpha_ucons, 2}, - {"ulong", s_alpha_ucons, 4}, - {"uquad", s_alpha_ucons, 8}, - -#ifdef OBJ_ELF -/* Dwarf wants these versions of unaligned. */ - {"2byte", s_alpha_ucons, 2}, - {"4byte", s_alpha_ucons, 4}, - {"8byte", s_alpha_ucons, 8}, -#endif - -/* We don't do any optimizing, so we can safely ignore these. */ - {"noalias", s_ignore, 0}, - {"alias", s_ignore, 0}, - - {"arch", s_alpha_arch, 0}, - - {NULL, 0, 0}, -}; - -/* Build a BFD section with its flags set appropriately for the .lita, - .lit8, or .lit4 sections. */ - -static void -create_literal_section (name, secp, symp) - const char *name; - segT *secp; - symbolS **symp; -{ - segT current_section = now_seg; - int current_subsec = now_subseg; - segT new_sec; - - *secp = new_sec = subseg_new (name, 0); - subseg_set (current_section, current_subsec); - bfd_set_section_alignment (stdoutput, new_sec, 4); - bfd_set_section_flags (stdoutput, new_sec, - SEC_RELOC | SEC_ALLOC | SEC_LOAD | SEC_READONLY - | SEC_DATA); - - S_CLEAR_EXTERNAL (*symp = section_symbol (new_sec)); -} - -#ifdef OBJ_ECOFF - -/* @@@ GP selection voodoo. All of this seems overly complicated and - unnecessary; which is the primary reason it's for ECOFF only. */ -static inline void maybe_set_gp PARAMS ((asection *)); - -static inline void -maybe_set_gp (sec) - asection *sec; -{ - bfd_vma vma; - if (!sec) - return; - vma = bfd_get_section_vma (foo, sec); - if (vma && vma < alpha_gp_value) - alpha_gp_value = vma; -} - -static void -select_gp_value () -{ - assert (alpha_gp_value == 0); - - /* Get minus-one in whatever width... */ - alpha_gp_value = 0; - alpha_gp_value--; - - /* Select the smallest VMA of these existing sections. */ - maybe_set_gp (alpha_lita_section); -#if 0 - /* These were disabled before -- should we use them? */ - maybe_set_gp (sdata); - maybe_set_gp (lit8_sec); - maybe_set_gp (lit4_sec); -#endif - -/* @@ Will a simple 0x8000 work here? If not, why not? */ -#define GP_ADJUSTMENT (0x8000 - 0x10) - - alpha_gp_value += GP_ADJUSTMENT; - - S_SET_VALUE (alpha_gp_symbol, alpha_gp_value); - -#ifdef DEBUG1 - printf (_("Chose GP value of %lx\n"), alpha_gp_value); -#endif -} -#endif /* OBJ_ECOFF */ - -#ifdef OBJ_ELF -/* Map 's' to SHF_ALPHA_GPREL. */ - -int -alpha_elf_section_letter (letter, ptr_msg) - int letter; - char **ptr_msg; -{ - if (letter == 's') - return SHF_ALPHA_GPREL; - - *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string"); - return -1; -} - -/* Map SHF_ALPHA_GPREL to SEC_SMALL_DATA. */ - -flagword -alpha_elf_section_flags (flags, attr, type) - flagword flags; - int attr, type ATTRIBUTE_UNUSED; -{ - if (attr & SHF_ALPHA_GPREL) - flags |= SEC_SMALL_DATA; - return flags; -} -#endif /* OBJ_ELF */ - -/* Called internally to handle all alignment needs. This takes care - of eliding calls to frag_align if'n the cached current alignment - says we've already got it, as well as taking care of the auto-align - feature wrt labels. */ - -static void -alpha_align (n, pfill, label, force) - int n; - char *pfill; - symbolS *label; - int force ATTRIBUTE_UNUSED; -{ - if (alpha_current_align >= n) - return; - - if (pfill == NULL) - { - if (subseg_text_p (now_seg)) - frag_align_code (n, 0); - else - frag_align (n, 0, 0); - } - else - frag_align (n, *pfill, 0); - - alpha_current_align = n; - - if (label != NULL && S_GET_SEGMENT (label) == now_seg) - { - symbol_set_frag (label, frag_now); - S_SET_VALUE (label, (valueT) frag_now_fix ()); - } - - record_alignment (now_seg, n); - - /* ??? If alpha_flag_relax && force && elf, record the requested alignment - in a reloc for the linker to see. */ -} - -/* This is called from HANDLE_ALIGN in write.c. Fill in the contents - of an rs_align_code fragment. */ - -void -alpha_handle_align (fragp) - fragS *fragp; -{ - static char const unop[4] = { 0x00, 0x00, 0xfe, 0x2f }; - static char const nopunop[8] = { - 0x1f, 0x04, 0xff, 0x47, - 0x00, 0x00, 0xfe, 0x2f - }; - - int bytes, fix; - char *p; - - if (fragp->fr_type != rs_align_code) - return; - - bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix; - p = fragp->fr_literal + fragp->fr_fix; - fix = 0; - - if (bytes & 3) - { - fix = bytes & 3; - memset (p, 0, fix); - p += fix; - bytes -= fix; - } - - if (bytes & 4) - { - memcpy (p, unop, 4); - p += 4; - bytes -= 4; - fix += 4; - } - - memcpy (p, nopunop, 8); - - fragp->fr_fix += fix; - fragp->fr_var = 8; -} - -/* The Alpha has support for some VAX floating point types, as well as for - IEEE floating point. We consider IEEE to be the primary floating point - format, and sneak in the VAX floating point support here. */ -#define md_atof vax_md_atof -#include "config/atof-vax.c" diff --git a/gas/config/tc-alpha.h b/gas/config/tc-alpha.h deleted file mode 100644 index 939a14f29..000000000 --- a/gas/config/tc-alpha.h +++ /dev/null @@ -1,182 +0,0 @@ -/* This file is tc-alpha.h - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. - Written by Ken Raeburn . - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_ALPHA - -#define TARGET_BYTES_BIG_ENDIAN 0 - -#define WORKING_DOT_WORD - -#define TARGET_ARCH bfd_arch_alpha - -#ifdef TE_FreeBSD -#define ELF_TARGET_FORMAT "elf64-alpha-freebsd" -#endif -#ifndef ELF_TARGET_FORMAT -#define ELF_TARGET_FORMAT "elf64-alpha" -#endif - -#define TARGET_FORMAT (OUTPUT_FLAVOR == bfd_target_ecoff_flavour \ - ? "ecoff-littlealpha" \ - : OUTPUT_FLAVOR == bfd_target_elf_flavour \ - ? ELF_TARGET_FORMAT \ - : OUTPUT_FLAVOR == bfd_target_evax_flavour \ - ? "vms-alpha" \ - : "unknown-format") - -#define NEED_LITERAL_POOL -#define REPEAT_CONS_EXPRESSIONS - -struct fix; -struct alpha_reloc_tag; - -extern int alpha_force_relocation PARAMS ((struct fix *)); -extern int alpha_fix_adjustable PARAMS ((struct fix *)); - -extern unsigned long alpha_gprmask, alpha_fprmask; -extern valueT alpha_gp_value; - -#define TC_FORCE_RELOCATION(FIX) alpha_force_relocation (FIX) -#define tc_fix_adjustable(FIX) alpha_fix_adjustable (FIX) -#define RELOC_REQUIRES_SYMBOL - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -#define md_convert_frag(b,s,f) as_fatal ("alpha convert_frag\n") -#define md_estimate_size_before_relax(f,s) \ - (as_fatal ("estimate_size_before_relax called"),1) -#define md_operand(x) - -#ifdef OBJ_EVAX - -/* This field keeps the symbols position in the link section. */ -#define OBJ_SYMFIELD_TYPE valueT - -#define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) \ - fix_new_exp (FRAG, OFF, (int)LEN, EXP, 0, \ - LEN == 2 ? BFD_RELOC_16 \ - : LEN == 4 ? BFD_RELOC_32 \ - : LEN == 8 ? BFD_RELOC_64 \ - : BFD_RELOC_ALPHA_LINKAGE); -#endif - -#ifndef VMS -#define TC_IMPLICIT_LCOMM_ALIGNMENT(size, align) \ - do \ - { \ - align = 0; \ - if (size > 1) \ - { \ - addressT temp = 1; \ - while ((size & temp) == 0) \ - ++align, temp <<= 1; \ - } \ - } \ - while (0) -#endif - -#define md_number_to_chars number_to_chars_littleendian - -extern int tc_get_register PARAMS ((int frame)); -extern void alpha_frob_ecoff_data PARAMS ((void)); - -#define tc_frob_label(sym) alpha_define_label (sym) -extern void alpha_define_label PARAMS ((symbolS *)); - -#define md_cons_align(nbytes) alpha_cons_align (nbytes) -extern void alpha_cons_align PARAMS ((int)); - -#define HANDLE_ALIGN(fragp) alpha_handle_align (fragp) -extern void alpha_handle_align PARAMS ((struct frag *)); - -#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4 + 8) - -#ifdef OBJ_ECOFF -#define tc_frob_file_before_adjust() alpha_frob_file_before_adjust () -extern void alpha_frob_file_before_adjust PARAMS ((void)); -#endif - -#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ - -#ifdef OBJ_ELF -#define md_elf_section_letter alpha_elf_section_letter -extern int alpha_elf_section_letter PARAMS ((int, char **)); -#define md_elf_section_flags alpha_elf_section_flags -extern flagword alpha_elf_section_flags PARAMS ((flagword, int, int)); -#endif - -/* Whether to add support for explicit !relocation_op!sequence_number. At the - moment, only do this for ELF, though ECOFF could use it as well. */ - -#ifdef OBJ_ELF -#define RELOC_OP_P -#endif - -/* Before the relocations are written, reorder them, so that user - supplied !lituse relocations follow the appropriate !literal - relocations. Also convert the gas-internal relocations to the - appropriate linker relocations. */ -#define tc_frob_file_before_fix() alpha_before_fix () -extern void alpha_before_fix PARAMS ((void)); - -#ifdef OBJ_ELF -#define md_end alpha_elf_md_end -extern void alpha_elf_md_end PARAMS ((void)); -#endif - -/* New fields for supporting explicit relocations (such as !literal to mark - where a pointer is loaded from the global table, and !lituse_base to track - all of the normal uses of that pointer). */ - -#define TC_FIX_TYPE struct alpha_fix_tag - -struct alpha_fix_tag -{ - struct fix *next_reloc; /* next !lituse or !gpdisp */ - struct alpha_reloc_tag *info; /* other members with same sequence */ -}; - -/* Initialize the TC_FIX_TYPE field. */ -#define TC_INIT_FIX_DATA(FIX) \ -do { \ - FIX->tc_fix_data.next_reloc = (struct fix *) 0; \ - FIX->tc_fix_data.info = (struct alpha_reloc_tag *) 0; \ -} while (0) - -/* Work with DEBUG5 to print fields in tc_fix_type. */ -#define TC_FIX_DATA_PRINT(STREAM, FIX) \ -do { \ - if (FIX->tc_fix_data.info) \ - fprintf (STREAM, "\tinfo = 0x%lx, next_reloc = 0x%lx\n", \ - (long) FIX->tc_fix_data.info, \ - (long) FIX->tc_fix_data.next_reloc); \ -} while (0) - -#define TARGET_USE_CFIPOP 1 - -#define tc_cfi_frame_initial_instructions alpha_cfi_frame_initial_instructions -extern void alpha_cfi_frame_initial_instructions(void); - -#define DWARF2_LINE_MIN_INSN_LENGTH 4 -#define DWARF2_DEFAULT_RETURN_COLUMN 26 -#define DWARF2_CIE_DATA_ALIGNMENT -8 diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c deleted file mode 100644 index b99fc0b8f..000000000 --- a/gas/config/tc-arc.c +++ /dev/null @@ -1,2033 +0,0 @@ -/* tc-arc.c -- Assembler for the ARC - Copyright 1994, 1995, 1997, 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. - Contributed by Doug Evans (dje@cygnus.com). - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include -#include "libiberty.h" -#include "as.h" -#include "struc-symbol.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "opcode/arc.h" -#include "../opcodes/arc-ext.h" -#include "elf/arc.h" -#include "dwarf2dbg.h" - -extern int arc_get_mach PARAMS ((char *)); -extern int arc_operand_type PARAMS ((int)); -extern int arc_insn_not_jl PARAMS ((arc_insn)); -extern int arc_limm_fixup_adjust PARAMS ((arc_insn)); -extern int arc_get_noshortcut_flag PARAMS ((void)); -extern int arc_set_ext_seg PARAMS ((void)); -extern void arc_code_symbol PARAMS ((expressionS *)); - -static arc_insn arc_insert_operand PARAMS ((arc_insn, - const struct arc_operand *, int, - const struct arc_operand_value *, - offsetT, char *, unsigned int)); -static void arc_common PARAMS ((int)); -static void arc_extinst PARAMS ((int)); -static void arc_extoper PARAMS ((int)); -static void arc_option PARAMS ((int)); -static int get_arc_exp_reloc_type PARAMS ((int, int, expressionS *, - expressionS *)); - -static void init_opcode_tables PARAMS ((int)); - -const struct suffix_classes { - char *name; - int len; -} suffixclass[] = { - { "SUFFIX_COND|SUFFIX_FLAG",23 }, - { "SUFFIX_FLAG", 11 }, - { "SUFFIX_COND", 11 }, - { "SUFFIX_NONE", 11 } -}; - -#define MAXSUFFIXCLASS (sizeof (suffixclass) / sizeof (struct suffix_classes)) - -const struct syntax_classes { - char *name; - int len; - int class; -} syntaxclass[] = { - { "SYNTAX_3OP|OP1_MUST_BE_IMM", 26, SYNTAX_3OP|OP1_MUST_BE_IMM|SYNTAX_VALID }, - { "OP1_MUST_BE_IMM|SYNTAX_3OP", 26, OP1_MUST_BE_IMM|SYNTAX_3OP|SYNTAX_VALID }, - { "SYNTAX_2OP|OP1_IMM_IMPLIED", 26, SYNTAX_2OP|OP1_IMM_IMPLIED|SYNTAX_VALID }, - { "OP1_IMM_IMPLIED|SYNTAX_2OP", 26, OP1_IMM_IMPLIED|SYNTAX_2OP|SYNTAX_VALID }, - { "SYNTAX_3OP", 10, SYNTAX_3OP|SYNTAX_VALID }, - { "SYNTAX_2OP", 10, SYNTAX_2OP|SYNTAX_VALID } -}; - -#define MAXSYNTAXCLASS (sizeof (syntaxclass) / sizeof (struct syntax_classes)) - -const pseudo_typeS md_pseudo_table[] = { - { "align", s_align_bytes, 0 }, /* Defaulting is invalid (0). */ - { "comm", arc_common, 0 }, - { "common", arc_common, 0 }, - { "lcomm", arc_common, 1 }, - { "lcommon", arc_common, 1 }, - { "2byte", cons, 2 }, - { "half", cons, 2 }, - { "short", cons, 2 }, - { "3byte", cons, 3 }, - { "4byte", cons, 4 }, - { "word", cons, 4 }, - { "option", arc_option, 0 }, - { "cpu", arc_option, 0 }, - { "block", s_space, 0 }, - { "extcondcode", arc_extoper, 0 }, - { "extcoreregister", arc_extoper, 1 }, - { "extauxregister", arc_extoper, 2 }, - { "extinstruction", arc_extinst, 0 }, - { NULL, 0, 0 }, -}; - -/* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ -const char comment_chars[] = "#;"; - -/* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' - .line and .file directives will appear in the pre-processed output */ -/* Note that input_file.c hand checks for '#' at the beginning of the - first line of the input file. This is because the compiler outputs - #NO_APP at the beginning of its output. */ -/* Also note that comments started like this one will always - work if '/' isn't otherwise defined. */ -const char line_comment_chars[] = "#"; - -const char line_separator_chars[] = ""; - -/* Chars that can be used to separate mant from exp in floating point nums. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant - As in 0f12.456 or 0d1.2345e12. */ -const char FLT_CHARS[] = "rRsSfFdD"; - -/* Byte order. */ -extern int target_big_endian; -const char *arc_target_format = DEFAULT_TARGET_FORMAT; -static int byte_order = DEFAULT_BYTE_ORDER; - -static segT arcext_section; - -/* One of bfd_mach_arc_n. */ -static int arc_mach_type = bfd_mach_arc_6; - -/* Non-zero if the cpu type has been explicitly specified. */ -static int mach_type_specified_p = 0; - -/* Non-zero if opcode tables have been initialized. - A .option command must appear before any instructions. */ -static int cpu_tables_init_p = 0; - -static struct hash_control *arc_suffix_hash = NULL; - -const char *md_shortopts = ""; -struct option md_longopts[] = { -#define OPTION_EB (OPTION_MD_BASE + 0) - { "EB", no_argument, NULL, OPTION_EB }, -#define OPTION_EL (OPTION_MD_BASE + 1) - { "EL", no_argument, NULL, OPTION_EL }, -#define OPTION_ARC5 (OPTION_MD_BASE + 2) - { "marc5", no_argument, NULL, OPTION_ARC5 }, - { "pre-v6", no_argument, NULL, OPTION_ARC5 }, -#define OPTION_ARC6 (OPTION_MD_BASE + 3) - { "marc6", no_argument, NULL, OPTION_ARC6 }, -#define OPTION_ARC7 (OPTION_MD_BASE + 4) - { "marc7", no_argument, NULL, OPTION_ARC7 }, -#define OPTION_ARC8 (OPTION_MD_BASE + 5) - { "marc8", no_argument, NULL, OPTION_ARC8 }, -#define OPTION_ARC (OPTION_MD_BASE + 6) - { "marc", no_argument, NULL, OPTION_ARC }, - { NULL, no_argument, NULL, 0 } -}; -size_t md_longopts_size = sizeof (md_longopts); - -#define IS_SYMBOL_OPERAND(o) \ - ((o) == 'b' || (o) == 'c' || (o) == 's' || (o) == 'o' || (o) == 'O') - -struct arc_operand_value *get_ext_suffix (char *s); - -/* Invocation line includes a switch not recognized by the base assembler. - See if it's a processor-specific option. */ - -int -md_parse_option (c, arg) - int c; - char *arg ATTRIBUTE_UNUSED; -{ - switch (c) - { - case OPTION_ARC5: - arc_mach_type = bfd_mach_arc_5; - break; - case OPTION_ARC: - case OPTION_ARC6: - arc_mach_type = bfd_mach_arc_6; - break; - case OPTION_ARC7: - arc_mach_type = bfd_mach_arc_7; - break; - case OPTION_ARC8: - arc_mach_type = bfd_mach_arc_8; - break; - case OPTION_EB: - byte_order = BIG_ENDIAN; - arc_target_format = "elf32-bigarc"; - break; - case OPTION_EL: - byte_order = LITTLE_ENDIAN; - arc_target_format = "elf32-littlearc"; - break; - default: - return 0; - } - return 1; -} - -void -md_show_usage (stream) - FILE *stream; -{ - fprintf (stream, "\ -ARC Options:\n\ - -marc[5|6|7|8] select processor variant (default arc%d)\n\ - -EB assemble code for a big endian cpu\n\ - -EL assemble code for a little endian cpu\n", arc_mach_type + 5); -} - -/* This function is called once, at assembler startup time. It should - set up all the tables, etc. that the MD part of the assembler will need. - Opcode selection is deferred until later because we might see a .option - command. */ - -void -md_begin () -{ - /* The endianness can be chosen "at the factory". */ - target_big_endian = byte_order == BIG_ENDIAN; - - if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, arc_mach_type)) - as_warn ("could not set architecture and machine"); - - /* This call is necessary because we need to initialize `arc_operand_map' - which may be needed before we see the first insn. */ - arc_opcode_init_tables (arc_get_opcode_mach (arc_mach_type, - target_big_endian)); -} - -/* Initialize the various opcode and operand tables. - MACH is one of bfd_mach_arc_xxx. */ -static void -init_opcode_tables (mach) - int mach; -{ - int i; - char *last; - - if ((arc_suffix_hash = hash_new ()) == NULL) - as_fatal ("virtual memory exhausted"); - - if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, mach)) - as_warn ("could not set architecture and machine"); - - /* This initializes a few things in arc-opc.c that we need. - This must be called before the various arc_xxx_supported fns. */ - arc_opcode_init_tables (arc_get_opcode_mach (mach, target_big_endian)); - - /* Only put the first entry of each equivalently named suffix in the - table. */ - last = ""; - for (i = 0; i < arc_suffixes_count; i++) - { - if (strcmp (arc_suffixes[i].name, last) != 0) - hash_insert (arc_suffix_hash, arc_suffixes[i].name, (PTR) (arc_suffixes + i)); - last = arc_suffixes[i].name; - } - - /* Since registers don't have a prefix, we put them in the symbol table so - they can't be used as symbols. This also simplifies argument parsing as - we can let gas parse registers for us. The recorded register number is - the address of the register's entry in arc_reg_names. - - If the register name is already in the table, then the existing - definition is assumed to be from an .ExtCoreRegister pseudo-op. */ - - for (i = 0; i < arc_reg_names_count; i++) - { - if (symbol_find (arc_reg_names[i].name)) - continue; - /* Use symbol_create here instead of symbol_new so we don't try to - output registers into the object file's symbol table. */ - symbol_table_insert (symbol_create (arc_reg_names[i].name, - reg_section, - (int) &arc_reg_names[i], - &zero_address_frag)); - } - - /* Tell `.option' it's too late. */ - cpu_tables_init_p = 1; -} - -/* Insert an operand value into an instruction. - If REG is non-NULL, it is a register number and ignore VAL. */ - -static arc_insn -arc_insert_operand (insn, operand, mods, reg, val, file, line) - arc_insn insn; - const struct arc_operand *operand; - int mods; - const struct arc_operand_value *reg; - offsetT val; - char *file; - unsigned int line; -{ - if (operand->bits != 32) - { - long min, max; - offsetT test; - - if ((operand->flags & ARC_OPERAND_SIGNED) != 0) - { - if ((operand->flags & ARC_OPERAND_SIGNOPT) != 0) - max = (1 << operand->bits) - 1; - else - max = (1 << (operand->bits - 1)) - 1; - min = - (1 << (operand->bits - 1)); - } - else - { - max = (1 << operand->bits) - 1; - min = 0; - } - - if ((operand->flags & ARC_OPERAND_NEGATIVE) != 0) - test = - val; - else - test = val; - - if (test < (offsetT) min || test > (offsetT) max) - { - const char *err = - "operand out of range (%s not between %ld and %ld)"; - char buf[100]; - - sprint_value (buf, test); - if (file == (char *) NULL) - as_warn (err, buf, min, max); - else - as_warn_where (file, line, err, buf, min, max); - } - } - - if (operand->insert) - { - const char *errmsg; - - errmsg = NULL; - insn = (*operand->insert) (insn, operand, mods, reg, (long) val, &errmsg); - if (errmsg != (const char *) NULL) - as_warn (errmsg); - } - else - insn |= (((long) val & ((1 << operand->bits) - 1)) - << operand->shift); - - return insn; -} - -/* We need to keep a list of fixups. We can't simply generate them as - we go, because that would require us to first create the frag, and - that would screw up references to ``.''. */ - -struct arc_fixup { - /* index into `arc_operands' */ - int opindex; - expressionS exp; -}; - -#define MAX_FIXUPS 5 - -#define MAX_SUFFIXES 5 - -/* This routine is called for each instruction to be assembled. */ - -void -md_assemble (str) - char *str; -{ - const struct arc_opcode *opcode; - const struct arc_opcode *std_opcode; - struct arc_opcode *ext_opcode; - char *start; - const char *last_errmsg = 0; - arc_insn insn; - static int init_tables_p = 0; - - /* Opcode table initialization is deferred until here because we have to - wait for a possible .option command. */ - if (!init_tables_p) - { - init_opcode_tables (arc_mach_type); - init_tables_p = 1; - } - - /* Skip leading white space. */ - while (ISSPACE (*str)) - str++; - - /* The instructions are stored in lists hashed by the first letter (though - we needn't care how they're hashed). Get the first in the list. */ - - ext_opcode = arc_ext_opcodes; - std_opcode = arc_opcode_lookup_asm (str); - - /* Keep looking until we find a match. */ - - start = str; - for (opcode = (ext_opcode ? ext_opcode : std_opcode); - opcode != NULL; - opcode = (ARC_OPCODE_NEXT_ASM (opcode) - ? ARC_OPCODE_NEXT_ASM (opcode) - : (ext_opcode ? ext_opcode = NULL, std_opcode : NULL))) - { - int past_opcode_p, fc, num_suffixes; - int fix_up_at = 0; - char *syn; - struct arc_fixup fixups[MAX_FIXUPS]; - /* Used as a sanity check. If we need a limm reloc, make sure we ask - for an extra 4 bytes from frag_more. */ - int limm_reloc_p; - int ext_suffix_p; - const struct arc_operand_value *insn_suffixes[MAX_SUFFIXES]; - - /* Is this opcode supported by the selected cpu? */ - if (! arc_opcode_supported (opcode)) - continue; - - /* Scan the syntax string. If it doesn't match, try the next one. */ - - arc_opcode_init_insert (); - insn = opcode->value; - fc = 0; - past_opcode_p = 0; - num_suffixes = 0; - limm_reloc_p = 0; - ext_suffix_p = 0; - - /* We don't check for (*str != '\0') here because we want to parse - any trailing fake arguments in the syntax string. */ - for (str = start, syn = opcode->syntax; *syn != '\0';) - { - int mods; - const struct arc_operand *operand; - - /* Non operand chars must match exactly. */ - if (*syn != '%' || *++syn == '%') - { - /* Handle '+' specially as we want to allow "ld r0,[sp-4]". */ - /* ??? The syntax has changed to [sp,-4]. */ - if (0 && *syn == '+' && *str == '-') - { - /* Skip over syn's +, but leave str's - alone. - That makes the case identical to "ld r0,[sp+-4]". */ - ++syn; - } - else if (*str == *syn) - { - if (*syn == ' ') - past_opcode_p = 1; - ++syn; - ++str; - } - else - break; - continue; - } - - /* We have an operand. Pick out any modifiers. */ - mods = 0; - while (ARC_MOD_P (arc_operands[arc_operand_map[(int) *syn]].flags)) - { - mods |= arc_operands[arc_operand_map[(int) *syn]].flags & ARC_MOD_BITS; - ++syn; - } - operand = arc_operands + arc_operand_map[(int) *syn]; - if (operand->fmt == 0) - as_fatal ("unknown syntax format character `%c'", *syn); - - if (operand->flags & ARC_OPERAND_FAKE) - { - const char *errmsg = NULL; - if (operand->insert) - { - insn = (*operand->insert) (insn, operand, mods, NULL, 0, &errmsg); - if (errmsg != (const char *) NULL) - { - last_errmsg = errmsg; - if (operand->flags & ARC_OPERAND_ERROR) - { - as_bad (errmsg); - return; - } - else if (operand->flags & ARC_OPERAND_WARN) - as_warn (errmsg); - break; - } - if (limm_reloc_p - && (operand->flags && operand->flags & ARC_OPERAND_LIMM) - && (operand->flags & - (ARC_OPERAND_ABSOLUTE_BRANCH | ARC_OPERAND_ADDRESS))) - { - fixups[fix_up_at].opindex = arc_operand_map[operand->fmt]; - } - } - ++syn; - } - /* Are we finished with suffixes? */ - else if (!past_opcode_p) - { - int found; - char c; - char *s, *t; - const struct arc_operand_value *suf, *suffix_end; - const struct arc_operand_value *suffix = NULL; - - if (!(operand->flags & ARC_OPERAND_SUFFIX)) - abort (); - - /* If we're at a space in the input string, we want to skip the - remaining suffixes. There may be some fake ones though, so - just go on to try the next one. */ - if (*str == ' ') - { - ++syn; - continue; - } - - s = str; - if (mods & ARC_MOD_DOT) - { - if (*s != '.') - break; - ++s; - } - else - { - /* This can happen in "b.nd foo" and we're currently looking - for "%q" (ie: a condition code suffix). */ - if (*s == '.') - { - ++syn; - continue; - } - } - - /* Pick the suffix out and look it up via the hash table. */ - for (t = s; *t && ISALNUM (*t); ++t) - continue; - c = *t; - *t = '\0'; - if ((suf = get_ext_suffix (s))) - ext_suffix_p = 1; - else - suf = hash_find (arc_suffix_hash, s); - if (!suf) - { - /* This can happen in "blle foo" and we're currently using - the template "b%q%.n %j". The "bl" insn occurs later in - the table so "lle" isn't an illegal suffix. */ - *t = c; - break; - } - - /* Is it the right type? Note that the same character is used - several times, so we have to examine all of them. This is - relatively efficient as equivalent entries are kept - together. If it's not the right type, don't increment `str' - so we try the next one in the series. */ - found = 0; - if (ext_suffix_p && arc_operands[suf->type].fmt == *syn) - { - /* Insert the suffix's value into the insn. */ - *t = c; - if (operand->insert) - insn = (*operand->insert) (insn, operand, - mods, NULL, suf->value, - NULL); - else - insn |= suf->value << operand->shift; - - str = t; - found = 1; - } - else - { - *t = c; - suffix_end = arc_suffixes + arc_suffixes_count; - for (suffix = suf; - suffix < suffix_end && strcmp (suffix->name, suf->name) == 0; - ++suffix) - { - if (arc_operands[suffix->type].fmt == *syn) - { - /* Insert the suffix's value into the insn. */ - if (operand->insert) - insn = (*operand->insert) (insn, operand, - mods, NULL, suffix->value, - NULL); - else - insn |= suffix->value << operand->shift; - - str = t; - found = 1; - break; - } - } - } - ++syn; - if (!found) - /* Wrong type. Just go on to try next insn entry. */ - ; - else - { - if (num_suffixes == MAX_SUFFIXES) - as_bad ("too many suffixes"); - else - insn_suffixes[num_suffixes++] = suffix; - } - } - else - /* This is either a register or an expression of some kind. */ - { - char *hold; - const struct arc_operand_value *reg = NULL; - long value = 0; - expressionS exp; - - if (operand->flags & ARC_OPERAND_SUFFIX) - abort (); - - /* Is there anything left to parse? - We don't check for this at the top because we want to parse - any trailing fake arguments in the syntax string. */ - if (is_end_of_line[(unsigned char) *str]) - break; - - /* Parse the operand. */ - hold = input_line_pointer; - input_line_pointer = str; - expression (&exp); - str = input_line_pointer; - input_line_pointer = hold; - - if (exp.X_op == O_illegal) - as_bad ("illegal operand"); - else if (exp.X_op == O_absent) - as_bad ("missing operand"); - else if (exp.X_op == O_constant) - { - value = exp.X_add_number; - } - else if (exp.X_op == O_register) - { - reg = (struct arc_operand_value *) exp.X_add_number; - } -#define IS_REG_DEST_OPERAND(o) ((o) == 'a') - else if (IS_REG_DEST_OPERAND (*syn)) - as_bad ("symbol as destination register"); - else - { - if (!strncmp (str, "@h30", 4)) - { - arc_code_symbol (&exp); - str += 4; - } - /* We need to generate a fixup for this expression. */ - if (fc >= MAX_FIXUPS) - as_fatal ("too many fixups"); - fixups[fc].exp = exp; - /* We don't support shimm relocs. break here to force - the assembler to output a limm. */ -#define IS_REG_SHIMM_OFFSET(o) ((o) == 'd') - if (IS_REG_SHIMM_OFFSET (*syn)) - break; - /* If this is a register constant (IE: one whose - register value gets stored as 61-63) then this - must be a limm. */ - /* ??? This bit could use some cleaning up. - Referencing the format chars like this goes - against style. */ - if (IS_SYMBOL_OPERAND (*syn)) - { - const char *junk; - limm_reloc_p = 1; - /* Save this, we don't yet know what reloc to use. */ - fix_up_at = fc; - /* Tell insert_reg we need a limm. This is - needed because the value at this point is - zero, a shimm. */ - /* ??? We need a cleaner interface than this. */ - (*arc_operands[arc_operand_map['Q']].insert) - (insn, operand, mods, reg, 0L, &junk); - } - else - fixups[fc].opindex = arc_operand_map[(int) *syn]; - ++fc; - value = 0; - } - - /* Insert the register or expression into the instruction. */ - if (operand->insert) - { - const char *errmsg = NULL; - insn = (*operand->insert) (insn, operand, mods, - reg, (long) value, &errmsg); - if (errmsg != (const char *) NULL) - { - last_errmsg = errmsg; - if (operand->flags & ARC_OPERAND_ERROR) - { - as_bad (errmsg); - return; - } - else if (operand->flags & ARC_OPERAND_WARN) - as_warn (errmsg); - break; - } - } - else - insn |= (value & ((1 << operand->bits) - 1)) << operand->shift; - - ++syn; - } - } - - /* If we're at the end of the syntax string, we're done. */ - /* FIXME: try to move this to a separate function. */ - if (*syn == '\0') - { - int i; - char *f; - long limm, limm_p; - - /* For the moment we assume a valid `str' can only contain blanks - now. IE: We needn't try again with a longer version of the - insn and it is assumed that longer versions of insns appear - before shorter ones (eg: lsr r2,r3,1 vs lsr r2,r3). */ - - while (ISSPACE (*str)) - ++str; - - if (!is_end_of_line[(unsigned char) *str]) - as_bad ("junk at end of line: `%s'", str); - - /* Is there a limm value? */ - limm_p = arc_opcode_limm_p (&limm); - - /* Perform various error and warning tests. */ - - { - static int in_delay_slot_p = 0; - static int prev_insn_needs_cc_nop_p = 0; - /* delay slot type seen */ - int delay_slot_type = ARC_DELAY_NONE; - /* conditional execution flag seen */ - int conditional = 0; - /* 1 if condition codes are being set */ - int cc_set_p = 0; - /* 1 if conditional branch, including `b' "branch always" */ - int cond_branch_p = opcode->flags & ARC_OPCODE_COND_BRANCH; - - for (i = 0; i < num_suffixes; ++i) - { - switch (arc_operands[insn_suffixes[i]->type].fmt) - { - case 'n': - delay_slot_type = insn_suffixes[i]->value; - break; - case 'q': - conditional = insn_suffixes[i]->value; - break; - case 'f': - cc_set_p = 1; - break; - } - } - - /* Putting an insn with a limm value in a delay slot is supposed to - be legal, but let's warn the user anyway. Ditto for 8 byte - jumps with delay slots. */ - if (in_delay_slot_p && limm_p) - as_warn ("8 byte instruction in delay slot"); - if (delay_slot_type != ARC_DELAY_NONE - && limm_p && arc_insn_not_jl (insn)) /* except for jl addr */ - as_warn ("8 byte jump instruction with delay slot"); - in_delay_slot_p = (delay_slot_type != ARC_DELAY_NONE) && !limm_p; - - /* Warn when a conditional branch immediately follows a set of - the condition codes. Note that this needn't be done if the - insn that sets the condition codes uses a limm. */ - if (cond_branch_p && conditional != 0 /* 0 = "always" */ - && prev_insn_needs_cc_nop_p && arc_mach_type == bfd_mach_arc_5) - as_warn ("conditional branch follows set of flags"); - prev_insn_needs_cc_nop_p = - /* FIXME: ??? not required: - (delay_slot_type != ARC_DELAY_NONE) && */ - cc_set_p && !limm_p; - } - - /* Write out the instruction. - It is important to fetch enough space in one call to `frag_more'. - We use (f - frag_now->fr_literal) to compute where we are and we - don't want frag_now to change between calls. */ - if (limm_p) - { - f = frag_more (8); - md_number_to_chars (f, insn, 4); - md_number_to_chars (f + 4, limm, 4); - dwarf2_emit_insn (8); - } - else if (limm_reloc_p) - { - /* We need a limm reloc, but the tables think we don't. */ - abort (); - } - else - { - f = frag_more (4); - md_number_to_chars (f, insn, 4); - dwarf2_emit_insn (4); - } - - /* Create any fixups. */ - for (i = 0; i < fc; ++i) - { - int op_type, reloc_type; - expressionS exptmp; - const struct arc_operand *operand; - - /* Create a fixup for this operand. - At this point we do not use a bfd_reloc_code_real_type for - operands residing in the insn, but instead just use the - operand index. This lets us easily handle fixups for any - operand type, although that is admittedly not a very exciting - feature. We pick a BFD reloc type in md_apply_fix3. - - Limm values (4 byte immediate "constants") must be treated - normally because they're not part of the actual insn word - and thus the insertion routines don't handle them. */ - - if (arc_operands[fixups[i].opindex].flags & ARC_OPERAND_LIMM) - { - /* Modify the fixup addend as required by the cpu. */ - fixups[i].exp.X_add_number += arc_limm_fixup_adjust (insn); - op_type = fixups[i].opindex; - /* FIXME: can we add this data to the operand table? */ - if (op_type == arc_operand_map['L'] - || op_type == arc_operand_map['s'] - || op_type == arc_operand_map['o'] - || op_type == arc_operand_map['O']) - reloc_type = BFD_RELOC_32; - else if (op_type == arc_operand_map['J']) - reloc_type = BFD_RELOC_ARC_B26; - else - abort (); - reloc_type = get_arc_exp_reloc_type (1, reloc_type, - &fixups[i].exp, - &exptmp); - } - else - { - op_type = get_arc_exp_reloc_type (0, fixups[i].opindex, - &fixups[i].exp, &exptmp); - reloc_type = op_type + (int) BFD_RELOC_UNUSED; - } - operand = &arc_operands[op_type]; - fix_new_exp (frag_now, - ((f - frag_now->fr_literal) - + (operand->flags & ARC_OPERAND_LIMM ? 4 : 0)), 4, - &exptmp, - (operand->flags & ARC_OPERAND_RELATIVE_BRANCH) != 0, - (bfd_reloc_code_real_type) reloc_type); - } - - /* All done. */ - return; - } - - /* Try the next entry. */ - } - - if (NULL == last_errmsg) - as_bad ("bad instruction `%s'", start); - else - as_bad (last_errmsg); -} - -static void -arc_extoper (opertype) - int opertype; -{ - char *name; - char *mode; - char c; - char *p; - int imode = 0; - int number; - struct arc_ext_operand_value *ext_oper; - symbolS *symbolP; - - segT old_sec; - int old_subsec; - - name = input_line_pointer; - c = get_symbol_end (); - name = xstrdup (name); - if (NULL == name) - { - ignore_rest_of_line (); - return; - } - - p = name; - while (*p) - { - *p = TOLOWER (*p); - p++; - } - - /* just after name is now '\0' */ - p = input_line_pointer; - *p = c; - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after operand name"); - ignore_rest_of_line (); - free (name); - return; - } - - input_line_pointer++; /* skip ',' */ - number = get_absolute_expression (); - - if (number < 0) - { - as_bad ("negative operand number %d", number); - ignore_rest_of_line (); - free (name); - return; - } - - if (opertype) - { - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after register-number"); - ignore_rest_of_line (); - free (name); - return; - } - - input_line_pointer++; /* skip ',' */ - mode = input_line_pointer; - - if (!strncmp (mode, "r|w", 3)) - { - imode = 0; - input_line_pointer += 3; - } - else - { - if (!strncmp (mode, "r", 1)) - { - imode = ARC_REGISTER_READONLY; - input_line_pointer += 1; - } - else - { - if (strncmp (mode, "w", 1)) - { - as_bad ("invalid mode"); - ignore_rest_of_line (); - free (name); - return; - } - else - { - imode = ARC_REGISTER_WRITEONLY; - input_line_pointer += 1; - } - } - } - SKIP_WHITESPACE (); - if (1 == opertype) - { - if (*input_line_pointer != ',') - { - as_bad ("expected comma after register-mode"); - ignore_rest_of_line (); - free (name); - return; - } - - input_line_pointer++; /* skip ',' */ - - if (!strncmp (input_line_pointer, "cannot_shortcut", 15)) - { - imode |= arc_get_noshortcut_flag (); - input_line_pointer += 15; - } - else - { - if (strncmp (input_line_pointer, "can_shortcut", 12)) - { - as_bad ("shortcut designator invalid"); - ignore_rest_of_line (); - free (name); - return; - } - else - { - input_line_pointer += 12; - } - } - } - } - - if ((opertype == 1) && number > 60) - { - as_bad ("core register value (%d) too large", number); - ignore_rest_of_line (); - free (name); - return; - } - - if ((opertype == 0) && number > 31) - { - as_bad ("condition code value (%d) too large", number); - ignore_rest_of_line (); - free (name); - return; - } - - ext_oper = (struct arc_ext_operand_value *) \ - xmalloc (sizeof (struct arc_ext_operand_value)); - - if (opertype) - { - /* If the symbol already exists, point it at the new definition. */ - if ((symbolP = symbol_find (name))) - { - if (S_GET_SEGMENT (symbolP) == reg_section) - S_SET_VALUE (symbolP, (int) &ext_oper->operand); - else - { - as_bad ("attempt to override symbol: %s", name); - ignore_rest_of_line (); - free (name); - free (ext_oper); - return; - } - } - else - { - /* If its not there, add it. */ - symbol_table_insert (symbol_create (name, reg_section, - (int) &ext_oper->operand, &zero_address_frag)); - } - } - - ext_oper->operand.name = name; - ext_oper->operand.value = number; - ext_oper->operand.type = arc_operand_type (opertype); - ext_oper->operand.flags = imode; - - ext_oper->next = arc_ext_operands; - arc_ext_operands = ext_oper; - - /* OK, now that we know what this operand is, put a description in - the arc extension section of the output file. */ - - old_sec = now_seg; - old_subsec = now_subseg; - - arc_set_ext_seg (); - - switch (opertype) - { - case 0: - p = frag_more (1); - *p = 3 + strlen (name) + 1; - p = frag_more (1); - *p = EXT_COND_CODE; - p = frag_more (1); - *p = number; - p = frag_more (strlen (name) + 1); - strcpy (p, name); - break; - case 1: - p = frag_more (1); - *p = 3 + strlen (name) + 1; - p = frag_more (1); - *p = EXT_CORE_REGISTER; - p = frag_more (1); - *p = number; - p = frag_more (strlen (name) + 1); - strcpy (p, name); - break; - case 2: - p = frag_more (1); - *p = 6 + strlen (name) + 1; - p = frag_more (1); - *p = EXT_AUX_REGISTER; - p = frag_more (1); - *p = number >> 24 & 0xff; - p = frag_more (1); - *p = number >> 16 & 0xff; - p = frag_more (1); - *p = number >> 8 & 0xff; - p = frag_more (1); - *p = number & 0xff; - p = frag_more (strlen (name) + 1); - strcpy (p, name); - break; - default: - as_bad ("invalid opertype"); - ignore_rest_of_line (); - free (name); - return; - break; - } - - subseg_set (old_sec, old_subsec); - - /* Enter all registers into the symbol table. */ - - demand_empty_rest_of_line (); -} - -static void -arc_extinst (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - unsigned char syntax[129]; - char *name; - char *p; - char c; - int suffixcode = -1; - int opcode, subopcode; - int i; - int class = 0; - int name_len; - struct arc_opcode *ext_op; - - segT old_sec; - int old_subsec; - - name = input_line_pointer; - c = get_symbol_end (); - name = xstrdup (name); - if (NULL == name) - { - ignore_rest_of_line (); - return; - } - strcpy (syntax, name); - name_len = strlen (name); - - /* just after name is now '\0' */ - p = input_line_pointer; - *p = c; - - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after operand name"); - ignore_rest_of_line (); - return; - } - - input_line_pointer++; /* skip ',' */ - opcode = get_absolute_expression (); - - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after opcode"); - ignore_rest_of_line (); - return; - } - - input_line_pointer++; /* skip ',' */ - subopcode = get_absolute_expression (); - - if (subopcode < 0) - { - as_bad ("negative subopcode %d", subopcode); - ignore_rest_of_line (); - return; - } - - if (subopcode) - { - if (3 != opcode) - { - as_bad ("subcode value found when opcode not equal 0x03"); - ignore_rest_of_line (); - return; - } - else - { - if (subopcode < 0x09 || subopcode == 0x3f) - { - as_bad ("invalid subopcode %d", subopcode); - ignore_rest_of_line (); - return; - } - } - } - - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after subopcode"); - ignore_rest_of_line (); - return; - } - - input_line_pointer++; /* skip ',' */ - - for (i = 0; i < (int) MAXSUFFIXCLASS; i++) - { - if (!strncmp (suffixclass[i].name,input_line_pointer, suffixclass[i].len)) - { - suffixcode = i; - input_line_pointer += suffixclass[i].len; - break; - } - } - - if (-1 == suffixcode) - { - as_bad ("invalid suffix class"); - ignore_rest_of_line (); - return; - } - - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after suffix class"); - ignore_rest_of_line (); - return; - } - - input_line_pointer++; /* skip ',' */ - - for (i = 0; i < (int) MAXSYNTAXCLASS; i++) - { - if (!strncmp (syntaxclass[i].name,input_line_pointer, syntaxclass[i].len)) - { - class = syntaxclass[i].class; - input_line_pointer += syntaxclass[i].len; - break; - } - } - - if (0 == (SYNTAX_VALID & class)) - { - as_bad ("invalid syntax class"); - ignore_rest_of_line (); - return; - } - - if ((0x3 == opcode) & (class & SYNTAX_3OP)) - { - as_bad ("opcode 0x3 and SYNTAX_3OP invalid"); - ignore_rest_of_line (); - return; - } - - switch (suffixcode) - { - case 0: - strcat (syntax, "%.q%.f "); - break; - case 1: - strcat (syntax, "%.f "); - break; - case 2: - strcat (syntax, "%.q "); - break; - case 3: - strcat (syntax, " "); - break; - default: - as_bad ("unknown suffix class"); - ignore_rest_of_line (); - return; - break; - }; - - strcat (syntax, ((opcode == 0x3) ? "%a,%b" : ((class & SYNTAX_3OP) ? "%a,%b,%c" : "%b,%c"))); - if (suffixcode < 2) - strcat (syntax, "%F"); - strcat (syntax, "%S%L"); - - ext_op = (struct arc_opcode *) xmalloc (sizeof (struct arc_opcode)); - if (NULL == ext_op) - { - ignore_rest_of_line (); - return; - } - - ext_op->syntax = xstrdup (syntax); - if (NULL == ext_op->syntax) - { - ignore_rest_of_line (); - return; - } - - ext_op->mask = I (-1) | ((0x3 == opcode) ? C (-1) : 0); - ext_op->value = I (opcode) | ((0x3 == opcode) ? C (subopcode) : 0); - ext_op->flags = class; - ext_op->next_asm = arc_ext_opcodes; - ext_op->next_dis = arc_ext_opcodes; - arc_ext_opcodes = ext_op; - - /* OK, now that we know what this inst is, put a description in the - arc extension section of the output file. */ - - old_sec = now_seg; - old_subsec = now_subseg; - - arc_set_ext_seg (); - - p = frag_more (1); - *p = 5 + name_len + 1; - p = frag_more (1); - *p = EXT_INSTRUCTION; - p = frag_more (1); - *p = opcode; - p = frag_more (1); - *p = subopcode; - p = frag_more (1); - *p = (class & (OP1_MUST_BE_IMM | OP1_IMM_IMPLIED) ? IGNORE_FIRST_OPD : 0); - p = frag_more (name_len); - strncpy (p, syntax, name_len); - p = frag_more (1); - *p = '\0'; - - subseg_set (old_sec, old_subsec); - - demand_empty_rest_of_line (); -} - -int -arc_set_ext_seg () -{ - if (!arcext_section) - { - arcext_section = subseg_new (".arcextmap", 0); - bfd_set_section_flags (stdoutput, arcext_section, - SEC_READONLY | SEC_HAS_CONTENTS); - } - else - subseg_set (arcext_section, 0); - return 1; -} - -static void -arc_common (localScope) - int localScope; -{ - char *name; - char c; - char *p; - int align, size; - symbolS *symbolP; - - name = input_line_pointer; - c = get_symbol_end (); - /* just after name is now '\0' */ - p = input_line_pointer; - *p = c; - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - as_bad ("expected comma after symbol name"); - ignore_rest_of_line (); - return; - } - - input_line_pointer++; /* skip ',' */ - size = get_absolute_expression (); - - if (size < 0) - { - as_bad ("negative symbol length"); - ignore_rest_of_line (); - return; - } - - *p = 0; - symbolP = symbol_find_or_make (name); - *p = c; - - if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP)) - { - as_bad ("ignoring attempt to re-define symbol"); - ignore_rest_of_line (); - return; - } - if (((int) S_GET_VALUE (symbolP) != 0) \ - && ((int) S_GET_VALUE (symbolP) != size)) - { - as_warn ("length of symbol \"%s\" already %ld, ignoring %d", - S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size); - } - assert (symbolP->sy_frag == &zero_address_frag); - - /* Now parse the alignment field. This field is optional for - local and global symbols. Default alignment is zero. */ - if (*input_line_pointer == ',') - { - input_line_pointer++; - align = get_absolute_expression (); - if (align < 0) - { - align = 0; - as_warn ("assuming symbol alignment of zero"); - } - } - else - align = 0; - - if (localScope != 0) - { - segT old_sec; - int old_subsec; - char *pfrag; - - old_sec = now_seg; - old_subsec = now_subseg; - record_alignment (bss_section, align); - subseg_set (bss_section, 0); /* ??? subseg_set (bss_section, 1); ??? */ - - if (align) - /* Do alignment. */ - frag_align (align, 0, 0); - - /* Detach from old frag. */ - if (S_GET_SEGMENT (symbolP) == bss_section) - symbolP->sy_frag->fr_symbol = NULL; - - symbolP->sy_frag = frag_now; - pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP, - (offsetT) size, (char *) 0); - *pfrag = 0; - - S_SET_SIZE (symbolP, size); - S_SET_SEGMENT (symbolP, bss_section); - S_CLEAR_EXTERNAL (symbolP); - symbolP->local = 1; - subseg_set (old_sec, old_subsec); - } - else - { - S_SET_VALUE (symbolP, (valueT) size); - S_SET_ALIGN (symbolP, align); - S_SET_EXTERNAL (symbolP); - S_SET_SEGMENT (symbolP, bfd_com_section_ptr); - } - - symbolP->bsym->flags |= BSF_OBJECT; - - demand_empty_rest_of_line (); -} - -/* Select the cpu we're assembling for. */ - -static void -arc_option (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int mach; - char c; - char *cpu; - - cpu = input_line_pointer; - c = get_symbol_end (); - mach = arc_get_mach (cpu); - *input_line_pointer = c; - - /* If an instruction has already been seen, it's too late. */ - if (cpu_tables_init_p) - { - as_bad ("\".option\" directive must appear before any instructions"); - ignore_rest_of_line (); - return; - } - - if (mach == -1) - goto bad_cpu; - - if (mach_type_specified_p && mach != arc_mach_type) - { - as_bad ("\".option\" directive conflicts with initial definition"); - ignore_rest_of_line (); - return; - } - else - { - /* The cpu may have been selected on the command line. */ - if (mach != arc_mach_type) - as_warn ("\".option\" directive overrides command-line (default) value"); - arc_mach_type = mach; - if (!bfd_set_arch_mach (stdoutput, bfd_arch_arc, mach)) - as_fatal ("could not set architecture and machine"); - mach_type_specified_p = 1; - } - demand_empty_rest_of_line (); - return; - - bad_cpu: - as_bad ("invalid identifier for \".option\""); - ignore_rest_of_line (); -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -/* Equal to MAX_PRECISION in atof-ieee.c */ -#define MAX_LITTLENUMS 6 - -char * -md_atof (type, litP, sizeP) - int type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - prec = 2; - break; - - case 'd': - case 'D': - prec = 4; - break; - - default: - *sizeP = 0; - return "bad call to md_atof"; - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return NULL; -} - -/* Write a value out to the object file, using the appropriate - endianness. */ - -void -md_number_to_chars (buf, val, n) - char *buf; - valueT val; - int n; -{ - if (target_big_endian) - number_to_chars_bigendian (buf, val, n); - else - number_to_chars_littleendian (buf, val, n); -} - -/* Round up a section size to the appropriate boundary. */ - -valueT -md_section_align (segment, size) - segT segment; - valueT size; -{ - int align = bfd_get_section_alignment (stdoutput, segment); - - return ((size + (1 << align) - 1) & (-1 << align)); -} - -/* We don't have any form of relaxing. */ - -int -md_estimate_size_before_relax (fragp, seg) - fragS *fragp ATTRIBUTE_UNUSED; - asection *seg ATTRIBUTE_UNUSED; -{ - as_fatal (_("md_estimate_size_before_relax\n")); - return 1; -} - -/* Convert a machine dependent frag. We never generate these. */ - -void -md_convert_frag (abfd, sec, fragp) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - fragS *fragp ATTRIBUTE_UNUSED; -{ - as_fatal (_("md_convert_frag\n")); -} - -void -arc_code_symbol (expressionP) - expressionS *expressionP; -{ - if (expressionP->X_op == O_symbol && expressionP->X_add_number == 0) - { - expressionS two; - expressionP->X_op = O_right_shift; - expressionP->X_add_symbol->sy_value.X_op = O_constant; - two.X_op = O_constant; - two.X_add_symbol = two.X_op_symbol = NULL; - two.X_add_number = 2; - expressionP->X_op_symbol = make_expr_symbol (&two); - } - /* Allow %st(sym1-sym2) */ - else if (expressionP->X_op == O_subtract - && expressionP->X_add_symbol != NULL - && expressionP->X_op_symbol != NULL - && expressionP->X_add_number == 0) - { - expressionS two; - expressionP->X_add_symbol = make_expr_symbol (expressionP); - expressionP->X_op = O_right_shift; - two.X_op = O_constant; - two.X_add_symbol = two.X_op_symbol = NULL; - two.X_add_number = 2; - expressionP->X_op_symbol = make_expr_symbol (&two); - } - else - { - as_bad ("expression too complex code symbol"); - return; - } -} - -/* Parse an operand that is machine-specific. - - The ARC has a special %-op to adjust addresses so they're usable in - branches. The "st" is short for the STatus register. - ??? Later expand this to take a flags value too. - - ??? We can't create new expression types so we map the %-op's onto the - existing syntax. This means that the user could use the chosen syntax - to achieve the same effect. */ - -void -md_operand (expressionP) - expressionS *expressionP; -{ - char *p = input_line_pointer; - - if (*p == '%') - if (strncmp (p, "%st(", 4) == 0) - { - input_line_pointer += 4; - expression (expressionP); - if (*input_line_pointer != ')') - { - as_bad ("missing ')' in %%-op"); - return; - } - ++input_line_pointer; - arc_code_symbol (expressionP); - } - else - { - /* It could be a register. */ - int i, l; - struct arc_ext_operand_value *ext_oper = arc_ext_operands; - p++; - - while (ext_oper) - { - l = strlen (ext_oper->operand.name); - if (!strncmp (p, ext_oper->operand.name, l) && !ISALNUM (*(p + l))) - { - input_line_pointer += l + 1; - expressionP->X_op = O_register; - expressionP->X_add_number = (int) &ext_oper->operand; - return; - } - ext_oper = ext_oper->next; - } - for (i = 0; i < arc_reg_names_count; i++) - { - l = strlen (arc_reg_names[i].name); - if (!strncmp (p, arc_reg_names[i].name, l) && !ISALNUM (*(p + l))) - { - input_line_pointer += l + 1; - expressionP->X_op = O_register; - expressionP->X_add_number = (int) &arc_reg_names[i]; - break; - } - } - } -} - -/* We have no need to default values of symbols. - We could catch register names here, but that is handled by inserting - them all in the symbol table to begin with. */ - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Functions concerning expressions. */ - -/* Parse a .byte, .word, etc. expression. - - Values for the status register are specified with %st(label). - `label' will be right shifted by 2. */ - -void -arc_parse_cons_expression (exp, nbytes) - expressionS *exp; - unsigned int nbytes ATTRIBUTE_UNUSED; -{ - char *p = input_line_pointer; - int code_symbol_fix = 0; - - for (; ! is_end_of_line[(unsigned char) *p]; p++) - if (*p == '@' && !strncmp (p, "@h30", 4)) - { - code_symbol_fix = 1; - strcpy (p, "; "); - } - expr (0, exp); - if (code_symbol_fix) - { - arc_code_symbol (exp); - input_line_pointer = p; - } -} - -/* Record a fixup for a cons expression. */ - -void -arc_cons_fix_new (frag, where, nbytes, exp) - fragS *frag; - int where; - int nbytes; - expressionS *exp; -{ - if (nbytes == 4) - { - int reloc_type; - expressionS exptmp; - - /* This may be a special ARC reloc (eg: %st()). */ - reloc_type = get_arc_exp_reloc_type (1, BFD_RELOC_32, exp, &exptmp); - fix_new_exp (frag, where, nbytes, &exptmp, 0, reloc_type); - } - else - { - fix_new_exp (frag, where, nbytes, exp, 0, - nbytes == 2 ? BFD_RELOC_16 - : nbytes == 8 ? BFD_RELOC_64 - : BFD_RELOC_32); - } -} - -/* Functions concerning relocs. */ - -/* The location from which a PC relative jump should be calculated, - given a PC relative reloc. */ - -long -md_pcrel_from (fixP) - fixS *fixP; -{ - /* Return the address of the delay slot. */ - return fixP->fx_frag->fr_address + fixP->fx_where + fixP->fx_size; -} - -/* Compute the reloc type of an expression. - The possibly modified expression is stored in EXPNEW. - - This is used to convert the expressions generated by the %-op's into - the appropriate operand type. It is called for both data in instructions - (operands) and data outside instructions (variables, debugging info, etc.). - - Currently supported %-ops: - - %st(symbol): represented as "symbol >> 2" - "st" is short for STatus as in the status register (pc) - - DEFAULT_TYPE is the type to use if no special processing is required. - - DATA_P is non-zero for data or limm values, zero for insn operands. - Remember that the opcode "insertion fns" cannot be used on data, they're - only for inserting operands into insns. They also can't be used for limm - values as the insertion routines don't handle limm values. When called for - insns we return fudged reloc types (real_value - BFD_RELOC_UNUSED). When - called for data or limm values we use real reloc types. */ - -static int -get_arc_exp_reloc_type (data_p, default_type, exp, expnew) - int data_p; - int default_type; - expressionS *exp; - expressionS *expnew; -{ - /* If the expression is "symbol >> 2" we must change it to just "symbol", - as fix_new_exp can't handle it. Similarly for (symbol - symbol) >> 2. - That's ok though. What's really going on here is that we're using - ">> 2" as a special syntax for specifying BFD_RELOC_ARC_B26. */ - - if (exp->X_op == O_right_shift - && exp->X_op_symbol != NULL - && exp->X_op_symbol->sy_value.X_op == O_constant - && exp->X_op_symbol->sy_value.X_add_number == 2 - && exp->X_add_number == 0) - { - if (exp->X_add_symbol != NULL - && (exp->X_add_symbol->sy_value.X_op == O_constant - || exp->X_add_symbol->sy_value.X_op == O_symbol)) - { - *expnew = *exp; - expnew->X_op = O_symbol; - expnew->X_op_symbol = NULL; - return data_p ? BFD_RELOC_ARC_B26 : arc_operand_map['J']; - } - else if (exp->X_add_symbol != NULL - && exp->X_add_symbol->sy_value.X_op == O_subtract) - { - *expnew = exp->X_add_symbol->sy_value; - return data_p ? BFD_RELOC_ARC_B26 : arc_operand_map['J']; - } - } - - *expnew = *exp; - return default_type; -} - -/* Apply a fixup to the object code. This is called for all the - fixups we generated by the call to fix_new_exp, above. In the call - above we used a reloc code which was the largest legal reloc code - plus the operand index. Here we undo that to recover the operand - index. At this point all symbol values should be fully resolved, - and we attempt to completely resolve the reloc. If we can not do - that, we determine the correct reloc code and put it back in the fixup. */ - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT * valP; - segT seg; -{ -#if 0 - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; -#endif - valueT value = * valP; - - if (fixP->fx_addsy == (symbolS *) NULL) - fixP->fx_done = 1; - - else if (fixP->fx_pcrel) - { - /* Hack around bfd_install_relocation brain damage. */ - if (S_GET_SEGMENT (fixP->fx_addsy) != seg) - value += md_pcrel_from (fixP); - } - - /* We can't actually support subtracting a symbol. */ - if (fixP->fx_subsy != NULL) - as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); - - if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED) - { - int opindex; - const struct arc_operand *operand; - char *where; - arc_insn insn; - - opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED; - - operand = &arc_operands[opindex]; - - /* Fetch the instruction, insert the fully resolved operand - value, and stuff the instruction back again. */ - where = fixP->fx_frag->fr_literal + fixP->fx_where; - if (target_big_endian) - insn = bfd_getb32 ((unsigned char *) where); - else - insn = bfd_getl32 ((unsigned char *) where); - insn = arc_insert_operand (insn, operand, -1, NULL, (offsetT) value, - fixP->fx_file, fixP->fx_line); - if (target_big_endian) - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - else - bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); - - if (fixP->fx_done) - { - /* Nothing else to do here. */ - return; - } - - /* Determine a BFD reloc value based on the operand information. - We are only prepared to turn a few of the operands into relocs. - !!! Note that we can't handle limm values here. Since we're using - implicit addends the addend must be inserted into the instruction, - however, the opcode insertion routines currently do nothing with - limm values. */ - if (operand->fmt == 'B') - { - assert ((operand->flags & ARC_OPERAND_RELATIVE_BRANCH) != 0 - && operand->bits == 20 - && operand->shift == 7); - fixP->fx_r_type = BFD_RELOC_ARC_B22_PCREL; - } - else if (operand->fmt == 'J') - { - assert ((operand->flags & ARC_OPERAND_ABSOLUTE_BRANCH) != 0 - && operand->bits == 24 - && operand->shift == 32); - fixP->fx_r_type = BFD_RELOC_ARC_B26; - } - else if (operand->fmt == 'L') - { - assert ((operand->flags & ARC_OPERAND_LIMM) != 0 - && operand->bits == 32 - && operand->shift == 32); - fixP->fx_r_type = BFD_RELOC_32; - } - else - { - as_bad_where (fixP->fx_file, fixP->fx_line, - "unresolved expression that must be resolved"); - fixP->fx_done = 1; - return; - } - } - else - { - switch (fixP->fx_r_type) - { - case BFD_RELOC_8: - md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, - value, 1); - break; - case BFD_RELOC_16: - md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, - value, 2); - break; - case BFD_RELOC_32: - md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, - value, 4); - break; -#if 0 - case BFD_RELOC_64: - md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, - value, 8); - break; -#endif - case BFD_RELOC_ARC_B26: - /* If !fixP->fx_done then `value' is an implicit addend. - We must shift it right by 2 in this case as well because the - linker performs the relocation and then adds this in (as opposed - to adding this in and then shifting right by 2). */ - value >>= 2; - md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, - value, 4); - break; - default: - abort (); - } - } -} - -/* Translate internal representation of relocation info to BFD target - format. */ - -arelent * -tc_gen_reloc (section, fixP) - asection *section ATTRIBUTE_UNUSED; - fixS *fixP; -{ - arelent *reloc; - - reloc = (arelent *) xmalloc (sizeof (arelent)); - - reloc->sym_ptr_ptr = &fixP->fx_addsy->bsym; - reloc->address = fixP->fx_frag->fr_address + fixP->fx_where; - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type); - if (reloc->howto == (reloc_howto_type *) NULL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - "internal error: can't export reloc type %d (`%s')", - fixP->fx_r_type, - bfd_get_reloc_code_name (fixP->fx_r_type)); - return NULL; - } - - assert (!fixP->fx_pcrel == !reloc->howto->pc_relative); - - /* Set addend to account for PC being advanced one insn before the - target address is computed. */ - - reloc->addend = (fixP->fx_pcrel ? -4 : 0); - - return reloc; -} diff --git a/gas/config/tc-arc.h b/gas/config/tc-arc.h deleted file mode 100644 index 884d37554..000000000 --- a/gas/config/tc-arc.h +++ /dev/null @@ -1,74 +0,0 @@ -/* tc-arc.h - Macros and type defines for the ARC. - Copyright 1994, 1995, 1997, 2000, 2001, 2002 - Free Software Foundation, Inc. - Contributed by Doug Evans (dje@cygnus.com). - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, - or (at your option) any later version. - - GAS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_ARC 1 - -#define TARGET_BYTES_BIG_ENDIAN 0 - -#define LOCAL_LABELS_FB 1 - -#define TARGET_ARCH bfd_arch_arc - -#define DIFF_EXPR_OK -#define REGISTER_PREFIX '%' - -#ifdef LITTLE_ENDIAN -#undef LITTLE_ENDIAN -#endif - -#ifdef BIG_ENDIAN -#undef BIG_ENDIAN -#endif - -#define LITTLE_ENDIAN 1234 - -#define BIG_ENDIAN 4321 - -/* The endianness of the target format may change based on command - line arguments. */ -extern const char *arc_target_format; -#define DEFAULT_TARGET_FORMAT "elf32-littlearc" -#define TARGET_FORMAT arc_target_format -#define DEFAULT_BYTE_ORDER LITTLE_ENDIAN - -#define WORKING_DOT_WORD - -#define LISTING_HEADER "ARC GAS " - -/* The ARC needs to parse reloc specifiers in .word. */ - -extern void arc_parse_cons_expression PARAMS ((struct expressionS *, unsigned)); -#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) \ -arc_parse_cons_expression (EXP, NBYTES) - -extern void arc_cons_fix_new PARAMS ((struct frag *, int, int, struct expressionS *)); -#define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP) \ -arc_cons_fix_new (FRAG, WHERE, NBYTES, EXP) - -#define DWARF2_LINE_MIN_INSN_LENGTH 4 - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -/* No shared lib support, so we don't need to ensure externally - visible symbols can be overridden. */ -#define EXTERN_FORCE_RELOC 0 diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c deleted file mode 100644 index 69b2c2199..000000000 --- a/gas/config/tc-arm.c +++ /dev/null @@ -1,14306 +0,0 @@ -/* tc-arm.c -- Assemble for the ARM - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) - Modified by David Taylor (dtaylor@armltd.co.uk) - Cirrus coprocessor mods by Aldy Hernandez (aldyh@redhat.com) - Cirrus coprocessor fixes by Petko Manolov (petkan@nucleusys.com) - Cirrus coprocessor fixes by Vladimir Ivanov (vladitx@nucleusys.com) - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include -#define NO_RELOC 0 -#include "as.h" -#include "safe-ctype.h" - -/* Need TARGET_CPU. */ -#include "config.h" -#include "subsegs.h" -#include "obstack.h" -#include "symbols.h" -#include "listing.h" - -#ifdef OBJ_ELF -#include "elf/arm.h" -#include "dwarf2dbg.h" -#endif - -/* XXX Set this to 1 after the next binutils release */ -#define WARN_DEPRECATED 0 - -/* The following bitmasks control CPU extensions: */ -#define ARM_EXT_V1 0x00000001 /* All processors (core set). */ -#define ARM_EXT_V2 0x00000002 /* Multiply instructions. */ -#define ARM_EXT_V2S 0x00000004 /* SWP instructions. */ -#define ARM_EXT_V3 0x00000008 /* MSR MRS. */ -#define ARM_EXT_V3M 0x00000010 /* Allow long multiplies. */ -#define ARM_EXT_V4 0x00000020 /* Allow half word loads. */ -#define ARM_EXT_V4T 0x00000040 /* Thumb v1. */ -#define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */ -#define ARM_EXT_V5T 0x00000100 /* Thumb v2. */ -#define ARM_EXT_V5ExP 0x00000200 /* DSP core set. */ -#define ARM_EXT_V5E 0x00000400 /* DSP Double transfers. */ -#define ARM_EXT_V5J 0x00000800 /* Jazelle extension. */ -#define ARM_EXT_V6 0x00001000 /* ARM V6. */ - -/* Co-processor space extensions. */ -#define ARM_CEXT_XSCALE 0x00800000 /* Allow MIA etc. */ -#define ARM_CEXT_MAVERICK 0x00400000 /* Use Cirrus/DSP coprocessor. */ -#define ARM_CEXT_IWMMXT 0x00200000 /* Intel Wireless MMX technology coprocessor. */ - -/* Architectures are the sum of the base and extensions. The ARM ARM (rev E) - defines the following: ARMv3, ARMv3M, ARMv4xM, ARMv4, ARMv4TxM, ARMv4T, - ARMv5xM, ARMv5, ARMv5TxM, ARMv5T, ARMv5TExP, ARMv5TE. To these we add - three more to cover cores prior to ARM6. Finally, there are cores which - implement further extensions in the co-processor space. */ -#define ARM_ARCH_V1 ARM_EXT_V1 -#define ARM_ARCH_V2 (ARM_ARCH_V1 | ARM_EXT_V2) -#define ARM_ARCH_V2S (ARM_ARCH_V2 | ARM_EXT_V2S) -#define ARM_ARCH_V3 (ARM_ARCH_V2S | ARM_EXT_V3) -#define ARM_ARCH_V3M (ARM_ARCH_V3 | ARM_EXT_V3M) -#define ARM_ARCH_V4xM (ARM_ARCH_V3 | ARM_EXT_V4) -#define ARM_ARCH_V4 (ARM_ARCH_V3M | ARM_EXT_V4) -#define ARM_ARCH_V4TxM (ARM_ARCH_V4xM | ARM_EXT_V4T) -#define ARM_ARCH_V4T (ARM_ARCH_V4 | ARM_EXT_V4T) -#define ARM_ARCH_V5xM (ARM_ARCH_V4xM | ARM_EXT_V5) -#define ARM_ARCH_V5 (ARM_ARCH_V4 | ARM_EXT_V5) -#define ARM_ARCH_V5TxM (ARM_ARCH_V5xM | ARM_EXT_V4T | ARM_EXT_V5T) -#define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_EXT_V4T | ARM_EXT_V5T) -#define ARM_ARCH_V5TExP (ARM_ARCH_V5T | ARM_EXT_V5ExP) -#define ARM_ARCH_V5TE (ARM_ARCH_V5TExP | ARM_EXT_V5E) -#define ARM_ARCH_V5TEJ (ARM_ARCH_V5TE | ARM_EXT_V5J) -#define ARM_ARCH_V6 (ARM_ARCH_V5TEJ | ARM_EXT_V6) - -/* Processors with specific extensions in the co-processor space. */ -#define ARM_ARCH_XSCALE (ARM_ARCH_V5TE | ARM_CEXT_XSCALE) -#define ARM_ARCH_IWMMXT (ARM_ARCH_XSCALE | ARM_CEXT_IWMMXT) - -/* Some useful combinations: */ -#define ARM_ANY 0x0000ffff /* Any basic core. */ -#define ARM_ALL 0x00ffffff /* Any core + co-processor */ -#define CPROC_ANY 0x00ff0000 /* Any co-processor */ -#define FPU_ANY 0xff000000 /* Note this is ~ARM_ALL. */ - - -#define FPU_FPA_EXT_V1 0x80000000 /* Base FPA instruction set. */ -#define FPU_FPA_EXT_V2 0x40000000 /* LFM/SFM. */ -#define FPU_VFP_EXT_NONE 0x20000000 /* Use VFP word-ordering. */ -#define FPU_VFP_EXT_V1xD 0x10000000 /* Base VFP instruction set. */ -#define FPU_VFP_EXT_V1 0x08000000 /* Double-precision insns. */ -#define FPU_VFP_EXT_V2 0x04000000 /* ARM10E VFPr1. */ -#define FPU_MAVERICK 0x02000000 /* Cirrus Maverick. */ -#define FPU_NONE 0 - -#define FPU_ARCH_FPE FPU_FPA_EXT_V1 -#define FPU_ARCH_FPA (FPU_ARCH_FPE | FPU_FPA_EXT_V2) - -#define FPU_ARCH_VFP FPU_VFP_EXT_NONE -#define FPU_ARCH_VFP_V1xD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_NONE) -#define FPU_ARCH_VFP_V1 (FPU_ARCH_VFP_V1xD | FPU_VFP_EXT_V1) -#define FPU_ARCH_VFP_V2 (FPU_ARCH_VFP_V1 | FPU_VFP_EXT_V2) - -#define FPU_ARCH_MAVERICK FPU_MAVERICK - -enum arm_float_abi -{ - ARM_FLOAT_ABI_HARD, - ARM_FLOAT_ABI_SOFTFP, - ARM_FLOAT_ABI_SOFT -}; - -/* Types of processor to assemble for. */ -#define ARM_1 ARM_ARCH_V1 -#define ARM_2 ARM_ARCH_V2 -#define ARM_3 ARM_ARCH_V2S -#define ARM_250 ARM_ARCH_V2S -#define ARM_6 ARM_ARCH_V3 -#define ARM_7 ARM_ARCH_V3 -#define ARM_8 ARM_ARCH_V4 -#define ARM_9 ARM_ARCH_V4T -#define ARM_STRONG ARM_ARCH_V4 -#define ARM_CPU_MASK 0x0000000f /* XXX? */ - -#ifndef CPU_DEFAULT -#if defined __XSCALE__ -#define CPU_DEFAULT (ARM_ARCH_XSCALE) -#else -#if defined __thumb__ -#define CPU_DEFAULT (ARM_ARCH_V5T) -#else -#define CPU_DEFAULT ARM_ANY -#endif -#endif -#endif - -#ifdef TE_LINUX -#define FPU_DEFAULT FPU_ARCH_FPA -#endif - -#ifdef TE_NetBSD -#ifdef OBJ_ELF -#define FPU_DEFAULT FPU_ARCH_VFP /* Soft-float, but VFP order. */ -#else -/* Legacy a.out format. */ -#define FPU_DEFAULT FPU_ARCH_FPA /* Soft-float, but FPA order. */ -#endif -#endif - -/* For backwards compatibility we default to the FPA. */ -#ifndef FPU_DEFAULT -#define FPU_DEFAULT FPU_ARCH_FPA -#endif - -#define streq(a, b) (strcmp (a, b) == 0) -#define skip_whitespace(str) while (*(str) == ' ') ++(str) - -static unsigned long cpu_variant; -static int target_oabi = 0; - -/* Flags stored in private area of BFD structure. */ -static int uses_apcs_26 = FALSE; -static int atpcs = FALSE; -static int support_interwork = FALSE; -static int uses_apcs_float = FALSE; -static int pic_code = FALSE; - -/* Variables that we set while parsing command-line options. Once all - options have been read we re-process these values to set the real - assembly flags. */ -static int legacy_cpu = -1; -static int legacy_fpu = -1; - -static int mcpu_cpu_opt = -1; -static int mcpu_fpu_opt = -1; -static int march_cpu_opt = -1; -static int march_fpu_opt = -1; -static int mfpu_opt = -1; -static int mfloat_abi_opt = -1; - -/* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ -const char comment_chars[] = "@"; - -/* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' - .line and .file directives will appear in the pre-processed output. */ -/* Note that input_file.c hand checks for '#' at the beginning of the - first line of the input file. This is because the compiler outputs - #NO_APP at the beginning of its output. */ -/* Also note that comments like this one will always work. */ -const char line_comment_chars[] = "#"; - -const char line_separator_chars[] = ";"; - -/* Chars that can be used to separate mant - from exp in floating point numbers. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. */ -/* As in 0f12.456 */ -/* or 0d1.2345e12 */ - -const char FLT_CHARS[] = "rRsSfFdDxXeEpP"; - -/* Prefix characters that indicate the start of an immediate - value. */ -#define is_immediate_prefix(C) ((C) == '#' || (C) == '$') - -#ifdef OBJ_ELF -/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */ -symbolS * GOT_symbol; -#endif - -/* Size of relocation record. */ -const int md_reloc_size = 8; - -/* 0: assemble for ARM, - 1: assemble for Thumb, - 2: assemble for Thumb even though target CPU does not support thumb - instructions. */ -static int thumb_mode = 0; - -typedef struct arm_fix -{ - int thumb_mode; -} arm_fix_data; - -struct arm_it -{ - const char * error; - unsigned long instruction; - int size; - struct - { - bfd_reloc_code_real_type type; - expressionS exp; - int pc_rel; - } reloc; -}; - -struct arm_it inst; - -enum asm_shift_index -{ - SHIFT_LSL = 0, - SHIFT_LSR, - SHIFT_ASR, - SHIFT_ROR, - SHIFT_RRX -}; - -struct asm_shift_properties -{ - enum asm_shift_index index; - unsigned long bit_field; - unsigned int allows_0 : 1; - unsigned int allows_32 : 1; -}; - -static const struct asm_shift_properties shift_properties [] = -{ - { SHIFT_LSL, 0, 1, 0}, - { SHIFT_LSR, 0x20, 0, 1}, - { SHIFT_ASR, 0x40, 0, 1}, - { SHIFT_ROR, 0x60, 0, 0}, - { SHIFT_RRX, 0x60, 0, 0} -}; - -struct asm_shift_name -{ - const char * name; - const struct asm_shift_properties * properties; -}; - -static const struct asm_shift_name shift_names [] = -{ - { "asl", shift_properties + SHIFT_LSL }, - { "lsl", shift_properties + SHIFT_LSL }, - { "lsr", shift_properties + SHIFT_LSR }, - { "asr", shift_properties + SHIFT_ASR }, - { "ror", shift_properties + SHIFT_ROR }, - { "rrx", shift_properties + SHIFT_RRX }, - { "ASL", shift_properties + SHIFT_LSL }, - { "LSL", shift_properties + SHIFT_LSL }, - { "LSR", shift_properties + SHIFT_LSR }, - { "ASR", shift_properties + SHIFT_ASR }, - { "ROR", shift_properties + SHIFT_ROR }, - { "RRX", shift_properties + SHIFT_RRX } -}; - -/* Any kind of shift is accepted. */ -#define NO_SHIFT_RESTRICT 1 -/* The shift operand must be an immediate value, not a register. */ -#define SHIFT_IMMEDIATE 0 -/* The shift must be LSL or ASR and the operand must be an immediate. */ -#define SHIFT_LSL_OR_ASR_IMMEDIATE 2 -/* The shift must be ASR and the operand must be an immediate. */ -#define SHIFT_ASR_IMMEDIATE 3 -/* The shift must be LSL and the operand must be an immediate. */ -#define SHIFT_LSL_IMMEDIATE 4 - -#define NUM_FLOAT_VALS 8 - -const char * fp_const[] = -{ - "0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0", 0 -}; - -/* Number of littlenums required to hold an extended precision number. */ -#define MAX_LITTLENUMS 6 - -LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS][MAX_LITTLENUMS]; - -#define FAIL (-1) -#define SUCCESS (0) - -/* Whether a Co-processor load/store operation accepts write-back forms. */ -#define CP_WB_OK 1 -#define CP_NO_WB 0 - -#define SUFF_S 1 -#define SUFF_D 2 -#define SUFF_E 3 -#define SUFF_P 4 - -#define CP_T_X 0x00008000 -#define CP_T_Y 0x00400000 -#define CP_T_Pre 0x01000000 -#define CP_T_UD 0x00800000 -#define CP_T_WB 0x00200000 - -#define CONDS_BIT 0x00100000 -#define LOAD_BIT 0x00100000 - -#define DOUBLE_LOAD_FLAG 0x00000001 - -struct asm_cond -{ - const char * template; - unsigned long value; -}; - -#define COND_ALWAYS 0xe0000000 -#define COND_MASK 0xf0000000 - -static const struct asm_cond conds[] = -{ - {"eq", 0x00000000}, - {"ne", 0x10000000}, - {"cs", 0x20000000}, {"hs", 0x20000000}, - {"cc", 0x30000000}, {"ul", 0x30000000}, {"lo", 0x30000000}, - {"mi", 0x40000000}, - {"pl", 0x50000000}, - {"vs", 0x60000000}, - {"vc", 0x70000000}, - {"hi", 0x80000000}, - {"ls", 0x90000000}, - {"ge", 0xa0000000}, - {"lt", 0xb0000000}, - {"gt", 0xc0000000}, - {"le", 0xd0000000}, - {"al", 0xe0000000}, - {"nv", 0xf0000000} -}; - -struct asm_psr -{ - const char *template; - bfd_boolean cpsr; - unsigned long field; -}; - -/* The bit that distinguishes CPSR and SPSR. */ -#define SPSR_BIT (1 << 22) - -/* How many bits to shift the PSR_xxx bits up by. */ -#define PSR_SHIFT 16 - -#define PSR_c (1 << 0) -#define PSR_x (1 << 1) -#define PSR_s (1 << 2) -#define PSR_f (1 << 3) - -static const struct asm_psr psrs[] = -{ - {"CPSR", TRUE, PSR_c | PSR_f}, - {"CPSR_all", TRUE, PSR_c | PSR_f}, - {"SPSR", FALSE, PSR_c | PSR_f}, - {"SPSR_all", FALSE, PSR_c | PSR_f}, - {"CPSR_flg", TRUE, PSR_f}, - {"CPSR_f", TRUE, PSR_f}, - {"SPSR_flg", FALSE, PSR_f}, - {"SPSR_f", FALSE, PSR_f}, - {"CPSR_c", TRUE, PSR_c}, - {"CPSR_ctl", TRUE, PSR_c}, - {"SPSR_c", FALSE, PSR_c}, - {"SPSR_ctl", FALSE, PSR_c}, - {"CPSR_x", TRUE, PSR_x}, - {"CPSR_s", TRUE, PSR_s}, - {"SPSR_x", FALSE, PSR_x}, - {"SPSR_s", FALSE, PSR_s}, - /* Combinations of flags. */ - {"CPSR_fs", TRUE, PSR_f | PSR_s}, - {"CPSR_fx", TRUE, PSR_f | PSR_x}, - {"CPSR_fc", TRUE, PSR_f | PSR_c}, - {"CPSR_sf", TRUE, PSR_s | PSR_f}, - {"CPSR_sx", TRUE, PSR_s | PSR_x}, - {"CPSR_sc", TRUE, PSR_s | PSR_c}, - {"CPSR_xf", TRUE, PSR_x | PSR_f}, - {"CPSR_xs", TRUE, PSR_x | PSR_s}, - {"CPSR_xc", TRUE, PSR_x | PSR_c}, - {"CPSR_cf", TRUE, PSR_c | PSR_f}, - {"CPSR_cs", TRUE, PSR_c | PSR_s}, - {"CPSR_cx", TRUE, PSR_c | PSR_x}, - {"CPSR_fsx", TRUE, PSR_f | PSR_s | PSR_x}, - {"CPSR_fsc", TRUE, PSR_f | PSR_s | PSR_c}, - {"CPSR_fxs", TRUE, PSR_f | PSR_x | PSR_s}, - {"CPSR_fxc", TRUE, PSR_f | PSR_x | PSR_c}, - {"CPSR_fcs", TRUE, PSR_f | PSR_c | PSR_s}, - {"CPSR_fcx", TRUE, PSR_f | PSR_c | PSR_x}, - {"CPSR_sfx", TRUE, PSR_s | PSR_f | PSR_x}, - {"CPSR_sfc", TRUE, PSR_s | PSR_f | PSR_c}, - {"CPSR_sxf", TRUE, PSR_s | PSR_x | PSR_f}, - {"CPSR_sxc", TRUE, PSR_s | PSR_x | PSR_c}, - {"CPSR_scf", TRUE, PSR_s | PSR_c | PSR_f}, - {"CPSR_scx", TRUE, PSR_s | PSR_c | PSR_x}, - {"CPSR_xfs", TRUE, PSR_x | PSR_f | PSR_s}, - {"CPSR_xfc", TRUE, PSR_x | PSR_f | PSR_c}, - {"CPSR_xsf", TRUE, PSR_x | PSR_s | PSR_f}, - {"CPSR_xsc", TRUE, PSR_x | PSR_s | PSR_c}, - {"CPSR_xcf", TRUE, PSR_x | PSR_c | PSR_f}, - {"CPSR_xcs", TRUE, PSR_x | PSR_c | PSR_s}, - {"CPSR_cfs", TRUE, PSR_c | PSR_f | PSR_s}, - {"CPSR_cfx", TRUE, PSR_c | PSR_f | PSR_x}, - {"CPSR_csf", TRUE, PSR_c | PSR_s | PSR_f}, - {"CPSR_csx", TRUE, PSR_c | PSR_s | PSR_x}, - {"CPSR_cxf", TRUE, PSR_c | PSR_x | PSR_f}, - {"CPSR_cxs", TRUE, PSR_c | PSR_x | PSR_s}, - {"CPSR_fsxc", TRUE, PSR_f | PSR_s | PSR_x | PSR_c}, - {"CPSR_fscx", TRUE, PSR_f | PSR_s | PSR_c | PSR_x}, - {"CPSR_fxsc", TRUE, PSR_f | PSR_x | PSR_s | PSR_c}, - {"CPSR_fxcs", TRUE, PSR_f | PSR_x | PSR_c | PSR_s}, - {"CPSR_fcsx", TRUE, PSR_f | PSR_c | PSR_s | PSR_x}, - {"CPSR_fcxs", TRUE, PSR_f | PSR_c | PSR_x | PSR_s}, - {"CPSR_sfxc", TRUE, PSR_s | PSR_f | PSR_x | PSR_c}, - {"CPSR_sfcx", TRUE, PSR_s | PSR_f | PSR_c | PSR_x}, - {"CPSR_sxfc", TRUE, PSR_s | PSR_x | PSR_f | PSR_c}, - {"CPSR_sxcf", TRUE, PSR_s | PSR_x | PSR_c | PSR_f}, - {"CPSR_scfx", TRUE, PSR_s | PSR_c | PSR_f | PSR_x}, - {"CPSR_scxf", TRUE, PSR_s | PSR_c | PSR_x | PSR_f}, - {"CPSR_xfsc", TRUE, PSR_x | PSR_f | PSR_s | PSR_c}, - {"CPSR_xfcs", TRUE, PSR_x | PSR_f | PSR_c | PSR_s}, - {"CPSR_xsfc", TRUE, PSR_x | PSR_s | PSR_f | PSR_c}, - {"CPSR_xscf", TRUE, PSR_x | PSR_s | PSR_c | PSR_f}, - {"CPSR_xcfs", TRUE, PSR_x | PSR_c | PSR_f | PSR_s}, - {"CPSR_xcsf", TRUE, PSR_x | PSR_c | PSR_s | PSR_f}, - {"CPSR_cfsx", TRUE, PSR_c | PSR_f | PSR_s | PSR_x}, - {"CPSR_cfxs", TRUE, PSR_c | PSR_f | PSR_x | PSR_s}, - {"CPSR_csfx", TRUE, PSR_c | PSR_s | PSR_f | PSR_x}, - {"CPSR_csxf", TRUE, PSR_c | PSR_s | PSR_x | PSR_f}, - {"CPSR_cxfs", TRUE, PSR_c | PSR_x | PSR_f | PSR_s}, - {"CPSR_cxsf", TRUE, PSR_c | PSR_x | PSR_s | PSR_f}, - {"SPSR_fs", FALSE, PSR_f | PSR_s}, - {"SPSR_fx", FALSE, PSR_f | PSR_x}, - {"SPSR_fc", FALSE, PSR_f | PSR_c}, - {"SPSR_sf", FALSE, PSR_s | PSR_f}, - {"SPSR_sx", FALSE, PSR_s | PSR_x}, - {"SPSR_sc", FALSE, PSR_s | PSR_c}, - {"SPSR_xf", FALSE, PSR_x | PSR_f}, - {"SPSR_xs", FALSE, PSR_x | PSR_s}, - {"SPSR_xc", FALSE, PSR_x | PSR_c}, - {"SPSR_cf", FALSE, PSR_c | PSR_f}, - {"SPSR_cs", FALSE, PSR_c | PSR_s}, - {"SPSR_cx", FALSE, PSR_c | PSR_x}, - {"SPSR_fsx", FALSE, PSR_f | PSR_s | PSR_x}, - {"SPSR_fsc", FALSE, PSR_f | PSR_s | PSR_c}, - {"SPSR_fxs", FALSE, PSR_f | PSR_x | PSR_s}, - {"SPSR_fxc", FALSE, PSR_f | PSR_x | PSR_c}, - {"SPSR_fcs", FALSE, PSR_f | PSR_c | PSR_s}, - {"SPSR_fcx", FALSE, PSR_f | PSR_c | PSR_x}, - {"SPSR_sfx", FALSE, PSR_s | PSR_f | PSR_x}, - {"SPSR_sfc", FALSE, PSR_s | PSR_f | PSR_c}, - {"SPSR_sxf", FALSE, PSR_s | PSR_x | PSR_f}, - {"SPSR_sxc", FALSE, PSR_s | PSR_x | PSR_c}, - {"SPSR_scf", FALSE, PSR_s | PSR_c | PSR_f}, - {"SPSR_scx", FALSE, PSR_s | PSR_c | PSR_x}, - {"SPSR_xfs", FALSE, PSR_x | PSR_f | PSR_s}, - {"SPSR_xfc", FALSE, PSR_x | PSR_f | PSR_c}, - {"SPSR_xsf", FALSE, PSR_x | PSR_s | PSR_f}, - {"SPSR_xsc", FALSE, PSR_x | PSR_s | PSR_c}, - {"SPSR_xcf", FALSE, PSR_x | PSR_c | PSR_f}, - {"SPSR_xcs", FALSE, PSR_x | PSR_c | PSR_s}, - {"SPSR_cfs", FALSE, PSR_c | PSR_f | PSR_s}, - {"SPSR_cfx", FALSE, PSR_c | PSR_f | PSR_x}, - {"SPSR_csf", FALSE, PSR_c | PSR_s | PSR_f}, - {"SPSR_csx", FALSE, PSR_c | PSR_s | PSR_x}, - {"SPSR_cxf", FALSE, PSR_c | PSR_x | PSR_f}, - {"SPSR_cxs", FALSE, PSR_c | PSR_x | PSR_s}, - {"SPSR_fsxc", FALSE, PSR_f | PSR_s | PSR_x | PSR_c}, - {"SPSR_fscx", FALSE, PSR_f | PSR_s | PSR_c | PSR_x}, - {"SPSR_fxsc", FALSE, PSR_f | PSR_x | PSR_s | PSR_c}, - {"SPSR_fxcs", FALSE, PSR_f | PSR_x | PSR_c | PSR_s}, - {"SPSR_fcsx", FALSE, PSR_f | PSR_c | PSR_s | PSR_x}, - {"SPSR_fcxs", FALSE, PSR_f | PSR_c | PSR_x | PSR_s}, - {"SPSR_sfxc", FALSE, PSR_s | PSR_f | PSR_x | PSR_c}, - {"SPSR_sfcx", FALSE, PSR_s | PSR_f | PSR_c | PSR_x}, - {"SPSR_sxfc", FALSE, PSR_s | PSR_x | PSR_f | PSR_c}, - {"SPSR_sxcf", FALSE, PSR_s | PSR_x | PSR_c | PSR_f}, - {"SPSR_scfx", FALSE, PSR_s | PSR_c | PSR_f | PSR_x}, - {"SPSR_scxf", FALSE, PSR_s | PSR_c | PSR_x | PSR_f}, - {"SPSR_xfsc", FALSE, PSR_x | PSR_f | PSR_s | PSR_c}, - {"SPSR_xfcs", FALSE, PSR_x | PSR_f | PSR_c | PSR_s}, - {"SPSR_xsfc", FALSE, PSR_x | PSR_s | PSR_f | PSR_c}, - {"SPSR_xscf", FALSE, PSR_x | PSR_s | PSR_c | PSR_f}, - {"SPSR_xcfs", FALSE, PSR_x | PSR_c | PSR_f | PSR_s}, - {"SPSR_xcsf", FALSE, PSR_x | PSR_c | PSR_s | PSR_f}, - {"SPSR_cfsx", FALSE, PSR_c | PSR_f | PSR_s | PSR_x}, - {"SPSR_cfxs", FALSE, PSR_c | PSR_f | PSR_x | PSR_s}, - {"SPSR_csfx", FALSE, PSR_c | PSR_s | PSR_f | PSR_x}, - {"SPSR_csxf", FALSE, PSR_c | PSR_s | PSR_x | PSR_f}, - {"SPSR_cxfs", FALSE, PSR_c | PSR_x | PSR_f | PSR_s}, - {"SPSR_cxsf", FALSE, PSR_c | PSR_x | PSR_s | PSR_f}, -}; - -enum wreg_type - { - IWMMXT_REG_WR = 0, - IWMMXT_REG_WC = 1, - IWMMXT_REG_WR_OR_WC = 2, - IWMMXT_REG_WCG - }; - -enum iwmmxt_insn_type -{ - check_rd, - check_wr, - check_wrwr, - check_wrwrwr, - check_wrwrwcg, - check_tbcst, - check_tmovmsk, - check_tmia, - check_tmcrr, - check_tmrrc, - check_tmcr, - check_tmrc, - check_tinsr, - check_textrc, - check_waligni, - check_textrm, - check_wshufh -}; - -enum vfp_dp_reg_pos -{ - VFP_REG_Dd, VFP_REG_Dm, VFP_REG_Dn -}; - -enum vfp_sp_reg_pos -{ - VFP_REG_Sd, VFP_REG_Sm, VFP_REG_Sn -}; - -enum vfp_ldstm_type -{ - VFP_LDSTMIA, VFP_LDSTMDB, VFP_LDSTMIAX, VFP_LDSTMDBX -}; - -/* VFP system registers. */ -struct vfp_reg -{ - const char *name; - unsigned long regno; -}; - -static const struct vfp_reg vfp_regs[] = -{ - {"fpsid", 0x00000000}, - {"FPSID", 0x00000000}, - {"fpscr", 0x00010000}, - {"FPSCR", 0x00010000}, - {"fpexc", 0x00080000}, - {"FPEXC", 0x00080000} -}; - -/* Structure for a hash table entry for a register. */ -struct reg_entry -{ - const char * name; - int number; - bfd_boolean builtin; -}; - -/* Some well known registers that we refer to directly elsewhere. */ -#define REG_SP 13 -#define REG_LR 14 -#define REG_PC 15 - -#define wr_register(reg) ((reg ^ WR_PREFIX) >= 0 && (reg ^ WR_PREFIX) <= 15) -#define wc_register(reg) ((reg ^ WC_PREFIX) >= 0 && (reg ^ WC_PREFIX) <= 15) -#define wcg_register(reg) ((reg ^ WC_PREFIX) >= 8 && (reg ^ WC_PREFIX) <= 11) - -/* These are the standard names. Users can add aliases with .req. - and delete them with .unreq. */ - -/* Integer Register Numbers. */ -static const struct reg_entry rn_table[] = -{ - {"r0", 0, TRUE}, {"r1", 1, TRUE}, {"r2", 2, TRUE}, {"r3", 3, TRUE}, - {"r4", 4, TRUE}, {"r5", 5, TRUE}, {"r6", 6, TRUE}, {"r7", 7, TRUE}, - {"r8", 8, TRUE}, {"r9", 9, TRUE}, {"r10", 10, TRUE}, {"r11", 11, TRUE}, - {"r12", 12, TRUE}, {"r13", REG_SP, TRUE}, {"r14", REG_LR, TRUE}, {"r15", REG_PC, TRUE}, - /* ATPCS Synonyms. */ - {"a1", 0, TRUE}, {"a2", 1, TRUE}, {"a3", 2, TRUE}, {"a4", 3, TRUE}, - {"v1", 4, TRUE}, {"v2", 5, TRUE}, {"v3", 6, TRUE}, {"v4", 7, TRUE}, - {"v5", 8, TRUE}, {"v6", 9, TRUE}, {"v7", 10, TRUE}, {"v8", 11, TRUE}, - /* Well-known aliases. */ - {"wr", 7, TRUE}, {"sb", 9, TRUE}, {"sl", 10, TRUE}, {"fp", 11, TRUE}, - {"ip", 12, TRUE}, {"sp", REG_SP, TRUE}, {"lr", REG_LR, TRUE}, {"pc", REG_PC, TRUE}, - {NULL, 0, TRUE} -}; - -#define WR_PREFIX 0x200 -#define WC_PREFIX 0x400 - -static const struct reg_entry iwmmxt_table[] = -{ - /* Intel Wireless MMX technology register names. */ - { "wr0", 0x0 | WR_PREFIX, TRUE}, {"wr1", 0x1 | WR_PREFIX, TRUE}, - { "wr2", 0x2 | WR_PREFIX, TRUE}, {"wr3", 0x3 | WR_PREFIX, TRUE}, - { "wr4", 0x4 | WR_PREFIX, TRUE}, {"wr5", 0x5 | WR_PREFIX, TRUE}, - { "wr6", 0x6 | WR_PREFIX, TRUE}, {"wr7", 0x7 | WR_PREFIX, TRUE}, - { "wr8", 0x8 | WR_PREFIX, TRUE}, {"wr9", 0x9 | WR_PREFIX, TRUE}, - { "wr10", 0xa | WR_PREFIX, TRUE}, {"wr11", 0xb | WR_PREFIX, TRUE}, - { "wr12", 0xc | WR_PREFIX, TRUE}, {"wr13", 0xd | WR_PREFIX, TRUE}, - { "wr14", 0xe | WR_PREFIX, TRUE}, {"wr15", 0xf | WR_PREFIX, TRUE}, - { "wcid", 0x0 | WC_PREFIX, TRUE}, {"wcon", 0x1 | WC_PREFIX, TRUE}, - {"wcssf", 0x2 | WC_PREFIX, TRUE}, {"wcasf", 0x3 | WC_PREFIX, TRUE}, - {"wcgr0", 0x8 | WC_PREFIX, TRUE}, {"wcgr1", 0x9 | WC_PREFIX, TRUE}, - {"wcgr2", 0xa | WC_PREFIX, TRUE}, {"wcgr3", 0xb | WC_PREFIX, TRUE}, - - { "wR0", 0x0 | WR_PREFIX, TRUE}, {"wR1", 0x1 | WR_PREFIX, TRUE}, - { "wR2", 0x2 | WR_PREFIX, TRUE}, {"wR3", 0x3 | WR_PREFIX, TRUE}, - { "wR4", 0x4 | WR_PREFIX, TRUE}, {"wR5", 0x5 | WR_PREFIX, TRUE}, - { "wR6", 0x6 | WR_PREFIX, TRUE}, {"wR7", 0x7 | WR_PREFIX, TRUE}, - { "wR8", 0x8 | WR_PREFIX, TRUE}, {"wR9", 0x9 | WR_PREFIX, TRUE}, - { "wR10", 0xa | WR_PREFIX, TRUE}, {"wR11", 0xb | WR_PREFIX, TRUE}, - { "wR12", 0xc | WR_PREFIX, TRUE}, {"wR13", 0xd | WR_PREFIX, TRUE}, - { "wR14", 0xe | WR_PREFIX, TRUE}, {"wR15", 0xf | WR_PREFIX, TRUE}, - { "wCID", 0x0 | WC_PREFIX, TRUE}, {"wCon", 0x1 | WC_PREFIX, TRUE}, - {"wCSSF", 0x2 | WC_PREFIX, TRUE}, {"wCASF", 0x3 | WC_PREFIX, TRUE}, - {"wCGR0", 0x8 | WC_PREFIX, TRUE}, {"wCGR1", 0x9 | WC_PREFIX, TRUE}, - {"wCGR2", 0xa | WC_PREFIX, TRUE}, {"wCGR3", 0xb | WC_PREFIX, TRUE}, - {NULL, 0, TRUE} -}; - -/* Co-processor Numbers. */ -static const struct reg_entry cp_table[] = -{ - {"p0", 0, TRUE}, {"p1", 1, TRUE}, {"p2", 2, TRUE}, {"p3", 3, TRUE}, - {"p4", 4, TRUE}, {"p5", 5, TRUE}, {"p6", 6, TRUE}, {"p7", 7, TRUE}, - {"p8", 8, TRUE}, {"p9", 9, TRUE}, {"p10", 10, TRUE}, {"p11", 11, TRUE}, - {"p12", 12, TRUE}, {"p13", 13, TRUE}, {"p14", 14, TRUE}, {"p15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -/* Co-processor Register Numbers. */ -static const struct reg_entry cn_table[] = -{ - {"c0", 0, TRUE}, {"c1", 1, TRUE}, {"c2", 2, TRUE}, {"c3", 3, TRUE}, - {"c4", 4, TRUE}, {"c5", 5, TRUE}, {"c6", 6, TRUE}, {"c7", 7, TRUE}, - {"c8", 8, TRUE}, {"c9", 9, TRUE}, {"c10", 10, TRUE}, {"c11", 11, TRUE}, - {"c12", 12, TRUE}, {"c13", 13, TRUE}, {"c14", 14, TRUE}, {"c15", 15, TRUE}, - /* Not really valid, but kept for back-wards compatibility. */ - {"cr0", 0, TRUE}, {"cr1", 1, TRUE}, {"cr2", 2, TRUE}, {"cr3", 3, TRUE}, - {"cr4", 4, TRUE}, {"cr5", 5, TRUE}, {"cr6", 6, TRUE}, {"cr7", 7, TRUE}, - {"cr8", 8, TRUE}, {"cr9", 9, TRUE}, {"cr10", 10, TRUE}, {"cr11", 11, TRUE}, - {"cr12", 12, TRUE}, {"cr13", 13, TRUE}, {"cr14", 14, TRUE}, {"cr15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -/* FPA Registers. */ -static const struct reg_entry fn_table[] = -{ - {"f0", 0, TRUE}, {"f1", 1, TRUE}, {"f2", 2, TRUE}, {"f3", 3, TRUE}, - {"f4", 4, TRUE}, {"f5", 5, TRUE}, {"f6", 6, TRUE}, {"f7", 7, TRUE}, - {NULL, 0, TRUE} -}; - -/* VFP SP Registers. */ -static const struct reg_entry sn_table[] = -{ - {"s0", 0, TRUE}, {"s1", 1, TRUE}, {"s2", 2, TRUE}, {"s3", 3, TRUE}, - {"s4", 4, TRUE}, {"s5", 5, TRUE}, {"s6", 6, TRUE}, {"s7", 7, TRUE}, - {"s8", 8, TRUE}, {"s9", 9, TRUE}, {"s10", 10, TRUE}, {"s11", 11, TRUE}, - {"s12", 12, TRUE}, {"s13", 13, TRUE}, {"s14", 14, TRUE}, {"s15", 15, TRUE}, - {"s16", 16, TRUE}, {"s17", 17, TRUE}, {"s18", 18, TRUE}, {"s19", 19, TRUE}, - {"s20", 20, TRUE}, {"s21", 21, TRUE}, {"s22", 22, TRUE}, {"s23", 23, TRUE}, - {"s24", 24, TRUE}, {"s25", 25, TRUE}, {"s26", 26, TRUE}, {"s27", 27, TRUE}, - {"s28", 28, TRUE}, {"s29", 29, TRUE}, {"s30", 30, TRUE}, {"s31", 31, TRUE}, - {NULL, 0, TRUE} -}; - -/* VFP DP Registers. */ -static const struct reg_entry dn_table[] = -{ - {"d0", 0, TRUE}, {"d1", 1, TRUE}, {"d2", 2, TRUE}, {"d3", 3, TRUE}, - {"d4", 4, TRUE}, {"d5", 5, TRUE}, {"d6", 6, TRUE}, {"d7", 7, TRUE}, - {"d8", 8, TRUE}, {"d9", 9, TRUE}, {"d10", 10, TRUE}, {"d11", 11, TRUE}, - {"d12", 12, TRUE}, {"d13", 13, TRUE}, {"d14", 14, TRUE}, {"d15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -/* Maverick DSP coprocessor registers. */ -static const struct reg_entry mav_mvf_table[] = -{ - {"mvf0", 0, TRUE}, {"mvf1", 1, TRUE}, {"mvf2", 2, TRUE}, {"mvf3", 3, TRUE}, - {"mvf4", 4, TRUE}, {"mvf5", 5, TRUE}, {"mvf6", 6, TRUE}, {"mvf7", 7, TRUE}, - {"mvf8", 8, TRUE}, {"mvf9", 9, TRUE}, {"mvf10", 10, TRUE}, {"mvf11", 11, TRUE}, - {"mvf12", 12, TRUE}, {"mvf13", 13, TRUE}, {"mvf14", 14, TRUE}, {"mvf15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -static const struct reg_entry mav_mvd_table[] = -{ - {"mvd0", 0, TRUE}, {"mvd1", 1, TRUE}, {"mvd2", 2, TRUE}, {"mvd3", 3, TRUE}, - {"mvd4", 4, TRUE}, {"mvd5", 5, TRUE}, {"mvd6", 6, TRUE}, {"mvd7", 7, TRUE}, - {"mvd8", 8, TRUE}, {"mvd9", 9, TRUE}, {"mvd10", 10, TRUE}, {"mvd11", 11, TRUE}, - {"mvd12", 12, TRUE}, {"mvd13", 13, TRUE}, {"mvd14", 14, TRUE}, {"mvd15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -static const struct reg_entry mav_mvfx_table[] = -{ - {"mvfx0", 0, TRUE}, {"mvfx1", 1, TRUE}, {"mvfx2", 2, TRUE}, {"mvfx3", 3, TRUE}, - {"mvfx4", 4, TRUE}, {"mvfx5", 5, TRUE}, {"mvfx6", 6, TRUE}, {"mvfx7", 7, TRUE}, - {"mvfx8", 8, TRUE}, {"mvfx9", 9, TRUE}, {"mvfx10", 10, TRUE}, {"mvfx11", 11, TRUE}, - {"mvfx12", 12, TRUE}, {"mvfx13", 13, TRUE}, {"mvfx14", 14, TRUE}, {"mvfx15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -static const struct reg_entry mav_mvdx_table[] = -{ - {"mvdx0", 0, TRUE}, {"mvdx1", 1, TRUE}, {"mvdx2", 2, TRUE}, {"mvdx3", 3, TRUE}, - {"mvdx4", 4, TRUE}, {"mvdx5", 5, TRUE}, {"mvdx6", 6, TRUE}, {"mvdx7", 7, TRUE}, - {"mvdx8", 8, TRUE}, {"mvdx9", 9, TRUE}, {"mvdx10", 10, TRUE}, {"mvdx11", 11, TRUE}, - {"mvdx12", 12, TRUE}, {"mvdx13", 13, TRUE}, {"mvdx14", 14, TRUE}, {"mvdx15", 15, TRUE}, - {NULL, 0, TRUE} -}; - -static const struct reg_entry mav_mvax_table[] = -{ - {"mvax0", 0, TRUE}, {"mvax1", 1, TRUE}, {"mvax2", 2, TRUE}, {"mvax3", 3, TRUE}, - {NULL, 0, TRUE} -}; - -static const struct reg_entry mav_dspsc_table[] = -{ - {"dspsc", 0, TRUE}, - {NULL, 0, TRUE} -}; - -struct reg_map -{ - const struct reg_entry *names; - int max_regno; - struct hash_control *htab; - const char *expected; -}; - -struct reg_map all_reg_maps[] = -{ - {rn_table, 15, NULL, N_("ARM register expected")}, - {cp_table, 15, NULL, N_("bad or missing co-processor number")}, - {cn_table, 15, NULL, N_("co-processor register expected")}, - {fn_table, 7, NULL, N_("FPA register expected")}, - {sn_table, 31, NULL, N_("VFP single precision register expected")}, - {dn_table, 15, NULL, N_("VFP double precision register expected")}, - {mav_mvf_table, 15, NULL, N_("Maverick MVF register expected")}, - {mav_mvd_table, 15, NULL, N_("Maverick MVD register expected")}, - {mav_mvfx_table, 15, NULL, N_("Maverick MVFX register expected")}, - {mav_mvdx_table, 15, NULL, N_("Maverick MVDX register expected")}, - {mav_mvax_table, 3, NULL, N_("Maverick MVAX register expected")}, - {mav_dspsc_table, 0, NULL, N_("Maverick DSPSC register expected")}, - {iwmmxt_table, 23, NULL, N_("Intel Wireless MMX technology register expected")}, -}; - -/* Enumeration matching entries in table above. */ -enum arm_reg_type -{ - REG_TYPE_RN = 0, -#define REG_TYPE_FIRST REG_TYPE_RN - REG_TYPE_CP = 1, - REG_TYPE_CN = 2, - REG_TYPE_FN = 3, - REG_TYPE_SN = 4, - REG_TYPE_DN = 5, - REG_TYPE_MVF = 6, - REG_TYPE_MVD = 7, - REG_TYPE_MVFX = 8, - REG_TYPE_MVDX = 9, - REG_TYPE_MVAX = 10, - REG_TYPE_DSPSC = 11, - REG_TYPE_IWMMXT = 12, - - REG_TYPE_MAX = 13 -}; - -/* Functions called by parser. */ -/* ARM instructions. */ -static void do_arit PARAMS ((char *)); -static void do_cmp PARAMS ((char *)); -static void do_mov PARAMS ((char *)); -static void do_ldst PARAMS ((char *)); -static void do_ldstt PARAMS ((char *)); -static void do_ldmstm PARAMS ((char *)); -static void do_branch PARAMS ((char *)); -static void do_swi PARAMS ((char *)); - -/* Pseudo Op codes. */ -static void do_adr PARAMS ((char *)); -static void do_adrl PARAMS ((char *)); -static void do_empty PARAMS ((char *)); - -/* ARM v2. */ -static void do_mul PARAMS ((char *)); -static void do_mla PARAMS ((char *)); - -/* ARM v2S. */ -static void do_swap PARAMS ((char *)); - -/* ARM v3. */ -static void do_msr PARAMS ((char *)); -static void do_mrs PARAMS ((char *)); - -/* ARM v3M. */ -static void do_mull PARAMS ((char *)); - -/* ARM v4. */ -static void do_ldstv4 PARAMS ((char *)); - -/* ARM v4T. */ -static void do_bx PARAMS ((char *)); - -/* ARM v5T. */ -static void do_blx PARAMS ((char *)); -static void do_bkpt PARAMS ((char *)); -static void do_clz PARAMS ((char *)); -static void do_lstc2 PARAMS ((char *)); -static void do_cdp2 PARAMS ((char *)); -static void do_co_reg2 PARAMS ((char *)); - -/* ARM v5TExP. */ -static void do_smla PARAMS ((char *)); -static void do_smlal PARAMS ((char *)); -static void do_smul PARAMS ((char *)); -static void do_qadd PARAMS ((char *)); - -/* ARM v5TE. */ -static void do_pld PARAMS ((char *)); -static void do_ldrd PARAMS ((char *)); -static void do_co_reg2c PARAMS ((char *)); - -/* ARM v5TEJ. */ -static void do_bxj PARAMS ((char *)); - -/* ARM V6. */ -static void do_cps PARAMS ((char *)); -static void do_cpsi PARAMS ((char *)); -static void do_ldrex PARAMS ((char *)); -static void do_pkhbt PARAMS ((char *)); -static void do_pkhtb PARAMS ((char *)); -static void do_qadd16 PARAMS ((char *)); -static void do_rev PARAMS ((char *)); -static void do_rfe PARAMS ((char *)); -static void do_sxtah PARAMS ((char *)); -static void do_sxth PARAMS ((char *)); -static void do_setend PARAMS ((char *)); -static void do_smlad PARAMS ((char *)); -static void do_smlald PARAMS ((char *)); -static void do_smmul PARAMS ((char *)); -static void do_ssat PARAMS ((char *)); -static void do_usat PARAMS ((char *)); -static void do_srs PARAMS ((char *)); -static void do_ssat16 PARAMS ((char *)); -static void do_usat16 PARAMS ((char *)); -static void do_strex PARAMS ((char *)); -static void do_umaal PARAMS ((char *)); - -static void do_cps_mode PARAMS ((char **)); -static void do_cps_flags PARAMS ((char **, int)); -static int do_endian_specifier PARAMS ((char *)); -static void do_pkh_core PARAMS ((char *, int)); -static void do_sat PARAMS ((char **, int)); -static void do_sat16 PARAMS ((char **, int)); - -/* Coprocessor Instructions. */ -static void do_cdp PARAMS ((char *)); -static void do_lstc PARAMS ((char *)); -static void do_co_reg PARAMS ((char *)); - -/* FPA instructions. */ -static void do_fpa_ctrl PARAMS ((char *)); -static void do_fpa_ldst PARAMS ((char *)); -static void do_fpa_ldmstm PARAMS ((char *)); -static void do_fpa_dyadic PARAMS ((char *)); -static void do_fpa_monadic PARAMS ((char *)); -static void do_fpa_cmp PARAMS ((char *)); -static void do_fpa_from_reg PARAMS ((char *)); -static void do_fpa_to_reg PARAMS ((char *)); - -/* VFP instructions. */ -static void do_vfp_sp_monadic PARAMS ((char *)); -static void do_vfp_dp_monadic PARAMS ((char *)); -static void do_vfp_sp_dyadic PARAMS ((char *)); -static void do_vfp_dp_dyadic PARAMS ((char *)); -static void do_vfp_reg_from_sp PARAMS ((char *)); -static void do_vfp_sp_from_reg PARAMS ((char *)); -static void do_vfp_reg2_from_sp2 PARAMS ((char *)); -static void do_vfp_sp2_from_reg2 PARAMS ((char *)); -static void do_vfp_reg_from_dp PARAMS ((char *)); -static void do_vfp_reg2_from_dp PARAMS ((char *)); -static void do_vfp_dp_from_reg PARAMS ((char *)); -static void do_vfp_dp_from_reg2 PARAMS ((char *)); -static void do_vfp_reg_from_ctrl PARAMS ((char *)); -static void do_vfp_ctrl_from_reg PARAMS ((char *)); -static void do_vfp_sp_ldst PARAMS ((char *)); -static void do_vfp_dp_ldst PARAMS ((char *)); -static void do_vfp_sp_ldstmia PARAMS ((char *)); -static void do_vfp_sp_ldstmdb PARAMS ((char *)); -static void do_vfp_dp_ldstmia PARAMS ((char *)); -static void do_vfp_dp_ldstmdb PARAMS ((char *)); -static void do_vfp_xp_ldstmia PARAMS ((char *)); -static void do_vfp_xp_ldstmdb PARAMS ((char *)); -static void do_vfp_sp_compare_z PARAMS ((char *)); -static void do_vfp_dp_compare_z PARAMS ((char *)); -static void do_vfp_dp_sp_cvt PARAMS ((char *)); -static void do_vfp_sp_dp_cvt PARAMS ((char *)); - -/* XScale. */ -static void do_xsc_mia PARAMS ((char *)); -static void do_xsc_mar PARAMS ((char *)); -static void do_xsc_mra PARAMS ((char *)); - -/* Maverick. */ -static void do_mav_binops PARAMS ((char *, int, enum arm_reg_type, - enum arm_reg_type)); -static void do_mav_binops_1a PARAMS ((char *)); -static void do_mav_binops_1b PARAMS ((char *)); -static void do_mav_binops_1c PARAMS ((char *)); -static void do_mav_binops_1d PARAMS ((char *)); -static void do_mav_binops_1e PARAMS ((char *)); -static void do_mav_binops_1f PARAMS ((char *)); -static void do_mav_binops_1g PARAMS ((char *)); -static void do_mav_binops_1h PARAMS ((char *)); -static void do_mav_binops_1i PARAMS ((char *)); -static void do_mav_binops_1j PARAMS ((char *)); -static void do_mav_binops_1k PARAMS ((char *)); -static void do_mav_binops_1l PARAMS ((char *)); -static void do_mav_binops_1m PARAMS ((char *)); -static void do_mav_binops_1n PARAMS ((char *)); -static void do_mav_binops_1o PARAMS ((char *)); -static void do_mav_binops_2a PARAMS ((char *)); -static void do_mav_binops_2b PARAMS ((char *)); -static void do_mav_binops_2c PARAMS ((char *)); -static void do_mav_binops_3a PARAMS ((char *)); -static void do_mav_binops_3b PARAMS ((char *)); -static void do_mav_binops_3c PARAMS ((char *)); -static void do_mav_binops_3d PARAMS ((char *)); -static void do_mav_triple PARAMS ((char *, int, enum arm_reg_type, - enum arm_reg_type, - enum arm_reg_type)); -static void do_mav_triple_4a PARAMS ((char *)); -static void do_mav_triple_4b PARAMS ((char *)); -static void do_mav_triple_5a PARAMS ((char *)); -static void do_mav_triple_5b PARAMS ((char *)); -static void do_mav_triple_5c PARAMS ((char *)); -static void do_mav_triple_5d PARAMS ((char *)); -static void do_mav_triple_5e PARAMS ((char *)); -static void do_mav_triple_5f PARAMS ((char *)); -static void do_mav_triple_5g PARAMS ((char *)); -static void do_mav_triple_5h PARAMS ((char *)); -static void do_mav_quad PARAMS ((char *, int, enum arm_reg_type, - enum arm_reg_type, - enum arm_reg_type, - enum arm_reg_type)); -static void do_mav_quad_6a PARAMS ((char *)); -static void do_mav_quad_6b PARAMS ((char *)); -static void do_mav_dspsc_1 PARAMS ((char *)); -static void do_mav_dspsc_2 PARAMS ((char *)); -static void do_mav_shift PARAMS ((char *, enum arm_reg_type, - enum arm_reg_type)); -static void do_mav_shift_1 PARAMS ((char *)); -static void do_mav_shift_2 PARAMS ((char *)); -static void do_mav_ldst PARAMS ((char *, enum arm_reg_type)); -static void do_mav_ldst_1 PARAMS ((char *)); -static void do_mav_ldst_2 PARAMS ((char *)); -static void do_mav_ldst_3 PARAMS ((char *)); -static void do_mav_ldst_4 PARAMS ((char *)); - -static int mav_reg_required_here PARAMS ((char **, int, - enum arm_reg_type)); -static int mav_parse_offset PARAMS ((char **, int *)); - -static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, - int, int)); -static int arm_reg_parse PARAMS ((char **, struct hash_control *)); -static enum arm_reg_type arm_reg_parse_any PARAMS ((char *)); -static const struct asm_psr * arm_psr_parse PARAMS ((char **)); -static void symbol_locate PARAMS ((symbolS *, const char *, segT, valueT, - fragS *)); -static int add_to_lit_pool PARAMS ((void)); -static unsigned validate_immediate PARAMS ((unsigned)); -static unsigned validate_immediate_twopart PARAMS ((unsigned int, - unsigned int *)); -static int validate_offset_imm PARAMS ((unsigned int, int)); -static void opcode_select PARAMS ((int)); -static void end_of_line PARAMS ((char *)); -static int reg_required_here PARAMS ((char **, int)); -static int psr_required_here PARAMS ((char **)); -static int co_proc_number PARAMS ((char **)); -static int cp_opc_expr PARAMS ((char **, int, int)); -static int cp_reg_required_here PARAMS ((char **, int)); -static int fp_reg_required_here PARAMS ((char **, int)); -static int vfp_sp_reg_required_here PARAMS ((char **, enum vfp_sp_reg_pos)); -static int vfp_dp_reg_required_here PARAMS ((char **, enum vfp_dp_reg_pos)); -static void vfp_sp_ldstm PARAMS ((char *, enum vfp_ldstm_type)); -static void vfp_dp_ldstm PARAMS ((char *, enum vfp_ldstm_type)); -static long vfp_sp_reg_list PARAMS ((char **, enum vfp_sp_reg_pos)); -static long vfp_dp_reg_list PARAMS ((char **)); -static int vfp_psr_required_here PARAMS ((char **str)); -static const struct vfp_reg *vfp_psr_parse PARAMS ((char **str)); -static int cp_address_offset PARAMS ((char **)); -static int cp_address_required_here PARAMS ((char **, int)); -static int my_get_float_expression PARAMS ((char **)); -static int skip_past_comma PARAMS ((char **)); -static int walk_no_bignums PARAMS ((symbolS *)); -static int negate_data_op PARAMS ((unsigned long *, unsigned long)); -static int data_op2 PARAMS ((char **)); -static int fp_op2 PARAMS ((char **)); -static long reg_list PARAMS ((char **)); -static void thumb_load_store PARAMS ((char *, int, int)); -static int decode_shift PARAMS ((char **, int)); -static int ldst_extend PARAMS ((char **)); -static int ldst_extend_v4 PARAMS ((char **)); -static void thumb_add_sub PARAMS ((char *, int)); -static void insert_reg PARAMS ((const struct reg_entry *, - struct hash_control *)); -static void thumb_shift PARAMS ((char *, int)); -static void thumb_mov_compare PARAMS ((char *, int)); -static void build_arm_ops_hsh PARAMS ((void)); -static void set_constant_flonums PARAMS ((void)); -static valueT md_chars_to_number PARAMS ((char *, int)); -static void build_reg_hsh PARAMS ((struct reg_map *)); -static void insert_reg_alias PARAMS ((char *, int, struct hash_control *)); -static int create_register_alias PARAMS ((char *, char *)); -static void output_inst PARAMS ((const char *)); -static int accum0_required_here PARAMS ((char **)); -static int ld_mode_required_here PARAMS ((char **)); -static void do_branch25 PARAMS ((char *)); -static symbolS * find_real_start PARAMS ((symbolS *)); -#ifdef OBJ_ELF -static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void)); -#endif - -static int wreg_required_here PARAMS ((char **, int, enum wreg_type)); -static void do_iwmmxt_byte_addr PARAMS ((char *)); -static void do_iwmmxt_tandc PARAMS ((char *)); -static void do_iwmmxt_tbcst PARAMS ((char *)); -static void do_iwmmxt_textrc PARAMS ((char *)); -static void do_iwmmxt_textrm PARAMS ((char *)); -static void do_iwmmxt_tinsr PARAMS ((char *)); -static void do_iwmmxt_tmcr PARAMS ((char *)); -static void do_iwmmxt_tmcrr PARAMS ((char *)); -static void do_iwmmxt_tmia PARAMS ((char *)); -static void do_iwmmxt_tmovmsk PARAMS ((char *)); -static void do_iwmmxt_tmrc PARAMS ((char *)); -static void do_iwmmxt_tmrrc PARAMS ((char *)); -static void do_iwmmxt_torc PARAMS ((char *)); -static void do_iwmmxt_waligni PARAMS ((char *)); -static void do_iwmmxt_wmov PARAMS ((char *)); -static void do_iwmmxt_word_addr PARAMS ((char *)); -static void do_iwmmxt_wrwr PARAMS ((char *)); -static void do_iwmmxt_wrwrwcg PARAMS ((char *)); -static void do_iwmmxt_wrwrwr PARAMS ((char *)); -static void do_iwmmxt_wshufh PARAMS ((char *)); -static void do_iwmmxt_wzero PARAMS ((char *)); -static int cp_byte_address_offset PARAMS ((char **)); -static int cp_byte_address_required_here PARAMS ((char **)); - -/* ARM instructions take 4bytes in the object file, Thumb instructions - take 2: */ -#define INSN_SIZE 4 - -/* "INSN X,Y" where X:bit12, Y:bit16. */ -#define MAV_MODE1 0x100c - -/* "INSN X,Y" where X:bit16, Y:bit12. */ -#define MAV_MODE2 0x0c10 - -/* "INSN X,Y" where X:bit12, Y:bit16. */ -#define MAV_MODE3 0x100c - -/* "INSN X,Y,Z" where X:16, Y:0, Z:12. */ -#define MAV_MODE4 0x0c0010 - -/* "INSN X,Y,Z" where X:12, Y:16, Z:0. */ -#define MAV_MODE5 0x00100c - -/* "INSN W,X,Y,Z" where W:5, X:12, Y:16, Z:0. */ -#define MAV_MODE6 0x00100c05 - -struct asm_opcode -{ - /* Basic string to match. */ - const char * template; - - /* Basic instruction code. */ - unsigned long value; - - /* Offset into the template where the condition code (if any) will be. - If zero, then the instruction is never conditional. */ - unsigned cond_offset; - - /* Which architecture variant provides this instruction. */ - unsigned long variant; - - /* Function to call to parse args. */ - void (* parms) PARAMS ((char *)); -}; - -static const struct asm_opcode insns[] = -{ - /* Core ARM Instructions. */ - {"and", 0xe0000000, 3, ARM_EXT_V1, do_arit}, - {"ands", 0xe0100000, 3, ARM_EXT_V1, do_arit}, - {"eor", 0xe0200000, 3, ARM_EXT_V1, do_arit}, - {"eors", 0xe0300000, 3, ARM_EXT_V1, do_arit}, - {"sub", 0xe0400000, 3, ARM_EXT_V1, do_arit}, - {"subs", 0xe0500000, 3, ARM_EXT_V1, do_arit}, - {"rsb", 0xe0600000, 3, ARM_EXT_V1, do_arit}, - {"rsbs", 0xe0700000, 3, ARM_EXT_V1, do_arit}, - {"add", 0xe0800000, 3, ARM_EXT_V1, do_arit}, - {"adds", 0xe0900000, 3, ARM_EXT_V1, do_arit}, - {"adc", 0xe0a00000, 3, ARM_EXT_V1, do_arit}, - {"adcs", 0xe0b00000, 3, ARM_EXT_V1, do_arit}, - {"sbc", 0xe0c00000, 3, ARM_EXT_V1, do_arit}, - {"sbcs", 0xe0d00000, 3, ARM_EXT_V1, do_arit}, - {"rsc", 0xe0e00000, 3, ARM_EXT_V1, do_arit}, - {"rscs", 0xe0f00000, 3, ARM_EXT_V1, do_arit}, - {"orr", 0xe1800000, 3, ARM_EXT_V1, do_arit}, - {"orrs", 0xe1900000, 3, ARM_EXT_V1, do_arit}, - {"bic", 0xe1c00000, 3, ARM_EXT_V1, do_arit}, - {"bics", 0xe1d00000, 3, ARM_EXT_V1, do_arit}, - - {"tst", 0xe1100000, 3, ARM_EXT_V1, do_cmp}, - {"tsts", 0xe1100000, 3, ARM_EXT_V1, do_cmp}, - {"tstp", 0xe110f000, 3, ARM_EXT_V1, do_cmp}, - {"teq", 0xe1300000, 3, ARM_EXT_V1, do_cmp}, - {"teqs", 0xe1300000, 3, ARM_EXT_V1, do_cmp}, - {"teqp", 0xe130f000, 3, ARM_EXT_V1, do_cmp}, - {"cmp", 0xe1500000, 3, ARM_EXT_V1, do_cmp}, - {"cmps", 0xe1500000, 3, ARM_EXT_V1, do_cmp}, - {"cmpp", 0xe150f000, 3, ARM_EXT_V1, do_cmp}, - {"cmn", 0xe1700000, 3, ARM_EXT_V1, do_cmp}, - {"cmns", 0xe1700000, 3, ARM_EXT_V1, do_cmp}, - {"cmnp", 0xe170f000, 3, ARM_EXT_V1, do_cmp}, - - {"mov", 0xe1a00000, 3, ARM_EXT_V1, do_mov}, - {"movs", 0xe1b00000, 3, ARM_EXT_V1, do_mov}, - {"mvn", 0xe1e00000, 3, ARM_EXT_V1, do_mov}, - {"mvns", 0xe1f00000, 3, ARM_EXT_V1, do_mov}, - - {"ldr", 0xe4100000, 3, ARM_EXT_V1, do_ldst}, - {"ldrb", 0xe4500000, 3, ARM_EXT_V1, do_ldst}, - {"ldrt", 0xe4300000, 3, ARM_EXT_V1, do_ldstt}, - {"ldrbt", 0xe4700000, 3, ARM_EXT_V1, do_ldstt}, - {"str", 0xe4000000, 3, ARM_EXT_V1, do_ldst}, - {"strb", 0xe4400000, 3, ARM_EXT_V1, do_ldst}, - {"strt", 0xe4200000, 3, ARM_EXT_V1, do_ldstt}, - {"strbt", 0xe4600000, 3, ARM_EXT_V1, do_ldstt}, - - {"stmia", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmib", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmda", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmdb", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmfd", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmfa", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmea", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, - {"stmed", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, - - {"ldmia", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmib", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmda", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmdb", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmfd", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmfa", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmea", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm}, - {"ldmed", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, - - {"swi", 0xef000000, 3, ARM_EXT_V1, do_swi}, -#ifdef TE_WINCE - /* XXX This is the wrong place to do this. Think multi-arch. */ - {"bl", 0xeb000000, 2, ARM_EXT_V1, do_branch}, - {"b", 0xea000000, 1, ARM_EXT_V1, do_branch}, -#else - {"bl", 0xebfffffe, 2, ARM_EXT_V1, do_branch}, - {"b", 0xeafffffe, 1, ARM_EXT_V1, do_branch}, -#endif - - /* Pseudo ops. */ - {"adr", 0xe28f0000, 3, ARM_EXT_V1, do_adr}, - {"adrl", 0xe28f0000, 3, ARM_EXT_V1, do_adrl}, - {"nop", 0xe1a00000, 3, ARM_EXT_V1, do_empty}, - - /* ARM 2 multiplies. */ - {"mul", 0xe0000090, 3, ARM_EXT_V2, do_mul}, - {"muls", 0xe0100090, 3, ARM_EXT_V2, do_mul}, - {"mla", 0xe0200090, 3, ARM_EXT_V2, do_mla}, - {"mlas", 0xe0300090, 3, ARM_EXT_V2, do_mla}, - - /* Generic coprocessor instructions. */ - {"cdp", 0xee000000, 3, ARM_EXT_V2, do_cdp}, - {"ldc", 0xec100000, 3, ARM_EXT_V2, do_lstc}, - {"ldcl", 0xec500000, 3, ARM_EXT_V2, do_lstc}, - {"stc", 0xec000000, 3, ARM_EXT_V2, do_lstc}, - {"stcl", 0xec400000, 3, ARM_EXT_V2, do_lstc}, - {"mcr", 0xee000010, 3, ARM_EXT_V2, do_co_reg}, - {"mrc", 0xee100010, 3, ARM_EXT_V2, do_co_reg}, - - /* ARM 3 - swp instructions. */ - {"swp", 0xe1000090, 3, ARM_EXT_V2S, do_swap}, - {"swpb", 0xe1400090, 3, ARM_EXT_V2S, do_swap}, - - /* ARM 6 Status register instructions. */ - {"mrs", 0xe10f0000, 3, ARM_EXT_V3, do_mrs}, - {"msr", 0xe120f000, 3, ARM_EXT_V3, do_msr}, - /* ScottB: our code uses 0xe128f000 for msr. - NickC: but this is wrong because the bits 16 through 19 are - handled by the PSR_xxx defines above. */ - - /* ARM 7M long multiplies. */ - {"smull", 0xe0c00090, 5, ARM_EXT_V3M, do_mull}, - {"smulls", 0xe0d00090, 5, ARM_EXT_V3M, do_mull}, - {"umull", 0xe0800090, 5, ARM_EXT_V3M, do_mull}, - {"umulls", 0xe0900090, 5, ARM_EXT_V3M, do_mull}, - {"smlal", 0xe0e00090, 5, ARM_EXT_V3M, do_mull}, - {"smlals", 0xe0f00090, 5, ARM_EXT_V3M, do_mull}, - {"umlal", 0xe0a00090, 5, ARM_EXT_V3M, do_mull}, - {"umlals", 0xe0b00090, 5, ARM_EXT_V3M, do_mull}, - - /* ARM Architecture 4. */ - {"ldrh", 0xe01000b0, 3, ARM_EXT_V4, do_ldstv4}, - {"ldrsh", 0xe01000f0, 3, ARM_EXT_V4, do_ldstv4}, - {"ldrsb", 0xe01000d0, 3, ARM_EXT_V4, do_ldstv4}, - {"strh", 0xe00000b0, 3, ARM_EXT_V4, do_ldstv4}, - - /* ARM Architecture 4T. */ - /* Note: bx (and blx) are required on V5, even if the processor does - not support Thumb. */ - {"bx", 0xe12fff10, 2, ARM_EXT_V4T | ARM_EXT_V5, do_bx}, - - /* ARM Architecture 5T. */ - /* Note: blx has 2 variants, so the .value is set dynamically. - Only one of the variants has conditional execution. */ - {"blx", 0xe0000000, 3, ARM_EXT_V5, do_blx}, - {"clz", 0xe16f0f10, 3, ARM_EXT_V5, do_clz}, - {"bkpt", 0xe1200070, 0, ARM_EXT_V5, do_bkpt}, - {"ldc2", 0xfc100000, 0, ARM_EXT_V5, do_lstc2}, - {"ldc2l", 0xfc500000, 0, ARM_EXT_V5, do_lstc2}, - {"stc2", 0xfc000000, 0, ARM_EXT_V5, do_lstc2}, - {"stc2l", 0xfc400000, 0, ARM_EXT_V5, do_lstc2}, - {"cdp2", 0xfe000000, 0, ARM_EXT_V5, do_cdp2}, - {"mcr2", 0xfe000010, 0, ARM_EXT_V5, do_co_reg2}, - {"mrc2", 0xfe100010, 0, ARM_EXT_V5, do_co_reg2}, - - /* ARM Architecture 5TExP. */ - {"smlabb", 0xe1000080, 6, ARM_EXT_V5ExP, do_smla}, - {"smlatb", 0xe10000a0, 6, ARM_EXT_V5ExP, do_smla}, - {"smlabt", 0xe10000c0, 6, ARM_EXT_V5ExP, do_smla}, - {"smlatt", 0xe10000e0, 6, ARM_EXT_V5ExP, do_smla}, - - {"smlawb", 0xe1200080, 6, ARM_EXT_V5ExP, do_smla}, - {"smlawt", 0xe12000c0, 6, ARM_EXT_V5ExP, do_smla}, - - {"smlalbb", 0xe1400080, 7, ARM_EXT_V5ExP, do_smlal}, - {"smlaltb", 0xe14000a0, 7, ARM_EXT_V5ExP, do_smlal}, - {"smlalbt", 0xe14000c0, 7, ARM_EXT_V5ExP, do_smlal}, - {"smlaltt", 0xe14000e0, 7, ARM_EXT_V5ExP, do_smlal}, - - {"smulbb", 0xe1600080, 6, ARM_EXT_V5ExP, do_smul}, - {"smultb", 0xe16000a0, 6, ARM_EXT_V5ExP, do_smul}, - {"smulbt", 0xe16000c0, 6, ARM_EXT_V5ExP, do_smul}, - {"smultt", 0xe16000e0, 6, ARM_EXT_V5ExP, do_smul}, - - {"smulwb", 0xe12000a0, 6, ARM_EXT_V5ExP, do_smul}, - {"smulwt", 0xe12000e0, 6, ARM_EXT_V5ExP, do_smul}, - - {"qadd", 0xe1000050, 4, ARM_EXT_V5ExP, do_qadd}, - {"qdadd", 0xe1400050, 5, ARM_EXT_V5ExP, do_qadd}, - {"qsub", 0xe1200050, 4, ARM_EXT_V5ExP, do_qadd}, - {"qdsub", 0xe1600050, 5, ARM_EXT_V5ExP, do_qadd}, - - /* ARM Architecture 5TE. */ - {"pld", 0xf450f000, 0, ARM_EXT_V5E, do_pld}, - {"ldrd", 0xe00000d0, 3, ARM_EXT_V5E, do_ldrd}, - {"strd", 0xe00000f0, 3, ARM_EXT_V5E, do_ldrd}, - - {"mcrr", 0xec400000, 4, ARM_EXT_V5E, do_co_reg2c}, - {"mrrc", 0xec500000, 4, ARM_EXT_V5E, do_co_reg2c}, - - /* ARM Architecture 5TEJ. */ - {"bxj", 0xe12fff20, 3, ARM_EXT_V5J, do_bxj}, - - /* ARM V6. */ - { "cps", 0xf1020000, 0, ARM_EXT_V6, do_cps}, - { "cpsie", 0xf1080000, 0, ARM_EXT_V6, do_cpsi}, - { "cpsid", 0xf10C0000, 0, ARM_EXT_V6, do_cpsi}, - { "ldrex", 0xe1900f9f, 5, ARM_EXT_V6, do_ldrex}, - { "mcrr2", 0xfc400000, 0, ARM_EXT_V6, do_co_reg2c}, - { "mrrc2", 0xfc500000, 0, ARM_EXT_V6, do_co_reg2c}, - { "pkhbt", 0xe6800010, 5, ARM_EXT_V6, do_pkhbt}, - { "pkhtb", 0xe6800050, 5, ARM_EXT_V6, do_pkhtb}, - { "qadd16", 0xe6200f10, 6, ARM_EXT_V6, do_qadd16}, - { "qadd8", 0xe6200f90, 5, ARM_EXT_V6, do_qadd16}, - { "qaddsubx", 0xe6200f30, 8, ARM_EXT_V6, do_qadd16}, - { "qsub16", 0xe6200f70, 6, ARM_EXT_V6, do_qadd16}, - { "qsub8", 0xe6200ff0, 5, ARM_EXT_V6, do_qadd16}, - { "qsubaddx", 0xe6200f50, 8, ARM_EXT_V6, do_qadd16}, - { "sadd16", 0xe6100f10, 6, ARM_EXT_V6, do_qadd16}, - { "sadd8", 0xe6100f90, 5, ARM_EXT_V6, do_qadd16}, - { "saddsubx", 0xe6100f30, 8, ARM_EXT_V6, do_qadd16}, - { "shadd16", 0xe6300f10, 7, ARM_EXT_V6, do_qadd16}, - { "shadd8", 0xe6300f90, 6, ARM_EXT_V6, do_qadd16}, - { "shaddsubx", 0xe6300f30, 9, ARM_EXT_V6, do_qadd16}, - { "shsub16", 0xe6300f70, 7, ARM_EXT_V6, do_qadd16}, - { "shsub8", 0xe6300ff0, 6, ARM_EXT_V6, do_qadd16}, - { "shsubaddx", 0xe6300f50, 9, ARM_EXT_V6, do_qadd16}, - { "ssub16", 0xe6100f70, 6, ARM_EXT_V6, do_qadd16}, - { "ssub8", 0xe6100ff0, 5, ARM_EXT_V6, do_qadd16}, - { "ssubaddx", 0xe6100f50, 8, ARM_EXT_V6, do_qadd16}, - { "uadd16", 0xe6500f10, 6, ARM_EXT_V6, do_qadd16}, - { "uadd8", 0xe6500f90, 5, ARM_EXT_V6, do_qadd16}, - { "uaddsubx", 0xe6500f30, 8, ARM_EXT_V6, do_qadd16}, - { "uhadd16", 0xe6700f10, 7, ARM_EXT_V6, do_qadd16}, - { "uhadd8", 0xe6700f90, 6, ARM_EXT_V6, do_qadd16}, - { "uhaddsubx", 0xe6700f30, 9, ARM_EXT_V6, do_qadd16}, - { "uhsub16", 0xe6700f70, 7, ARM_EXT_V6, do_qadd16}, - { "uhsub8", 0xe6700ff0, 6, ARM_EXT_V6, do_qadd16}, - { "uhsubaddx", 0xe6700f50, 9, ARM_EXT_V6, do_qadd16}, - { "uqadd16", 0xe6600f10, 7, ARM_EXT_V6, do_qadd16}, - { "uqadd8", 0xe6600f90, 6, ARM_EXT_V6, do_qadd16}, - { "uqaddsubx", 0xe6600f30, 9, ARM_EXT_V6, do_qadd16}, - { "uqsub16", 0xe6600f70, 7, ARM_EXT_V6, do_qadd16}, - { "uqsub8", 0xe6600ff0, 6, ARM_EXT_V6, do_qadd16}, - { "uqsubaddx", 0xe6600f50, 9, ARM_EXT_V6, do_qadd16}, - { "usub16", 0xe6500f70, 6, ARM_EXT_V6, do_qadd16}, - { "usub8", 0xe6500ff0, 5, ARM_EXT_V6, do_qadd16}, - { "usubaddx", 0xe6500f50, 8, ARM_EXT_V6, do_qadd16}, - { "rev", 0xe6bf0f30, 3, ARM_EXT_V6, do_rev}, - { "rev16", 0xe6bf0fb0, 5, ARM_EXT_V6, do_rev}, - { "revsh", 0xe6ff0fb0, 5, ARM_EXT_V6, do_rev}, - { "rfeia", 0xf8900a00, 0, ARM_EXT_V6, do_rfe}, - { "rfeib", 0xf9900a00, 0, ARM_EXT_V6, do_rfe}, - { "rfeda", 0xf8100a00, 0, ARM_EXT_V6, do_rfe}, - { "rfedb", 0xf9100a00, 0, ARM_EXT_V6, do_rfe}, - { "rfefd", 0xf8900a00, 0, ARM_EXT_V6, do_rfe}, - { "rfefa", 0xf9900a00, 0, ARM_EXT_V6, do_rfe}, - { "rfeea", 0xf8100a00, 0, ARM_EXT_V6, do_rfe}, - { "rfeed", 0xf9100a00, 0, ARM_EXT_V6, do_rfe}, - { "sxtah", 0xe6b00070, 5, ARM_EXT_V6, do_sxtah}, - { "sxtab16", 0xe6800070, 7, ARM_EXT_V6, do_sxtah}, - { "sxtab", 0xe6a00070, 5, ARM_EXT_V6, do_sxtah}, - { "sxth", 0xe6bf0070, 4, ARM_EXT_V6, do_sxth}, - { "sxtb16", 0xe68f0070, 6, ARM_EXT_V6, do_sxth}, - { "sxtb", 0xe6af0070, 4, ARM_EXT_V6, do_sxth}, - { "uxtah", 0xe6f00070, 5, ARM_EXT_V6, do_sxtah}, - { "uxtab16", 0xe6c00070, 7, ARM_EXT_V6, do_sxtah}, - { "uxtab", 0xe6e00070, 5, ARM_EXT_V6, do_sxtah}, - { "uxth", 0xe6ff0070, 4, ARM_EXT_V6, do_sxth}, - { "uxtb16", 0xe6cf0070, 6, ARM_EXT_V6, do_sxth}, - { "uxtb", 0xe6ef0070, 4, ARM_EXT_V6, do_sxth}, - { "sel", 0xe68000b0, 3, ARM_EXT_V6, do_qadd16}, - { "setend", 0xf1010000, 0, ARM_EXT_V6, do_setend}, - { "smlad", 0xe7000010, 5, ARM_EXT_V6, do_smlad}, - { "smladx", 0xe7000030, 6, ARM_EXT_V6, do_smlad}, - { "smlald", 0xe7400010, 6, ARM_EXT_V6, do_smlald}, - { "smlaldx", 0xe7400030, 7, ARM_EXT_V6, do_smlald}, - { "smlsd", 0xe7000050, 5, ARM_EXT_V6, do_smlad}, - { "smlsdx", 0xe7000070, 6, ARM_EXT_V6, do_smlad}, - { "smlsld", 0xe7400050, 6, ARM_EXT_V6, do_smlald}, - { "smlsldx", 0xe7400070, 7, ARM_EXT_V6, do_smlald}, - { "smmla", 0xe7500010, 5, ARM_EXT_V6, do_smlad}, - { "smmlar", 0xe7500030, 6, ARM_EXT_V6, do_smlad}, - { "smmls", 0xe75000d0, 5, ARM_EXT_V6, do_smlad}, - { "smmlsr", 0xe75000f0, 6, ARM_EXT_V6, do_smlad}, - { "smmul", 0xe750f010, 5, ARM_EXT_V6, do_smmul}, - { "smmulr", 0xe750f030, 6, ARM_EXT_V6, do_smmul}, - { "smuad", 0xe700f010, 5, ARM_EXT_V6, do_smmul}, - { "smuadx", 0xe700f030, 6, ARM_EXT_V6, do_smmul}, - { "smusd", 0xe700f050, 5, ARM_EXT_V6, do_smmul}, - { "smusdx", 0xe700f070, 6, ARM_EXT_V6, do_smmul}, - { "srsia", 0xf8cd0500, 0, ARM_EXT_V6, do_srs}, - { "srsib", 0xf9cd0500, 0, ARM_EXT_V6, do_srs}, - { "srsda", 0xf84d0500, 0, ARM_EXT_V6, do_srs}, - { "srsdb", 0xf94d0500, 0, ARM_EXT_V6, do_srs}, - { "ssat", 0xe6a00010, 4, ARM_EXT_V6, do_ssat}, - { "ssat16", 0xe6a00f30, 6, ARM_EXT_V6, do_ssat16}, - { "strex", 0xe1800f90, 5, ARM_EXT_V6, do_strex}, - { "umaal", 0xe0400090, 5, ARM_EXT_V6, do_umaal}, - { "usad8", 0xe780f010, 5, ARM_EXT_V6, do_smmul}, - { "usada8", 0xe7800010, 6, ARM_EXT_V6, do_smlad}, - { "usat", 0xe6e00010, 4, ARM_EXT_V6, do_usat}, - { "usat16", 0xe6e00f30, 6, ARM_EXT_V6, do_usat16}, - - /* Core FPA instruction set (V1). */ - {"wfs", 0xee200110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"rfs", 0xee300110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"wfc", 0xee400110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"rfc", 0xee500110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, - - {"ldfs", 0xec100100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"ldfd", 0xec108100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"ldfe", 0xec500100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"ldfp", 0xec508100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - - {"stfs", 0xec000100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"stfd", 0xec008100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"stfe", 0xec400100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"stfp", 0xec408100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, - - {"mvfs", 0xee008100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfsp", 0xee008120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfsm", 0xee008140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfsz", 0xee008160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfd", 0xee008180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfdp", 0xee0081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfdm", 0xee0081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfdz", 0xee0081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfe", 0xee088100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfep", 0xee088120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfem", 0xee088140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mvfez", 0xee088160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"mnfs", 0xee108100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfsp", 0xee108120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfsm", 0xee108140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfsz", 0xee108160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfd", 0xee108180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfdp", 0xee1081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfdm", 0xee1081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfdz", 0xee1081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfe", 0xee188100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfep", 0xee188120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfem", 0xee188140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnfez", 0xee188160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"abss", 0xee208100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"abssp", 0xee208120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"abssm", 0xee208140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"abssz", 0xee208160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absd", 0xee208180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absdp", 0xee2081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absdm", 0xee2081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absdz", 0xee2081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"abse", 0xee288100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absep", 0xee288120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absem", 0xee288140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"absez", 0xee288160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"rnds", 0xee308100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndsp", 0xee308120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndsm", 0xee308140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndsz", 0xee308160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndd", 0xee308180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rnddp", 0xee3081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rnddm", 0xee3081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rnddz", 0xee3081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rnde", 0xee388100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndep", 0xee388120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndem", 0xee388140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rndez", 0xee388160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"sqts", 0xee408100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtsp", 0xee408120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtsm", 0xee408140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtsz", 0xee408160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtd", 0xee408180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtdp", 0xee4081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtdm", 0xee4081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtdz", 0xee4081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqte", 0xee488100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtep", 0xee488120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtem", 0xee488140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqtez", 0xee488160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"logs", 0xee508100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logsp", 0xee508120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logsm", 0xee508140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logsz", 0xee508160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logd", 0xee508180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logdp", 0xee5081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logdm", 0xee5081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logdz", 0xee5081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"loge", 0xee588100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logep", 0xee588120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logem", 0xee588140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"logez", 0xee588160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"lgns", 0xee608100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnsp", 0xee608120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnsm", 0xee608140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnsz", 0xee608160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnd", 0xee608180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgndp", 0xee6081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgndm", 0xee6081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgndz", 0xee6081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgne", 0xee688100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnep", 0xee688120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnem", 0xee688140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgnez", 0xee688160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"exps", 0xee708100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expsp", 0xee708120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expsm", 0xee708140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expsz", 0xee708160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expd", 0xee708180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expdp", 0xee7081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expdm", 0xee7081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expdz", 0xee7081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expe", 0xee788100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expep", 0xee788120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expem", 0xee788140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"expdz", 0xee788160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"sins", 0xee808100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sinsp", 0xee808120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sinsm", 0xee808140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sinsz", 0xee808160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sind", 0xee808180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sindp", 0xee8081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sindm", 0xee8081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sindz", 0xee8081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sine", 0xee888100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sinep", 0xee888120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sinem", 0xee888140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sinez", 0xee888160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"coss", 0xee908100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cossp", 0xee908120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cossm", 0xee908140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cossz", 0xee908160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosd", 0xee908180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosdp", 0xee9081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosdm", 0xee9081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosdz", 0xee9081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cose", 0xee988100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosep", 0xee988120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosem", 0xee988140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cosez", 0xee988160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"tans", 0xeea08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tansp", 0xeea08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tansm", 0xeea08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tansz", 0xeea08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tand", 0xeea08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tandp", 0xeea081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tandm", 0xeea081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tandz", 0xeea081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tane", 0xeea88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tanep", 0xeea88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tanem", 0xeea88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tanez", 0xeea88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"asns", 0xeeb08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnsp", 0xeeb08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnsm", 0xeeb08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnsz", 0xeeb08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnd", 0xeeb08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asndp", 0xeeb081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asndm", 0xeeb081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asndz", 0xeeb081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asne", 0xeeb88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnep", 0xeeb88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnem", 0xeeb88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asnez", 0xeeb88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"acss", 0xeec08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acssp", 0xeec08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acssm", 0xeec08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acssz", 0xeec08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsd", 0xeec08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsdp", 0xeec081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsdm", 0xeec081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsdz", 0xeec081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acse", 0xeec88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsep", 0xeec88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsem", 0xeec88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acsez", 0xeec88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"atns", 0xeed08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnsp", 0xeed08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnsm", 0xeed08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnsz", 0xeed08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnd", 0xeed08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atndp", 0xeed081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atndm", 0xeed081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atndz", 0xeed081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atne", 0xeed88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnep", 0xeed88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnem", 0xeed88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atnez", 0xeed88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"urds", 0xeee08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdsp", 0xeee08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdsm", 0xeee08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdsz", 0xeee08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdd", 0xeee08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urddp", 0xeee081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urddm", 0xeee081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urddz", 0xeee081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urde", 0xeee88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdep", 0xeee88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdem", 0xeee88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urdez", 0xeee88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"nrms", 0xeef08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmsp", 0xeef08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmsm", 0xeef08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmsz", 0xeef08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmd", 0xeef08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmdp", 0xeef081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmdm", 0xeef081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmdz", 0xeef081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrme", 0xeef88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmep", 0xeef88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmem", 0xeef88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrmez", 0xeef88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, - - {"adfs", 0xee000100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfsp", 0xee000120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfsm", 0xee000140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfsz", 0xee000160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfd", 0xee000180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfdp", 0xee0001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfdm", 0xee0001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfdz", 0xee0001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfe", 0xee080100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfep", 0xee080120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfem", 0xee080140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"adfez", 0xee080160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"sufs", 0xee200100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufsp", 0xee200120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufsm", 0xee200140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufsz", 0xee200160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufd", 0xee200180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufdp", 0xee2001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufdm", 0xee2001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufdz", 0xee2001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufe", 0xee280100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufep", 0xee280120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufem", 0xee280140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"sufez", 0xee280160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"rsfs", 0xee300100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfsp", 0xee300120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfsm", 0xee300140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfsz", 0xee300160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfd", 0xee300180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfdp", 0xee3001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfdm", 0xee3001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfdz", 0xee3001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfe", 0xee380100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfep", 0xee380120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfem", 0xee380140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsfez", 0xee380160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"mufs", 0xee100100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufsp", 0xee100120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufsm", 0xee100140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufsz", 0xee100160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufd", 0xee100180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufdp", 0xee1001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufdm", 0xee1001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufdz", 0xee1001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufe", 0xee180100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufep", 0xee180120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufem", 0xee180140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"mufez", 0xee180160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"dvfs", 0xee400100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfsp", 0xee400120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfsm", 0xee400140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfsz", 0xee400160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfd", 0xee400180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfdp", 0xee4001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfdm", 0xee4001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfdz", 0xee4001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfe", 0xee480100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfep", 0xee480120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfem", 0xee480140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvfez", 0xee480160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"rdfs", 0xee500100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfsp", 0xee500120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfsm", 0xee500140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfsz", 0xee500160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfd", 0xee500180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfdp", 0xee5001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfdm", 0xee5001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfdz", 0xee5001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfe", 0xee580100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfep", 0xee580120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfem", 0xee580140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdfez", 0xee580160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"pows", 0xee600100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powsp", 0xee600120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powsm", 0xee600140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powsz", 0xee600160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powd", 0xee600180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powdp", 0xee6001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powdm", 0xee6001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powdz", 0xee6001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powe", 0xee680100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powep", 0xee680120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powem", 0xee680140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"powez", 0xee680160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"rpws", 0xee700100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwsp", 0xee700120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwsm", 0xee700140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwsz", 0xee700160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwd", 0xee700180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwdp", 0xee7001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwdm", 0xee7001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwdz", 0xee7001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwe", 0xee780100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwep", 0xee780120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwem", 0xee780140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpwez", 0xee780160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"rmfs", 0xee800100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfsp", 0xee800120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfsm", 0xee800140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfsz", 0xee800160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfd", 0xee800180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfdp", 0xee8001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfdm", 0xee8001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfdz", 0xee8001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfe", 0xee880100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfep", 0xee880120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfem", 0xee880140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmfez", 0xee880160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"fmls", 0xee900100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmlsp", 0xee900120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmlsm", 0xee900140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmlsz", 0xee900160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmld", 0xee900180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmldp", 0xee9001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmldm", 0xee9001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmldz", 0xee9001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmle", 0xee980100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmlep", 0xee980120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmlem", 0xee980140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fmlez", 0xee980160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"fdvs", 0xeea00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvsp", 0xeea00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvsm", 0xeea00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvsz", 0xeea00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvd", 0xeea00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvdp", 0xeea001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvdm", 0xeea001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvdz", 0xeea001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdve", 0xeea80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvep", 0xeea80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvem", 0xeea80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdvez", 0xeea80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"frds", 0xeeb00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdsp", 0xeeb00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdsm", 0xeeb00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdsz", 0xeeb00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdd", 0xeeb00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frddp", 0xeeb001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frddm", 0xeeb001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frddz", 0xeeb001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frde", 0xeeb80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdep", 0xeeb80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdem", 0xeeb80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frdez", 0xeeb80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"pols", 0xeec00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"polsp", 0xeec00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"polsm", 0xeec00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"polsz", 0xeec00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"pold", 0xeec00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"poldp", 0xeec001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"poldm", 0xeec001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"poldz", 0xeec001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"pole", 0xeec80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"polep", 0xeec80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"polem", 0xeec80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"polez", 0xeec80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, - - {"cmf", 0xee90f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"cmfe", 0xeed0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"cnf", 0xeeb0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"cnfe", 0xeef0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, - /* The FPA10 data sheet suggests that the 'E' of cmfe/cnfe should - not be an optional suffix, but part of the instruction. To be - compatible, we accept either. */ - {"cmfe", 0xeed0f110, 4, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"cnfe", 0xeef0f110, 4, FPU_FPA_EXT_V1, do_fpa_cmp}, - - {"flts", 0xee000110, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltsp", 0xee000130, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltsm", 0xee000150, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltsz", 0xee000170, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltd", 0xee000190, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltdp", 0xee0001b0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltdm", 0xee0001d0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltdz", 0xee0001f0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"flte", 0xee080110, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltep", 0xee080130, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltem", 0xee080150, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fltez", 0xee080170, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, - - /* The implementation of the FIX instruction is broken on some - assemblers, in that it accepts a precision specifier as well as a - rounding specifier, despite the fact that this is meaningless. - To be more compatible, we accept it as well, though of course it - does not set any bits. */ - {"fix", 0xee100110, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixsp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixsm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixsz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixdp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixdm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixdz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixep", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixem", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - {"fixez", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, - - /* Instructions that were new with the real FPA, call them V2. */ - {"lfm", 0xec100200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - {"lfmfd", 0xec900200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - {"lfmea", 0xed100200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - {"sfm", 0xec000200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - {"sfmfd", 0xed000200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - {"sfmea", 0xec800200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - - /* VFP V1xD (single precision). */ - /* Moves and type conversions. */ - {"fcpys", 0xeeb00a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fmrs", 0xee100a10, 4, FPU_VFP_EXT_V1xD, do_vfp_reg_from_sp}, - {"fmsr", 0xee000a10, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_from_reg}, - {"fmstat", 0xeef1fa10, 6, FPU_VFP_EXT_V1xD, do_empty}, - {"fsitos", 0xeeb80ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fuitos", 0xeeb80a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"ftosis", 0xeebd0a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"ftosizs", 0xeebd0ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"ftouis", 0xeebc0a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"ftouizs", 0xeebc0ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fmrx", 0xeef00a10, 4, FPU_VFP_EXT_V1xD, do_vfp_reg_from_ctrl}, - {"fmxr", 0xeee00a10, 4, FPU_VFP_EXT_V1xD, do_vfp_ctrl_from_reg}, - - /* Memory operations. */ - {"flds", 0xed100a00, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_ldst}, - {"fsts", 0xed000a00, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_ldst}, - {"fldmias", 0xec900a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, - {"fldmfds", 0xec900a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, - {"fldmdbs", 0xed300a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, - {"fldmeas", 0xed300a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, - {"fldmiax", 0xec900b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, - {"fldmfdx", 0xec900b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, - {"fldmdbx", 0xed300b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, - {"fldmeax", 0xed300b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, - {"fstmias", 0xec800a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, - {"fstmeas", 0xec800a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, - {"fstmdbs", 0xed200a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, - {"fstmfds", 0xed200a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, - {"fstmiax", 0xec800b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, - {"fstmeax", 0xec800b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, - {"fstmdbx", 0xed200b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, - {"fstmfdx", 0xed200b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, - - /* Monadic operations. */ - {"fabss", 0xeeb00ac0, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fnegs", 0xeeb10a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fsqrts", 0xeeb10ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - - /* Dyadic operations. */ - {"fadds", 0xee300a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fsubs", 0xee300a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fmuls", 0xee200a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fdivs", 0xee800a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fmacs", 0xee000a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fmscs", 0xee100a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fnmuls", 0xee200a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fnmacs", 0xee000a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - {"fnmscs", 0xee100a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, - - /* Comparisons. */ - {"fcmps", 0xeeb40a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fcmpzs", 0xeeb50a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_compare_z}, - {"fcmpes", 0xeeb40ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, - {"fcmpezs", 0xeeb50ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_compare_z}, - - /* VFP V1 (Double precision). */ - /* Moves and type conversions. */ - {"fcpyd", 0xeeb00b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, - {"fcvtds", 0xeeb70ac0, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, - {"fcvtsd", 0xeeb70bc0, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, - {"fmdhr", 0xee200b10, 5, FPU_VFP_EXT_V1, do_vfp_dp_from_reg}, - {"fmdlr", 0xee000b10, 5, FPU_VFP_EXT_V1, do_vfp_dp_from_reg}, - {"fmrdh", 0xee300b10, 5, FPU_VFP_EXT_V1, do_vfp_reg_from_dp}, - {"fmrdl", 0xee100b10, 5, FPU_VFP_EXT_V1, do_vfp_reg_from_dp}, - {"fsitod", 0xeeb80bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, - {"fuitod", 0xeeb80b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, - {"ftosid", 0xeebd0b40, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, - {"ftosizd", 0xeebd0bc0, 7, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, - {"ftouid", 0xeebc0b40, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, - {"ftouizd", 0xeebc0bc0, 7, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, - - /* Memory operations. */ - {"fldd", 0xed100b00, 4, FPU_VFP_EXT_V1, do_vfp_dp_ldst}, - {"fstd", 0xed000b00, 4, FPU_VFP_EXT_V1, do_vfp_dp_ldst}, - {"fldmiad", 0xec900b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, - {"fldmfdd", 0xec900b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, - {"fldmdbd", 0xed300b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, - {"fldmead", 0xed300b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, - {"fstmiad", 0xec800b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, - {"fstmead", 0xec800b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, - {"fstmdbd", 0xed200b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, - {"fstmfdd", 0xed200b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, - - /* Monadic operations. */ - {"fabsd", 0xeeb00bc0, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, - {"fnegd", 0xeeb10b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, - {"fsqrtd", 0xeeb10bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, - - /* Dyadic operations. */ - {"faddd", 0xee300b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fsubd", 0xee300b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fmuld", 0xee200b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fdivd", 0xee800b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fmacd", 0xee000b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fmscd", 0xee100b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fnmuld", 0xee200b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fnmacd", 0xee000b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - {"fnmscd", 0xee100b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, - - /* Comparisons. */ - {"fcmpd", 0xeeb40b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, - {"fcmpzd", 0xeeb50b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_compare_z}, - {"fcmped", 0xeeb40bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, - {"fcmpezd", 0xeeb50bc0, 7, FPU_VFP_EXT_V1, do_vfp_dp_compare_z}, - - /* VFP V2. */ - {"fmsrr", 0xec400a10, 5, FPU_VFP_EXT_V2, do_vfp_sp2_from_reg2}, - {"fmrrs", 0xec500a10, 5, FPU_VFP_EXT_V2, do_vfp_reg2_from_sp2}, - {"fmdrr", 0xec400b10, 5, FPU_VFP_EXT_V2, do_vfp_dp_from_reg2}, - {"fmrrd", 0xec500b10, 5, FPU_VFP_EXT_V2, do_vfp_reg2_from_dp}, - - /* Intel XScale extensions to ARM V5 ISA. (All use CP0). */ - {"mia", 0xee200010, 3, ARM_CEXT_XSCALE, do_xsc_mia}, - {"miaph", 0xee280010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, - {"miabb", 0xee2c0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, - {"miabt", 0xee2d0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, - {"miatb", 0xee2e0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, - {"miatt", 0xee2f0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, - {"mar", 0xec400000, 3, ARM_CEXT_XSCALE, do_xsc_mar}, - {"mra", 0xec500000, 3, ARM_CEXT_XSCALE, do_xsc_mra}, - - /* Intel Wireless MMX technology instructions. */ - {"tandcb", 0xee130130, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tandc}, - {"tandch", 0xee530130, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tandc}, - {"tandcw", 0xee930130, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tandc}, - {"tbcstb", 0xee400010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tbcst}, - {"tbcsth", 0xee400050, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tbcst}, - {"tbcstw", 0xee400090, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tbcst}, - {"textrcb", 0xee130170, 7, ARM_CEXT_IWMMXT, do_iwmmxt_textrc}, - {"textrch", 0xee530170, 7, ARM_CEXT_IWMMXT, do_iwmmxt_textrc}, - {"textrcw", 0xee930170, 7, ARM_CEXT_IWMMXT, do_iwmmxt_textrc}, - {"textrmub", 0xee100070, 8, ARM_CEXT_IWMMXT, do_iwmmxt_textrm}, - {"textrmuh", 0xee500070, 8, ARM_CEXT_IWMMXT, do_iwmmxt_textrm}, - {"textrmuw", 0xee900070, 8, ARM_CEXT_IWMMXT, do_iwmmxt_textrm}, - {"textrmsb", 0xee100078, 8, ARM_CEXT_IWMMXT, do_iwmmxt_textrm}, - {"textrmsh", 0xee500078, 8, ARM_CEXT_IWMMXT, do_iwmmxt_textrm}, - {"textrmsw", 0xee900078, 8, ARM_CEXT_IWMMXT, do_iwmmxt_textrm}, - {"tinsrb", 0xee600010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tinsr}, - {"tinsrh", 0xee600050, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tinsr}, - {"tinsrw", 0xee600090, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tinsr}, - {"tmcr", 0xee000110, 4, ARM_CEXT_IWMMXT, do_iwmmxt_tmcr}, - {"tmcrr", 0xec400000, 5, ARM_CEXT_IWMMXT, do_iwmmxt_tmcrr}, - {"tmia", 0xee200010, 4, ARM_CEXT_IWMMXT, do_iwmmxt_tmia}, - {"tmiaph", 0xee280010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tmia}, - {"tmiabb", 0xee2c0010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tmia}, - {"tmiabt", 0xee2d0010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tmia}, - {"tmiatb", 0xee2e0010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tmia}, - {"tmiatt", 0xee2f0010, 6, ARM_CEXT_IWMMXT, do_iwmmxt_tmia}, - {"tmovmskb", 0xee100030, 8, ARM_CEXT_IWMMXT, do_iwmmxt_tmovmsk}, - {"tmovmskh", 0xee500030, 8, ARM_CEXT_IWMMXT, do_iwmmxt_tmovmsk}, - {"tmovmskw", 0xee900030, 8, ARM_CEXT_IWMMXT, do_iwmmxt_tmovmsk}, - {"tmrc", 0xee100110, 4, ARM_CEXT_IWMMXT, do_iwmmxt_tmrc}, - {"tmrrc", 0xec500000, 5, ARM_CEXT_IWMMXT, do_iwmmxt_tmrrc}, - {"torcb", 0xee130150, 5, ARM_CEXT_IWMMXT, do_iwmmxt_torc}, - {"torch", 0xee530150, 5, ARM_CEXT_IWMMXT, do_iwmmxt_torc}, - {"torcw", 0xee930150, 5, ARM_CEXT_IWMMXT, do_iwmmxt_torc}, - {"waccb", 0xee0001c0, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wacch", 0xee4001c0, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"waccw", 0xee8001c0, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"waddbss", 0xee300180, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddb", 0xee000180, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddbus", 0xee100180, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddhss", 0xee700180, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddh", 0xee400180, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddhus", 0xee500180, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddwss", 0xeeb00180, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddw", 0xee800180, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waddwus", 0xee900180, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"waligni", 0xee000020, 7, ARM_CEXT_IWMMXT, do_iwmmxt_waligni}, - {"walignr0", 0xee800020, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"walignr1", 0xee900020, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"walignr2", 0xeea00020, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"walignr3", 0xeeb00020, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wand", 0xee200000, 4, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wandn", 0xee300000, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wavg2b", 0xee800000, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wavg2br", 0xee900000, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wavg2h", 0xeec00000, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wavg2hr", 0xeed00000, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpeqb", 0xee000060, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpeqh", 0xee400060, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpeqw", 0xee800060, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpgtub", 0xee100060, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpgtuh", 0xee500060, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpgtuw", 0xee900060, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpgtsb", 0xee300060, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpgtsh", 0xee700060, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wcmpgtsw", 0xeeb00060, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wldrb", 0xec100000, 5, ARM_CEXT_IWMMXT, do_iwmmxt_byte_addr}, - {"wldrh", 0xec100100, 5, ARM_CEXT_IWMMXT, do_iwmmxt_byte_addr}, - {"wldrw", 0xec100200, 5, ARM_CEXT_IWMMXT, do_iwmmxt_word_addr}, - {"wldrd", 0xec100300, 5, ARM_CEXT_IWMMXT, do_iwmmxt_word_addr}, - {"wmacs", 0xee600100, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmacsz", 0xee700100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmacu", 0xee400100, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmacuz", 0xee500100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmadds", 0xeea00100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaddu", 0xee800100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaxsb", 0xee200160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaxsh", 0xee600160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaxsw", 0xeea00160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaxub", 0xee000160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaxuh", 0xee400160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmaxuw", 0xee800160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wminsb", 0xee300160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wminsh", 0xee700160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wminsw", 0xeeb00160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wminub", 0xee100160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wminuh", 0xee500160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wminuw", 0xee900160, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmov", 0xee000000, 4, ARM_CEXT_IWMMXT, do_iwmmxt_wmov}, - {"wmulsm", 0xee300100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmulsl", 0xee200100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmulum", 0xee100100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wmulul", 0xee000100, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wor", 0xee000000, 3, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wpackhss", 0xee700080, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wpackhus", 0xee500080, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wpackwss", 0xeeb00080, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wpackwus", 0xee900080, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wpackdss", 0xeef00080, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wpackdus", 0xeed00080, 8, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wrorh", 0xee700040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wrorhg", 0xee700148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wrorw", 0xeeb00040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wrorwg", 0xeeb00148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wrord", 0xeef00040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wrordg", 0xeef00148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsadb", 0xee000120, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsadbz", 0xee100120, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsadh", 0xee400120, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsadhz", 0xee500120, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wshufh", 0xee0001e0, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wshufh}, - {"wsllh", 0xee500040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsllhg", 0xee500148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsllw", 0xee900040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsllwg", 0xee900148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wslld", 0xeed00040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wslldg", 0xeed00148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsrah", 0xee400040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsrahg", 0xee400148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsraw", 0xee800040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsrawg", 0xee800148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsrad", 0xeec00040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsradg", 0xeec00148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsrlh", 0xee600040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsrlhg", 0xee600148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsrlw", 0xeea00040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsrlwg", 0xeea00148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wsrld", 0xeee00040, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsrldg", 0xeee00148, 6, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwcg}, - {"wstrb", 0xec000000, 5, ARM_CEXT_IWMMXT, do_iwmmxt_byte_addr}, - {"wstrh", 0xec000100, 5, ARM_CEXT_IWMMXT, do_iwmmxt_byte_addr}, - {"wstrw", 0xec000200, 5, ARM_CEXT_IWMMXT, do_iwmmxt_word_addr}, - {"wstrd", 0xec000300, 5, ARM_CEXT_IWMMXT, do_iwmmxt_word_addr}, - {"wsubbss", 0xee3001a0, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubb", 0xee0001a0, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubbus", 0xee1001a0, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubhss", 0xee7001a0, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubh", 0xee4001a0, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubhus", 0xee5001a0, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubwss", 0xeeb001a0, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubw", 0xee8001a0, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wsubwus", 0xee9001a0, 7, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wunpckehub", 0xee0000c0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckehuh", 0xee4000c0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckehuw", 0xee8000c0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckehsb", 0xee2000c0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckehsh", 0xee6000c0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckehsw", 0xeea000c0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckihb", 0xee1000c0, 9, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wunpckihh", 0xee5000c0, 9, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wunpckihw", 0xee9000c0, 9, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wunpckelub", 0xee0000e0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckeluh", 0xee4000e0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckeluw", 0xee8000e0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckelsb", 0xee2000e0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckelsh", 0xee6000e0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckelsw", 0xeea000e0, 10, ARM_CEXT_IWMMXT, do_iwmmxt_wrwr}, - {"wunpckilb", 0xee1000e0, 9, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wunpckilh", 0xee5000e0, 9, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wunpckilw", 0xee9000e0, 9, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wxor", 0xee100000, 4, ARM_CEXT_IWMMXT, do_iwmmxt_wrwrwr}, - {"wzero", 0xee300000, 5, ARM_CEXT_IWMMXT, do_iwmmxt_wzero}, - - /* Cirrus Maverick instructions. */ - {"cfldrs", 0xec100400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_1}, - {"cfldrd", 0xec500400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_2}, - {"cfldr32", 0xec100500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_3}, - {"cfldr64", 0xec500500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_4}, - {"cfstrs", 0xec000400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_1}, - {"cfstrd", 0xec400400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_2}, - {"cfstr32", 0xec000500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_3}, - {"cfstr64", 0xec400500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_4}, - {"cfmvsr", 0xee000450, 6, ARM_CEXT_MAVERICK, do_mav_binops_2a}, - {"cfmvrs", 0xee100450, 6, ARM_CEXT_MAVERICK, do_mav_binops_1a}, - {"cfmvdlr", 0xee000410, 7, ARM_CEXT_MAVERICK, do_mav_binops_2b}, - {"cfmvrdl", 0xee100410, 7, ARM_CEXT_MAVERICK, do_mav_binops_1b}, - {"cfmvdhr", 0xee000430, 7, ARM_CEXT_MAVERICK, do_mav_binops_2b}, - {"cfmvrdh", 0xee100430, 7, ARM_CEXT_MAVERICK, do_mav_binops_1b}, - {"cfmv64lr", 0xee000510, 8, ARM_CEXT_MAVERICK, do_mav_binops_2c}, - {"cfmvr64l", 0xee100510, 8, ARM_CEXT_MAVERICK, do_mav_binops_1c}, - {"cfmv64hr", 0xee000530, 8, ARM_CEXT_MAVERICK, do_mav_binops_2c}, - {"cfmvr64h", 0xee100530, 8, ARM_CEXT_MAVERICK, do_mav_binops_1c}, - {"cfmval32", 0xee200440, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, - {"cfmv32al", 0xee100440, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, - {"cfmvam32", 0xee200460, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, - {"cfmv32am", 0xee100460, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, - {"cfmvah32", 0xee200480, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, - {"cfmv32ah", 0xee100480, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, - {"cfmva32", 0xee2004a0, 7, ARM_CEXT_MAVERICK, do_mav_binops_3a}, - {"cfmv32a", 0xee1004a0, 7, ARM_CEXT_MAVERICK, do_mav_binops_3b}, - {"cfmva64", 0xee2004c0, 7, ARM_CEXT_MAVERICK, do_mav_binops_3c}, - {"cfmv64a", 0xee1004c0, 7, ARM_CEXT_MAVERICK, do_mav_binops_3d}, - {"cfmvsc32", 0xee2004e0, 8, ARM_CEXT_MAVERICK, do_mav_dspsc_1}, - {"cfmv32sc", 0xee1004e0, 8, ARM_CEXT_MAVERICK, do_mav_dspsc_2}, - {"cfcpys", 0xee000400, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, - {"cfcpyd", 0xee000420, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, - {"cfcvtsd", 0xee000460, 7, ARM_CEXT_MAVERICK, do_mav_binops_1f}, - {"cfcvtds", 0xee000440, 7, ARM_CEXT_MAVERICK, do_mav_binops_1g}, - {"cfcvt32s", 0xee000480, 8, ARM_CEXT_MAVERICK, do_mav_binops_1h}, - {"cfcvt32d", 0xee0004a0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1i}, - {"cfcvt64s", 0xee0004c0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1j}, - {"cfcvt64d", 0xee0004e0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1k}, - {"cfcvts32", 0xee100580, 8, ARM_CEXT_MAVERICK, do_mav_binops_1l}, - {"cfcvtd32", 0xee1005a0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1m}, - {"cftruncs32", 0xee1005c0, 10, ARM_CEXT_MAVERICK, do_mav_binops_1l}, - {"cftruncd32", 0xee1005e0, 10, ARM_CEXT_MAVERICK, do_mav_binops_1m}, - {"cfrshl32", 0xee000550, 8, ARM_CEXT_MAVERICK, do_mav_triple_4a}, - {"cfrshl64", 0xee000570, 8, ARM_CEXT_MAVERICK, do_mav_triple_4b}, - {"cfsh32", 0xee000500, 6, ARM_CEXT_MAVERICK, do_mav_shift_1}, - {"cfsh64", 0xee200500, 6, ARM_CEXT_MAVERICK, do_mav_shift_2}, - {"cfcmps", 0xee100490, 6, ARM_CEXT_MAVERICK, do_mav_triple_5a}, - {"cfcmpd", 0xee1004b0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5b}, - {"cfcmp32", 0xee100590, 7, ARM_CEXT_MAVERICK, do_mav_triple_5c}, - {"cfcmp64", 0xee1005b0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5d}, - {"cfabss", 0xee300400, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, - {"cfabsd", 0xee300420, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, - {"cfnegs", 0xee300440, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, - {"cfnegd", 0xee300460, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, - {"cfadds", 0xee300480, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, - {"cfaddd", 0xee3004a0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, - {"cfsubs", 0xee3004c0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, - {"cfsubd", 0xee3004e0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, - {"cfmuls", 0xee100400, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, - {"cfmuld", 0xee100420, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, - {"cfabs32", 0xee300500, 7, ARM_CEXT_MAVERICK, do_mav_binops_1n}, - {"cfabs64", 0xee300520, 7, ARM_CEXT_MAVERICK, do_mav_binops_1o}, - {"cfneg32", 0xee300540, 7, ARM_CEXT_MAVERICK, do_mav_binops_1n}, - {"cfneg64", 0xee300560, 7, ARM_CEXT_MAVERICK, do_mav_binops_1o}, - {"cfadd32", 0xee300580, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, - {"cfadd64", 0xee3005a0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, - {"cfsub32", 0xee3005c0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, - {"cfsub64", 0xee3005e0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, - {"cfmul32", 0xee100500, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, - {"cfmul64", 0xee100520, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, - {"cfmac32", 0xee100540, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, - {"cfmsc32", 0xee100560, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, - {"cfmadd32", 0xee000600, 8, ARM_CEXT_MAVERICK, do_mav_quad_6a}, - {"cfmsub32", 0xee100600, 8, ARM_CEXT_MAVERICK, do_mav_quad_6a}, - {"cfmadda32", 0xee200600, 9, ARM_CEXT_MAVERICK, do_mav_quad_6b}, - {"cfmsuba32", 0xee300600, 9, ARM_CEXT_MAVERICK, do_mav_quad_6b}, -}; - -/* Defines for various bits that we will want to toggle. */ -#define INST_IMMEDIATE 0x02000000 -#define OFFSET_REG 0x02000000 -#define HWOFFSET_IMM 0x00400000 -#define SHIFT_BY_REG 0x00000010 -#define PRE_INDEX 0x01000000 -#define INDEX_UP 0x00800000 -#define WRITE_BACK 0x00200000 -#define LDM_TYPE_2_OR_3 0x00400000 - -#define LITERAL_MASK 0xf000f000 -#define OPCODE_MASK 0xfe1fffff -#define V4_STR_BIT 0x00000020 - -#define DATA_OP_SHIFT 21 - -/* Codes to distinguish the arithmetic instructions. */ -#define OPCODE_AND 0 -#define OPCODE_EOR 1 -#define OPCODE_SUB 2 -#define OPCODE_RSB 3 -#define OPCODE_ADD 4 -#define OPCODE_ADC 5 -#define OPCODE_SBC 6 -#define OPCODE_RSC 7 -#define OPCODE_TST 8 -#define OPCODE_TEQ 9 -#define OPCODE_CMP 10 -#define OPCODE_CMN 11 -#define OPCODE_ORR 12 -#define OPCODE_MOV 13 -#define OPCODE_BIC 14 -#define OPCODE_MVN 15 - -/* Thumb v1 (ARMv4T). */ -static void do_t_nop PARAMS ((char *)); -static void do_t_arit PARAMS ((char *)); -static void do_t_add PARAMS ((char *)); -static void do_t_asr PARAMS ((char *)); -static void do_t_branch9 PARAMS ((char *)); -static void do_t_branch12 PARAMS ((char *)); -static void do_t_branch23 PARAMS ((char *)); -static void do_t_bx PARAMS ((char *)); -static void do_t_compare PARAMS ((char *)); -static void do_t_ldmstm PARAMS ((char *)); -static void do_t_ldr PARAMS ((char *)); -static void do_t_ldrb PARAMS ((char *)); -static void do_t_ldrh PARAMS ((char *)); -static void do_t_lds PARAMS ((char *)); -static void do_t_lsl PARAMS ((char *)); -static void do_t_lsr PARAMS ((char *)); -static void do_t_mov PARAMS ((char *)); -static void do_t_push_pop PARAMS ((char *)); -static void do_t_str PARAMS ((char *)); -static void do_t_strb PARAMS ((char *)); -static void do_t_strh PARAMS ((char *)); -static void do_t_sub PARAMS ((char *)); -static void do_t_swi PARAMS ((char *)); -static void do_t_adr PARAMS ((char *)); - -/* Thumb v2 (ARMv5T). */ -static void do_t_blx PARAMS ((char *)); -static void do_t_bkpt PARAMS ((char *)); - -/* ARM V6. */ -static void do_t_cps PARAMS ((char *)); -static void do_t_cpy PARAMS ((char *)); -static void do_t_setend PARAMS ((char *));; - -#define T_OPCODE_MUL 0x4340 -#define T_OPCODE_TST 0x4200 -#define T_OPCODE_CMN 0x42c0 -#define T_OPCODE_NEG 0x4240 -#define T_OPCODE_MVN 0x43c0 - -#define T_OPCODE_ADD_R3 0x1800 -#define T_OPCODE_SUB_R3 0x1a00 -#define T_OPCODE_ADD_HI 0x4400 -#define T_OPCODE_ADD_ST 0xb000 -#define T_OPCODE_SUB_ST 0xb080 -#define T_OPCODE_ADD_SP 0xa800 -#define T_OPCODE_ADD_PC 0xa000 -#define T_OPCODE_ADD_I8 0x3000 -#define T_OPCODE_SUB_I8 0x3800 -#define T_OPCODE_ADD_I3 0x1c00 -#define T_OPCODE_SUB_I3 0x1e00 - -#define T_OPCODE_ASR_R 0x4100 -#define T_OPCODE_LSL_R 0x4080 -#define T_OPCODE_LSR_R 0x40c0 -#define T_OPCODE_ASR_I 0x1000 -#define T_OPCODE_LSL_I 0x0000 -#define T_OPCODE_LSR_I 0x0800 - -#define T_OPCODE_MOV_I8 0x2000 -#define T_OPCODE_CMP_I8 0x2800 -#define T_OPCODE_CMP_LR 0x4280 -#define T_OPCODE_MOV_HR 0x4600 -#define T_OPCODE_CMP_HR 0x4500 - -#define T_OPCODE_LDR_PC 0x4800 -#define T_OPCODE_LDR_SP 0x9800 -#define T_OPCODE_STR_SP 0x9000 -#define T_OPCODE_LDR_IW 0x6800 -#define T_OPCODE_STR_IW 0x6000 -#define T_OPCODE_LDR_IH 0x8800 -#define T_OPCODE_STR_IH 0x8000 -#define T_OPCODE_LDR_IB 0x7800 -#define T_OPCODE_STR_IB 0x7000 -#define T_OPCODE_LDR_RW 0x5800 -#define T_OPCODE_STR_RW 0x5000 -#define T_OPCODE_LDR_RH 0x5a00 -#define T_OPCODE_STR_RH 0x5200 -#define T_OPCODE_LDR_RB 0x5c00 -#define T_OPCODE_STR_RB 0x5400 - -#define T_OPCODE_PUSH 0xb400 -#define T_OPCODE_POP 0xbc00 - -#define T_OPCODE_BRANCH 0xe7fe - -static int thumb_reg PARAMS ((char ** str, int hi_lo)); - -#define THUMB_SIZE 2 /* Size of thumb instruction. */ -#define THUMB_REG_LO 0x1 -#define THUMB_REG_HI 0x2 -#define THUMB_REG_ANY 0x3 - -#define THUMB_H1 0x0080 -#define THUMB_H2 0x0040 - -#define THUMB_ASR 0 -#define THUMB_LSL 1 -#define THUMB_LSR 2 - -#define THUMB_MOVE 0 -#define THUMB_COMPARE 1 -#define THUMB_CPY 2 - -#define THUMB_LOAD 0 -#define THUMB_STORE 1 - -#define THUMB_PP_PC_LR 0x0100 - -/* These three are used for immediate shifts, do not alter. */ -#define THUMB_WORD 2 -#define THUMB_HALFWORD 1 -#define THUMB_BYTE 0 - -struct thumb_opcode -{ - /* Basic string to match. */ - const char * template; - - /* Basic instruction code. */ - unsigned long value; - - int size; - - /* Which CPU variants this exists for. */ - unsigned long variant; - - /* Function to call to parse args. */ - void (* parms) PARAMS ((char *)); -}; - -static const struct thumb_opcode tinsns[] = -{ - /* Thumb v1 (ARMv4T). */ - {"adc", 0x4140, 2, ARM_EXT_V4T, do_t_arit}, - {"add", 0x0000, 2, ARM_EXT_V4T, do_t_add}, - {"and", 0x4000, 2, ARM_EXT_V4T, do_t_arit}, - {"asr", 0x0000, 2, ARM_EXT_V4T, do_t_asr}, - {"b", T_OPCODE_BRANCH, 2, ARM_EXT_V4T, do_t_branch12}, - {"beq", 0xd0fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bne", 0xd1fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bcs", 0xd2fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bhs", 0xd2fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bcc", 0xd3fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bul", 0xd3fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"blo", 0xd3fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bmi", 0xd4fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bpl", 0xd5fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bvs", 0xd6fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bvc", 0xd7fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bhi", 0xd8fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bls", 0xd9fe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bge", 0xdafe, 2, ARM_EXT_V4T, do_t_branch9}, - {"blt", 0xdbfe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bgt", 0xdcfe, 2, ARM_EXT_V4T, do_t_branch9}, - {"ble", 0xddfe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bal", 0xdefe, 2, ARM_EXT_V4T, do_t_branch9}, - {"bic", 0x4380, 2, ARM_EXT_V4T, do_t_arit}, - {"bl", 0xf7fffffe, 4, ARM_EXT_V4T, do_t_branch23}, - {"bx", 0x4700, 2, ARM_EXT_V4T, do_t_bx}, - {"cmn", T_OPCODE_CMN, 2, ARM_EXT_V4T, do_t_arit}, - {"cmp", 0x0000, 2, ARM_EXT_V4T, do_t_compare}, - {"eor", 0x4040, 2, ARM_EXT_V4T, do_t_arit}, - {"ldmia", 0xc800, 2, ARM_EXT_V4T, do_t_ldmstm}, - {"ldr", 0x0000, 2, ARM_EXT_V4T, do_t_ldr}, - {"ldrb", 0x0000, 2, ARM_EXT_V4T, do_t_ldrb}, - {"ldrh", 0x0000, 2, ARM_EXT_V4T, do_t_ldrh}, - {"ldrsb", 0x5600, 2, ARM_EXT_V4T, do_t_lds}, - {"ldrsh", 0x5e00, 2, ARM_EXT_V4T, do_t_lds}, - {"ldsb", 0x5600, 2, ARM_EXT_V4T, do_t_lds}, - {"ldsh", 0x5e00, 2, ARM_EXT_V4T, do_t_lds}, - {"lsl", 0x0000, 2, ARM_EXT_V4T, do_t_lsl}, - {"lsr", 0x0000, 2, ARM_EXT_V4T, do_t_lsr}, - {"mov", 0x0000, 2, ARM_EXT_V4T, do_t_mov}, - {"mul", T_OPCODE_MUL, 2, ARM_EXT_V4T, do_t_arit}, - {"mvn", T_OPCODE_MVN, 2, ARM_EXT_V4T, do_t_arit}, - {"neg", T_OPCODE_NEG, 2, ARM_EXT_V4T, do_t_arit}, - {"orr", 0x4300, 2, ARM_EXT_V4T, do_t_arit}, - {"pop", 0xbc00, 2, ARM_EXT_V4T, do_t_push_pop}, - {"push", 0xb400, 2, ARM_EXT_V4T, do_t_push_pop}, - {"ror", 0x41c0, 2, ARM_EXT_V4T, do_t_arit}, - {"sbc", 0x4180, 2, ARM_EXT_V4T, do_t_arit}, - {"stmia", 0xc000, 2, ARM_EXT_V4T, do_t_ldmstm}, - {"str", 0x0000, 2, ARM_EXT_V4T, do_t_str}, - {"strb", 0x0000, 2, ARM_EXT_V4T, do_t_strb}, - {"strh", 0x0000, 2, ARM_EXT_V4T, do_t_strh}, - {"swi", 0xdf00, 2, ARM_EXT_V4T, do_t_swi}, - {"sub", 0x0000, 2, ARM_EXT_V4T, do_t_sub}, - {"tst", T_OPCODE_TST, 2, ARM_EXT_V4T, do_t_arit}, - /* Pseudo ops: */ - {"adr", 0x0000, 2, ARM_EXT_V4T, do_t_adr}, - {"nop", 0x46C0, 2, ARM_EXT_V4T, do_t_nop}, /* mov r8,r8 */ - /* Thumb v2 (ARMv5T). */ - {"blx", 0, 0, ARM_EXT_V5T, do_t_blx}, - {"bkpt", 0xbe00, 2, ARM_EXT_V5T, do_t_bkpt}, - - /* ARM V6. */ - {"cpsie", 0xb660, 2, ARM_EXT_V6, do_t_cps}, - {"cpsid", 0xb670, 2, ARM_EXT_V6, do_t_cps}, - {"cpy", 0x4600, 2, ARM_EXT_V6, do_t_cpy}, - {"rev", 0xba00, 2, ARM_EXT_V6, do_t_arit}, - {"rev16", 0xba40, 2, ARM_EXT_V6, do_t_arit}, - {"revsh", 0xbac0, 2, ARM_EXT_V6, do_t_arit}, - {"setend", 0xb650, 2, ARM_EXT_V6, do_t_setend}, - {"sxth", 0xb200, 2, ARM_EXT_V6, do_t_arit}, - {"sxtb", 0xb240, 2, ARM_EXT_V6, do_t_arit}, - {"uxth", 0xb280, 2, ARM_EXT_V6, do_t_arit}, - {"uxtb", 0xb2c0, 2, ARM_EXT_V6, do_t_arit}, -}; - -#define BAD_ARGS _("bad arguments to instruction") -#define BAD_PC _("r15 not allowed here") -#define BAD_COND _("instruction is not conditional") -#define ERR_NO_ACCUM _("acc0 expected") - -static struct hash_control * arm_ops_hsh = NULL; -static struct hash_control * arm_tops_hsh = NULL; -static struct hash_control * arm_cond_hsh = NULL; -static struct hash_control * arm_shift_hsh = NULL; -static struct hash_control * arm_psr_hsh = NULL; - -/* This table describes all the machine specific pseudo-ops the assembler - has to support. The fields are: - pseudo-op name without dot - function to call to execute this pseudo-op - Integer arg to pass to the function. */ - -static void s_req PARAMS ((int)); -static void s_unreq PARAMS ((int)); -static void s_align PARAMS ((int)); -static void s_bss PARAMS ((int)); -static void s_even PARAMS ((int)); -static void s_ltorg PARAMS ((int)); -static void s_arm PARAMS ((int)); -static void s_thumb PARAMS ((int)); -static void s_code PARAMS ((int)); -static void s_force_thumb PARAMS ((int)); -static void s_thumb_func PARAMS ((int)); -static void s_thumb_set PARAMS ((int)); -#ifdef OBJ_ELF -static void s_arm_elf_cons PARAMS ((int)); -#endif - -static int my_get_expression PARAMS ((expressionS *, char **)); - -const pseudo_typeS md_pseudo_table[] = -{ - /* Never called because '.req' does not start a line. */ - { "req", s_req, 0 }, - { "unreq", s_unreq, 0 }, - { "bss", s_bss, 0 }, - { "align", s_align, 0 }, - { "arm", s_arm, 0 }, - { "thumb", s_thumb, 0 }, - { "code", s_code, 0 }, - { "force_thumb", s_force_thumb, 0 }, - { "thumb_func", s_thumb_func, 0 }, - { "thumb_set", s_thumb_set, 0 }, - { "even", s_even, 0 }, - { "ltorg", s_ltorg, 0 }, - { "pool", s_ltorg, 0 }, -#ifdef OBJ_ELF - { "word", s_arm_elf_cons, 4 }, - { "long", s_arm_elf_cons, 4 }, -#else - { "word", cons, 4}, -#endif - { "extend", float_cons, 'x' }, - { "ldouble", float_cons, 'x' }, - { "packed", float_cons, 'p' }, - { 0, 0, 0 } -}; - -/* Other internal functions. */ -static int arm_parse_extension PARAMS ((char *, int *)); -static int arm_parse_cpu PARAMS ((char *)); -static int arm_parse_arch PARAMS ((char *)); -static int arm_parse_fpu PARAMS ((char *)); -static int arm_parse_float_abi PARAMS ((char *)); -#if 0 /* Suppressed - for now. */ -#if defined OBJ_COFF || defined OBJ_ELF -static void arm_add_note PARAMS ((const char *, const char *, unsigned int)); -#endif -#endif - -/* Stuff needed to resolve the label ambiguity - As: - ... - label: - may differ from: - ... - label: - -*/ - -symbolS * last_label_seen; -static int label_is_thumb_function_name = FALSE; - -/* Literal Pool stuff. */ - -#define MAX_LITERAL_POOL_SIZE 1024 - -/* Literal pool structure. Held on a per-section - and per-sub-section basis. */ -typedef struct literal_pool -{ - expressionS literals [MAX_LITERAL_POOL_SIZE]; - unsigned int next_free_entry; - unsigned int id; - symbolS * symbol; - segT section; - subsegT sub_section; - struct literal_pool * next; -} literal_pool; - -/* Pointer to a linked list of literal pools. */ -literal_pool * list_of_pools = NULL; - -static literal_pool * find_literal_pool PARAMS ((void)); -static literal_pool * find_or_make_literal_pool PARAMS ((void)); - -static literal_pool * -find_literal_pool () -{ - literal_pool * pool; - - for (pool = list_of_pools; pool != NULL; pool = pool->next) - { - if (pool->section == now_seg - && pool->sub_section == now_subseg) - break; - } - - return pool; -} - -static literal_pool * -find_or_make_literal_pool () -{ - /* Next literal pool ID number. */ - static unsigned int latest_pool_num = 1; - literal_pool * pool; - - pool = find_literal_pool (); - - if (pool == NULL) - { - /* Create a new pool. */ - pool = (literal_pool *) xmalloc (sizeof (* pool)); - if (! pool) - return NULL; - - pool->next_free_entry = 0; - pool->section = now_seg; - pool->sub_section = now_subseg; - pool->next = list_of_pools; - pool->symbol = NULL; - - /* Add it to the list. */ - list_of_pools = pool; - } - - /* New pools, and emptied pools, will have a NULL symbol. */ - if (pool->symbol == NULL) - { - pool->symbol = symbol_create (FAKE_LABEL_NAME, undefined_section, - (valueT) 0, &zero_address_frag); - pool->id = latest_pool_num ++; - } - - /* Done. */ - return pool; -} - -/* Add the literal in the global 'inst' - structure to the relevent literal pool. */ -static int -add_to_lit_pool () -{ - literal_pool * pool; - unsigned int entry; - - pool = find_or_make_literal_pool (); - - /* Check if this literal value is already in the pool. */ - for (entry = 0; entry < pool->next_free_entry; entry ++) - { - if ((pool->literals[entry].X_op == inst.reloc.exp.X_op) - && (inst.reloc.exp.X_op == O_constant) - && (pool->literals[entry].X_add_number - == inst.reloc.exp.X_add_number) - && (pool->literals[entry].X_unsigned - == inst.reloc.exp.X_unsigned)) - break; - - if ((pool->literals[entry].X_op == inst.reloc.exp.X_op) - && (inst.reloc.exp.X_op == O_symbol) - && (pool->literals[entry].X_add_number - == inst.reloc.exp.X_add_number) - && (pool->literals[entry].X_add_symbol - == inst.reloc.exp.X_add_symbol) - && (pool->literals[entry].X_op_symbol - == inst.reloc.exp.X_op_symbol)) - break; - } - - /* Do we need to create a new entry? */ - if (entry == pool->next_free_entry) - { - if (entry >= MAX_LITERAL_POOL_SIZE) - { - inst.error = _("literal pool overflow"); - return FAIL; - } - - pool->literals[entry] = inst.reloc.exp; - pool->next_free_entry += 1; - } - - inst.reloc.exp.X_op = O_symbol; - inst.reloc.exp.X_add_number = ((int) entry) * 4 - 8; - inst.reloc.exp.X_add_symbol = pool->symbol; - - return SUCCESS; -} - -/* Can't use symbol_new here, so have to create a symbol and then at - a later date assign it a value. Thats what these functions do. */ - -static void -symbol_locate (symbolP, name, segment, valu, frag) - symbolS * symbolP; - const char * name; /* It is copied, the caller can modify. */ - segT segment; /* Segment identifier (SEG_). */ - valueT valu; /* Symbol value. */ - fragS * frag; /* Associated fragment. */ -{ - unsigned int name_length; - char * preserved_copy_of_name; - - name_length = strlen (name) + 1; /* +1 for \0. */ - obstack_grow (¬es, name, name_length); - preserved_copy_of_name = obstack_finish (¬es); -#ifdef STRIP_UNDERSCORE - if (preserved_copy_of_name[0] == '_') - preserved_copy_of_name++; -#endif - -#ifdef tc_canonicalize_symbol_name - preserved_copy_of_name = - tc_canonicalize_symbol_name (preserved_copy_of_name); -#endif - - S_SET_NAME (symbolP, preserved_copy_of_name); - - S_SET_SEGMENT (symbolP, segment); - S_SET_VALUE (symbolP, valu); - symbol_clear_list_pointers (symbolP); - - symbol_set_frag (symbolP, frag); - - /* Link to end of symbol chain. */ - { - extern int symbol_table_frozen; - if (symbol_table_frozen) - abort (); - } - - symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP); - - obj_symbol_new_hook (symbolP); - -#ifdef tc_symbol_new_hook - tc_symbol_new_hook (symbolP); -#endif - -#ifdef DEBUG_SYMS - verify_symbol_chain (symbol_rootP, symbol_lastP); -#endif /* DEBUG_SYMS */ -} - -/* Check that an immediate is valid. - If so, convert it to the right format. */ - -static unsigned int -validate_immediate (val) - unsigned int val; -{ - unsigned int a; - unsigned int i; - -#define rotate_left(v, n) (v << n | v >> (32 - n)) - - for (i = 0; i < 32; i += 2) - if ((a = rotate_left (val, i)) <= 0xff) - return a | (i << 7); /* 12-bit pack: [shift-cnt,const]. */ - - return FAIL; -} - -/* Check to see if an immediate can be computed as two separate immediate - values, added together. We already know that this value cannot be - computed by just one ARM instruction. */ - -static unsigned int -validate_immediate_twopart (val, highpart) - unsigned int val; - unsigned int * highpart; -{ - unsigned int a; - unsigned int i; - - for (i = 0; i < 32; i += 2) - if (((a = rotate_left (val, i)) & 0xff) != 0) - { - if (a & 0xff00) - { - if (a & ~ 0xffff) - continue; - * highpart = (a >> 8) | ((i + 24) << 7); - } - else if (a & 0xff0000) - { - if (a & 0xff000000) - continue; - * highpart = (a >> 16) | ((i + 16) << 7); - } - else - { - assert (a & 0xff000000); - * highpart = (a >> 24) | ((i + 8) << 7); - } - - return (a & 0xff) | (i << 7); - } - - return FAIL; -} - -static int -validate_offset_imm (val, hwse) - unsigned int val; - int hwse; -{ - if ((hwse && val > 255) || val > 4095) - return FAIL; - return val; -} - - -#ifdef OBJ_ELF -enum mstate -{ - MAP_DATA, - MAP_ARM, - MAP_THUMB -}; - -/* This code is to handle mapping symbols as defined in the ARM ELF spec. - (This text is taken from version B-02 of the spec): - - 4.4.7 Mapping and tagging symbols - - A section of an ARM ELF file can contain a mixture of ARM code, - Thumb code, and data. There are inline transitions between code - and data at literal pool boundaries. There can also be inline - transitions between ARM code and Thumb code, for example in - ARM-Thumb inter-working veneers. Linkers, machine-level - debuggers, profiling tools, and disassembly tools need to map - images accurately. For example, setting an ARM breakpoint on a - Thumb location, or in a literal pool, can crash the program - being debugged, ruining the debugging session. - - ARM ELF entities are mapped (see section 4.4.7.1 below) and - tagged (see section 4.4.7.2 below) using local symbols (with - binding STB_LOCAL). To assist consumers, mapping and tagging - symbols should be collated first in the symbol table, before - other symbols with binding STB_LOCAL. - - To allow properly collated mapping and tagging symbols to be - skipped by consumers that have no interest in them, the first - such symbol should have the name $m and its st_value field equal - to the total number of mapping and tagging symbols (including - the $m) in the symbol table. - - 4.4.7.1 Mapping symbols - - $a Labels the first byte of a sequence of ARM instructions. - Its type is STT_FUNC. - - $d Labels the first byte of a sequence of data items. - Its type is STT_OBJECT. - - $t Labels the first byte of a sequence of Thumb instructions. - Its type is STT_FUNC. - - This list of mapping symbols may be extended in the future. - - Section-relative mapping symbols - - Mapping symbols defined in a section define a sequence of - half-open address intervals that cover the address range of the - section. Each interval starts at the address defined by a - mapping symbol, and continues up to, but not including, the - address defined by the next (in address order) mapping symbol or - the end of the section. A corollary is that there must be a - mapping symbol defined at the beginning of each section. - Consumers can ignore the size of a section-relative mapping - symbol. Producers can set it to 0. - - Absolute mapping symbols - - Because of the need to crystallize a Thumb address with the - Thumb-bit set, absolute symbol of type STT_FUNC (symbols of type - STT_FUNC defined in section SHN_ABS) need to be mapped with $a - or $t. - - The extent of a mapping symbol defined in SHN_ABS is [st_value, - st_value + st_size), or [st_value, st_value + 1) if st_size = 0, - where [x, y) denotes the half-open address range from x, - inclusive, to y, exclusive. - - In the absence of a mapping symbol, a consumer can interpret a - function symbol with an odd value as the Thumb code address - obtained by clearing the least significant bit of the - value. This interpretation is deprecated, and it may not work in - the future. - - Note - the Tagging symbols ($b, $f, $p $m) have been dropped from - the EABI (which is still under development), so they are not - implemented here. */ - -static void -mapping_state (enum mstate state) -{ - static enum mstate mapstate = MAP_DATA; - symbolS * symbolP; - const char * symname; - int type; - - if (mapstate == state) - /* The mapping symbol has already been emitted. - There is nothing else to do. */ - return; - - mapstate = state; - - switch (state) - { - case MAP_DATA: - symname = "$d"; - type = BSF_OBJECT; - break; - case MAP_ARM: - symname = "$a"; - type = BSF_FUNCTION; - break; - case MAP_THUMB: - symname = "$t"; - type = BSF_FUNCTION; - break; - default: - abort (); - } - - symbolP = symbol_new (symname, now_seg, (valueT) frag_now_fix (), frag_now); - symbol_table_insert (symbolP); - symbol_get_bfdsym (symbolP)->flags |= type | BSF_LOCAL; - - switch (state) - { - case MAP_ARM: - THUMB_SET_FUNC (symbolP, 0); - ARM_SET_THUMB (symbolP, 0); - ARM_SET_INTERWORK (symbolP, support_interwork); - break; - - case MAP_THUMB: - THUMB_SET_FUNC (symbolP, 1); - ARM_SET_THUMB (symbolP, 1); - ARM_SET_INTERWORK (symbolP, support_interwork); - break; - - case MAP_DATA: - default: - return; - } -} - -/* When we change sections we need to issue a new mapping symbol. */ - -void -arm_elf_change_section (void) -{ - flagword flags; - - if (!SEG_NORMAL (now_seg)) - return; - - flags = bfd_get_section_flags (stdoutput, now_seg); - - /* We can ignore sections that only contain debug info. */ - if ((flags & SEC_ALLOC) == 0) - return; - - if (flags & SEC_CODE) - { - if (thumb_mode) - mapping_state (MAP_THUMB); - else - mapping_state (MAP_ARM); - } - else - /* This section does not contain code. Therefore it must contain data. */ - mapping_state (MAP_DATA); -} -#else -#define mapping_state(a) -#endif /* OBJ_ELF */ - - -static void -s_req (a) - int a ATTRIBUTE_UNUSED; -{ - as_bad (_("invalid syntax for .req directive")); -} - -/* The .unreq directive deletes an alias which was previously defined - by .req. For example: - - my_alias .req r11 - .unreq my_alias */ - -static void -s_unreq (int a ATTRIBUTE_UNUSED) -{ - char *name; - char saved_char; - - skip_whitespace (input_line_pointer); - name = input_line_pointer; - - while (*input_line_pointer != 0 - && *input_line_pointer != ' ' - && *input_line_pointer != '\n') - ++input_line_pointer; - - saved_char = *input_line_pointer; - *input_line_pointer = 0; - - if (*name) - { - enum arm_reg_type req_type = arm_reg_parse_any (name); - - if (req_type != REG_TYPE_MAX) - { - char *temp_name = name; - int req_no = arm_reg_parse (&temp_name, all_reg_maps[req_type].htab); - - if (req_no != FAIL) - { - struct reg_entry *req_entry; - - /* Check to see if this alias is a builtin one. */ - req_entry = hash_delete (all_reg_maps[req_type].htab, name); - - if (!req_entry) - as_bad (_("unreq: missing hash entry for \"%s\""), name); - else if (req_entry->builtin) - /* FIXME: We are deleting a built in register alias which - points to a const data structure, so we only need to - free up the memory used by the key in the hash table. - Unfortunately we have not recorded this value, so this - is a memory leak. */ - /* FIXME: Should we issue a warning message ? */ - ; - else - { - /* Deleting a user defined alias. We need to free the - key and the value, but fortunately the key is the same - as the value->name field. */ - free ((char *) req_entry->name); - free (req_entry); - } - } - else - as_bad (_(".unreq: unrecognized symbol \"%s\""), name); - } - else - as_bad (_(".unreq: unrecognized symbol \"%s\""), name); - } - else - as_bad (_("invalid syntax for .unreq directive")); - - *input_line_pointer = saved_char; - demand_empty_rest_of_line (); -} - -static void -s_bss (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* We don't support putting frags in the BSS segment, we fake it by - marking in_bss, then looking at s_skip for clues. */ - subseg_set (bss_section, 0); - demand_empty_rest_of_line (); - mapping_state (MAP_DATA); -} - -static void -s_even (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* Never make frag if expect extra pass. */ - if (!need_pass_2) - frag_align (1, 0, 0); - - record_alignment (now_seg, 1); - - demand_empty_rest_of_line (); -} - -static void -s_ltorg (ignored) - int ignored ATTRIBUTE_UNUSED; -{ - unsigned int entry; - literal_pool * pool; - char sym_name[20]; - - pool = find_literal_pool (); - if (pool == NULL - || pool->symbol == NULL - || pool->next_free_entry == 0) - return; - - /* Align pool as you have word accesses. - Only make a frag if we have to. */ - if (!need_pass_2) - frag_align (2, 0, 0); - - record_alignment (now_seg, 2); - - sprintf (sym_name, "$$lit_\002%x", pool->id); - - symbol_locate (pool->symbol, sym_name, now_seg, - (valueT) frag_now_fix (), frag_now); - symbol_table_insert (pool->symbol); - - ARM_SET_THUMB (pool->symbol, thumb_mode); - -#if defined OBJ_COFF || defined OBJ_ELF - ARM_SET_INTERWORK (pool->symbol, support_interwork); -#endif - - for (entry = 0; entry < pool->next_free_entry; entry ++) - /* First output the expression in the instruction to the pool. */ - emit_expr (&(pool->literals[entry]), 4); /* .word */ - - /* Mark the pool as empty. */ - pool->next_free_entry = 0; - pool->symbol = NULL; -} - -/* Same as s_align_ptwo but align 0 => align 2. */ - -static void -s_align (unused) - int unused ATTRIBUTE_UNUSED; -{ - register int temp; - register long temp_fill; - long max_alignment = 15; - - temp = get_absolute_expression (); - if (temp > max_alignment) - as_bad (_("alignment too large: %d assumed"), temp = max_alignment); - else if (temp < 0) - { - as_bad (_("alignment negative. 0 assumed.")); - temp = 0; - } - - if (*input_line_pointer == ',') - { - input_line_pointer++; - temp_fill = get_absolute_expression (); - } - else - temp_fill = 0; - - if (!temp) - temp = 2; - - /* Only make a frag if we HAVE to. */ - if (temp && !need_pass_2) - frag_align (temp, (int) temp_fill, 0); - demand_empty_rest_of_line (); - - record_alignment (now_seg, temp); -} - -static void -s_force_thumb (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - /* If we are not already in thumb mode go into it, EVEN if - the target processor does not support thumb instructions. - This is used by gcc/config/arm/lib1funcs.asm for example - to compile interworking support functions even if the - target processor should not support interworking. */ - if (! thumb_mode) - { - thumb_mode = 2; - - record_alignment (now_seg, 1); - } - - demand_empty_rest_of_line (); -} - -static void -s_thumb_func (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - if (! thumb_mode) - opcode_select (16); - - /* The following label is the name/address of the start of a Thumb function. - We need to know this for the interworking support. */ - label_is_thumb_function_name = TRUE; - - demand_empty_rest_of_line (); -} - -/* Perform a .set directive, but also mark the alias as - being a thumb function. */ - -static void -s_thumb_set (equiv) - int equiv; -{ - /* XXX the following is a duplicate of the code for s_set() in read.c - We cannot just call that code as we need to get at the symbol that - is created. */ - register char * name; - register char delim; - register char * end_name; - register symbolS * symbolP; - - /* Especial apologies for the random logic: - This just grew, and could be parsed much more simply! - Dean - in haste. */ - name = input_line_pointer; - delim = get_symbol_end (); - end_name = input_line_pointer; - *end_name = delim; - - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - *end_name = 0; - as_bad (_("expected comma after name \"%s\""), name); - *end_name = delim; - ignore_rest_of_line (); - return; - } - - input_line_pointer++; - *end_name = 0; - - if (name[0] == '.' && name[1] == '\0') - { - /* XXX - this should not happen to .thumb_set. */ - abort (); - } - - if ((symbolP = symbol_find (name)) == NULL - && (symbolP = md_undefined_symbol (name)) == NULL) - { -#ifndef NO_LISTING - /* When doing symbol listings, play games with dummy fragments living - outside the normal fragment chain to record the file and line info - for this symbol. */ - if (listing & LISTING_SYMBOLS) - { - extern struct list_info_struct * listing_tail; - fragS * dummy_frag = (fragS *) xmalloc (sizeof (fragS)); - - memset (dummy_frag, 0, sizeof (fragS)); - dummy_frag->fr_type = rs_fill; - dummy_frag->line = listing_tail; - symbolP = symbol_new (name, undefined_section, 0, dummy_frag); - dummy_frag->fr_symbol = symbolP; - } - else -#endif - symbolP = symbol_new (name, undefined_section, 0, &zero_address_frag); - -#ifdef OBJ_COFF - /* "set" symbols are local unless otherwise specified. */ - SF_SET_LOCAL (symbolP); -#endif /* OBJ_COFF */ - } /* Make a new symbol. */ - - symbol_table_insert (symbolP); - - * end_name = delim; - - if (equiv - && S_IS_DEFINED (symbolP) - && S_GET_SEGMENT (symbolP) != reg_section) - as_bad (_("symbol `%s' already defined"), S_GET_NAME (symbolP)); - - pseudo_set (symbolP); - - demand_empty_rest_of_line (); - - /* XXX Now we come to the Thumb specific bit of code. */ - - THUMB_SET_FUNC (symbolP, 1); - ARM_SET_THUMB (symbolP, 1); -#if defined OBJ_ELF || defined OBJ_COFF - ARM_SET_INTERWORK (symbolP, support_interwork); -#endif -} - -static void -opcode_select (width) - int width; -{ - switch (width) - { - case 16: - if (! thumb_mode) - { - if (! (cpu_variant & ARM_EXT_V4T)) - as_bad (_("selected processor does not support THUMB opcodes")); - - thumb_mode = 1; - /* No need to force the alignment, since we will have been - coming from ARM mode, which is word-aligned. */ - record_alignment (now_seg, 1); - } - mapping_state (MAP_THUMB); - break; - - case 32: - if (thumb_mode) - { - if ((cpu_variant & ARM_ALL) == ARM_EXT_V4T) - as_bad (_("selected processor does not support ARM opcodes")); - - thumb_mode = 0; - - if (!need_pass_2) - frag_align (2, 0, 0); - - record_alignment (now_seg, 1); - } - mapping_state (MAP_ARM); - break; - - default: - as_bad (_("invalid instruction size selected (%d)"), width); - } -} - -static void -s_arm (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - opcode_select (32); - demand_empty_rest_of_line (); -} - -static void -s_thumb (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - opcode_select (16); - demand_empty_rest_of_line (); -} - -static void -s_code (unused) - int unused ATTRIBUTE_UNUSED; -{ - register int temp; - - temp = get_absolute_expression (); - switch (temp) - { - case 16: - case 32: - opcode_select (temp); - break; - - default: - as_bad (_("invalid operand to .code directive (%d) (expecting 16 or 32)"), temp); - } -} - -static void -end_of_line (str) - char *str; -{ - skip_whitespace (str); - - if (*str != '\0' && !inst.error) - inst.error = _("garbage following instruction"); -} - -static int -skip_past_comma (str) - char ** str; -{ - char * p = * str, c; - int comma = 0; - - while ((c = *p) == ' ' || c == ',') - { - p++; - if (c == ',' && comma++) - return FAIL; - } - - if (c == '\0') - return FAIL; - - *str = p; - return comma ? SUCCESS : FAIL; -} - -/* A standard register must be given at this point. - SHIFT is the place to put it in inst.instruction. - Restores input start point on error. - Returns the reg#, or FAIL. */ - -static int -reg_required_here (str, shift) - char ** str; - int shift; -{ - static char buff [128]; /* XXX */ - int reg; - char * start = * str; - - if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_RN].htab)) != FAIL) - { - if (shift >= 0) - inst.instruction |= reg << shift; - return reg; - } - - /* Restore the start point, we may have got a reg of the wrong class. */ - *str = start; - - /* In the few cases where we might be able to accept something else - this error can be overridden. */ - sprintf (buff, _("register expected, not '%.100s'"), start); - inst.error = buff; - - return FAIL; -} - -/* A Intel Wireless MMX technology register - must be given at this point. - Shift is the place to put it in inst.instruction. - Restores input start point on err. - Returns the reg#, or FAIL. */ - -static int -wreg_required_here (str, shift, reg_type) - char ** str; - int shift; - enum wreg_type reg_type; -{ - static char buff [128]; - int reg; - char * start = *str; - - if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_IWMMXT].htab)) != FAIL) - { - if (wr_register (reg) - && (reg_type == IWMMXT_REG_WR || reg_type == IWMMXT_REG_WR_OR_WC)) - { - if (shift >= 0) - inst.instruction |= (reg ^ WR_PREFIX) << shift; - return reg; - } - else if (wc_register (reg) - && (reg_type == IWMMXT_REG_WC || reg_type == IWMMXT_REG_WR_OR_WC)) - { - if (shift >= 0) - inst.instruction |= (reg ^ WC_PREFIX) << shift; - return reg; - } - else if ((wcg_register (reg) && reg_type == IWMMXT_REG_WCG)) - { - if (shift >= 0) - inst.instruction |= ((reg ^ WC_PREFIX) - 8) << shift; - return reg; - } - } - - /* Restore the start point, we may have got a reg of the wrong class. */ - *str = start; - - /* In the few cases where we might be able to accept - something else this error can be overridden. */ - sprintf (buff, _("Intel Wireless MMX technology register expected, not '%.100s'"), start); - inst.error = buff; - - return FAIL; -} - -static const struct asm_psr * -arm_psr_parse (ccp) - register char ** ccp; -{ - char * start = * ccp; - char c; - char * p; - const struct asm_psr * psr; - - p = start; - - /* Skip to the end of the next word in the input stream. */ - do - { - c = *p++; - } - while (ISALPHA (c) || c == '_'); - - /* Terminate the word. */ - *--p = 0; - - /* CPSR's and SPSR's can now be lowercase. This is just a convenience - feature for ease of use and backwards compatibility. */ - if (!strncmp (start, "cpsr", 4)) - strncpy (start, "CPSR", 4); - else if (!strncmp (start, "spsr", 4)) - strncpy (start, "SPSR", 4); - - /* Now locate the word in the psr hash table. */ - psr = (const struct asm_psr *) hash_find (arm_psr_hsh, start); - - /* Restore the input stream. */ - *p = c; - - /* If we found a valid match, advance the - stream pointer past the end of the word. */ - *ccp = p; - - return psr; -} - -/* Parse the input looking for a PSR flag. */ - -static int -psr_required_here (str) - char ** str; -{ - char * start = * str; - const struct asm_psr * psr; - - psr = arm_psr_parse (str); - - if (psr) - { - /* If this is the SPSR that is being modified, set the R bit. */ - if (! psr->cpsr) - inst.instruction |= SPSR_BIT; - - /* Set the psr flags in the MSR instruction. */ - inst.instruction |= psr->field << PSR_SHIFT; - - return SUCCESS; - } - - /* In the few cases where we might be able to accept - something else this error can be overridden. */ - inst.error = _("flag for {c}psr instruction expected"); - - /* Restore the start point. */ - *str = start; - return FAIL; -} - -static int -co_proc_number (str) - char **str; -{ - int processor, pchar; - char *start; - - skip_whitespace (*str); - start = *str; - - /* The data sheet seems to imply that just a number on its own is valid - here, but the RISC iX assembler seems to accept a prefix 'p'. We will - accept either. */ - if ((processor = arm_reg_parse (str, all_reg_maps[REG_TYPE_CP].htab)) - == FAIL) - { - *str = start; - - pchar = *(*str)++; - if (pchar >= '0' && pchar <= '9') - { - processor = pchar - '0'; - if (**str >= '0' && **str <= '9') - { - processor = processor * 10 + *(*str)++ - '0'; - if (processor > 15) - { - inst.error = _("illegal co-processor number"); - return FAIL; - } - } - } - else - { - inst.error = _("bad or missing co-processor number"); - return FAIL; - } - } - - inst.instruction |= processor << 8; - return SUCCESS; -} - -static int -cp_opc_expr (str, where, length) - char ** str; - int where; - int length; -{ - expressionS expr; - - skip_whitespace (* str); - - memset (&expr, '\0', sizeof (expr)); - - if (my_get_expression (&expr, str)) - return FAIL; - if (expr.X_op != O_constant) - { - inst.error = _("bad or missing expression"); - return FAIL; - } - - if ((expr.X_add_number & ((1 << length) - 1)) != expr.X_add_number) - { - inst.error = _("immediate co-processor expression too large"); - return FAIL; - } - - inst.instruction |= expr.X_add_number << where; - return SUCCESS; -} - -static int -cp_reg_required_here (str, where) - char ** str; - int where; -{ - int reg; - char * start = *str; - - if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_CN].htab)) != FAIL) - { - inst.instruction |= reg << where; - return reg; - } - - /* In the few cases where we might be able to accept something else - this error can be overridden. */ - inst.error = _("co-processor register expected"); - - /* Restore the start point. */ - *str = start; - return FAIL; -} - -static int -fp_reg_required_here (str, where) - char ** str; - int where; -{ - int reg; - char * start = * str; - - if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_FN].htab)) != FAIL) - { - inst.instruction |= reg << where; - return reg; - } - - /* In the few cases where we might be able to accept something else - this error can be overridden. */ - inst.error = _("floating point register expected"); - - /* Restore the start point. */ - *str = start; - return FAIL; -} - -static int -cp_address_offset (str) - char ** str; -{ - int offset; - - skip_whitespace (* str); - - if (! is_immediate_prefix (**str)) - { - inst.error = _("immediate expression expected"); - return FAIL; - } - - (*str)++; - - if (my_get_expression (& inst.reloc.exp, str)) - return FAIL; - - if (inst.reloc.exp.X_op == O_constant) - { - offset = inst.reloc.exp.X_add_number; - - if (offset & 3) - { - inst.error = _("co-processor address must be word aligned"); - return FAIL; - } - - if (offset > 1023 || offset < -1023) - { - inst.error = _("offset too large"); - return FAIL; - } - - if (offset >= 0) - inst.instruction |= INDEX_UP; - else - offset = -offset; - - inst.instruction |= offset >> 2; - } - else - inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM; - - return SUCCESS; -} - -static int -cp_address_required_here (str, wb_ok) - char ** str; - int wb_ok; -{ - char * p = * str; - int pre_inc = 0; - int write_back = 0; - - if (*p == '[') - { - int reg; - - p++; - skip_whitespace (p); - - if ((reg = reg_required_here (& p, 16)) == FAIL) - return FAIL; - - skip_whitespace (p); - - if (*p == ']') - { - p++; - - skip_whitespace (p); - - if (*p == '\0') - { - /* As an extension to the official ARM syntax we allow: - - [Rn] - - as a short hand for: - - [Rn,#0] */ - inst.instruction |= PRE_INDEX | INDEX_UP; - *str = p; - return SUCCESS; - } - - if (skip_past_comma (& p) == FAIL) - { - inst.error = _("comma expected after closing square bracket"); - return FAIL; - } - - skip_whitespace (p); - - if (*p == '#') - { - if (wb_ok) - { - /* [Rn], #expr */ - write_back = WRITE_BACK; - - if (reg == REG_PC) - { - inst.error = _("pc may not be used in post-increment"); - return FAIL; - } - - if (cp_address_offset (& p) == FAIL) - return FAIL; - } - else - pre_inc = PRE_INDEX | INDEX_UP; - } - else if (*p == '{') - { - int option; - - /* [Rn], {} */ - p++; - - skip_whitespace (p); - - if (my_get_expression (& inst.reloc.exp, & p)) - return FAIL; - - if (inst.reloc.exp.X_op == O_constant) - { - option = inst.reloc.exp.X_add_number; - - if (option > 255 || option < 0) - { - inst.error = _("'option' field too large"); - return FAIL; - } - - skip_whitespace (p); - - if (*p != '}') - { - inst.error = _("'}' expected at end of 'option' field"); - return FAIL; - } - else - { - p++; - inst.instruction |= option; - inst.instruction |= INDEX_UP; - } - } - else - { - inst.error = _("non-constant expressions for 'option' field not supported"); - return FAIL; - } - } - else - { - inst.error = _("# or { expected after comma"); - return FAIL; - } - } - else - { - /* '['Rn, #expr']'[!] */ - - if (skip_past_comma (& p) == FAIL) - { - inst.error = _("pre-indexed expression expected"); - return FAIL; - } - - pre_inc = PRE_INDEX; - - if (cp_address_offset (& p) == FAIL) - return FAIL; - - skip_whitespace (p); - - if (*p++ != ']') - { - inst.error = _("missing ]"); - return FAIL; - } - - skip_whitespace (p); - - if (wb_ok && *p == '!') - { - if (reg == REG_PC) - { - inst.error = _("pc may not be used with write-back"); - return FAIL; - } - - p++; - write_back = WRITE_BACK; - } - } - } - else - { - if (my_get_expression (&inst.reloc.exp, &p)) - return FAIL; - - inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM; - inst.reloc.exp.X_add_number -= 8; /* PC rel adjust. */ - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = PRE_INDEX; - } - - inst.instruction |= write_back | pre_inc; - *str = p; - return SUCCESS; -} - -static int -cp_byte_address_offset (str) - char ** str; -{ - int offset; - - skip_whitespace (* str); - - if (! is_immediate_prefix (**str)) - { - inst.error = _("immediate expression expected"); - return FAIL; - } - - (*str)++; - - if (my_get_expression (& inst.reloc.exp, str)) - return FAIL; - - if (inst.reloc.exp.X_op == O_constant) - { - offset = inst.reloc.exp.X_add_number; - - if (offset > 255 || offset < -255) - { - inst.error = _("offset too large"); - return FAIL; - } - - if (offset >= 0) - inst.instruction |= INDEX_UP; - else - offset = -offset; - - inst.instruction |= offset; - } - else - inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM_S2; - - return SUCCESS; -} - -static int -cp_byte_address_required_here (str) - char ** str; -{ - char * p = * str; - int pre_inc = 0; - int write_back = 0; - - if (*p == '[') - { - int reg; - - p++; - skip_whitespace (p); - - if ((reg = reg_required_here (& p, 16)) == FAIL) - return FAIL; - - skip_whitespace (p); - - if (*p == ']') - { - p++; - - if (skip_past_comma (& p) == SUCCESS) - { - /* [Rn], #expr */ - write_back = WRITE_BACK; - - if (reg == REG_PC) - { - inst.error = _("pc may not be used in post-increment"); - return FAIL; - } - - if (cp_byte_address_offset (& p) == FAIL) - return FAIL; - } - else - pre_inc = PRE_INDEX | INDEX_UP; - } - else - { - /* '['Rn, #expr']'[!] */ - - if (skip_past_comma (& p) == FAIL) - { - inst.error = _("pre-indexed expression expected"); - return FAIL; - } - - pre_inc = PRE_INDEX; - - if (cp_byte_address_offset (& p) == FAIL) - return FAIL; - - skip_whitespace (p); - - if (*p++ != ']') - { - inst.error = _("missing ]"); - return FAIL; - } - - skip_whitespace (p); - - if (*p == '!') - { - if (reg == REG_PC) - { - inst.error = _("pc may not be used with write-back"); - return FAIL; - } - - p++; - write_back = WRITE_BACK; - } - } - } - else - { - if (my_get_expression (&inst.reloc.exp, &p)) - return FAIL; - - inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM_S2; - inst.reloc.exp.X_add_number -= 8; /* PC rel adjust. */ - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = PRE_INDEX; - } - - inst.instruction |= write_back | pre_inc; - *str = p; - return SUCCESS; -} - -static void -do_empty (str) - char * str; -{ - /* Do nothing really. */ - end_of_line (str); -} - -static void -do_mrs (str) - char *str; -{ - int skip = 0; - - /* Only one syntax. */ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL) - { - inst.error = _("comma expected after register name"); - return; - } - - skip_whitespace (str); - - if ( strcmp (str, "CPSR") == 0 - || strcmp (str, "SPSR") == 0 - /* Lower case versions for backwards compatibility. */ - || strcmp (str, "cpsr") == 0 - || strcmp (str, "spsr") == 0) - skip = 4; - - /* This is for backwards compatibility with older toolchains. */ - else if ( strcmp (str, "cpsr_all") == 0 - || strcmp (str, "spsr_all") == 0) - skip = 8; - else - { - inst.error = _("CPSR or SPSR expected"); - return; - } - - if (* str == 's' || * str == 'S') - inst.instruction |= SPSR_BIT; - str += skip; - - end_of_line (str); -} - -/* Two possible forms: - "{C|S}PSR_, Rm", - "{C|S}PSR_f, #expression". */ - -static void -do_msr (str) - char * str; -{ - skip_whitespace (str); - - if (psr_required_here (& str) == FAIL) - return; - - if (skip_past_comma (& str) == FAIL) - { - inst.error = _("comma missing after psr flags"); - return; - } - - skip_whitespace (str); - - if (reg_required_here (& str, 0) != FAIL) - { - inst.error = NULL; - end_of_line (str); - return; - } - - if (! is_immediate_prefix (* str)) - { - inst.error = - _("only a register or immediate value can follow a psr flag"); - return; - } - - str ++; - inst.error = NULL; - - if (my_get_expression (& inst.reloc.exp, & str)) - { - inst.error = - _("only a register or immediate value can follow a psr flag"); - return; - } - -#if 0 /* The first edition of the ARM architecture manual stated that - writing anything other than the flags with an immediate operation - had UNPREDICTABLE effects. This constraint was removed in the - second edition of the specification. */ - if ((cpu_variant & ARM_EXT_V5) != ARM_EXT_V5 - && inst.instruction & ((PSR_c | PSR_x | PSR_s) << PSR_SHIFT)) - { - inst.error = _("immediate value cannot be used to set this field"); - return; - } -#endif - - inst.instruction |= INST_IMMEDIATE; - - if (inst.reloc.exp.X_add_symbol) - { - inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; - inst.reloc.pc_rel = 0; - } - else - { - unsigned value = validate_immediate (inst.reloc.exp.X_add_number); - - if (value == (unsigned) FAIL) - { - inst.error = _("invalid constant"); - return; - } - - inst.instruction |= value; - } - - inst.error = NULL; - end_of_line (str); -} - -/* Long Multiply Parser - UMULL RdLo, RdHi, Rm, Rs - SMULL RdLo, RdHi, Rm, Rs - UMLAL RdLo, RdHi, Rm, Rs - SMLAL RdLo, RdHi, Rm, Rs. */ - -static void -do_mull (str) - char * str; -{ - int rdlo, rdhi, rm, rs; - - /* Only one format "rdlo, rdhi, rm, rs". */ - skip_whitespace (str); - - if ((rdlo = reg_required_here (&str, 12)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || (rdhi = reg_required_here (&str, 16)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - /* rdhi, rdlo and rm must all be different. */ - if (rdlo == rdhi || rdlo == rm || rdhi == rm) - as_tsktsk (_("rdhi, rdlo and rm must all be different")); - - if (skip_past_comma (&str) == FAIL - || (rs = reg_required_here (&str, 8)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rdhi == REG_PC || rdhi == REG_PC || rdhi == REG_PC || rdhi == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); -} - -static void -do_mul (str) - char * str; -{ - int rd, rm; - - /* Only one format "rd, rm, rs". */ - skip_whitespace (str); - - if ((rd = reg_required_here (&str, 16)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rd == REG_PC) - { - inst.error = BAD_PC; - return; - } - - if (skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - if (rm == rd) - as_tsktsk (_("rd and rm should be different in mul")); - - if (skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 8)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); -} - -static void -do_mla (str) - char * str; -{ - int rd, rm; - - /* Only one format "rd, rm, rs, rn". */ - skip_whitespace (str); - - if ((rd = reg_required_here (&str, 16)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rd == REG_PC) - { - inst.error = BAD_PC; - return; - } - - if (skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - if (rm == rd) - as_tsktsk (_("rd and rm should be different in mla")); - - if (skip_past_comma (&str) == FAIL - || (rd = reg_required_here (&str, 8)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 12)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rd == REG_PC || rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); -} - -/* Expects *str -> the characters "acc0", possibly with leading blanks. - Advances *str to the next non-alphanumeric. - Returns 0, or else FAIL (in which case sets inst.error). - - (In a future XScale, there may be accumulators other than zero. - At that time this routine and its callers can be upgraded to suit.) */ - -static int -accum0_required_here (str) - char ** str; -{ - static char buff [128]; /* Note the address is taken. Hence, static. */ - char * p = * str; - char c; - int result = 0; /* The accum number. */ - - skip_whitespace (p); - - *str = p; /* Advance caller's string pointer too. */ - c = *p++; - while (ISALNUM (c)) - c = *p++; - - *--p = 0; /* Aap nul into input buffer at non-alnum. */ - - if (! ( streq (*str, "acc0") || streq (*str, "ACC0"))) - { - sprintf (buff, _("acc0 expected, not '%.100s'"), *str); - inst.error = buff; - result = FAIL; - } - - *p = c; /* Unzap. */ - *str = p; /* Caller's string pointer to after match. */ - return result; -} - -/* Expects **str -> after a comma. May be leading blanks. - Advances *str, recognizing a load mode, and setting inst.instruction. - Returns rn, or else FAIL (in which case may set inst.error - and not advance str) - - Note: doesn't know Rd, so no err checks that require such knowledge. */ - -static int -ld_mode_required_here (string) - char ** string; -{ - char * str = * string; - int rn; - int pre_inc = 0; - - skip_whitespace (str); - - if (* str == '[') - { - str++; - - skip_whitespace (str); - - if ((rn = reg_required_here (& str, 16)) == FAIL) - return FAIL; - - skip_whitespace (str); - - if (* str == ']') - { - str ++; - - if (skip_past_comma (& str) == SUCCESS) - { - /* [Rn],... (post inc) */ - if (ldst_extend_v4 (&str) == FAIL) - return FAIL; - } - else /* [Rn] */ - { - skip_whitespace (str); - - if (* str == '!') - { - str ++; - inst.instruction |= WRITE_BACK; - } - - inst.instruction |= INDEX_UP | HWOFFSET_IMM; - pre_inc = 1; - } - } - else /* [Rn,...] */ - { - if (skip_past_comma (& str) == FAIL) - { - inst.error = _("pre-indexed expression expected"); - return FAIL; - } - - pre_inc = 1; - - if (ldst_extend_v4 (&str) == FAIL) - return FAIL; - - skip_whitespace (str); - - if (* str ++ != ']') - { - inst.error = _("missing ]"); - return FAIL; - } - - skip_whitespace (str); - - if (* str == '!') - { - str ++; - inst.instruction |= WRITE_BACK; - } - } - } - else if (* str == '=') /* ldr's "r,=label" syntax */ - /* We should never reach here, because = is - caught gas/read.c read_a_source_file() as a .set operation. */ - return FAIL; - else /* PC +- 8 bit immediate offset. */ - { - if (my_get_expression (& inst.reloc.exp, & str)) - return FAIL; - - inst.instruction |= HWOFFSET_IMM; /* The I bit. */ - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; - inst.reloc.exp.X_add_number -= 8; /* PC rel adjust. */ - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - - rn = REG_PC; - pre_inc = 1; - } - - inst.instruction |= (pre_inc ? PRE_INDEX : 0); - * string = str; - - return rn; -} - -/* ARM V5E (El Segundo) signed-multiply-accumulate (argument parse) - SMLAxy{cond} Rd,Rm,Rs,Rn - SMLAWy{cond} Rd,Rm,Rs,Rn - Error if any register is R15. */ - -static void -do_smla (str) - char * str; -{ - int rd, rm, rs, rn; - - skip_whitespace (str); - - if ((rd = reg_required_here (& str, 16)) == FAIL - || skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL - || skip_past_comma (& str) == FAIL - || (rs = reg_required_here (& str, 8)) == FAIL - || skip_past_comma (& str) == FAIL - || (rn = reg_required_here (& str, 12)) == FAIL) - inst.error = BAD_ARGS; - - else if (rd == REG_PC || rm == REG_PC || rs == REG_PC || rn == REG_PC) - inst.error = BAD_PC; - - else - end_of_line (str); -} - -/* ARM V5E (El Segundo) signed-multiply-accumulate-long (argument parse) - SMLALxy{cond} Rdlo,Rdhi,Rm,Rs - Error if any register is R15. - Warning if Rdlo == Rdhi. */ - -static void -do_smlal (str) - char * str; -{ - int rdlo, rdhi, rm, rs; - - skip_whitespace (str); - - if ((rdlo = reg_required_here (& str, 12)) == FAIL - || skip_past_comma (& str) == FAIL - || (rdhi = reg_required_here (& str, 16)) == FAIL - || skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL - || skip_past_comma (& str) == FAIL - || (rs = reg_required_here (& str, 8)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rdlo == REG_PC || rdhi == REG_PC || rm == REG_PC || rs == REG_PC) - { - inst.error = BAD_PC; - return; - } - - if (rdlo == rdhi) - as_tsktsk (_("rdhi and rdlo must be different")); - - end_of_line (str); -} - -/* ARM V5E (El Segundo) signed-multiply (argument parse) - SMULxy{cond} Rd,Rm,Rs - Error if any register is R15. */ - -static void -do_smul (str) - char * str; -{ - int rd, rm, rs; - - skip_whitespace (str); - - if ((rd = reg_required_here (& str, 16)) == FAIL - || skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL - || skip_past_comma (& str) == FAIL - || (rs = reg_required_here (& str, 8)) == FAIL) - inst.error = BAD_ARGS; - - else if (rd == REG_PC || rm == REG_PC || rs == REG_PC) - inst.error = BAD_PC; - - else - end_of_line (str); -} - -/* ARM V5E (El Segundo) saturating-add/subtract (argument parse) - Q[D]{ADD,SUB}{cond} Rd,Rm,Rn - Error if any register is R15. */ - -static void -do_qadd (str) - char * str; -{ - int rd, rm, rn; - - skip_whitespace (str); - - if ((rd = reg_required_here (& str, 12)) == FAIL - || skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL - || skip_past_comma (& str) == FAIL - || (rn = reg_required_here (& str, 16)) == FAIL) - inst.error = BAD_ARGS; - - else if (rd == REG_PC || rm == REG_PC || rn == REG_PC) - inst.error = BAD_PC; - - else - end_of_line (str); -} - -/* ARM V5E (el Segundo) - MCRRcc , , , , . - MRRCcc , , , , . - - These are equivalent to the XScale instructions MAR and MRA, - respectively, when coproc == 0, opcode == 0, and CRm == 0. - - Result unpredicatable if Rd or Rn is R15. */ - -static void -do_co_reg2c (str) - char * str; -{ - int rd, rn; - - skip_whitespace (str); - - if (co_proc_number (& str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_opc_expr (& str, 4, 4) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || (rd = reg_required_here (& str, 12)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || (rn = reg_required_here (& str, 16)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - /* Unpredictable result if rd or rn is R15. */ - if (rd == REG_PC || rn == REG_PC) - as_tsktsk - (_("Warning: instruction unpredictable when using r15")); - - if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 0) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -/* ARM V5 count-leading-zeroes instruction (argument parse) - CLZ{} , - Condition defaults to COND_ALWAYS. - Error if Rd or Rm are R15. */ - -static void -do_clz (str) - char * str; -{ - int rd, rm; - - skip_whitespace (str); - - if (((rd = reg_required_here (& str, 12)) == FAIL) - || (skip_past_comma (& str) == FAIL) - || ((rm = reg_required_here (& str, 0)) == FAIL)) - inst.error = BAD_ARGS; - - else if (rd == REG_PC || rm == REG_PC ) - inst.error = BAD_PC; - - else - end_of_line (str); -} - -/* ARM V5 (argument parse) - LDC2{L} , , - STC2{L} , , - Instruction is not conditional, and has 0xf in the condition field. - Otherwise, it's the same as LDC/STC. */ - -static void -do_lstc2 (str) - char * str; -{ - skip_whitespace (str); - - if (co_proc_number (& str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - } - else if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - } - else if (skip_past_comma (& str) == FAIL - || cp_address_required_here (&str, CP_WB_OK) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - } - else - end_of_line (str); -} - -/* ARM V5 (argument parse) - CDP2 , , , , , - Instruction is not conditional, and has 0xf in the condition field. - Otherwise, it's the same as CDP. */ - -static void -do_cdp2 (str) - char * str; -{ - skip_whitespace (str); - - if (co_proc_number (& str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_opc_expr (& str, 20,4) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 16) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 0) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == SUCCESS) - { - if (cp_opc_expr (& str, 5, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - } - - end_of_line (str); -} - -/* ARM V5 (argument parse) - MCR2 , , , , , - MRC2 , , , , , - Instruction is not conditional, and has 0xf in the condition field. - Otherwise, it's the same as MCR/MRC. */ - -static void -do_co_reg2 (str) - char * str; -{ - skip_whitespace (str); - - if (co_proc_number (& str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_opc_expr (& str, 21, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || reg_required_here (& str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 16) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || cp_reg_required_here (& str, 0) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == SUCCESS) - { - if (cp_opc_expr (& str, 5, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - } - - end_of_line (str); -} - -/* ARM v5TEJ. Jump to Jazelle code. */ -static void -do_bxj (str) - char * str; -{ - int reg; - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - /* Note - it is not illegal to do a "bxj pc". Useless, but not illegal. */ - if (reg == REG_PC) - as_tsktsk (_("use of r15 in bxj is not really useful")); - - end_of_line (str); -} - -/* ARM V6 umaal (argument parse). */ - -static void -do_umaal (str) - char *str; -{ - - int rdlo, rdhi, rm, rs; - - skip_whitespace (str); - if ((rdlo = reg_required_here (& str, 12)) == FAIL - || skip_past_comma (& str) == FAIL - || (rdhi = reg_required_here (& str, 16)) == FAIL - || skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL - || skip_past_comma (& str) == FAIL - || (rs = reg_required_here (& str, 8)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rdlo == REG_PC || rdhi == REG_PC || rm == REG_PC || rs == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); -} - -/* ARM V6 strex (argument parse). */ - -static void -do_strex (str) - char *str; -{ - int rd, rm, rn; - - /* Parse Rd, Rm,. */ - skip_whitespace (str); - if ((rd = reg_required_here (& str, 12)) == FAIL - || skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL - || skip_past_comma (& str) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - if (rd == REG_PC || rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - if (rd == rm) - { - inst.error = _("Rd equal to Rm or Rn yields unpredictable results"); - return; - } - - /* Skip past '['. */ - if ((strlen (str) >= 1) - && strncmp (str, "[", 1) == 0) - str+=1; - skip_whitespace (str); - - /* Parse Rn. */ - if ((rn = reg_required_here (& str, 16)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - else if (rn == REG_PC) - { - inst.error = BAD_PC; - return; - } - if (rd == rn) - { - inst.error = _("Rd equal to Rm or Rn yields unpredictable results"); - return; - } - skip_whitespace (str); - - /* Skip past ']'. */ - if ((strlen (str) >= 1) - && strncmp (str, "]", 1) == 0) - str+=1; - - end_of_line (str); -} - -/* ARM V6 ssat (argument parse). */ - -static void -do_ssat (str) - char* str; -{ - do_sat (&str, /*bias=*/-1); - end_of_line (str); -} - -/* ARM V6 usat (argument parse). */ - -static void -do_usat (str) - char* str; -{ - do_sat (&str, /*bias=*/0); - end_of_line (str); -} - -static void -do_sat (str, bias) - char **str; - int bias; -{ - int rd, rm; - expressionS expr; - - skip_whitespace (*str); - - /* Parse , field. */ - if ((rd = reg_required_here (str, 12)) == FAIL - || skip_past_comma (str) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - if (rd == REG_PC) - { - inst.error = BAD_PC; - return; - } - - /* Parse #, field. */ - if (is_immediate_prefix (**str)) - (*str)++; - else - { - inst.error = _("immediate expression expected"); - return; - } - if (my_get_expression (&expr, str)) - { - inst.error = _("bad expression"); - return; - } - if (expr.X_op != O_constant) - { - inst.error = _("constant expression expected"); - return; - } - if (expr.X_add_number + bias < 0 - || expr.X_add_number + bias > 31) - { - inst.error = _("immediate value out of range"); - return; - } - inst.instruction |= (expr.X_add_number + bias) << 16; - if (skip_past_comma (str) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - /* Parse field. */ - if ((rm = reg_required_here (str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - if (rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - if (skip_past_comma (str) == SUCCESS) - decode_shift (str, SHIFT_LSL_OR_ASR_IMMEDIATE); -} - -/* ARM V6 ssat16 (argument parse). */ - -static void -do_ssat16 (str) - char *str; -{ - do_sat16 (&str, /*bias=*/-1); - end_of_line (str); -} - -static void -do_usat16 (str) - char *str; -{ - do_sat16 (&str, /*bias=*/0); - end_of_line (str); -} - -static void -do_sat16 (str, bias) - char **str; - int bias; -{ - int rd, rm; - expressionS expr; - - skip_whitespace (*str); - - /* Parse the field. */ - if ((rd = reg_required_here (str, 12)) == FAIL - || skip_past_comma (str) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - if (rd == REG_PC) - { - inst.error = BAD_PC; - return; - } - - /* Parse #, field. */ - if (is_immediate_prefix (**str)) - (*str)++; - else - { - inst.error = _("immediate expression expected"); - return; - } - if (my_get_expression (&expr, str)) - { - inst.error = _("bad expression"); - return; - } - if (expr.X_op != O_constant) - { - inst.error = _("constant expression expected"); - return; - } - if (expr.X_add_number + bias < 0 - || expr.X_add_number + bias > 15) - { - inst.error = _("immediate value out of range"); - return; - } - inst.instruction |= (expr.X_add_number + bias) << 16; - if (skip_past_comma (str) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - /* Parse field. */ - if ((rm = reg_required_here (str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - if (rm == REG_PC) - { - inst.error = BAD_PC; - return; - } -} - -/* ARM V6 srs (argument parse). */ - -static void -do_srs (str) - char* str; -{ - char *exclam; - skip_whitespace (str); - exclam = strchr (str, '!'); - if (exclam) - *exclam = '\0'; - do_cps_mode (&str); - if (exclam) - *exclam = '!'; - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - str++; - } - end_of_line (str); -} - -/* ARM V6 SMMUL (argument parse). */ - -static void -do_smmul (str) - char* str; -{ - int rd, rm, rs; - - skip_whitespace (str); - if ((rd = reg_required_here (&str, 16)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL - || skip_past_comma (&str) == FAIL - || (rs = reg_required_here (&str, 8)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rd == REG_PC - || rm == REG_PC - || rs == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); - -} - -/* ARM V6 SMLALD (argument parse). */ - -static void -do_smlald (str) - char* str; -{ - int rdlo, rdhi, rm, rs; - skip_whitespace (str); - if ((rdlo = reg_required_here (&str, 12)) == FAIL - || skip_past_comma (&str) == FAIL - || (rdhi = reg_required_here (&str, 16)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL - || skip_past_comma (&str) == FAIL - || (rs = reg_required_here (&str, 8)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rdlo == REG_PC - || rdhi == REG_PC - || rm == REG_PC - || rs == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); -} - -/* ARM V6 SMLAD (argument parse). Signed multiply accumulate dual. - smlad{x}{} Rd, Rm, Rs, Rn */ - -static void -do_smlad (str) - char *str; -{ - int rd, rm, rs, rn; - - skip_whitespace (str); - if ((rd = reg_required_here (&str, 16)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL - || skip_past_comma (&str) == FAIL - || (rs = reg_required_here (&str, 8)) == FAIL - || skip_past_comma (&str) == FAIL - || (rn = reg_required_here (&str, 12)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (rd == REG_PC - || rn == REG_PC - || rs == REG_PC - || rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - end_of_line (str); -} - -/* ARM V6 SETEND (argument parse). Sets the E bit in the CPSR while - preserving the other bits. - - setend , where is either - BE or LE. */ - -static void -do_setend (str) - char *str; -{ - if (do_endian_specifier (str)) - inst.instruction |= 0x200; -} - -/* Returns true if the endian-specifier indicates big-endianness. */ - -static int -do_endian_specifier (str) - char *str; -{ - int big_endian = 0; - - skip_whitespace (str); - if (strlen (str) < 2) - inst.error = _("missing endian specifier"); - else if (strncasecmp (str, "BE", 2) == 0) - { - str += 2; - big_endian = 1; - } - else if (strncasecmp (str, "LE", 2) == 0) - str += 2; - else - inst.error = _("valid endian specifiers are be or le"); - - end_of_line (str); - - return big_endian; -} - -/* ARM V6 SXTH. - - SXTH {} , {, } - Condition defaults to COND_ALWAYS. - Error if any register uses R15. */ - -static void -do_sxth (str) - char *str; -{ - int rd, rm; - expressionS expr; - int rotation_clear_mask = 0xfffff3ff; - int rotation_eight_mask = 0x00000400; - int rotation_sixteen_mask = 0x00000800; - int rotation_twenty_four_mask = 0x00000c00; - - skip_whitespace (str); - if ((rd = reg_required_here (&str, 12)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - else if (rd == REG_PC || rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - /* Zero out the rotation field. */ - inst.instruction &= rotation_clear_mask; - - /* Check for lack of optional rotation field. */ - if (skip_past_comma (&str) == FAIL) - { - end_of_line (str); - return; - } - - /* Move past 'ROR'. */ - skip_whitespace (str); - if (strncasecmp (str, "ROR", 3) == 0) - str+=3; - else - { - inst.error = _("missing rotation field after comma"); - return; - } - - /* Get the immediate constant. */ - skip_whitespace (str); - if (is_immediate_prefix (* str)) - str++; - else - { - inst.error = _("immediate expression expected"); - return; - } - - if (my_get_expression (&expr, &str)) - { - inst.error = _("bad expression"); - return; - } - - if (expr.X_op != O_constant) - { - inst.error = _("constant expression expected"); - return; - } - - switch (expr.X_add_number) - { - case 0: - /* Rotation field has already been zeroed. */ - break; - case 8: - inst.instruction |= rotation_eight_mask; - break; - - case 16: - inst.instruction |= rotation_sixteen_mask; - break; - - case 24: - inst.instruction |= rotation_twenty_four_mask; - break; - - default: - inst.error = _("rotation can be 8, 16, 24 or 0 when field is ommited"); - break; - } - - end_of_line (str); - -} - -/* ARM V6 SXTAH extracts a 16-bit value from a register, sign - extends it to 32-bits, and adds the result to a value in another - register. You can specify a rotation by 0, 8, 16, or 24 bits - before extracting the 16-bit value. - SXTAH{} , , {, } - Condition defaults to COND_ALWAYS. - Error if any register uses R15. */ - -static void -do_sxtah (str) - char *str; -{ - int rd, rn, rm; - expressionS expr; - int rotation_clear_mask = 0xfffff3ff; - int rotation_eight_mask = 0x00000400; - int rotation_sixteen_mask = 0x00000800; - int rotation_twenty_four_mask = 0x00000c00; - - skip_whitespace (str); - if ((rd = reg_required_here (&str, 12)) == FAIL - || skip_past_comma (&str) == FAIL - || (rn = reg_required_here (&str, 16)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - else if (rd == REG_PC || rn == REG_PC || rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - /* Zero out the rotation field. */ - inst.instruction &= rotation_clear_mask; - - /* Check for lack of optional rotation field. */ - if (skip_past_comma (&str) == FAIL) - { - end_of_line (str); - return; - } - - /* Move past 'ROR'. */ - skip_whitespace (str); - if (strncasecmp (str, "ROR", 3) == 0) - str+=3; - else - { - inst.error = _("missing rotation field after comma"); - return; - } - - /* Get the immediate constant. */ - skip_whitespace (str); - if (is_immediate_prefix (* str)) - str++; - else - { - inst.error = _("immediate expression expected"); - return; - } - - if (my_get_expression (&expr, &str)) - { - inst.error = _("bad expression"); - return; - } - - if (expr.X_op != O_constant) - { - inst.error = _("constant expression expected"); - return; - } - - switch (expr.X_add_number) - { - case 0: - /* Rotation field has already been zeroed. */ - break; - - case 8: - inst.instruction |= rotation_eight_mask; - break; - - case 16: - inst.instruction |= rotation_sixteen_mask; - break; - - case 24: - inst.instruction |= rotation_twenty_four_mask; - break; - - default: - inst.error = _("rotation can be 8, 16, 24 or 0 when field is ommited"); - break; - } - - end_of_line (str); - -} - - -/* ARM V6 RFE (Return from Exception) loads the PC and CPSR from the - word at the specified address and the following word - respectively. - Unconditionally executed. - Error if Rn is R15. -*/ - -static void -do_rfe (str) - char *str; -{ - int rn; - - skip_whitespace (str); - - if ((rn = reg_required_here (&str, 16)) == FAIL) - return; - - if (rn == REG_PC) - { - inst.error = BAD_PC; - return; - } - - skip_whitespace (str); - - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - str++; - } - end_of_line (str); -} - -/* ARM V6 REV (Byte Reverse Word) reverses the byte order in a 32-bit - register (argument parse). - REV{} Rd, Rm. - Condition defaults to COND_ALWAYS. - Error if Rd or Rm are R15. */ - -static void -do_rev (str) - char* str; -{ - int rd, rm; - - skip_whitespace (str); - - if ((rd = reg_required_here (&str, 12)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - inst.error = BAD_ARGS; - - else if (rd == REG_PC || rm == REG_PC) - inst.error = BAD_PC; - - else - end_of_line (str); -} - -/* ARM V6 Perform Two Sixteen Bit Integer Additions. (argument parse). - QADD16{} , , - Condition defaults to COND_ALWAYS. - Error if Rd, Rn or Rm are R15. */ - -static void -do_qadd16 (str) - char* str; -{ - int rd, rm, rn; - - skip_whitespace (str); - - if ((rd = reg_required_here (&str, 12)) == FAIL - || skip_past_comma (&str) == FAIL - || (rn = reg_required_here (&str, 16)) == FAIL - || skip_past_comma (&str) == FAIL - || (rm = reg_required_here (&str, 0)) == FAIL) - inst.error = BAD_ARGS; - - else if (rd == REG_PC || rm == REG_PC || rn == REG_PC) - inst.error = BAD_PC; - - else - end_of_line (str); -} - -/* ARM V6 Pack Halfword Bottom Top instruction (argument parse). - PKHBT {} , , {, LSL #} - Condition defaults to COND_ALWAYS. - Error if Rd, Rn or Rm are R15. */ - -static void -do_pkhbt (str) - char* str; -{ - do_pkh_core (str, SHIFT_LSL_IMMEDIATE); -} - -/* ARM V6 PKHTB (Argument Parse). */ - -static void -do_pkhtb (str) - char* str; -{ - do_pkh_core (str, SHIFT_ASR_IMMEDIATE); -} - -static void -do_pkh_core (str, shift) - char* str; - int shift; -{ - int rd, rn, rm; - - skip_whitespace (str); - if (((rd = reg_required_here (&str, 12)) == FAIL) - || (skip_past_comma (&str) == FAIL) - || ((rn = reg_required_here (&str, 16)) == FAIL) - || (skip_past_comma (&str) == FAIL) - || ((rm = reg_required_here (&str, 0)) == FAIL)) - { - inst.error = BAD_ARGS; - return; - } - - else if (rd == REG_PC || rn == REG_PC || rm == REG_PC) - { - inst.error = BAD_PC; - return; - } - - /* Check for optional shift immediate constant. */ - if (skip_past_comma (&str) == FAIL) - { - if (shift == SHIFT_ASR_IMMEDIATE) - { - /* If the shift specifier is ommited, turn the instruction - into pkhbt rd, rm, rn. First, switch the instruction - code, and clear the rn and rm fields. */ - inst.instruction &= 0xfff0f010; - /* Now, re-encode the registers. */ - inst.instruction |= (rm << 16) | rn; - } - return; - } - - decode_shift (&str, shift); -} - -/* ARM V6 Load Register Exclusive instruction (argument parse). - LDREX{} ] - Condition defaults to COND_ALWAYS. - Error if Rd or Rn are R15. - See ARMARMv6 A4.1.27: LDREX. */ - - -static void -do_ldrex (str) - char * str; -{ - int rd, rn; - - skip_whitespace (str); - - /* Parse Rd. */ - if (((rd = reg_required_here (&str, 12)) == FAIL) - || (skip_past_comma (&str) == FAIL)) - { - inst.error = BAD_ARGS; - return; - } - else if (rd == REG_PC) - { - inst.error = BAD_PC; - return; - } - skip_whitespace (str); - - /* Skip past '['. */ - if ((strlen (str) >= 1) - &&strncmp (str, "[", 1) == 0) - str+=1; - skip_whitespace (str); - - /* Parse Rn. */ - if ((rn = reg_required_here (&str, 16)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - else if (rn == REG_PC) - { - inst.error = BAD_PC; - return; - } - skip_whitespace (str); - - /* Skip past ']'. */ - if ((strlen (str) >= 1) - && strncmp (str, "]", 1) == 0) - str+=1; - - end_of_line (str); -} - -/* ARM V6 change processor state instruction (argument parse) - CPS, CPSIE, CSPID . */ - -static void -do_cps (str) - char * str; -{ - do_cps_mode (&str); - end_of_line (str); -} - -static void -do_cpsi (str) - char * str; -{ - do_cps_flags (&str, /*thumb_p=*/0); - - if (skip_past_comma (&str) == SUCCESS) - { - skip_whitespace (str); - do_cps_mode (&str); - } - end_of_line (str); -} - -static void -do_cps_mode (str) - char **str; -{ - expressionS expr; - - skip_whitespace (*str); - - if (! is_immediate_prefix (**str)) - { - inst.error = _("immediate expression expected"); - return; - } - - (*str)++; /* Strip off the immediate signifier. */ - if (my_get_expression (&expr, str)) - { - inst.error = _("bad expression"); - return; - } - - if (expr.X_op != O_constant) - { - inst.error = _("constant expression expected"); - return; - } - - /* The mode is a 5 bit field. Valid values are 0-31. */ - if (((unsigned) expr.X_add_number) > 31 - || (inst.reloc.exp.X_add_number) < 0) - { - inst.error = _("invalid constant"); - return; - } - - inst.instruction |= expr.X_add_number; -} - -static void -do_cps_flags (str, thumb_p) - char **str; - int thumb_p; -{ - struct cps_flag { - char character; - unsigned long arm_value; - unsigned long thumb_value; - }; - static struct cps_flag flag_table[] = { - {'a', 0x100, 0x4 }, - {'i', 0x080, 0x2 }, - {'f', 0x040, 0x1 } - }; - - int saw_a_flag = 0; - - skip_whitespace (*str); - - /* Get the a, f and i flags. */ - while (**str && **str != ',') - { - struct cps_flag *p; - struct cps_flag *q = flag_table + sizeof (flag_table)/sizeof (*p); - for (p = flag_table; p < q; ++p) - if (strncasecmp (*str, &p->character, 1) == 0) - { - inst.instruction |= (thumb_p ? p->thumb_value : p->arm_value); - saw_a_flag = 1; - break; - } - if (p == q) - { - inst.error = _("unrecognized flag"); - return; - } - (*str)++; - } - if (!saw_a_flag) - inst.error = _("no 'a', 'i', or 'f' flags for 'cps'"); -} - -/* THUMB V5 breakpoint instruction (argument parse) - BKPT . */ - -static void -do_t_bkpt (str) - char * str; -{ - expressionS expr; - unsigned long number; - - skip_whitespace (str); - - /* Allow optional leading '#'. */ - if (is_immediate_prefix (*str)) - str ++; - - memset (& expr, '\0', sizeof (expr)); - if (my_get_expression (& expr, & str) - || (expr.X_op != O_constant - /* As a convenience we allow 'bkpt' without an operand. */ - && expr.X_op != O_absent)) - { - inst.error = _("bad expression"); - return; - } - - number = expr.X_add_number; - - /* Check it fits an 8 bit unsigned. */ - if (number != (number & 0xff)) - { - inst.error = _("immediate value out of range"); - return; - } - - inst.instruction |= number; - - end_of_line (str); -} - -/* ARM V5 branch-link-exchange (argument parse) for BLX(1) only. - Expects inst.instruction is set for BLX(1). - Note: this is cloned from do_branch, and the reloc changed to be a - new one that can cope with setting one extra bit (the H bit). */ - -static void -do_branch25 (str) - char * str; -{ - if (my_get_expression (& inst.reloc.exp, & str)) - return; - -#ifdef OBJ_ELF - { - char * save_in; - - /* ScottB: February 5, 1998 */ - /* Check to see of PLT32 reloc required for the instruction. */ - - /* arm_parse_reloc() works on input_line_pointer. - We actually want to parse the operands to the branch instruction - passed in 'str'. Save the input pointer and restore it later. */ - save_in = input_line_pointer; - input_line_pointer = str; - - if (inst.reloc.exp.X_op == O_symbol - && *str == '(' - && arm_parse_reloc () == BFD_RELOC_ARM_PLT32) - { - inst.reloc.type = BFD_RELOC_ARM_PLT32; - inst.reloc.pc_rel = 0; - /* Modify str to point to after parsed operands, otherwise - end_of_line() will complain about the (PLT) left in str. */ - str = input_line_pointer; - } - else - { - inst.reloc.type = BFD_RELOC_ARM_PCREL_BLX; - inst.reloc.pc_rel = 1; - } - - input_line_pointer = save_in; - } -#else - inst.reloc.type = BFD_RELOC_ARM_PCREL_BLX; - inst.reloc.pc_rel = 1; -#endif /* OBJ_ELF */ - - end_of_line (str); -} - -/* ARM V5 branch-link-exchange instruction (argument parse) - BLX ie BLX(1) - BLX{} ie BLX(2) - Unfortunately, there are two different opcodes for this mnemonic. - So, the insns[].value is not used, and the code here zaps values - into inst.instruction. - Also, the can be 25 bits, hence has its own reloc. */ - -static void -do_blx (str) - char * str; -{ - char * mystr = str; - int rm; - - skip_whitespace (mystr); - rm = reg_required_here (& mystr, 0); - - /* The above may set inst.error. Ignore his opinion. */ - inst.error = 0; - - if (rm != FAIL) - { - /* Arg is a register. - Use the condition code our caller put in inst.instruction. - Pass ourselves off as a BX with a funny opcode. */ - inst.instruction |= 0x012fff30; - do_bx (str); - } - else - { - /* This must be is BLX , no condition allowed. */ - if (inst.instruction != COND_ALWAYS) - { - inst.error = BAD_COND; - return; - } - - inst.instruction = 0xfafffffe; - - /* Process like a B/BL, but with a different reloc. - Note that B/BL expecte fffffe, not 0, offset in the opcode table. */ - do_branch25 (str); - } -} - -/* ARM V5 Thumb BLX (argument parse) - BLX which is BLX(1) - BLX which is BLX(2) - Unfortunately, there are two different opcodes for this mnemonic. - So, the tinsns[].value is not used, and the code here zaps values - into inst.instruction. */ - -static void -do_t_blx (str) - char * str; -{ - char * mystr = str; - int rm; - - skip_whitespace (mystr); - inst.instruction = 0x4780; - - /* Note that this call is to the ARM register recognizer. BLX(2) - uses the ARM register space, not the Thumb one, so a call to - thumb_reg() would be wrong. */ - rm = reg_required_here (& mystr, 3); - inst.error = 0; - - if (rm != FAIL) - { - /* It's BLX(2). The .instruction was zapped with rm & is final. */ - inst.size = 2; - } - else - { - /* No ARM register. This must be BLX(1). Change the .instruction. */ - inst.instruction = 0xf7ffeffe; - inst.size = 4; - - if (my_get_expression (& inst.reloc.exp, & mystr)) - return; - - inst.reloc.type = BFD_RELOC_THUMB_PCREL_BLX; - inst.reloc.pc_rel = 1; - } - - end_of_line (mystr); -} - -/* ARM V5 breakpoint instruction (argument parse) - BKPT <16 bit unsigned immediate> - Instruction is not conditional. - The bit pattern given in insns[] has the COND_ALWAYS condition, - and it is an error if the caller tried to override that. */ - -static void -do_bkpt (str) - char * str; -{ - expressionS expr; - unsigned long number; - - skip_whitespace (str); - - /* Allow optional leading '#'. */ - if (is_immediate_prefix (* str)) - str++; - - memset (& expr, '\0', sizeof (expr)); - - if (my_get_expression (& expr, & str) - || (expr.X_op != O_constant - /* As a convenience we allow 'bkpt' without an operand. */ - && expr.X_op != O_absent)) - { - inst.error = _("bad expression"); - return; - } - - number = expr.X_add_number; - - /* Check it fits a 16 bit unsigned. */ - if (number != (number & 0xffff)) - { - inst.error = _("immediate value out of range"); - return; - } - - /* Top 12 of 16 bits to bits 19:8. */ - inst.instruction |= (number & 0xfff0) << 4; - - /* Bottom 4 of 16 bits to bits 3:0. */ - inst.instruction |= number & 0xf; - - end_of_line (str); -} - -/* THUMB CPS instruction (argument parse). */ - -static void -do_t_cps (str) - char *str; -{ - do_cps_flags (&str, /*thumb_p=*/1); - end_of_line (str); -} - -/* THUMB CPY instruction (argument parse). */ - -static void -do_t_cpy (str) - char *str; -{ - thumb_mov_compare (str, THUMB_CPY); -} - -/* THUMB SETEND instruction (argument parse). */ - -static void -do_t_setend (str) - char *str; -{ - if (do_endian_specifier (str)) - inst.instruction |= 0x8; -} - -static unsigned long check_iwmmxt_insn PARAMS ((char *, enum iwmmxt_insn_type, int)); - -/* Parse INSN_TYPE insn STR having a possible IMMEDIATE_SIZE immediate. */ - -static unsigned long -check_iwmmxt_insn (str, insn_type, immediate_size) - char * str; - enum iwmmxt_insn_type insn_type; - int immediate_size; -{ - int reg = 0; - const char * inst_error; - expressionS expr; - unsigned long number; - - inst_error = inst.error; - if (!inst.error) - inst.error = BAD_ARGS; - skip_whitespace (str); - - switch (insn_type) - { - case check_rd: - if ((reg = reg_required_here (&str, 12)) == FAIL) - return FAIL; - break; - - case check_wr: - if ((wreg_required_here (&str, 0, IWMMXT_REG_WR)) == FAIL) - return FAIL; - break; - - case check_wrwr: - if ((wreg_required_here (&str, 12, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL)) - return FAIL; - break; - - case check_wrwrwr: - if ((wreg_required_here (&str, 12, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 0, IWMMXT_REG_WR) == FAIL)) - return FAIL; - break; - - case check_wrwrwcg: - if ((wreg_required_here (&str, 12, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 0, IWMMXT_REG_WCG) == FAIL)) - return FAIL; - break; - - case check_tbcst: - if ((wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL)) - return FAIL; - break; - - case check_tmovmsk: - if ((reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL)) - return FAIL; - break; - - case check_tmia: - if ((wreg_required_here (&str, 5, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 0) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL)) - return FAIL; - break; - - case check_tmcrr: - if ((wreg_required_here (&str, 0, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL)) - return FAIL; - break; - - case check_tmrrc: - if ((reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 0, IWMMXT_REG_WR) == FAIL)) - return FAIL; - break; - - case check_tmcr: - if ((wreg_required_here (&str, 16, IWMMXT_REG_WC) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL)) - return FAIL; - break; - - case check_tmrc: - if ((reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WC) == FAIL)) - return FAIL; - break; - - case check_tinsr: - if ((wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL)) - return FAIL; - break; - - case check_textrc: - if ((reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL)) - return FAIL; - break; - - case check_waligni: - if ((wreg_required_here (&str, 12, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 0, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL)) - return FAIL; - break; - - case check_textrm: - if ((reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL)) - return FAIL; - break; - - case check_wshufh: - if ((wreg_required_here (&str, 12, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL - || wreg_required_here (&str, 16, IWMMXT_REG_WR) == FAIL - || skip_past_comma (&str) == FAIL)) - return FAIL; - break; - } - - if (immediate_size == 0) - { - end_of_line (str); - inst.error = inst_error; - return reg; - } - else - { - skip_whitespace (str); - - /* Allow optional leading '#'. */ - if (is_immediate_prefix (* str)) - str++; - - memset (& expr, '\0', sizeof (expr)); - - if (my_get_expression (& expr, & str) || (expr.X_op != O_constant)) - { - inst.error = _("bad or missing expression"); - return FAIL; - } - - number = expr.X_add_number; - - if (number != (number & immediate_size)) - { - inst.error = _("immediate value out of range"); - return FAIL; - } - end_of_line (str); - inst.error = inst_error; - return number; - } -} - -static void -do_iwmmxt_byte_addr (str) - char * str; -{ - int op = (inst.instruction & 0x300) >> 8; - int reg; - - inst.instruction &= ~0x300; - inst.instruction |= (op & 1) << 22 | (op & 2) << 7; - - skip_whitespace (str); - - if ((reg = wreg_required_here (&str, 12, IWMMXT_REG_WR_OR_WC)) == FAIL - || skip_past_comma (& str) == FAIL - || cp_byte_address_required_here (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - } - else - end_of_line (str); - - if (wc_register (reg)) - { - as_bad (_("non-word size not supported with control register")); - inst.instruction |= 0xf0000100; - inst.instruction &= ~0x00400000; - } -} - -static void -do_iwmmxt_tandc (str) - char * str; -{ - int reg; - - reg = check_iwmmxt_insn (str, check_rd, 0); - - if (reg != REG_PC && !inst.error) - inst.error = _("only r15 allowed here"); -} - -static void -do_iwmmxt_tbcst (str) - char * str; -{ - check_iwmmxt_insn (str, check_tbcst, 0); -} - -static void -do_iwmmxt_textrc (str) - char * str; -{ - unsigned long number; - - if ((number = check_iwmmxt_insn (str, check_textrc, 7)) == (unsigned long) FAIL) - return; - - inst.instruction |= number & 0x7; -} - -static void -do_iwmmxt_textrm (str) - char * str; -{ - unsigned long number; - - if ((number = check_iwmmxt_insn (str, check_textrm, 7)) == (unsigned long) FAIL) - return; - - inst.instruction |= number & 0x7; -} - -static void -do_iwmmxt_tinsr (str) - char * str; -{ - unsigned long number; - - if ((number = check_iwmmxt_insn (str, check_tinsr, 7)) == (unsigned long) FAIL) - return; - - inst.instruction |= number & 0x7; -} - -static void -do_iwmmxt_tmcr (str) - char * str; -{ - check_iwmmxt_insn (str, check_tmcr, 0); -} - -static void -do_iwmmxt_tmcrr (str) - char * str; -{ - check_iwmmxt_insn (str, check_tmcrr, 0); -} - -static void -do_iwmmxt_tmia (str) - char * str; -{ - check_iwmmxt_insn (str, check_tmia, 0); -} - -static void -do_iwmmxt_tmovmsk (str) - char * str; -{ - check_iwmmxt_insn (str, check_tmovmsk, 0); -} - -static void -do_iwmmxt_tmrc (str) - char * str; -{ - check_iwmmxt_insn (str, check_tmrc, 0); -} - -static void -do_iwmmxt_tmrrc (str) - char * str; -{ - check_iwmmxt_insn (str, check_tmrrc, 0); -} - -static void -do_iwmmxt_torc (str) - char * str; -{ - check_iwmmxt_insn (str, check_rd, 0); -} - -static void -do_iwmmxt_waligni (str) - char * str; -{ - unsigned long number; - - if ((number = check_iwmmxt_insn (str, check_waligni, 7)) == (unsigned long) FAIL) - return; - - inst.instruction |= ((number & 0x7) << 20); -} - -static void -do_iwmmxt_wmov (str) - char * str; -{ - if (check_iwmmxt_insn (str, check_wrwr, 0) == (unsigned long) FAIL) - return; - - inst.instruction |= ((inst.instruction >> 16) & 0xf); -} - -static void -do_iwmmxt_word_addr (str) - char * str; -{ - int op = (inst.instruction & 0x300) >> 8; - int reg; - - inst.instruction &= ~0x300; - inst.instruction |= (op & 1) << 22 | (op & 2) << 7; - - skip_whitespace (str); - - if ((reg = wreg_required_here (&str, 12, IWMMXT_REG_WR_OR_WC)) == FAIL - || skip_past_comma (& str) == FAIL - || cp_address_required_here (& str, CP_WB_OK) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - } - else - end_of_line (str); - - if (wc_register (reg)) - { - if ((inst.instruction & COND_MASK) != COND_ALWAYS) - as_bad (_("conditional execution not supported with control register")); - if (op != 2) - as_bad (_("non-word size not supported with control register")); - inst.instruction |= 0xf0000100; - inst.instruction &= ~0x00400000; - } -} - -static void -do_iwmmxt_wrwr (str) - char * str; -{ - check_iwmmxt_insn (str, check_wrwr, 0); -} - -static void -do_iwmmxt_wrwrwcg (str) - char * str; -{ - check_iwmmxt_insn (str, check_wrwrwcg, 0); -} - -static void -do_iwmmxt_wrwrwr (str) - char * str; -{ - check_iwmmxt_insn (str, check_wrwrwr, 0); -} - -static void -do_iwmmxt_wshufh (str) - char * str; -{ - unsigned long number; - - if ((number = check_iwmmxt_insn (str, check_wshufh, 0xff)) == (unsigned long) FAIL) - return; - - inst.instruction |= ((number & 0xf0) << 16) | (number & 0xf); -} - -static void -do_iwmmxt_wzero (str) - char * str; -{ - if (check_iwmmxt_insn (str, check_wr, 0) == (unsigned long) FAIL) - return; - - inst.instruction |= ((inst.instruction & 0xf) << 12) | ((inst.instruction & 0xf) << 16); -} - -/* Xscale multiply-accumulate (argument parse) - MIAcc acc0,Rm,Rs - MIAPHcc acc0,Rm,Rs - MIAxycc acc0,Rm,Rs. */ - -static void -do_xsc_mia (str) - char * str; -{ - int rs; - int rm; - - if (accum0_required_here (& str) == FAIL) - inst.error = ERR_NO_ACCUM; - - else if (skip_past_comma (& str) == FAIL - || (rm = reg_required_here (& str, 0)) == FAIL) - inst.error = BAD_ARGS; - - else if (skip_past_comma (& str) == FAIL - || (rs = reg_required_here (& str, 12)) == FAIL) - inst.error = BAD_ARGS; - - /* inst.instruction has now been zapped with both rm and rs. */ - else if (rm == REG_PC || rs == REG_PC) - inst.error = BAD_PC; /* Undefined result if rm or rs is R15. */ - - else - end_of_line (str); -} - -/* Xscale move-accumulator-register (argument parse) - - MARcc acc0,RdLo,RdHi. */ - -static void -do_xsc_mar (str) - char * str; -{ - int rdlo, rdhi; - - if (accum0_required_here (& str) == FAIL) - inst.error = ERR_NO_ACCUM; - - else if (skip_past_comma (& str) == FAIL - || (rdlo = reg_required_here (& str, 12)) == FAIL) - inst.error = BAD_ARGS; - - else if (skip_past_comma (& str) == FAIL - || (rdhi = reg_required_here (& str, 16)) == FAIL) - inst.error = BAD_ARGS; - - /* inst.instruction has now been zapped with both rdlo and rdhi. */ - else if (rdlo == REG_PC || rdhi == REG_PC) - inst.error = BAD_PC; /* Undefined result if rdlo or rdhi is R15. */ - - else - end_of_line (str); -} - -/* Xscale move-register-accumulator (argument parse) - - MRAcc RdLo,RdHi,acc0. */ - -static void -do_xsc_mra (str) - char * str; -{ - int rdlo; - int rdhi; - - skip_whitespace (str); - - if ((rdlo = reg_required_here (& str, 12)) == FAIL) - inst.error = BAD_ARGS; - - else if (skip_past_comma (& str) == FAIL - || (rdhi = reg_required_here (& str, 16)) == FAIL) - inst.error = BAD_ARGS; - - else if (skip_past_comma (& str) == FAIL - || accum0_required_here (& str) == FAIL) - inst.error = ERR_NO_ACCUM; - - /* inst.instruction has now been zapped with both rdlo and rdhi. */ - else if (rdlo == rdhi) - inst.error = BAD_ARGS; /* Undefined result if 2 writes to same reg. */ - - else if (rdlo == REG_PC || rdhi == REG_PC) - inst.error = BAD_PC; /* Undefined result if rdlo or rdhi is R15. */ - else - end_of_line (str); -} - -/* ARMv5TE: Preload-Cache - - PLD - - Syntactically, like LDR with B=1, W=0, L=1. */ - -static void -do_pld (str) - char * str; -{ - int rd; - - skip_whitespace (str); - - if (* str != '[') - { - inst.error = _("'[' expected after PLD mnemonic"); - return; - } - - ++str; - skip_whitespace (str); - - if ((rd = reg_required_here (& str, 16)) == FAIL) - return; - - skip_whitespace (str); - - if (*str == ']') - { - /* [Rn], ... ? */ - ++str; - skip_whitespace (str); - - /* Post-indexed addressing is not allowed with PLD. */ - if (skip_past_comma (&str) == SUCCESS) - { - inst.error - = _("post-indexed expression used in preload instruction"); - return; - } - else if (*str == '!') /* [Rn]! */ - { - inst.error = _("writeback used in preload instruction"); - ++str; - } - else /* [Rn] */ - inst.instruction |= INDEX_UP | PRE_INDEX; - } - else /* [Rn, ...] */ - { - if (skip_past_comma (& str) == FAIL) - { - inst.error = _("pre-indexed expression expected"); - return; - } - - if (ldst_extend (&str) == FAIL) - return; - - skip_whitespace (str); - - if (* str != ']') - { - inst.error = _("missing ]"); - return; - } - - ++ str; - skip_whitespace (str); - - if (* str == '!') /* [Rn]! */ - { - inst.error = _("writeback used in preload instruction"); - ++ str; - } - - inst.instruction |= PRE_INDEX; - } - - end_of_line (str); -} - -/* ARMv5TE load-consecutive (argument parse) - Mode is like LDRH. - - LDRccD R, mode - STRccD R, mode. */ - -static void -do_ldrd (str) - char * str; -{ - int rd; - int rn; - - skip_whitespace (str); - - if ((rd = reg_required_here (& str, 12)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || (rn = ld_mode_required_here (& str)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - /* inst.instruction has now been zapped with Rd and the addressing mode. */ - if (rd & 1) /* Unpredictable result if Rd is odd. */ - { - inst.error = _("destination register must be even"); - return; - } - - if (rd == REG_LR) - { - inst.error = _("r14 not allowed here"); - return; - } - - if (((rd == rn) || (rd + 1 == rn)) - && ((inst.instruction & WRITE_BACK) - || (!(inst.instruction & PRE_INDEX)))) - as_warn (_("pre/post-indexing used when modified address register is destination")); - - /* For an index-register load, the index register must not overlap the - destination (even if not write-back). */ - if ((inst.instruction & V4_STR_BIT) == 0 - && (inst.instruction & HWOFFSET_IMM) == 0) - { - int rm = inst.instruction & 0x0000000f; - - if (rm == rd || (rm == rd + 1)) - as_warn (_("ldrd destination registers must not overlap index register")); - } - - end_of_line (str); -} - -/* Returns the index into fp_values of a floating point number, - or -1 if not in the table. */ - -static int -my_get_float_expression (str) - char ** str; -{ - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - char * save_in; - expressionS exp; - int i; - int j; - - memset (words, 0, MAX_LITTLENUMS * sizeof (LITTLENUM_TYPE)); - - /* Look for a raw floating point number. */ - if ((save_in = atof_ieee (*str, 'x', words)) != NULL - && is_end_of_line[(unsigned char) *save_in]) - { - for (i = 0; i < NUM_FLOAT_VALS; i++) - { - for (j = 0; j < MAX_LITTLENUMS; j++) - { - if (words[j] != fp_values[i][j]) - break; - } - - if (j == MAX_LITTLENUMS) - { - *str = save_in; - return i; - } - } - } - - /* Try and parse a more complex expression, this will probably fail - unless the code uses a floating point prefix (eg "0f"). */ - save_in = input_line_pointer; - input_line_pointer = *str; - if (expression (&exp) == absolute_section - && exp.X_op == O_big - && exp.X_add_number < 0) - { - /* FIXME: 5 = X_PRECISION, should be #define'd where we can use it. - Ditto for 15. */ - if (gen_to_words (words, 5, (long) 15) == 0) - { - for (i = 0; i < NUM_FLOAT_VALS; i++) - { - for (j = 0; j < MAX_LITTLENUMS; j++) - { - if (words[j] != fp_values[i][j]) - break; - } - - if (j == MAX_LITTLENUMS) - { - *str = input_line_pointer; - input_line_pointer = save_in; - return i; - } - } - } - } - - *str = input_line_pointer; - input_line_pointer = save_in; - return -1; -} - -/* Return TRUE if anything in the expression is a bignum. */ - -static int -walk_no_bignums (sp) - symbolS * sp; -{ - if (symbol_get_value_expression (sp)->X_op == O_big) - return 1; - - if (symbol_get_value_expression (sp)->X_add_symbol) - { - return (walk_no_bignums (symbol_get_value_expression (sp)->X_add_symbol) - || (symbol_get_value_expression (sp)->X_op_symbol - && walk_no_bignums (symbol_get_value_expression (sp)->X_op_symbol))); - } - - return 0; -} - -static int in_my_get_expression = 0; - -static int -my_get_expression (ep, str) - expressionS * ep; - char ** str; -{ - char * save_in; - segT seg; - - save_in = input_line_pointer; - input_line_pointer = *str; - in_my_get_expression = 1; - seg = expression (ep); - in_my_get_expression = 0; - - if (ep->X_op == O_illegal) - { - /* We found a bad expression in md_operand(). */ - *str = input_line_pointer; - input_line_pointer = save_in; - return 1; - } - -#ifdef OBJ_AOUT - if (seg != absolute_section - && seg != text_section - && seg != data_section - && seg != bss_section - && seg != undefined_section) - { - inst.error = _("bad_segment"); - *str = input_line_pointer; - input_line_pointer = save_in; - return 1; - } -#endif - - /* Get rid of any bignums now, so that we don't generate an error for which - we can't establish a line number later on. Big numbers are never valid - in instructions, which is where this routine is always called. */ - if (ep->X_op == O_big - || (ep->X_add_symbol - && (walk_no_bignums (ep->X_add_symbol) - || (ep->X_op_symbol - && walk_no_bignums (ep->X_op_symbol))))) - { - inst.error = _("invalid constant"); - *str = input_line_pointer; - input_line_pointer = save_in; - return 1; - } - - *str = input_line_pointer; - input_line_pointer = save_in; - return 0; -} - -/* We handle all bad expressions here, so that we can report the faulty - instruction in the error message. */ -void -md_operand (expr) - expressionS *expr; -{ - if (in_my_get_expression) - { - expr->X_op = O_illegal; - if (inst.error == NULL) - inst.error = _("bad expression"); - } -} - -/* KIND indicates what kind of shifts are accepted. */ - -static int -decode_shift (str, kind) - char ** str; - int kind; -{ - const struct asm_shift_name * shift; - char * p; - char c; - - skip_whitespace (* str); - - for (p = * str; ISALPHA (* p); p ++) - ; - - if (p == * str) - { - inst.error = _("shift expression expected"); - return FAIL; - } - - c = * p; - * p = '\0'; - shift = (const struct asm_shift_name *) hash_find (arm_shift_hsh, * str); - * p = c; - - if (shift == NULL) - { - inst.error = _("shift expression expected"); - return FAIL; - } - - assert (shift->properties->index == shift_properties[shift->properties->index].index); - - if (kind == SHIFT_LSL_OR_ASR_IMMEDIATE - && shift->properties->index != SHIFT_LSL - && shift->properties->index != SHIFT_ASR) - { - inst.error = _("'LSL' or 'ASR' required"); - return FAIL; - } - else if (kind == SHIFT_LSL_IMMEDIATE - && shift->properties->index != SHIFT_LSL) - { - inst.error = _("'LSL' required"); - return FAIL; - } - else if (kind == SHIFT_ASR_IMMEDIATE - && shift->properties->index != SHIFT_ASR) - { - inst.error = _("'ASR' required"); - return FAIL; - } - - if (shift->properties->index == SHIFT_RRX) - { - * str = p; - inst.instruction |= shift->properties->bit_field; - return SUCCESS; - } - - skip_whitespace (p); - - if (kind == NO_SHIFT_RESTRICT && reg_required_here (& p, 8) != FAIL) - { - inst.instruction |= shift->properties->bit_field | SHIFT_BY_REG; - * str = p; - return SUCCESS; - } - else if (! is_immediate_prefix (* p)) - { - inst.error = (NO_SHIFT_RESTRICT - ? _("shift requires register or #expression") - : _("shift requires #expression")); - * str = p; - return FAIL; - } - - inst.error = NULL; - p ++; - - if (my_get_expression (& inst.reloc.exp, & p)) - return FAIL; - - /* Validate some simple #expressions. */ - if (inst.reloc.exp.X_op == O_constant) - { - unsigned num = inst.reloc.exp.X_add_number; - - /* Reject operations greater than 32. */ - if (num > 32 - /* Reject a shift of 0 unless the mode allows it. */ - || (num == 0 && shift->properties->allows_0 == 0) - /* Reject a shift of 32 unless the mode allows it. */ - || (num == 32 && shift->properties->allows_32 == 0) - ) - { - /* As a special case we allow a shift of zero for - modes that do not support it to be recoded as an - logical shift left of zero (ie nothing). We warn - about this though. */ - if (num == 0) - { - as_warn (_("shift of 0 ignored.")); - shift = & shift_names[0]; - assert (shift->properties->index == SHIFT_LSL); - } - else - { - inst.error = _("invalid immediate shift"); - return FAIL; - } - } - - /* Shifts of 32 are encoded as 0, for those shifts that - support it. */ - if (num == 32) - num = 0; - - inst.instruction |= (num << 7) | shift->properties->bit_field; - } - else - { - inst.reloc.type = BFD_RELOC_ARM_SHIFT_IMM; - inst.reloc.pc_rel = 0; - inst.instruction |= shift->properties->bit_field; - } - - * str = p; - return SUCCESS; -} - -/* Do those data_ops which can take a negative immediate constant - by altering the instruction. A bit of a hack really. - MOV <-> MVN - AND <-> BIC - ADC <-> SBC - by inverting the second operand, and - ADD <-> SUB - CMP <-> CMN - by negating the second operand. */ - -static int -negate_data_op (instruction, value) - unsigned long * instruction; - unsigned long value; -{ - int op, new_inst; - unsigned long negated, inverted; - - negated = validate_immediate (-value); - inverted = validate_immediate (~value); - - op = (*instruction >> DATA_OP_SHIFT) & 0xf; - switch (op) - { - /* First negates. */ - case OPCODE_SUB: /* ADD <-> SUB */ - new_inst = OPCODE_ADD; - value = negated; - break; - - case OPCODE_ADD: - new_inst = OPCODE_SUB; - value = negated; - break; - - case OPCODE_CMP: /* CMP <-> CMN */ - new_inst = OPCODE_CMN; - value = negated; - break; - - case OPCODE_CMN: - new_inst = OPCODE_CMP; - value = negated; - break; - - /* Now Inverted ops. */ - case OPCODE_MOV: /* MOV <-> MVN */ - new_inst = OPCODE_MVN; - value = inverted; - break; - - case OPCODE_MVN: - new_inst = OPCODE_MOV; - value = inverted; - break; - - case OPCODE_AND: /* AND <-> BIC */ - new_inst = OPCODE_BIC; - value = inverted; - break; - - case OPCODE_BIC: - new_inst = OPCODE_AND; - value = inverted; - break; - - case OPCODE_ADC: /* ADC <-> SBC */ - new_inst = OPCODE_SBC; - value = inverted; - break; - - case OPCODE_SBC: - new_inst = OPCODE_ADC; - value = inverted; - break; - - /* We cannot do anything. */ - default: - return FAIL; - } - - if (value == (unsigned) FAIL) - return FAIL; - - *instruction &= OPCODE_MASK; - *instruction |= new_inst << DATA_OP_SHIFT; - return value; -} - -static int -data_op2 (str) - char ** str; -{ - int value; - expressionS expr; - - skip_whitespace (* str); - - if (reg_required_here (str, 0) != FAIL) - { - if (skip_past_comma (str) == SUCCESS) - /* Shift operation on register. */ - return decode_shift (str, NO_SHIFT_RESTRICT); - - return SUCCESS; - } - else - { - /* Immediate expression. */ - if (is_immediate_prefix (**str)) - { - (*str)++; - inst.error = NULL; - - if (my_get_expression (&inst.reloc.exp, str)) - return FAIL; - - if (inst.reloc.exp.X_add_symbol) - { - inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; - inst.reloc.pc_rel = 0; - } - else - { - if (skip_past_comma (str) == SUCCESS) - { - /* #x, y -- ie explicit rotation by Y. */ - if (my_get_expression (&expr, str)) - return FAIL; - - if (expr.X_op != O_constant) - { - inst.error = _("constant expression expected"); - return FAIL; - } - - /* Rotate must be a multiple of 2. */ - if (((unsigned) expr.X_add_number) > 30 - || (expr.X_add_number & 1) != 0 - || ((unsigned) inst.reloc.exp.X_add_number) > 255) - { - inst.error = _("invalid constant"); - return FAIL; - } - inst.instruction |= INST_IMMEDIATE; - inst.instruction |= inst.reloc.exp.X_add_number; - inst.instruction |= expr.X_add_number << 7; - return SUCCESS; - } - - /* Implicit rotation, select a suitable one. */ - value = validate_immediate (inst.reloc.exp.X_add_number); - - if (value == FAIL) - { - /* Can't be done. Perhaps the code reads something like - "add Rd, Rn, #-n", where "sub Rd, Rn, #n" would be OK. */ - if ((value = negate_data_op (&inst.instruction, - inst.reloc.exp.X_add_number)) - == FAIL) - { - inst.error = _("invalid constant"); - return FAIL; - } - } - - inst.instruction |= value; - } - - inst.instruction |= INST_IMMEDIATE; - return SUCCESS; - } - - (*str)++; - inst.error = _("register or shift expression expected"); - return FAIL; - } -} - -static int -fp_op2 (str) - char ** str; -{ - skip_whitespace (* str); - - if (fp_reg_required_here (str, 0) != FAIL) - return SUCCESS; - else - { - /* Immediate expression. */ - if (*((*str)++) == '#') - { - int i; - - inst.error = NULL; - - skip_whitespace (* str); - - /* First try and match exact strings, this is to guarantee - that some formats will work even for cross assembly. */ - - for (i = 0; fp_const[i]; i++) - { - if (strncmp (*str, fp_const[i], strlen (fp_const[i])) == 0) - { - char *start = *str; - - *str += strlen (fp_const[i]); - if (is_end_of_line[(unsigned char) **str]) - { - inst.instruction |= i + 8; - return SUCCESS; - } - *str = start; - } - } - - /* Just because we didn't get a match doesn't mean that the - constant isn't valid, just that it is in a format that we - don't automatically recognize. Try parsing it with - the standard expression routines. */ - if ((i = my_get_float_expression (str)) >= 0) - { - inst.instruction |= i + 8; - return SUCCESS; - } - - inst.error = _("invalid floating point immediate expression"); - return FAIL; - } - inst.error = - _("floating point register or immediate expression expected"); - return FAIL; - } -} - -static void -do_arit (str) - char * str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL - || skip_past_comma (&str) == FAIL - || data_op2 (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_adr (str) - char * str; -{ - /* This is a pseudo-op of the form "adr rd, label" to be converted - into a relative address of the form "add rd, pc, #label-.-8". */ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || my_get_expression (&inst.reloc.exp, &str)) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - /* Frag hacking will turn this into a sub instruction if the offset turns - out to be negative. */ - inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; -#ifndef TE_WINCE - inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */ -#endif - inst.reloc.pc_rel = 1; - - end_of_line (str); -} - -static void -do_adrl (str) - char * str; -{ - /* This is a pseudo-op of the form "adrl rd, label" to be converted - into a relative address of the form: - add rd, pc, #low(label-.-8)" - add rd, rd, #high(label-.-8)" */ - - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || my_get_expression (&inst.reloc.exp, &str)) - { - if (!inst.error) - inst.error = BAD_ARGS; - - return; - } - - end_of_line (str); - /* Frag hacking will turn this into a sub instruction if the offset turns - out to be negative. */ - inst.reloc.type = BFD_RELOC_ARM_ADRL_IMMEDIATE; -#ifndef TE_WINCE - inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */ -#endif - inst.reloc.pc_rel = 1; - inst.size = INSN_SIZE * 2; -} - -static void -do_cmp (str) - char * str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 16) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || data_op2 (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_mov (str) - char * str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || data_op2 (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static int -ldst_extend (str) - char ** str; -{ - int add = INDEX_UP; - - switch (**str) - { - case '#': - case '$': - (*str)++; - if (my_get_expression (& inst.reloc.exp, str)) - return FAIL; - - if (inst.reloc.exp.X_op == O_constant) - { - int value = inst.reloc.exp.X_add_number; - - if (value < -4095 || value > 4095) - { - inst.error = _("address offset too large"); - return FAIL; - } - - if (value < 0) - { - value = -value; - add = 0; - } - - inst.instruction |= add | value; - } - else - { - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; - inst.reloc.pc_rel = 0; - } - return SUCCESS; - - case '-': - add = 0; - /* Fall through. */ - - case '+': - (*str)++; - /* Fall through. */ - - default: - if (reg_required_here (str, 0) == FAIL) - return FAIL; - - inst.instruction |= add | OFFSET_REG; - if (skip_past_comma (str) == SUCCESS) - return decode_shift (str, SHIFT_IMMEDIATE); - - return SUCCESS; - } -} - -static void -do_ldst (str) - char * str; -{ - int pre_inc = 0; - int conflict_reg; - int value; - - skip_whitespace (str); - - if ((conflict_reg = reg_required_here (&str, 12)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL) - { - inst.error = _("address expected"); - return; - } - - if (*str == '[') - { - int reg; - - str++; - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 16)) == FAIL) - return; - - /* Conflicts can occur on stores as well as loads. */ - conflict_reg = (conflict_reg == reg); - - skip_whitespace (str); - - if (*str == ']') - { - str ++; - - if (skip_past_comma (&str) == SUCCESS) - { - /* [Rn],... (post inc) */ - if (ldst_extend (&str) == FAIL) - return; - if (conflict_reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - } - else - { - /* [Rn] */ - skip_whitespace (str); - - if (*str == '!') - { - if (conflict_reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - str++; - inst.instruction |= WRITE_BACK; - } - - inst.instruction |= INDEX_UP; - pre_inc = 1; - } - } - else - { - /* [Rn,...] */ - if (skip_past_comma (&str) == FAIL) - { - inst.error = _("pre-indexed expression expected"); - return; - } - - pre_inc = 1; - if (ldst_extend (&str) == FAIL) - return; - - skip_whitespace (str); - - if (*str++ != ']') - { - inst.error = _("missing ]"); - return; - } - - skip_whitespace (str); - - if (*str == '!') - { - if (conflict_reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - str++; - inst.instruction |= WRITE_BACK; - } - } - } - else if (*str == '=') - { - if ((inst.instruction & LOAD_BIT) == 0) - { - inst.error = _("invalid pseudo operation"); - return; - } - - /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ - str++; - - skip_whitespace (str); - - if (my_get_expression (&inst.reloc.exp, &str)) - return; - - if (inst.reloc.exp.X_op != O_constant - && inst.reloc.exp.X_op != O_symbol) - { - inst.error = _("constant expression expected"); - return; - } - - if (inst.reloc.exp.X_op == O_constant) - { - value = validate_immediate (inst.reloc.exp.X_add_number); - - if (value != FAIL) - { - /* This can be done with a mov instruction. */ - inst.instruction &= LITERAL_MASK; - inst.instruction |= (INST_IMMEDIATE - | (OPCODE_MOV << DATA_OP_SHIFT)); - inst.instruction |= value & 0xfff; - end_of_line (str); - return; - } - - value = validate_immediate (~inst.reloc.exp.X_add_number); - - if (value != FAIL) - { - /* This can be done with a mvn instruction. */ - inst.instruction &= LITERAL_MASK; - inst.instruction |= (INST_IMMEDIATE - | (OPCODE_MVN << DATA_OP_SHIFT)); - inst.instruction |= value & 0xfff; - end_of_line (str); - return; - } - } - - /* Insert into literal pool. */ - if (add_to_lit_pool () == FAIL) - { - if (!inst.error) - inst.error = _("literal pool insertion failed"); - return; - } - - /* Change the instruction exp to point to the pool. */ - inst.reloc.type = BFD_RELOC_ARM_LITERAL; - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = 1; - } - else - { - if (my_get_expression (&inst.reloc.exp, &str)) - return; - - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; -#ifndef TE_WINCE - /* PC rel adjust. */ - inst.reloc.exp.X_add_number -= 8; -#endif - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = 1; - } - - inst.instruction |= (pre_inc ? PRE_INDEX : 0); - end_of_line (str); -} - -static void -do_ldstt (str) - char * str; -{ - int conflict_reg; - - skip_whitespace (str); - - if ((conflict_reg = reg_required_here (& str, 12)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL) - { - inst.error = _("address expected"); - return; - } - - if (*str == '[') - { - int reg; - - str++; - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 16)) == FAIL) - return; - - /* ldrt/strt always use post-indexed addressing, so if the base is - the same as Rd, we warn. */ - if (conflict_reg == reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - - skip_whitespace (str); - - if (*str == ']') - { - str ++; - - if (skip_past_comma (&str) == SUCCESS) - { - /* [Rn],... (post inc) */ - if (ldst_extend (&str) == FAIL) - return; - } - else - { - /* [Rn] */ - skip_whitespace (str); - - /* Skip a write-back '!'. */ - if (*str == '!') - str++; - - inst.instruction |= INDEX_UP; - } - } - else - { - inst.error = _("post-indexed expression expected"); - return; - } - } - else - { - inst.error = _("post-indexed expression expected"); - return; - } - - end_of_line (str); -} - -static int -ldst_extend_v4 (str) - char ** str; -{ - int add = INDEX_UP; - - switch (**str) - { - case '#': - case '$': - (*str)++; - if (my_get_expression (& inst.reloc.exp, str)) - return FAIL; - - if (inst.reloc.exp.X_op == O_constant) - { - int value = inst.reloc.exp.X_add_number; - - if (value < -255 || value > 255) - { - inst.error = _("address offset too large"); - return FAIL; - } - - if (value < 0) - { - value = -value; - add = 0; - } - - /* Halfword and signextension instructions have the - immediate value split across bits 11..8 and bits 3..0. */ - inst.instruction |= (add | HWOFFSET_IMM - | ((value >> 4) << 8) | (value & 0xF)); - } - else - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; - inst.reloc.pc_rel = 0; - } - return SUCCESS; - - case '-': - add = 0; - /* Fall through. */ - - case '+': - (*str)++; - /* Fall through. */ - - default: - if (reg_required_here (str, 0) == FAIL) - return FAIL; - - inst.instruction |= add; - return SUCCESS; - } -} - -/* Halfword and signed-byte load/store operations. */ -static void -do_ldstv4 (str) - char * str; -{ - int pre_inc = 0; - int conflict_reg; - int value; - - skip_whitespace (str); - - if ((conflict_reg = reg_required_here (& str, 12)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL) - { - inst.error = _("address expected"); - return; - } - - if (*str == '[') - { - int reg; - - str++; - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 16)) == FAIL) - return; - - /* Conflicts can occur on stores as well as loads. */ - conflict_reg = (conflict_reg == reg); - - skip_whitespace (str); - - if (*str == ']') - { - str ++; - - if (skip_past_comma (&str) == SUCCESS) - { - /* [Rn],... (post inc) */ - if (ldst_extend_v4 (&str) == FAIL) - return; - if (conflict_reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - } - else - { - /* [Rn] */ - inst.instruction |= HWOFFSET_IMM; - - skip_whitespace (str); - - if (*str == '!') - { - if (conflict_reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - str++; - inst.instruction |= WRITE_BACK; - } - - inst.instruction |= INDEX_UP; - pre_inc = 1; - } - } - else - { - /* [Rn,...] */ - if (skip_past_comma (&str) == FAIL) - { - inst.error = _("pre-indexed expression expected"); - return; - } - - pre_inc = 1; - if (ldst_extend_v4 (&str) == FAIL) - return; - - skip_whitespace (str); - - if (*str++ != ']') - { - inst.error = _("missing ]"); - return; - } - - skip_whitespace (str); - - if (*str == '!') - { - if (conflict_reg) - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - str++; - inst.instruction |= WRITE_BACK; - } - } - } - else if (*str == '=') - { - if ((inst.instruction & LOAD_BIT) == 0) - { - inst.error = _("invalid pseudo operation"); - return; - } - - /* XXX Does this work correctly for half-word/byte ops? */ - /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ - str++; - - skip_whitespace (str); - - if (my_get_expression (&inst.reloc.exp, &str)) - return; - - if (inst.reloc.exp.X_op != O_constant - && inst.reloc.exp.X_op != O_symbol) - { - inst.error = _("constant expression expected"); - return; - } - - if (inst.reloc.exp.X_op == O_constant) - { - value = validate_immediate (inst.reloc.exp.X_add_number); - - if (value != FAIL) - { - /* This can be done with a mov instruction. */ - inst.instruction &= LITERAL_MASK; - inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT); - inst.instruction |= value & 0xfff; - end_of_line (str); - return; - } - - value = validate_immediate (~ inst.reloc.exp.X_add_number); - - if (value != FAIL) - { - /* This can be done with a mvn instruction. */ - inst.instruction &= LITERAL_MASK; - inst.instruction |= INST_IMMEDIATE | (OPCODE_MVN << DATA_OP_SHIFT); - inst.instruction |= value & 0xfff; - end_of_line (str); - return; - } - } - - /* Insert into literal pool. */ - if (add_to_lit_pool () == FAIL) - { - if (!inst.error) - inst.error = _("literal pool insertion failed"); - return; - } - - /* Change the instruction exp to point to the pool. */ - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = 1; - } - else - { - if (my_get_expression (&inst.reloc.exp, &str)) - return; - - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; -#ifndef TE_WINCE - /* PC rel adjust. */ - inst.reloc.exp.X_add_number -= 8; -#endif - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = 1; - } - - inst.instruction |= (pre_inc ? PRE_INDEX : 0); - end_of_line (str); -} - -static long -reg_list (strp) - char ** strp; -{ - char * str = * strp; - long range = 0; - int another_range; - - /* We come back here if we get ranges concatenated by '+' or '|'. */ - do - { - another_range = 0; - - if (*str == '{') - { - int in_range = 0; - int cur_reg = -1; - - str++; - do - { - int reg; - - skip_whitespace (str); - - if ((reg = reg_required_here (& str, -1)) == FAIL) - return FAIL; - - if (in_range) - { - int i; - - if (reg <= cur_reg) - { - inst.error = _("bad range in register list"); - return FAIL; - } - - for (i = cur_reg + 1; i < reg; i++) - { - if (range & (1 << i)) - as_tsktsk - (_("Warning: duplicated register (r%d) in register list"), - i); - else - range |= 1 << i; - } - in_range = 0; - } - - if (range & (1 << reg)) - as_tsktsk (_("Warning: duplicated register (r%d) in register list"), - reg); - else if (reg <= cur_reg) - as_tsktsk (_("Warning: register range not in ascending order")); - - range |= 1 << reg; - cur_reg = reg; - } - while (skip_past_comma (&str) != FAIL - || (in_range = 1, *str++ == '-')); - str--; - skip_whitespace (str); - - if (*str++ != '}') - { - inst.error = _("missing `}'"); - return FAIL; - } - } - else - { - expressionS expr; - - if (my_get_expression (&expr, &str)) - return FAIL; - - if (expr.X_op == O_constant) - { - if (expr.X_add_number - != (expr.X_add_number & 0x0000ffff)) - { - inst.error = _("invalid register mask"); - return FAIL; - } - - if ((range & expr.X_add_number) != 0) - { - int regno = range & expr.X_add_number; - - regno &= -regno; - regno = (1 << regno) - 1; - as_tsktsk - (_("Warning: duplicated register (r%d) in register list"), - regno); - } - - range |= expr.X_add_number; - } - else - { - if (inst.reloc.type != 0) - { - inst.error = _("expression too complex"); - return FAIL; - } - - memcpy (&inst.reloc.exp, &expr, sizeof (expressionS)); - inst.reloc.type = BFD_RELOC_ARM_MULTI; - inst.reloc.pc_rel = 0; - } - } - - skip_whitespace (str); - - if (*str == '|' || *str == '+') - { - str++; - another_range = 1; - } - } - while (another_range); - - *strp = str; - return range; -} - -static void -do_ldmstm (str) - char * str; -{ - int base_reg; - long range; - - skip_whitespace (str); - - if ((base_reg = reg_required_here (&str, 16)) == FAIL) - return; - - if (base_reg == REG_PC) - { - inst.error = _("r15 not allowed as base register"); - return; - } - - skip_whitespace (str); - - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - str++; - } - - if (skip_past_comma (&str) == FAIL - || (range = reg_list (&str)) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (*str == '^') - { - str++; - inst.instruction |= LDM_TYPE_2_OR_3; - } - - if (inst.instruction & WRITE_BACK) - { - /* Check for unpredictable uses of writeback. */ - if (inst.instruction & LOAD_BIT) - { - /* Not allowed in LDM type 2. */ - if ((inst.instruction & LDM_TYPE_2_OR_3) - && ((range & (1 << REG_PC)) == 0)) - as_warn (_("writeback of base register is UNPREDICTABLE")); - /* Only allowed if base reg not in list for other types. */ - else if (range & (1 << base_reg)) - as_warn (_("writeback of base register when in register list is UNPREDICTABLE")); - } - else /* STM. */ - { - /* Not allowed for type 2. */ - if (inst.instruction & LDM_TYPE_2_OR_3) - as_warn (_("writeback of base register is UNPREDICTABLE")); - /* Only allowed if base reg not in list, or first in list. */ - else if ((range & (1 << base_reg)) - && (range & ((1 << base_reg) - 1))) - as_warn (_("if writeback register is in list, it must be the lowest reg in the list")); - } - } - - inst.instruction |= range; - end_of_line (str); -} - -static void -do_swi (str) - char * str; -{ - skip_whitespace (str); - - /* Allow optional leading '#'. */ - if (is_immediate_prefix (*str)) - str++; - - if (my_get_expression (& inst.reloc.exp, & str)) - return; - - inst.reloc.type = BFD_RELOC_ARM_SWI; - inst.reloc.pc_rel = 0; - end_of_line (str); -} - -static void -do_swap (str) - char * str; -{ - int reg; - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 12)) == FAIL) - return; - - if (reg == REG_PC) - { - inst.error = _("r15 not allowed in swap"); - return; - } - - if (skip_past_comma (&str) == FAIL - || (reg = reg_required_here (&str, 0)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (reg == REG_PC) - { - inst.error = _("r15 not allowed in swap"); - return; - } - - if (skip_past_comma (&str) == FAIL - || *str++ != '[') - { - inst.error = BAD_ARGS; - return; - } - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 16)) == FAIL) - return; - - if (reg == REG_PC) - { - inst.error = BAD_PC; - return; - } - - skip_whitespace (str); - - if (*str++ != ']') - { - inst.error = _("missing ]"); - return; - } - - end_of_line (str); -} - -static void -do_branch (str) - char * str; -{ - if (my_get_expression (&inst.reloc.exp, &str)) - return; - -#ifdef OBJ_ELF - { - char * save_in; - - /* ScottB: February 5, 1998 - Check to see of PLT32 reloc - required for the instruction. */ - - /* arm_parse_reloc () works on input_line_pointer. - We actually want to parse the operands to the branch instruction - passed in 'str'. Save the input pointer and restore it later. */ - save_in = input_line_pointer; - input_line_pointer = str; - if (inst.reloc.exp.X_op == O_symbol - && *str == '(' - && arm_parse_reloc () == BFD_RELOC_ARM_PLT32) - { - inst.reloc.type = BFD_RELOC_ARM_PLT32; - inst.reloc.pc_rel = 0; - /* Modify str to point to after parsed operands, otherwise - end_of_line() will complain about the (PLT) left in str. */ - str = input_line_pointer; - } - else - { - inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH; - inst.reloc.pc_rel = 1; - } - input_line_pointer = save_in; - } -#else - inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH; - inst.reloc.pc_rel = 1; -#endif /* OBJ_ELF */ - - end_of_line (str); -} - -static void -do_bx (str) - char * str; -{ - int reg; - - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 0)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - /* Note - it is not illegal to do a "bx pc". Useless, but not illegal. */ - if (reg == REG_PC) - as_tsktsk (_("use of r15 in bx in ARM mode is not really useful")); - - end_of_line (str); -} - -static void -do_cdp (str) - char * str; -{ - /* Co-processor data operation. - Format: CDP{cond} CP#,,CRd,CRn,CRm{,} */ - skip_whitespace (str); - - if (co_proc_number (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_opc_expr (&str, 20,4) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 16) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 0) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == SUCCESS) - { - if (cp_opc_expr (&str, 5, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - } - - end_of_line (str); -} - -static void -do_lstc (str) - char * str; -{ - /* Co-processor register load/store. - Format: */ - - skip_whitespace (str); - - if (co_proc_number (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str, CP_WB_OK) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_co_reg (str) - char * str; -{ - /* Co-processor register transfer. - Format: {cond} CP#,,Rd,CRn,CRm{,} */ - - skip_whitespace (str); - - if (co_proc_number (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_opc_expr (&str, 21, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 16) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 0) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == SUCCESS) - { - if (cp_opc_expr (&str, 5, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - } - - end_of_line (str); -} - -static void -do_fpa_ctrl (str) - char * str; -{ - /* FP control registers. - Format: {cond} Rn */ - - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_ldst (str) - char * str; -{ - skip_whitespace (str); - - if (fp_reg_required_here (&str, 12) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str, CP_WB_OK) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_ldmstm (str) - char * str; -{ - int num_regs; - - skip_whitespace (str); - - if (fp_reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - /* Get Number of registers to transfer. */ - if (skip_past_comma (&str) == FAIL - || my_get_expression (&inst.reloc.exp, &str)) - { - if (! inst.error) - inst.error = _("constant expression expected"); - return; - } - - if (inst.reloc.exp.X_op != O_constant) - { - inst.error = _("constant value required for number of registers"); - return; - } - - num_regs = inst.reloc.exp.X_add_number; - - if (num_regs < 1 || num_regs > 4) - { - inst.error = _("number of registers must be in the range [1:4]"); - return; - } - - switch (num_regs) - { - case 1: - inst.instruction |= CP_T_X; - break; - case 2: - inst.instruction |= CP_T_Y; - break; - case 3: - inst.instruction |= CP_T_Y | CP_T_X; - break; - case 4: - break; - default: - abort (); - } - - if (inst.instruction & (CP_T_Pre | CP_T_UD)) /* ea/fd format. */ - { - int reg; - int write_back; - int offset; - - /* The instruction specified "ea" or "fd", so we can only accept - [Rn]{!}. The instruction does not really support stacking or - unstacking, so we have to emulate these by setting appropriate - bits and offsets. */ - if (skip_past_comma (&str) == FAIL - || *str != '[') - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - str++; - skip_whitespace (str); - - if ((reg = reg_required_here (&str, 16)) == FAIL) - return; - - skip_whitespace (str); - - if (*str != ']') - { - inst.error = BAD_ARGS; - return; - } - - str++; - if (*str == '!') - { - write_back = 1; - str++; - if (reg == REG_PC) - { - inst.error = - _("r15 not allowed as base register with write-back"); - return; - } - } - else - write_back = 0; - - if (inst.instruction & CP_T_Pre) - { - /* Pre-decrement. */ - offset = 3 * num_regs; - if (write_back) - inst.instruction |= CP_T_WB; - } - else - { - /* Post-increment. */ - if (write_back) - { - inst.instruction |= CP_T_WB; - offset = 3 * num_regs; - } - else - { - /* No write-back, so convert this into a standard pre-increment - instruction -- aesthetically more pleasing. */ - inst.instruction |= CP_T_Pre | CP_T_UD; - offset = 0; - } - } - - inst.instruction |= offset; - } - else if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str, CP_WB_OK) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_dyadic (str) - char * str; -{ - skip_whitespace (str); - - if (fp_reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || fp_reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_monadic (str) - char * str; -{ - skip_whitespace (str); - - if (fp_reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_cmp (str) - char * str; -{ - skip_whitespace (str); - - if (fp_reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_from_reg (str) - char * str; -{ - skip_whitespace (str); - - if (fp_reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_fpa_to_reg (str) - char * str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || fp_reg_required_here (&str, 0) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static int -vfp_sp_reg_required_here (str, pos) - char **str; - enum vfp_sp_reg_pos pos; -{ - int reg; - char *start = *str; - - if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_SN].htab)) != FAIL) - { - switch (pos) - { - case VFP_REG_Sd: - inst.instruction |= ((reg >> 1) << 12) | ((reg & 1) << 22); - break; - - case VFP_REG_Sn: - inst.instruction |= ((reg >> 1) << 16) | ((reg & 1) << 7); - break; - - case VFP_REG_Sm: - inst.instruction |= ((reg >> 1) << 0) | ((reg & 1) << 5); - break; - - default: - abort (); - } - return reg; - } - - /* In the few cases where we might be able to accept something else - this error can be overridden. */ - inst.error = _(all_reg_maps[REG_TYPE_SN].expected); - - /* Restore the start point. */ - *str = start; - return FAIL; -} - -static int -vfp_dp_reg_required_here (str, pos) - char **str; - enum vfp_dp_reg_pos pos; -{ - int reg; - char *start = *str; - - if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_DN].htab)) != FAIL) - { - switch (pos) - { - case VFP_REG_Dd: - inst.instruction |= reg << 12; - break; - - case VFP_REG_Dn: - inst.instruction |= reg << 16; - break; - - case VFP_REG_Dm: - inst.instruction |= reg << 0; - break; - - default: - abort (); - } - return reg; - } - - /* In the few cases where we might be able to accept something else - this error can be overridden. */ - inst.error = _(all_reg_maps[REG_TYPE_DN].expected); - - /* Restore the start point. */ - *str = start; - return FAIL; -} - -static void -do_vfp_sp_monadic (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_monadic (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_sp_dyadic (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL - || skip_past_comma (&str) == FAIL - || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_dyadic (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL - || skip_past_comma (&str) == FAIL - || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_reg_from_sp (str) - char *str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_reg2_from_sp2 (str) - char *str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL - || skip_past_comma (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - /* We require exactly two consecutive SP registers. */ - if (vfp_sp_reg_list (&str, VFP_REG_Sm) != 2) - { - if (! inst.error) - inst.error = _("only two consecutive VFP SP registers allowed here"); - } - - end_of_line (str); -} - -static void -do_vfp_sp_from_reg (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_sp2_from_reg2 (str) - char *str; -{ - skip_whitespace (str); - - /* We require exactly two consecutive SP registers. */ - if (vfp_sp_reg_list (&str, VFP_REG_Sm) != 2) - { - if (! inst.error) - inst.error = _("only two consecutive VFP SP registers allowed here"); - } - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_reg_from_dp (str) - char *str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_reg2_from_dp (str) - char *str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL - || skip_past_comma (&str) == FAIL - || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_from_reg (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_from_reg2 (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL - || skip_past_comma (&str) == FAIL - || reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static const struct vfp_reg * -vfp_psr_parse (str) - char **str; -{ - char *start = *str; - char c; - char *p; - const struct vfp_reg *vreg; - - p = start; - - /* Find the end of the current token. */ - do - { - c = *p++; - } - while (ISALPHA (c)); - - /* Mark it. */ - *--p = 0; - - for (vreg = vfp_regs + 0; - vreg < vfp_regs + sizeof (vfp_regs) / sizeof (struct vfp_reg); - vreg++) - { - if (strcmp (start, vreg->name) == 0) - { - *p = c; - *str = p; - return vreg; - } - } - - *p = c; - return NULL; -} - -static int -vfp_psr_required_here (str) - char **str; -{ - char *start = *str; - const struct vfp_reg *vreg; - - vreg = vfp_psr_parse (str); - - if (vreg) - { - inst.instruction |= vreg->regno; - return SUCCESS; - } - - inst.error = _("VFP system register expected"); - - *str = start; - return FAIL; -} - -static void -do_vfp_reg_from_ctrl (str) - char *str; -{ - skip_whitespace (str); - - if (reg_required_here (&str, 12) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_psr_required_here (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_ctrl_from_reg (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_psr_required_here (&str) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_sp_ldst (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str, CP_NO_WB) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_ldst (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str, CP_NO_WB) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -/* Parse and encode a VFP SP register list, storing the initial - register in position POS and returning the range as the result. If - the string is invalid return FAIL (an invalid range). */ -static long -vfp_sp_reg_list (str, pos) - char **str; - enum vfp_sp_reg_pos pos; -{ - long range = 0; - int base_reg = 0; - int new_base; - long base_bits = 0; - int count = 0; - long tempinst; - unsigned long mask = 0; - int warned = 0; - - if (**str != '{') - return FAIL; - - (*str)++; - skip_whitespace (*str); - - tempinst = inst.instruction; - - do - { - inst.instruction = 0; - - if ((new_base = vfp_sp_reg_required_here (str, pos)) == FAIL) - return FAIL; - - if (count == 0 || base_reg > new_base) - { - base_reg = new_base; - base_bits = inst.instruction; - } - - if (mask & (1 << new_base)) - { - inst.error = _("invalid register list"); - return FAIL; - } - - if ((mask >> new_base) != 0 && ! warned) - { - as_tsktsk (_("register list not in ascending order")); - warned = 1; - } - - mask |= 1 << new_base; - count++; - - skip_whitespace (*str); - - if (**str == '-') /* We have the start of a range expression */ - { - int high_range; - - (*str)++; - - if ((high_range - = arm_reg_parse (str, all_reg_maps[REG_TYPE_SN].htab)) - == FAIL) - { - inst.error = _(all_reg_maps[REG_TYPE_SN].expected); - return FAIL; - } - - if (high_range <= new_base) - { - inst.error = _("register range not in ascending order"); - return FAIL; - } - - for (new_base++; new_base <= high_range; new_base++) - { - if (mask & (1 << new_base)) - { - inst.error = _("invalid register list"); - return FAIL; - } - - mask |= 1 << new_base; - count++; - } - } - } - while (skip_past_comma (str) != FAIL); - - if (**str != '}') - { - inst.error = _("invalid register list"); - return FAIL; - } - - (*str)++; - - range = count; - - /* Sanity check -- should have raised a parse error above. */ - if (count == 0 || count > 32) - abort (); - - /* Final test -- the registers must be consecutive. */ - while (count--) - { - if ((mask & (1 << base_reg++)) == 0) - { - inst.error = _("non-contiguous register range"); - return FAIL; - } - } - - inst.instruction = tempinst | base_bits; - return range; -} - -static long -vfp_dp_reg_list (str) - char **str; -{ - long range = 0; - int base_reg = 0; - int new_base; - int count = 0; - long tempinst; - unsigned long mask = 0; - int warned = 0; - - if (**str != '{') - return FAIL; - - (*str)++; - skip_whitespace (*str); - - tempinst = inst.instruction; - - do - { - inst.instruction = 0; - - if ((new_base = vfp_dp_reg_required_here (str, VFP_REG_Dd)) == FAIL) - return FAIL; - - if (count == 0 || base_reg > new_base) - { - base_reg = new_base; - range = inst.instruction; - } - - if (mask & (1 << new_base)) - { - inst.error = _("invalid register list"); - return FAIL; - } - - if ((mask >> new_base) != 0 && ! warned) - { - as_tsktsk (_("register list not in ascending order")); - warned = 1; - } - - mask |= 1 << new_base; - count++; - - skip_whitespace (*str); - - if (**str == '-') /* We have the start of a range expression */ - { - int high_range; - - (*str)++; - - if ((high_range - = arm_reg_parse (str, all_reg_maps[REG_TYPE_DN].htab)) - == FAIL) - { - inst.error = _(all_reg_maps[REG_TYPE_DN].expected); - return FAIL; - } - - if (high_range <= new_base) - { - inst.error = _("register range not in ascending order"); - return FAIL; - } - - for (new_base++; new_base <= high_range; new_base++) - { - if (mask & (1 << new_base)) - { - inst.error = _("invalid register list"); - return FAIL; - } - - mask |= 1 << new_base; - count++; - } - } - } - while (skip_past_comma (str) != FAIL); - - if (**str != '}') - { - inst.error = _("invalid register list"); - return FAIL; - } - - (*str)++; - - range |= 2 * count; - - /* Sanity check -- should have raised a parse error above. */ - if (count == 0 || count > 16) - abort (); - - /* Final test -- the registers must be consecutive. */ - while (count--) - { - if ((mask & (1 << base_reg++)) == 0) - { - inst.error = _("non-contiguous register range"); - return FAIL; - } - } - - inst.instruction = tempinst; - return range; -} - -static void -vfp_sp_ldstm (str, ldstm_type) - char *str; - enum vfp_ldstm_type ldstm_type; -{ - long range; - - skip_whitespace (str); - - if (reg_required_here (&str, 16) == FAIL) - return; - - skip_whitespace (str); - - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - str++; - } - else if (ldstm_type != VFP_LDSTMIA) - { - inst.error = _("this addressing mode requires base-register writeback"); - return; - } - - if (skip_past_comma (&str) == FAIL - || (range = vfp_sp_reg_list (&str, VFP_REG_Sd)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - inst.instruction |= range; - end_of_line (str); -} - -static void -vfp_dp_ldstm (str, ldstm_type) - char *str; - enum vfp_ldstm_type ldstm_type; -{ - long range; - - skip_whitespace (str); - - if (reg_required_here (&str, 16) == FAIL) - return; - - skip_whitespace (str); - - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - str++; - } - else if (ldstm_type != VFP_LDSTMIA && ldstm_type != VFP_LDSTMIAX) - { - inst.error = _("this addressing mode requires base-register writeback"); - return; - } - - if (skip_past_comma (&str) == FAIL - || (range = vfp_dp_reg_list (&str)) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - if (ldstm_type == VFP_LDSTMIAX || ldstm_type == VFP_LDSTMDBX) - range += 1; - - inst.instruction |= range; - end_of_line (str); -} - -static void -do_vfp_sp_ldstmia (str) - char *str; -{ - vfp_sp_ldstm (str, VFP_LDSTMIA); -} - -static void -do_vfp_sp_ldstmdb (str) - char *str; -{ - vfp_sp_ldstm (str, VFP_LDSTMDB); -} - -static void -do_vfp_dp_ldstmia (str) - char *str; -{ - vfp_dp_ldstm (str, VFP_LDSTMIA); -} - -static void -do_vfp_dp_ldstmdb (str) - char *str; -{ - vfp_dp_ldstm (str, VFP_LDSTMDB); -} - -static void -do_vfp_xp_ldstmia (str) - char *str; -{ - vfp_dp_ldstm (str, VFP_LDSTMIAX); -} - -static void -do_vfp_xp_ldstmdb (str) - char *str; -{ - vfp_dp_ldstm (str, VFP_LDSTMDBX); -} - -static void -do_vfp_sp_compare_z (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_compare_z (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_dp_sp_cvt (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -static void -do_vfp_sp_dp_cvt (str) - char *str; -{ - skip_whitespace (str); - - if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL - || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - end_of_line (str); -} - -/* Thumb specific routines. */ - -/* Parse and validate that a register is of the right form, this saves - repeated checking of this information in many similar cases. - Unlike the 32-bit case we do not insert the register into the opcode - here, since the position is often unknown until the full instruction - has been parsed. */ - -static int -thumb_reg (strp, hi_lo) - char ** strp; - int hi_lo; -{ - int reg; - - if ((reg = reg_required_here (strp, -1)) == FAIL) - return FAIL; - - switch (hi_lo) - { - case THUMB_REG_LO: - if (reg > 7) - { - inst.error = _("lo register required"); - return FAIL; - } - break; - - case THUMB_REG_HI: - if (reg < 8) - { - inst.error = _("hi register required"); - return FAIL; - } - break; - - default: - break; - } - - return reg; -} - -/* Parse an add or subtract instruction, SUBTRACT is non-zero if the opcode - was SUB. */ - -static void -thumb_add_sub (str, subtract) - char * str; - int subtract; -{ - int Rd, Rs, Rn = FAIL; - - skip_whitespace (str); - - if ((Rd = thumb_reg (&str, THUMB_REG_ANY)) == FAIL - || skip_past_comma (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (is_immediate_prefix (*str)) - { - Rs = Rd; - str++; - if (my_get_expression (&inst.reloc.exp, &str)) - return; - } - else - { - if ((Rs = thumb_reg (&str, THUMB_REG_ANY)) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL) - { - /* Two operand format, shuffle the registers - and pretend there are 3. */ - Rn = Rs; - Rs = Rd; - } - else if (is_immediate_prefix (*str)) - { - str++; - if (my_get_expression (&inst.reloc.exp, &str)) - return; - } - else if ((Rn = thumb_reg (&str, THUMB_REG_ANY)) == FAIL) - return; - } - - /* We now have Rd and Rs set to registers, and Rn set to a register or FAIL; - for the latter case, EXPR contains the immediate that was found. */ - if (Rn != FAIL) - { - /* All register format. */ - if (Rd > 7 || Rs > 7 || Rn > 7) - { - if (Rs != Rd) - { - inst.error = _("dest and source1 must be the same register"); - return; - } - - /* Can't do this for SUB. */ - if (subtract) - { - inst.error = _("subtract valid only on lo regs"); - return; - } - - inst.instruction = (T_OPCODE_ADD_HI - | (Rd > 7 ? THUMB_H1 : 0) - | (Rn > 7 ? THUMB_H2 : 0)); - inst.instruction |= (Rd & 7) | ((Rn & 7) << 3); - } - else - { - inst.instruction = subtract ? T_OPCODE_SUB_R3 : T_OPCODE_ADD_R3; - inst.instruction |= Rd | (Rs << 3) | (Rn << 6); - } - } - else - { - /* Immediate expression, now things start to get nasty. */ - - /* First deal with HI regs, only very restricted cases allowed: - Adjusting SP, and using PC or SP to get an address. */ - if ((Rd > 7 && (Rd != REG_SP || Rs != REG_SP)) - || (Rs > 7 && Rs != REG_SP && Rs != REG_PC)) - { - inst.error = _("invalid Hi register with immediate"); - return; - } - - if (inst.reloc.exp.X_op != O_constant) - { - /* Value isn't known yet, all we can do is store all the fragments - we know about in the instruction and let the reloc hacking - work it all out. */ - inst.instruction = (subtract ? 0x8000 : 0) | (Rd << 4) | Rs; - inst.reloc.type = BFD_RELOC_ARM_THUMB_ADD; - } - else - { - int offset = inst.reloc.exp.X_add_number; - - if (subtract) - offset = - offset; - - if (offset < 0) - { - offset = - offset; - subtract = 1; - - /* Quick check, in case offset is MIN_INT. */ - if (offset < 0) - { - inst.error = _("immediate value out of range"); - return; - } - } - /* Note - you cannot convert a subtract of 0 into an - add of 0 because the carry flag is set differently. */ - else if (offset > 0) - subtract = 0; - - if (Rd == REG_SP) - { - if (offset & ~0x1fc) - { - inst.error = _("invalid immediate value for stack adjust"); - return; - } - inst.instruction = subtract ? T_OPCODE_SUB_ST : T_OPCODE_ADD_ST; - inst.instruction |= offset >> 2; - } - else if (Rs == REG_PC || Rs == REG_SP) - { - if (subtract - || (offset & ~0x3fc)) - { - inst.error = _("invalid immediate for address calculation"); - return; - } - inst.instruction = (Rs == REG_PC ? T_OPCODE_ADD_PC - : T_OPCODE_ADD_SP); - inst.instruction |= (Rd << 8) | (offset >> 2); - } - else if (Rs == Rd) - { - if (offset & ~0xff) - { - inst.error = _("immediate value out of range"); - return; - } - inst.instruction = subtract ? T_OPCODE_SUB_I8 : T_OPCODE_ADD_I8; - inst.instruction |= (Rd << 8) | offset; - } - else - { - if (offset & ~0x7) - { - inst.error = _("immediate value out of range"); - return; - } - inst.instruction = subtract ? T_OPCODE_SUB_I3 : T_OPCODE_ADD_I3; - inst.instruction |= Rd | (Rs << 3) | (offset << 6); - } - } - } - - end_of_line (str); -} - -static void -thumb_shift (str, shift) - char * str; - int shift; -{ - int Rd, Rs, Rn = FAIL; - - skip_whitespace (str); - - if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL - || skip_past_comma (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (is_immediate_prefix (*str)) - { - /* Two operand immediate format, set Rs to Rd. */ - Rs = Rd; - str ++; - if (my_get_expression (&inst.reloc.exp, &str)) - return; - } - else - { - if ((Rs = thumb_reg (&str, THUMB_REG_LO)) == FAIL) - return; - - if (skip_past_comma (&str) == FAIL) - { - /* Two operand format, shuffle the registers - and pretend there are 3. */ - Rn = Rs; - Rs = Rd; - } - else if (is_immediate_prefix (*str)) - { - str++; - if (my_get_expression (&inst.reloc.exp, &str)) - return; - } - else if ((Rn = thumb_reg (&str, THUMB_REG_LO)) == FAIL) - return; - } - - /* We now have Rd and Rs set to registers, and Rn set to a register or FAIL; - for the latter case, EXPR contains the immediate that was found. */ - - if (Rn != FAIL) - { - if (Rs != Rd) - { - inst.error = _("source1 and dest must be same register"); - return; - } - - switch (shift) - { - case THUMB_ASR: inst.instruction = T_OPCODE_ASR_R; break; - case THUMB_LSL: inst.instruction = T_OPCODE_LSL_R; break; - case THUMB_LSR: inst.instruction = T_OPCODE_LSR_R; break; - } - - inst.instruction |= Rd | (Rn << 3); - } - else - { - switch (shift) - { - case THUMB_ASR: inst.instruction = T_OPCODE_ASR_I; break; - case THUMB_LSL: inst.instruction = T_OPCODE_LSL_I; break; - case THUMB_LSR: inst.instruction = T_OPCODE_LSR_I; break; - } - - if (inst.reloc.exp.X_op != O_constant) - { - /* Value isn't known yet, create a dummy reloc and let reloc - hacking fix it up. */ - inst.reloc.type = BFD_RELOC_ARM_THUMB_SHIFT; - } - else - { - unsigned shift_value = inst.reloc.exp.X_add_number; - - if (shift_value > 32 || (shift_value == 32 && shift == THUMB_LSL)) - { - inst.error = _("invalid immediate for shift"); - return; - } - - /* Shifts of zero are handled by converting to LSL. */ - if (shift_value == 0) - inst.instruction = T_OPCODE_LSL_I; - - /* Shifts of 32 are encoded as a shift of zero. */ - if (shift_value == 32) - shift_value = 0; - - inst.instruction |= shift_value << 6; - } - - inst.instruction |= Rd | (Rs << 3); - } - - end_of_line (str); -} - -static void -thumb_mov_compare (str, move) - char * str; - int move; -{ - int Rd, Rs = FAIL; - - skip_whitespace (str); - - if ((Rd = thumb_reg (&str, THUMB_REG_ANY)) == FAIL - || skip_past_comma (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (move != THUMB_CPY && is_immediate_prefix (*str)) - { - str++; - if (my_get_expression (&inst.reloc.exp, &str)) - return; - } - else if ((Rs = thumb_reg (&str, THUMB_REG_ANY)) == FAIL) - return; - - if (Rs != FAIL) - { - if (move != THUMB_CPY && Rs < 8 && Rd < 8) - { - if (move == THUMB_MOVE) - /* A move of two lowregs is encoded as ADD Rd, Rs, #0 - since a MOV instruction produces unpredictable results. */ - inst.instruction = T_OPCODE_ADD_I3; - else - inst.instruction = T_OPCODE_CMP_LR; - inst.instruction |= Rd | (Rs << 3); - } - else - { - if (move == THUMB_MOVE) - inst.instruction = T_OPCODE_MOV_HR; - else if (move != THUMB_CPY) - inst.instruction = T_OPCODE_CMP_HR; - - if (Rd > 7) - inst.instruction |= THUMB_H1; - - if (Rs > 7) - inst.instruction |= THUMB_H2; - - inst.instruction |= (Rd & 7) | ((Rs & 7) << 3); - } - } - else - { - if (Rd > 7) - { - inst.error = _("only lo regs allowed with immediate"); - return; - } - - if (move == THUMB_MOVE) - inst.instruction = T_OPCODE_MOV_I8; - else - inst.instruction = T_OPCODE_CMP_I8; - - inst.instruction |= Rd << 8; - - if (inst.reloc.exp.X_op != O_constant) - inst.reloc.type = BFD_RELOC_ARM_THUMB_IMM; - else - { - unsigned value = inst.reloc.exp.X_add_number; - - if (value > 255) - { - inst.error = _("invalid immediate"); - return; - } - - inst.instruction |= value; - } - } - - end_of_line (str); -} - -static void -thumb_load_store (str, load_store, size) - char * str; - int load_store; - int size; -{ - int Rd, Rb, Ro = FAIL; - - skip_whitespace (str); - - if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL - || skip_past_comma (&str) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (*str == '[') - { - str++; - if ((Rb = thumb_reg (&str, THUMB_REG_ANY)) == FAIL) - return; - - if (skip_past_comma (&str) != FAIL) - { - if (is_immediate_prefix (*str)) - { - str++; - if (my_get_expression (&inst.reloc.exp, &str)) - return; - } - else if ((Ro = thumb_reg (&str, THUMB_REG_LO)) == FAIL) - return; - } - else - { - inst.reloc.exp.X_op = O_constant; - inst.reloc.exp.X_add_number = 0; - } - - if (*str != ']') - { - inst.error = _("expected ']'"); - return; - } - str++; - } - else if (*str == '=') - { - if (load_store != THUMB_LOAD) - { - inst.error = _("invalid pseudo operation"); - return; - } - - /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ - str++; - - skip_whitespace (str); - - if (my_get_expression (& inst.reloc.exp, & str)) - return; - - end_of_line (str); - - if ( inst.reloc.exp.X_op != O_constant - && inst.reloc.exp.X_op != O_symbol) - { - inst.error = "Constant expression expected"; - return; - } - - if (inst.reloc.exp.X_op == O_constant - && ((inst.reloc.exp.X_add_number & ~0xFF) == 0)) - { - /* This can be done with a mov instruction. */ - - inst.instruction = T_OPCODE_MOV_I8 | (Rd << 8); - inst.instruction |= inst.reloc.exp.X_add_number; - return; - } - - /* Insert into literal pool. */ - if (add_to_lit_pool () == FAIL) - { - if (!inst.error) - inst.error = "literal pool insertion failed"; - return; - } - - inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET; - inst.reloc.pc_rel = 1; - inst.instruction = T_OPCODE_LDR_PC | (Rd << 8); - /* Adjust ARM pipeline offset to Thumb. */ - inst.reloc.exp.X_add_number += 4; - - return; - } - else - { - if (my_get_expression (&inst.reloc.exp, &str)) - return; - - inst.instruction = T_OPCODE_LDR_PC | (Rd << 8); - inst.reloc.pc_rel = 1; - inst.reloc.exp.X_add_number -= 4; /* Pipeline offset. */ - inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET; - end_of_line (str); - return; - } - - if (Rb == REG_PC || Rb == REG_SP) - { - if (size != THUMB_WORD) - { - inst.error = _("byte or halfword not valid for base register"); - return; - } - else if (Rb == REG_PC && load_store != THUMB_LOAD) - { - inst.error = _("r15 based store not allowed"); - return; - } - else if (Ro != FAIL) - { - inst.error = _("invalid base register for register offset"); - return; - } - - if (Rb == REG_PC) - inst.instruction = T_OPCODE_LDR_PC; - else if (load_store == THUMB_LOAD) - inst.instruction = T_OPCODE_LDR_SP; - else - inst.instruction = T_OPCODE_STR_SP; - - inst.instruction |= Rd << 8; - if (inst.reloc.exp.X_op == O_constant) - { - unsigned offset = inst.reloc.exp.X_add_number; - - if (offset & ~0x3fc) - { - inst.error = _("invalid offset"); - return; - } - - inst.instruction |= offset >> 2; - } - else - inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET; - } - else if (Rb > 7) - { - inst.error = _("invalid base register in load/store"); - return; - } - else if (Ro == FAIL) - { - /* Immediate offset. */ - if (size == THUMB_WORD) - inst.instruction = (load_store == THUMB_LOAD - ? T_OPCODE_LDR_IW : T_OPCODE_STR_IW); - else if (size == THUMB_HALFWORD) - inst.instruction = (load_store == THUMB_LOAD - ? T_OPCODE_LDR_IH : T_OPCODE_STR_IH); - else - inst.instruction = (load_store == THUMB_LOAD - ? T_OPCODE_LDR_IB : T_OPCODE_STR_IB); - - inst.instruction |= Rd | (Rb << 3); - - if (inst.reloc.exp.X_op == O_constant) - { - unsigned offset = inst.reloc.exp.X_add_number; - - if (offset & ~(0x1f << size)) - { - inst.error = _("invalid offset"); - return; - } - inst.instruction |= (offset >> size) << 6; - } - else - inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET; - } - else - { - /* Register offset. */ - if (size == THUMB_WORD) - inst.instruction = (load_store == THUMB_LOAD - ? T_OPCODE_LDR_RW : T_OPCODE_STR_RW); - else if (size == THUMB_HALFWORD) - inst.instruction = (load_store == THUMB_LOAD - ? T_OPCODE_LDR_RH : T_OPCODE_STR_RH); - else - inst.instruction = (load_store == THUMB_LOAD - ? T_OPCODE_LDR_RB : T_OPCODE_STR_RB); - - inst.instruction |= Rd | (Rb << 3) | (Ro << 6); - } - - end_of_line (str); -} - -/* A register must be given at this point. - - Shift is the place to put it in inst.instruction. - - Restores input start point on err. - Returns the reg#, or FAIL. */ - -static int -mav_reg_required_here (str, shift, regtype) - char ** str; - int shift; - enum arm_reg_type regtype; -{ - int reg; - char *start = *str; - - if ((reg = arm_reg_parse (str, all_reg_maps[regtype].htab)) != FAIL) - { - if (shift >= 0) - inst.instruction |= reg << shift; - - return reg; - } - - /* Restore the start point. */ - *str = start; - - /* In the few cases where we might be able to accept something else - this error can be overridden. */ - inst.error = _(all_reg_maps[regtype].expected); - - return FAIL; -} - -/* Cirrus Maverick Instructions. */ - -/* Wrapper functions. */ - -static void -do_mav_binops_1a (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVF); -} - -static void -do_mav_binops_1b (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVD); -} - -static void -do_mav_binops_1c (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVDX); -} - -static void -do_mav_binops_1d (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVF); -} - -static void -do_mav_binops_1e (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVD); -} - -static void -do_mav_binops_1f (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVF); -} - -static void -do_mav_binops_1g (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVD); -} - -static void -do_mav_binops_1h (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVFX); -} - -static void -do_mav_binops_1i (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVFX); -} - -static void -do_mav_binops_1j (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVDX); -} - -static void -do_mav_binops_1k (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVDX); -} - -static void -do_mav_binops_1l (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVF); -} - -static void -do_mav_binops_1m (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVD); -} - -static void -do_mav_binops_1n (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVFX); -} - -static void -do_mav_binops_1o (str) - char * str; -{ - do_mav_binops (str, MAV_MODE1, REG_TYPE_MVDX, REG_TYPE_MVDX); -} - -static void -do_mav_binops_2a (str) - char * str; -{ - do_mav_binops (str, MAV_MODE2, REG_TYPE_MVF, REG_TYPE_RN); -} - -static void -do_mav_binops_2b (str) - char * str; -{ - do_mav_binops (str, MAV_MODE2, REG_TYPE_MVD, REG_TYPE_RN); -} - -static void -do_mav_binops_2c (str) - char * str; -{ - do_mav_binops (str, MAV_MODE2, REG_TYPE_MVDX, REG_TYPE_RN); -} - -static void -do_mav_binops_3a (str) - char * str; -{ - do_mav_binops (str, MAV_MODE3, REG_TYPE_MVAX, REG_TYPE_MVFX); -} - -static void -do_mav_binops_3b (str) - char * str; -{ - do_mav_binops (str, MAV_MODE3, REG_TYPE_MVFX, REG_TYPE_MVAX); -} - -static void -do_mav_binops_3c (str) - char * str; -{ - do_mav_binops (str, MAV_MODE3, REG_TYPE_MVAX, REG_TYPE_MVDX); -} - -static void -do_mav_binops_3d (str) - char * str; -{ - do_mav_binops (str, MAV_MODE3, REG_TYPE_MVDX, REG_TYPE_MVAX); -} - -static void -do_mav_triple_4a (str) - char * str; -{ - do_mav_triple (str, MAV_MODE4, REG_TYPE_MVFX, REG_TYPE_MVFX, REG_TYPE_RN); -} - -static void -do_mav_triple_4b (str) - char * str; -{ - do_mav_triple (str, MAV_MODE4, REG_TYPE_MVDX, REG_TYPE_MVDX, REG_TYPE_RN); -} - -static void -do_mav_triple_5a (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVF, REG_TYPE_MVF); -} - -static void -do_mav_triple_5b (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVD, REG_TYPE_MVD); -} - -static void -do_mav_triple_5c (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVFX, REG_TYPE_MVFX); -} - -static void -do_mav_triple_5d (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVDX, REG_TYPE_MVDX); -} - -static void -do_mav_triple_5e (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_MVF, REG_TYPE_MVF, REG_TYPE_MVF); -} - -static void -do_mav_triple_5f (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_MVD, REG_TYPE_MVD, REG_TYPE_MVD); -} - -static void -do_mav_triple_5g (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_MVFX, REG_TYPE_MVFX, REG_TYPE_MVFX); -} - -static void -do_mav_triple_5h (str) - char * str; -{ - do_mav_triple (str, MAV_MODE5, REG_TYPE_MVDX, REG_TYPE_MVDX, REG_TYPE_MVDX); -} - -static void -do_mav_quad_6a (str) - char * str; -{ - do_mav_quad (str, MAV_MODE6, REG_TYPE_MVAX, REG_TYPE_MVFX, REG_TYPE_MVFX, - REG_TYPE_MVFX); -} - -static void -do_mav_quad_6b (str) - char * str; -{ - do_mav_quad (str, MAV_MODE6, REG_TYPE_MVAX, REG_TYPE_MVAX, REG_TYPE_MVFX, - REG_TYPE_MVFX); -} - -/* cfmvsc32 DSPSC,MVDX[15:0]. */ -static void -do_mav_dspsc_1 (str) - char * str; -{ - skip_whitespace (str); - - /* cfmvsc32. */ - if (mav_reg_required_here (&str, -1, REG_TYPE_DSPSC) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, 12, REG_TYPE_MVDX) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - - return; - } - - end_of_line (str); -} - -/* cfmv32sc MVDX[15:0],DSPSC. */ -static void -do_mav_dspsc_2 (str) - char * str; -{ - skip_whitespace (str); - - /* cfmv32sc. */ - if (mav_reg_required_here (&str, 12, REG_TYPE_MVDX) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, -1, REG_TYPE_DSPSC) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - - return; - } - - end_of_line (str); -} - -static void -do_mav_shift_1 (str) - char * str; -{ - do_mav_shift (str, REG_TYPE_MVFX, REG_TYPE_MVFX); -} - -static void -do_mav_shift_2 (str) - char * str; -{ - do_mav_shift (str, REG_TYPE_MVDX, REG_TYPE_MVDX); -} - -static void -do_mav_ldst_1 (str) - char * str; -{ - do_mav_ldst (str, REG_TYPE_MVF); -} - -static void -do_mav_ldst_2 (str) - char * str; -{ - do_mav_ldst (str, REG_TYPE_MVD); -} - -static void -do_mav_ldst_3 (str) - char * str; -{ - do_mav_ldst (str, REG_TYPE_MVFX); -} - -static void -do_mav_ldst_4 (str) - char * str; -{ - do_mav_ldst (str, REG_TYPE_MVDX); -} - -/* Isnsn like "foo X,Y". */ - -static void -do_mav_binops (str, mode, reg0, reg1) - char * str; - int mode; - enum arm_reg_type reg0; - enum arm_reg_type reg1; -{ - int shift0, shift1; - - shift0 = mode & 0xff; - shift1 = (mode >> 8) & 0xff; - - skip_whitespace (str); - - if (mav_reg_required_here (&str, shift0, reg0) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, shift1, reg1) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - } - else - end_of_line (str); -} - -/* Isnsn like "foo X,Y,Z". */ - -static void -do_mav_triple (str, mode, reg0, reg1, reg2) - char * str; - int mode; - enum arm_reg_type reg0; - enum arm_reg_type reg1; - enum arm_reg_type reg2; -{ - int shift0, shift1, shift2; - - shift0 = mode & 0xff; - shift1 = (mode >> 8) & 0xff; - shift2 = (mode >> 16) & 0xff; - - skip_whitespace (str); - - if (mav_reg_required_here (&str, shift0, reg0) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, shift1, reg1) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, shift2, reg2) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - } - else - end_of_line (str); -} - -/* Isnsn like "foo W,X,Y,Z". - where W=MVAX[0:3] and X,Y,Z=MVFX[0:15]. */ - -static void -do_mav_quad (str, mode, reg0, reg1, reg2, reg3) - char * str; - int mode; - enum arm_reg_type reg0; - enum arm_reg_type reg1; - enum arm_reg_type reg2; - enum arm_reg_type reg3; -{ - int shift0, shift1, shift2, shift3; - - shift0= mode & 0xff; - shift1 = (mode >> 8) & 0xff; - shift2 = (mode >> 16) & 0xff; - shift3 = (mode >> 24) & 0xff; - - skip_whitespace (str); - - if (mav_reg_required_here (&str, shift0, reg0) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, shift1, reg1) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, shift2, reg2) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, shift3, reg3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - } - else - end_of_line (str); -} - -/* Maverick shift immediate instructions. - cfsh32 MVFX[15:0],MVFX[15:0],Shift[6:0]. - cfsh64 MVDX[15:0],MVDX[15:0],Shift[6:0]. */ - -static void -do_mav_shift (str, reg0, reg1) - char * str; - enum arm_reg_type reg0; - enum arm_reg_type reg1; -{ - int error; - int imm, neg = 0; - - skip_whitespace (str); - - error = 0; - - if (mav_reg_required_here (&str, 12, reg0) == FAIL - || skip_past_comma (&str) == FAIL - || mav_reg_required_here (&str, 16, reg1) == FAIL - || skip_past_comma (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - /* Calculate the immediate operand. - The operand is a 7bit signed number. */ - skip_whitespace (str); - - if (*str == '#') - ++str; - - if (!ISDIGIT (*str) && *str != '-') - { - inst.error = _("expecting immediate, 7bit operand"); - return; - } - - if (*str == '-') - { - neg = 1; - ++str; - } - - for (imm = 0; *str && ISDIGIT (*str); ++str) - imm = imm * 10 + *str - '0'; - - if (imm > 64) - { - inst.error = _("immediate out of range"); - return; - } - - /* Make negative imm's into 7bit signed numbers. */ - if (neg) - { - imm = -imm; - imm &= 0x0000007f; - } - - /* Bits 0-3 of the insn should have bits 0-3 of the immediate. - Bits 5-7 of the insn should have bits 4-6 of the immediate. - Bit 4 should be 0. */ - imm = (imm & 0xf) | ((imm & 0x70) << 1); - - inst.instruction |= imm; - end_of_line (str); -} - -static int -mav_parse_offset (str, negative) - char ** str; - int *negative; -{ - char * p = *str; - int offset; - - *negative = 0; - - skip_whitespace (p); - - if (*p == '#') - ++p; - - if (*p == '-') - { - *negative = 1; - ++p; - } - - if (!ISDIGIT (*p)) - { - inst.error = _("offset expected"); - return 0; - } - - for (offset = 0; *p && ISDIGIT (*p); ++p) - offset = offset * 10 + *p - '0'; - - if (offset > 0xff) - { - inst.error = _("offset out of range"); - return 0; - } - - *str = p; - - return *negative ? -offset : offset; -} - -/* Maverick load/store instructions. - CRd,[Rn,]{!}. - CRd,[Rn],. */ - -static void -do_mav_ldst (str, reg0) - char * str; - enum arm_reg_type reg0; -{ - int offset, negative; - - skip_whitespace (str); - - if (mav_reg_required_here (&str, 12, reg0) == FAIL - || skip_past_comma (&str) == FAIL - || *str++ != '[' - || reg_required_here (&str, 16) == FAIL) - goto fail_ldst; - - if (skip_past_comma (&str) == SUCCESS) - { - /* You are here: "]{!}". */ - inst.instruction |= PRE_INDEX; - - offset = mav_parse_offset (&str, &negative); - - if (inst.error) - return; - - if (*str++ != ']') - { - inst.error = _("missing ]"); - return; - } - - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - ++str; - } - } - else - { - /* You are here: "], ". */ - if (*str++ != ']') - { - inst.error = _("missing ]"); - return; - } - - if (skip_past_comma (&str) == FAIL - || (offset = mav_parse_offset (&str, &negative), inst.error)) - goto fail_ldst; - - inst.instruction |= CP_T_WB; /* Post indexed, set bit W. */ - } - - if (negative) - offset = -offset; - else - inst.instruction |= CP_T_UD; /* Positive, so set bit U. */ - - inst.instruction |= offset >> 2; - end_of_line (str); - return; - -fail_ldst: - if (!inst.error) - inst.error = BAD_ARGS; -} - -static void -do_t_nop (str) - char * str; -{ - /* Do nothing. */ - end_of_line (str); -} - -/* Handle the Format 4 instructions that do not have equivalents in other - formats. That is, ADC, AND, EOR, SBC, ROR, TST, NEG, CMN, ORR, MUL, - BIC and MVN. */ - -static void -do_t_arit (str) - char * str; -{ - int Rd, Rs, Rn; - - skip_whitespace (str); - - if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL - || skip_past_comma (&str) == FAIL - || (Rs = thumb_reg (&str, THUMB_REG_LO)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) != FAIL) - { - /* Three operand format not allowed for TST, CMN, NEG and MVN. - (It isn't allowed for CMP either, but that isn't handled by this - function.) */ - if (inst.instruction == T_OPCODE_TST - || inst.instruction == T_OPCODE_CMN - || inst.instruction == T_OPCODE_NEG - || inst.instruction == T_OPCODE_MVN) - { - inst.error = BAD_ARGS; - return; - } - - if ((Rn = thumb_reg (&str, THUMB_REG_LO)) == FAIL) - return; - - if (Rs != Rd) - { - inst.error = _("dest and source1 must be the same register"); - return; - } - Rs = Rn; - } - - if (inst.instruction == T_OPCODE_MUL - && Rs == Rd) - as_tsktsk (_("Rs and Rd must be different in MUL")); - - inst.instruction |= Rd | (Rs << 3); - end_of_line (str); -} - -static void -do_t_add (str) - char * str; -{ - thumb_add_sub (str, 0); -} - -static void -do_t_asr (str) - char * str; -{ - thumb_shift (str, THUMB_ASR); -} - -static void -do_t_branch9 (str) - char * str; -{ - if (my_get_expression (&inst.reloc.exp, &str)) - return; - inst.reloc.type = BFD_RELOC_THUMB_PCREL_BRANCH9; - inst.reloc.pc_rel = 1; - end_of_line (str); -} - -static void -do_t_branch12 (str) - char * str; -{ - if (my_get_expression (&inst.reloc.exp, &str)) - return; - inst.reloc.type = BFD_RELOC_THUMB_PCREL_BRANCH12; - inst.reloc.pc_rel = 1; - end_of_line (str); -} - -/* Find the real, Thumb encoded start of a Thumb function. */ - -static symbolS * -find_real_start (symbolP) - symbolS * symbolP; -{ - char * real_start; - const char * name = S_GET_NAME (symbolP); - symbolS * new_target; - - /* This definition must agree with the one in gcc/config/arm/thumb.c. */ -#define STUB_NAME ".real_start_of" - - if (name == NULL) - abort (); - - /* Names that start with '.' are local labels, not function entry points. - The compiler may generate BL instructions to these labels because it - needs to perform a branch to a far away location. */ - if (name[0] == '.') - return symbolP; - - real_start = malloc (strlen (name) + strlen (STUB_NAME) + 1); - sprintf (real_start, "%s%s", STUB_NAME, name); - - new_target = symbol_find (real_start); - - if (new_target == NULL) - { - as_warn ("Failed to find real start of function: %s\n", name); - new_target = symbolP; - } - - free (real_start); - - return new_target; -} - -static void -do_t_branch23 (str) - char * str; -{ - if (my_get_expression (& inst.reloc.exp, & str)) - return; - - inst.reloc.type = BFD_RELOC_THUMB_PCREL_BRANCH23; - inst.reloc.pc_rel = 1; - end_of_line (str); - - /* If the destination of the branch is a defined symbol which does not have - the THUMB_FUNC attribute, then we must be calling a function which has - the (interfacearm) attribute. We look for the Thumb entry point to that - function and change the branch to refer to that function instead. */ - if ( inst.reloc.exp.X_op == O_symbol - && inst.reloc.exp.X_add_symbol != NULL - && S_IS_DEFINED (inst.reloc.exp.X_add_symbol) - && ! THUMB_IS_FUNC (inst.reloc.exp.X_add_symbol)) - inst.reloc.exp.X_add_symbol = - find_real_start (inst.reloc.exp.X_add_symbol); -} - -static void -do_t_bx (str) - char * str; -{ - int reg; - - skip_whitespace (str); - - if ((reg = thumb_reg (&str, THUMB_REG_ANY)) == FAIL) - return; - - /* This sets THUMB_H2 from the top bit of reg. */ - inst.instruction |= reg << 3; - - /* ??? FIXME: Should add a hacky reloc here if reg is REG_PC. The reloc - should cause the alignment to be checked once it is known. This is - because BX PC only works if the instruction is word aligned. */ - - end_of_line (str); -} - -static void -do_t_compare (str) - char * str; -{ - thumb_mov_compare (str, THUMB_COMPARE); -} - -static void -do_t_ldmstm (str) - char * str; -{ - int Rb; - long range; - - skip_whitespace (str); - - if ((Rb = thumb_reg (&str, THUMB_REG_LO)) == FAIL) - return; - - if (*str != '!') - as_warn (_("inserted missing '!': load/store multiple always writes back base register")); - else - str++; - - if (skip_past_comma (&str) == FAIL - || (range = reg_list (&str)) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (inst.reloc.type != BFD_RELOC_NONE) - { - /* This really doesn't seem worth it. */ - inst.reloc.type = BFD_RELOC_NONE; - inst.error = _("expression too complex"); - return; - } - - if (range & ~0xff) - { - inst.error = _("only lo-regs valid in load/store multiple"); - return; - } - - inst.instruction |= (Rb << 8) | range; - end_of_line (str); -} - -static void -do_t_ldr (str) - char * str; -{ - thumb_load_store (str, THUMB_LOAD, THUMB_WORD); -} - -static void -do_t_ldrb (str) - char * str; -{ - thumb_load_store (str, THUMB_LOAD, THUMB_BYTE); -} - -static void -do_t_ldrh (str) - char * str; -{ - thumb_load_store (str, THUMB_LOAD, THUMB_HALFWORD); -} - -static void -do_t_lds (str) - char * str; -{ - int Rd, Rb, Ro; - - skip_whitespace (str); - - if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL - || skip_past_comma (&str) == FAIL - || *str++ != '[' - || (Rb = thumb_reg (&str, THUMB_REG_LO)) == FAIL - || skip_past_comma (&str) == FAIL - || (Ro = thumb_reg (&str, THUMB_REG_LO)) == FAIL - || *str++ != ']') - { - if (! inst.error) - inst.error = _("syntax: ldrs[b] Rd, [Rb, Ro]"); - return; - } - - inst.instruction |= Rd | (Rb << 3) | (Ro << 6); - end_of_line (str); -} - -static void -do_t_lsl (str) - char * str; -{ - thumb_shift (str, THUMB_LSL); -} - -static void -do_t_lsr (str) - char * str; -{ - thumb_shift (str, THUMB_LSR); -} - -static void -do_t_mov (str) - char * str; -{ - thumb_mov_compare (str, THUMB_MOVE); -} - -static void -do_t_push_pop (str) - char * str; -{ - long range; - - skip_whitespace (str); - - if ((range = reg_list (&str)) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (inst.reloc.type != BFD_RELOC_NONE) - { - /* This really doesn't seem worth it. */ - inst.reloc.type = BFD_RELOC_NONE; - inst.error = _("expression too complex"); - return; - } - - if (range & ~0xff) - { - if ((inst.instruction == T_OPCODE_PUSH - && (range & ~0xff) == 1 << REG_LR) - || (inst.instruction == T_OPCODE_POP - && (range & ~0xff) == 1 << REG_PC)) - { - inst.instruction |= THUMB_PP_PC_LR; - range &= 0xff; - } - else - { - inst.error = _("invalid register list to push/pop instruction"); - return; - } - } - - inst.instruction |= range; - end_of_line (str); -} - -static void -do_t_str (str) - char * str; -{ - thumb_load_store (str, THUMB_STORE, THUMB_WORD); -} - -static void -do_t_strb (str) - char * str; -{ - thumb_load_store (str, THUMB_STORE, THUMB_BYTE); -} - -static void -do_t_strh (str) - char * str; -{ - thumb_load_store (str, THUMB_STORE, THUMB_HALFWORD); -} - -static void -do_t_sub (str) - char * str; -{ - thumb_add_sub (str, 1); -} - -static void -do_t_swi (str) - char * str; -{ - skip_whitespace (str); - - if (my_get_expression (&inst.reloc.exp, &str)) - return; - - inst.reloc.type = BFD_RELOC_ARM_SWI; - end_of_line (str); -} - -static void -do_t_adr (str) - char * str; -{ - int reg; - - /* This is a pseudo-op of the form "adr rd, label" to be converted - into a relative address of the form "add rd, pc, #label-.-4". */ - skip_whitespace (str); - - /* Store Rd in temporary location inside instruction. */ - if ((reg = reg_required_here (&str, 4)) == FAIL - || (reg > 7) /* For Thumb reg must be r0..r7. */ - || skip_past_comma (&str) == FAIL - || my_get_expression (&inst.reloc.exp, &str)) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } - - inst.reloc.type = BFD_RELOC_ARM_THUMB_ADD; - inst.reloc.exp.X_add_number -= 4; /* PC relative adjust. */ - inst.reloc.pc_rel = 1; - inst.instruction |= REG_PC; /* Rd is already placed into the instruction. */ - - end_of_line (str); -} - -static void -insert_reg (r, htab) - const struct reg_entry *r; - struct hash_control *htab; -{ - int len = strlen (r->name) + 2; - char * buf = (char *) xmalloc (len); - char * buf2 = (char *) xmalloc (len); - int i = 0; - -#ifdef REGISTER_PREFIX - buf[i++] = REGISTER_PREFIX; -#endif - - strcpy (buf + i, r->name); - - for (i = 0; buf[i]; i++) - buf2[i] = TOUPPER (buf[i]); - - buf2[i] = '\0'; - - hash_insert (htab, buf, (PTR) r); - hash_insert (htab, buf2, (PTR) r); -} - -static void -build_reg_hsh (map) - struct reg_map *map; -{ - const struct reg_entry *r; - - if ((map->htab = hash_new ()) == NULL) - as_fatal (_("virtual memory exhausted")); - - for (r = map->names; r->name != NULL; r++) - insert_reg (r, map->htab); -} - -static void -insert_reg_alias (str, regnum, htab) - char *str; - int regnum; - struct hash_control *htab; -{ - const char *error; - struct reg_entry *new = xmalloc (sizeof (struct reg_entry)); - const char *name = xmalloc (strlen (str) + 1); - - strcpy ((char *) name, str); - - new->name = name; - new->number = regnum; - new->builtin = FALSE; - - error = hash_insert (htab, name, (PTR) new); - if (error) - { - as_bad (_("failed to create an alias for %s, reason: %s"), - str, error); - free ((char *) name); - free (new); - } -} - -/* Look for the .req directive. This is of the form: - - new_register_name .req existing_register_name - - If we find one, or if it looks sufficiently like one that we want to - handle any error here, return non-zero. Otherwise return zero. */ -static int -create_register_alias (newname, p) - char *newname; - char *p; -{ - char *q; - char c; - - q = p; - skip_whitespace (q); - - c = *p; - *p = '\0'; - - if (*q && !strncmp (q, ".req ", 5)) - { - char *copy_of_str; - char *r; - -#ifdef IGNORE_OPCODE_CASE - newname = original_case_string; -#endif - copy_of_str = newname; - - q += 4; - skip_whitespace (q); - - for (r = q; *r != '\0'; r++) - if (*r == ' ') - break; - - if (r != q) - { - enum arm_reg_type new_type, old_type; - int old_regno; - char d = *r; - - *r = '\0'; - old_type = arm_reg_parse_any (q); - *r = d; - - new_type = arm_reg_parse_any (newname); - - if (new_type == REG_TYPE_MAX) - { - if (old_type != REG_TYPE_MAX) - { - old_regno = arm_reg_parse (&q, all_reg_maps[old_type].htab); - insert_reg_alias (newname, old_regno, - all_reg_maps[old_type].htab); - } - else - as_warn (_("register '%s' does not exist\n"), q); - } - else if (old_type == REG_TYPE_MAX) - { - as_warn (_("ignoring redefinition of register alias '%s' to non-existant register '%s'"), - copy_of_str, q); - } - else - { - /* Do not warn about redefinitions to the same alias. */ - if (new_type != old_type - || (arm_reg_parse (&q, all_reg_maps[old_type].htab) - != arm_reg_parse (&q, all_reg_maps[new_type].htab))) - as_warn (_("ignoring redefinition of register alias '%s'"), - copy_of_str); - - } - } - else - as_warn (_("ignoring incomplete .req pseuso op")); - - *p = c; - return 1; - } - - *p = c; - return 0; -} - -static void -set_constant_flonums () -{ - int i; - - for (i = 0; i < NUM_FLOAT_VALS; i++) - if (atof_ieee ((char *) fp_const[i], 'x', fp_values[i]) == NULL) - abort (); -} - -/* Iterate over the base tables to create the instruction patterns. */ -static void -build_arm_ops_hsh () -{ - unsigned int i; - unsigned int j; - static struct obstack insn_obstack; - - obstack_begin (&insn_obstack, 4000); - - for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++) - { - const struct asm_opcode *insn = insns + i; - - if (insn->cond_offset != 0) - { - /* Insn supports conditional execution. Build the varaints - and insert them in the hash table. */ - for (j = 0; j < sizeof (conds) / sizeof (struct asm_cond); j++) - { - unsigned len = strlen (insn->template); - struct asm_opcode *new; - char *template; - - new = obstack_alloc (&insn_obstack, sizeof (struct asm_opcode)); - /* All condition codes are two characters. */ - template = obstack_alloc (&insn_obstack, len + 3); - - strncpy (template, insn->template, insn->cond_offset); - strcpy (template + insn->cond_offset, conds[j].template); - if (len > insn->cond_offset) - strcpy (template + insn->cond_offset + 2, - insn->template + insn->cond_offset); - new->template = template; - new->cond_offset = 0; - new->variant = insn->variant; - new->parms = insn->parms; - new->value = (insn->value & ~COND_MASK) | conds[j].value; - - hash_insert (arm_ops_hsh, new->template, (PTR) new); - } - } - /* Finally, insert the unconditional insn in the table directly; - no need to build a copy. */ - hash_insert (arm_ops_hsh, insn->template, (PTR) insn); - } -} - -#if 0 /* Suppressed - for now. */ -#if defined OBJ_ELF || defined OBJ_COFF - -#ifdef OBJ_ELF -#define arm_Note Elf_External_Note -#else -typedef struct -{ - unsigned char namesz[4]; /* Size of entry's owner string. */ - unsigned char descsz[4]; /* Size of the note descriptor. */ - unsigned char type[4]; /* Interpretation of the descriptor. */ - char name[1]; /* Start of the name+desc data. */ -} arm_Note; -#endif - -/* The description is kept to a fix sized in order to make updating - it and merging it easier. */ -#define ARM_NOTE_DESCRIPTION_LENGTH 8 - -static void -arm_add_note (name, description, type) - const char * name; - const char * description; - unsigned int type; -{ - arm_Note note ATTRIBUTE_UNUSED; - char * p; - unsigned int name_len; - - name_len = (strlen (name) + 1 + 3) & ~3; - - p = frag_more (sizeof (note.namesz)); - md_number_to_chars (p, (valueT) name_len, sizeof (note.namesz)); - - p = frag_more (sizeof (note.descsz)); - md_number_to_chars (p, (valueT) ARM_NOTE_DESCRIPTION_LENGTH, sizeof (note.descsz)); - - p = frag_more (sizeof (note.type)); - md_number_to_chars (p, (valueT) type, sizeof (note.type)); - - p = frag_more (name_len); - strcpy (p, name); - - p = frag_more (ARM_NOTE_DESCRIPTION_LENGTH); - strncpy (p, description, ARM_NOTE_DESCRIPTION_LENGTH); - frag_align (2, 0, 0); -} -#endif -#endif - -void -md_begin () -{ - unsigned mach; - unsigned int i; - - if ( (arm_ops_hsh = hash_new ()) == NULL - || (arm_tops_hsh = hash_new ()) == NULL - || (arm_cond_hsh = hash_new ()) == NULL - || (arm_shift_hsh = hash_new ()) == NULL - || (arm_psr_hsh = hash_new ()) == NULL) - as_fatal (_("virtual memory exhausted")); - - build_arm_ops_hsh (); - for (i = 0; i < sizeof (tinsns) / sizeof (struct thumb_opcode); i++) - hash_insert (arm_tops_hsh, tinsns[i].template, (PTR) (tinsns + i)); - for (i = 0; i < sizeof (conds) / sizeof (struct asm_cond); i++) - hash_insert (arm_cond_hsh, conds[i].template, (PTR) (conds + i)); - for (i = 0; i < sizeof (shift_names) / sizeof (struct asm_shift_name); i++) - hash_insert (arm_shift_hsh, shift_names[i].name, (PTR) (shift_names + i)); - for (i = 0; i < sizeof (psrs) / sizeof (struct asm_psr); i++) - hash_insert (arm_psr_hsh, psrs[i].template, (PTR) (psrs + i)); - - for (i = (int) REG_TYPE_FIRST; i < (int) REG_TYPE_MAX; i++) - build_reg_hsh (all_reg_maps + i); - - set_constant_flonums (); - - /* Set the cpu variant based on the command-line options. We prefer - -mcpu= over -march= if both are set (as for GCC); and we prefer - -mfpu= over any other way of setting the floating point unit. - Use of legacy options with new options are faulted. */ - if (legacy_cpu != -1) - { - if (mcpu_cpu_opt != -1 || march_cpu_opt != -1) - as_bad (_("use of old and new-style options to set CPU type")); - - mcpu_cpu_opt = legacy_cpu; - } - else if (mcpu_cpu_opt == -1) - mcpu_cpu_opt = march_cpu_opt; - - if (legacy_fpu != -1) - { - if (mfpu_opt != -1) - as_bad (_("use of old and new-style options to set FPU type")); - - mfpu_opt = legacy_fpu; - } - else if (mfpu_opt == -1) - { -#if !(defined (TE_LINUX) || defined (TE_NetBSD)) - /* Some environments specify a default FPU. If they don't, infer it - from the processor. */ - if (mcpu_fpu_opt != -1) - mfpu_opt = mcpu_fpu_opt; - else - mfpu_opt = march_fpu_opt; -#else - mfpu_opt = FPU_DEFAULT; -#endif - } - - if (mfpu_opt == -1) - { - if (mcpu_cpu_opt == -1) - mfpu_opt = FPU_DEFAULT; - else if (mcpu_cpu_opt & ARM_EXT_V5) - mfpu_opt = FPU_ARCH_VFP_V2; - else - mfpu_opt = FPU_ARCH_FPA; - } - - if (mcpu_cpu_opt == -1) - mcpu_cpu_opt = CPU_DEFAULT; - - cpu_variant = mcpu_cpu_opt | mfpu_opt; - -#if defined OBJ_COFF || defined OBJ_ELF - { - unsigned int flags = 0; - - /* Set the flags in the private structure. */ - if (uses_apcs_26) flags |= F_APCS26; - if (support_interwork) flags |= F_INTERWORK; - if (uses_apcs_float) flags |= F_APCS_FLOAT; - if (pic_code) flags |= F_PIC; - if ((cpu_variant & FPU_ANY) == FPU_NONE - || (cpu_variant & FPU_ANY) == FPU_ARCH_VFP) /* VFP layout only. */ - { - flags |= F_SOFT_FLOAT; - } - switch (mfloat_abi_opt) - { - case ARM_FLOAT_ABI_SOFT: - case ARM_FLOAT_ABI_SOFTFP: - flags |= F_SOFT_FLOAT; - break; - - case ARM_FLOAT_ABI_HARD: - if (flags & F_SOFT_FLOAT) - as_bad (_("hard-float conflicts with specified fpu")); - break; - } - /* Using VFP conventions (even if soft-float). */ - if (cpu_variant & FPU_VFP_EXT_NONE) flags |= F_VFP_FLOAT; - -#if defined OBJ_ELF - if (cpu_variant & FPU_ARCH_MAVERICK) - flags |= EF_ARM_MAVERICK_FLOAT; -#endif - - bfd_set_private_flags (stdoutput, flags); - - /* We have run out flags in the COFF header to encode the - status of ATPCS support, so instead we create a dummy, - empty, debug section called .arm.atpcs. */ - if (atpcs) - { - asection * sec; - - sec = bfd_make_section (stdoutput, ".arm.atpcs"); - - if (sec != NULL) - { - bfd_set_section_flags - (stdoutput, sec, SEC_READONLY | SEC_DEBUGGING /* | SEC_HAS_CONTENTS */); - bfd_set_section_size (stdoutput, sec, 0); - bfd_set_section_contents (stdoutput, sec, NULL, 0, 0); - } - } - } -#endif - - /* Record the CPU type as well. */ - switch (cpu_variant & ARM_CPU_MASK) - { - case ARM_2: - mach = bfd_mach_arm_2; - break; - - case ARM_3: /* Also ARM_250. */ - mach = bfd_mach_arm_2a; - break; - - case ARM_6: /* Also ARM_7. */ - mach = bfd_mach_arm_3; - break; - - default: - mach = bfd_mach_arm_unknown; - break; - } - - /* Catch special cases. */ - if (cpu_variant & ARM_CEXT_IWMMXT) - mach = bfd_mach_arm_iWMMXt; - else if (cpu_variant & ARM_CEXT_XSCALE) - mach = bfd_mach_arm_XScale; - else if (cpu_variant & ARM_CEXT_MAVERICK) - mach = bfd_mach_arm_ep9312; - else if (cpu_variant & ARM_EXT_V5E) - mach = bfd_mach_arm_5TE; - else if (cpu_variant & ARM_EXT_V5) - { - if (cpu_variant & ARM_EXT_V4T) - mach = bfd_mach_arm_5T; - else - mach = bfd_mach_arm_5; - } - else if (cpu_variant & ARM_EXT_V4) - { - if (cpu_variant & ARM_EXT_V4T) - mach = bfd_mach_arm_4T; - else - mach = bfd_mach_arm_4; - } - else if (cpu_variant & ARM_EXT_V3M) - mach = bfd_mach_arm_3M; - -#if 0 /* Suppressed - for now. */ -#if defined (OBJ_ELF) || defined (OBJ_COFF) - - /* Create a .note section to fully identify this arm binary. */ - -#define NOTE_ARCH_STRING "arch: " - -#if defined OBJ_COFF && ! defined NT_VERSION -#define NT_VERSION 1 -#define NT_ARCH 2 -#endif - - { - segT current_seg = now_seg; - subsegT current_subseg = now_subseg; - asection * arm_arch; - const char * arch_string; - - arm_arch = bfd_make_section_old_way (stdoutput, ARM_NOTE_SECTION); - -#ifdef OBJ_COFF - bfd_set_section_flags (stdoutput, arm_arch, - SEC_DATA | SEC_ALLOC | SEC_LOAD | SEC_LINK_ONCE \ - | SEC_HAS_CONTENTS); -#else - bfd_set_section_flags (stdoutput, arm_arch, - SEC_READONLY | SEC_HAS_CONTENTS); -#endif - arm_arch->output_section = arm_arch; - subseg_set (arm_arch, 0); - - switch (mach) - { - default: - case bfd_mach_arm_unknown: arch_string = "unknown"; break; - case bfd_mach_arm_2: arch_string = "armv2"; break; - case bfd_mach_arm_2a: arch_string = "armv2a"; break; - case bfd_mach_arm_3: arch_string = "armv3"; break; - case bfd_mach_arm_3M: arch_string = "armv3M"; break; - case bfd_mach_arm_4: arch_string = "armv4"; break; - case bfd_mach_arm_4T: arch_string = "armv4t"; break; - case bfd_mach_arm_5: arch_string = "armv5"; break; - case bfd_mach_arm_5T: arch_string = "armv5t"; break; - case bfd_mach_arm_5TE: arch_string = "armv5te"; break; - case bfd_mach_arm_XScale: arch_string = "XScale"; break; - case bfd_mach_arm_ep9312: arch_string = "ep9312"; break; - case bfd_mach_arm_iWMMXt: arch_string = "iWMMXt"; break; - } - - arm_add_note (NOTE_ARCH_STRING, arch_string, NT_ARCH); - - subseg_set (current_seg, current_subseg); - } -#endif -#endif /* Suppressed code. */ - - bfd_set_arch_mach (stdoutput, TARGET_ARCH, mach); -} - -/* Turn an integer of n bytes (in val) into a stream of bytes appropriate - for use in the a.out file, and stores them in the array pointed to by buf. - This knows about the endian-ness of the target machine and does - THE RIGHT THING, whatever it is. Possible values for n are 1 (byte) - 2 (short) and 4 (long) Floating numbers are put out as a series of - LITTLENUMS (shorts, here at least). */ - -void -md_number_to_chars (buf, val, n) - char * buf; - valueT val; - int n; -{ - if (target_big_endian) - number_to_chars_bigendian (buf, val, n); - else - number_to_chars_littleendian (buf, val, n); -} - -static valueT -md_chars_to_number (buf, n) - char * buf; - int n; -{ - valueT result = 0; - unsigned char * where = (unsigned char *) buf; - - if (target_big_endian) - { - while (n--) - { - result <<= 8; - result |= (*where++ & 255); - } - } - else - { - while (n--) - { - result <<= 8; - result |= (where[n] & 255); - } - } - - return result; -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. - - Note that fp constants aren't represent in the normal way on the ARM. - In big endian mode, things are as expected. However, in little endian - mode fp constants are big-endian word-wise, and little-endian byte-wise - within the words. For example, (double) 1.1 in big endian mode is - the byte sequence 3f f1 99 99 99 99 99 9a, and in little endian mode is - the byte sequence 99 99 f1 3f 9a 99 99 99. - - ??? The format of 12 byte floats is uncertain according to gcc's arm.h. */ - -char * -md_atof (type, litP, sizeP) - char type; - char * litP; - int * sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - char *t; - int i; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("bad call to MD_ATOF()"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * 2; - - if (target_big_endian) - { - for (i = 0; i < prec; i++) - { - md_number_to_chars (litP, (valueT) words[i], 2); - litP += 2; - } - } - else - { - if (cpu_variant & FPU_ARCH_VFP) - for (i = prec - 1; i >= 0; i--) - { - md_number_to_chars (litP, (valueT) words[i], 2); - litP += 2; - } - else - /* For a 4 byte float the order of elements in `words' is 1 0. - For an 8 byte float the order is 1 0 3 2. */ - for (i = 0; i < prec; i += 2) - { - md_number_to_chars (litP, (valueT) words[i + 1], 2); - md_number_to_chars (litP + 2, (valueT) words[i], 2); - litP += 4; - } - } - - return 0; -} - -/* The knowledge of the PC's pipeline offset is built into the insns - themselves. */ - -long -md_pcrel_from (fixP) - fixS * fixP; -{ - if (fixP->fx_addsy - && S_GET_SEGMENT (fixP->fx_addsy) == undefined_section - && fixP->fx_subsy == NULL) - return 0; - - if (fixP->fx_pcrel && (fixP->fx_r_type == BFD_RELOC_ARM_THUMB_ADD)) - { - /* PC relative addressing on the Thumb is slightly odd - as the bottom two bits of the PC are forced to zero - for the calculation. */ - return (fixP->fx_where + fixP->fx_frag->fr_address) & ~3; - } - -#ifdef TE_WINCE - /* The pattern was adjusted to accommodate CE's off-by-one fixups, - so we un-adjust here to compensate for the accommodation. */ - return fixP->fx_where + fixP->fx_frag->fr_address + 8; -#else - return fixP->fx_where + fixP->fx_frag->fr_address; -#endif -} - -/* Round up a section size to the appropriate boundary. */ - -valueT -md_section_align (segment, size) - segT segment ATTRIBUTE_UNUSED; - valueT size; -{ -#ifdef OBJ_ELF - return size; -#else - /* Round all sects to multiple of 4. */ - return (size + 3) & ~3; -#endif -} - -/* Under ELF we need to default _GLOBAL_OFFSET_TABLE. - Otherwise we have no need to default values of symbols. */ - -symbolS * -md_undefined_symbol (name) - char * name ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_ELF - if (name[0] == '_' && name[1] == 'G' - && streq (name, GLOBAL_OFFSET_TABLE_NAME)) - { - if (!GOT_symbol) - { - if (symbol_find (name)) - as_bad ("GOT already in the symbol table"); - - GOT_symbol = symbol_new (name, undefined_section, - (valueT) 0, & zero_address_frag); - } - - return GOT_symbol; - } -#endif - - return 0; -} - -/* arm_reg_parse () := if it looks like a register, return its token and - advance the pointer. */ - -static int -arm_reg_parse (ccp, htab) - register char ** ccp; - struct hash_control *htab; -{ - char * start = * ccp; - char c; - char * p; - struct reg_entry * reg; - -#ifdef REGISTER_PREFIX - if (*start != REGISTER_PREFIX) - return FAIL; - p = start + 1; -#else - p = start; -#ifdef OPTIONAL_REGISTER_PREFIX - if (*p == OPTIONAL_REGISTER_PREFIX) - p++, start++; -#endif -#endif - if (!ISALPHA (*p) || !is_name_beginner (*p)) - return FAIL; - - c = *p++; - while (ISALPHA (c) || ISDIGIT (c) || c == '_') - c = *p++; - - *--p = 0; - reg = (struct reg_entry *) hash_find (htab, start); - *p = c; - - if (reg) - { - *ccp = p; - return reg->number; - } - - return FAIL; -} - -/* Search for the following register name in each of the possible reg name - tables. Return the classification if found, or REG_TYPE_MAX if not - present. */ -static enum arm_reg_type -arm_reg_parse_any (cp) - char *cp; -{ - int i; - - for (i = (int) REG_TYPE_FIRST; i < (int) REG_TYPE_MAX; i++) - if (arm_reg_parse (&cp, all_reg_maps[i].htab) != FAIL) - return (enum arm_reg_type) i; - - return REG_TYPE_MAX; -} - -void -md_apply_fix3 (fixP, valP, seg) - fixS * fixP; - valueT * valP; - segT seg; -{ - offsetT value = * valP; - offsetT newval; - unsigned int newimm; - unsigned long temp; - int sign; - char * buf = fixP->fx_where + fixP->fx_frag->fr_literal; - arm_fix_data * arm_data = (arm_fix_data *) fixP->tc_fix_data; - - assert (fixP->fx_r_type < BFD_RELOC_UNUSED); - - /* Note whether this will delete the relocation. */ -#if 0 - /* Patch from REarnshaw to JDavis (disabled for the moment, since it - doesn't work fully.) */ - if ((fixP->fx_addsy == 0 || symbol_constant_p (fixP->fx_addsy)) - && !fixP->fx_pcrel) -#else - if (fixP->fx_addsy == 0 && !fixP->fx_pcrel) -#endif - fixP->fx_done = 1; - - /* If this symbol is in a different section then we need to leave it for - the linker to deal with. Unfortunately, md_pcrel_from can't tell, - so we have to undo it's effects here. */ - if (fixP->fx_pcrel) - { - if (fixP->fx_addsy != NULL - && S_IS_DEFINED (fixP->fx_addsy) - && S_GET_SEGMENT (fixP->fx_addsy) != seg) - { - if (target_oabi - && (fixP->fx_r_type == BFD_RELOC_ARM_PCREL_BRANCH - || fixP->fx_r_type == BFD_RELOC_ARM_PCREL_BLX - )) - value = 0; - else - value += md_pcrel_from (fixP); - } - } - - /* Remember value for emit_reloc. */ - fixP->fx_addnumber = value; - - switch (fixP->fx_r_type) - { - case BFD_RELOC_ARM_IMMEDIATE: - newimm = validate_immediate (value); - temp = md_chars_to_number (buf, INSN_SIZE); - - /* If the instruction will fail, see if we can fix things up by - changing the opcode. */ - if (newimm == (unsigned int) FAIL - && (newimm = negate_data_op (&temp, value)) == (unsigned int) FAIL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid constant (%lx) after fixup"), - (unsigned long) value); - break; - } - - newimm |= (temp & 0xfffff000); - md_number_to_chars (buf, (valueT) newimm, INSN_SIZE); - fixP->fx_done = 1; - break; - - case BFD_RELOC_ARM_ADRL_IMMEDIATE: - { - unsigned int highpart = 0; - unsigned int newinsn = 0xe1a00000; /* nop. */ - - newimm = validate_immediate (value); - temp = md_chars_to_number (buf, INSN_SIZE); - - /* If the instruction will fail, see if we can fix things up by - changing the opcode. */ - if (newimm == (unsigned int) FAIL - && (newimm = negate_data_op (& temp, value)) == (unsigned int) FAIL) - { - /* No ? OK - try using two ADD instructions to generate - the value. */ - newimm = validate_immediate_twopart (value, & highpart); - - /* Yes - then make sure that the second instruction is - also an add. */ - if (newimm != (unsigned int) FAIL) - newinsn = temp; - /* Still No ? Try using a negated value. */ - else if ((newimm = validate_immediate_twopart (- value, & highpart)) != (unsigned int) FAIL) - temp = newinsn = (temp & OPCODE_MASK) | OPCODE_SUB << DATA_OP_SHIFT; - /* Otherwise - give up. */ - else - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("unable to compute ADRL instructions for PC offset of 0x%lx"), - (long) value); - break; - } - - /* Replace the first operand in the 2nd instruction (which - is the PC) with the destination register. We have - already added in the PC in the first instruction and we - do not want to do it again. */ - newinsn &= ~ 0xf0000; - newinsn |= ((newinsn & 0x0f000) << 4); - } - - newimm |= (temp & 0xfffff000); - md_number_to_chars (buf, (valueT) newimm, INSN_SIZE); - - highpart |= (newinsn & 0xfffff000); - md_number_to_chars (buf + INSN_SIZE, (valueT) highpart, INSN_SIZE); - } - break; - - case BFD_RELOC_ARM_OFFSET_IMM: - sign = value >= 0; - - if (value < 0) - value = - value; - - if (validate_offset_imm (value, 0) == FAIL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("bad immediate value for offset (%ld)"), - (long) value); - break; - } - - newval = md_chars_to_number (buf, INSN_SIZE); - newval &= 0xff7ff000; - newval |= value | (sign ? INDEX_UP : 0); - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_OFFSET_IMM8: - case BFD_RELOC_ARM_HWLITERAL: - sign = value >= 0; - - if (value < 0) - value = - value; - - if (validate_offset_imm (value, 1) == FAIL) - { - if (fixP->fx_r_type == BFD_RELOC_ARM_HWLITERAL) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid literal constant: pool needs to be closer")); - else - as_bad (_("bad immediate value for half-word offset (%ld)"), - (long) value); - break; - } - - newval = md_chars_to_number (buf, INSN_SIZE); - newval &= 0xff7ff0f0; - newval |= ((value >> 4) << 8) | (value & 0xf) | (sign ? INDEX_UP : 0); - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_LITERAL: - sign = value >= 0; - - if (value < 0) - value = - value; - - if (validate_offset_imm (value, 0) == FAIL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid literal constant: pool needs to be closer")); - break; - } - - newval = md_chars_to_number (buf, INSN_SIZE); - newval &= 0xff7ff000; - newval |= value | (sign ? INDEX_UP : 0); - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_SHIFT_IMM: - newval = md_chars_to_number (buf, INSN_SIZE); - if (((unsigned long) value) > 32 - || (value == 32 - && (((newval & 0x60) == 0) || (newval & 0x60) == 0x60))) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("shift expression is too large")); - break; - } - - if (value == 0) - /* Shifts of zero must be done as lsl. */ - newval &= ~0x60; - else if (value == 32) - value = 0; - newval &= 0xfffff07f; - newval |= (value & 0x1f) << 7; - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_SWI: - if (arm_data->thumb_mode) - { - if (((unsigned long) value) > 0xff) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid swi expression")); - newval = md_chars_to_number (buf, THUMB_SIZE) & 0xff00; - newval |= value; - md_number_to_chars (buf, newval, THUMB_SIZE); - } - else - { - if (((unsigned long) value) > 0x00ffffff) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid swi expression")); - newval = md_chars_to_number (buf, INSN_SIZE) & 0xff000000; - newval |= value; - md_number_to_chars (buf, newval, INSN_SIZE); - } - break; - - case BFD_RELOC_ARM_MULTI: - if (((unsigned long) value) > 0xffff) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid expression in load/store multiple")); - newval = value | md_chars_to_number (buf, INSN_SIZE); - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_PCREL_BRANCH: - newval = md_chars_to_number (buf, INSN_SIZE); - - /* Sign-extend a 24-bit number. */ -#define SEXT24(x) ((((x) & 0xffffff) ^ (~ 0x7fffff)) + 0x800000) - -#ifdef OBJ_ELF - if (! target_oabi) - value = fixP->fx_offset; -#endif - - /* We are going to store value (shifted right by two) in the - instruction, in a 24 bit, signed field. Thus we need to check - that none of the top 8 bits of the shifted value (top 7 bits of - the unshifted, unsigned value) are set, or that they are all set. */ - if ((value & ~ ((offsetT) 0x1ffffff)) != 0 - && ((value & ~ ((offsetT) 0x1ffffff)) != ~ ((offsetT) 0x1ffffff))) - { -#ifdef OBJ_ELF - /* Normally we would be stuck at this point, since we cannot store - the absolute address that is the destination of the branch in the - 24 bits of the branch instruction. If however, we happen to know - that the destination of the branch is in the same section as the - branch instruction itself, then we can compute the relocation for - ourselves and not have to bother the linker with it. - - FIXME: The tests for OBJ_ELF and ! target_oabi are only here - because I have not worked out how to do this for OBJ_COFF or - target_oabi. */ - if (! target_oabi - && fixP->fx_addsy != NULL - && S_IS_DEFINED (fixP->fx_addsy) - && S_GET_SEGMENT (fixP->fx_addsy) == seg) - { - /* Get pc relative value to go into the branch. */ - value = * valP; - - /* Permit a backward branch provided that enough bits - are set. Allow a forwards branch, provided that - enough bits are clear. */ - if ( (value & ~ ((offsetT) 0x1ffffff)) == ~ ((offsetT) 0x1ffffff) - || (value & ~ ((offsetT) 0x1ffffff)) == 0) - fixP->fx_done = 1; - } - - if (! fixP->fx_done) -#endif - as_bad_where (fixP->fx_file, fixP->fx_line, - _("GAS can't handle same-section branch dest >= 0x04000000")); - } - - value >>= 2; - value += SEXT24 (newval); - - if ( (value & ~ ((offsetT) 0xffffff)) != 0 - && ((value & ~ ((offsetT) 0xffffff)) != ~ ((offsetT) 0xffffff))) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("out of range branch")); - - newval = (value & 0x00ffffff) | (newval & 0xff000000); - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_PCREL_BLX: - { - offsetT hbit; - newval = md_chars_to_number (buf, INSN_SIZE); - -#ifdef OBJ_ELF - if (! target_oabi) - value = fixP->fx_offset; -#endif - hbit = (value >> 1) & 1; - value = (value >> 2) & 0x00ffffff; - value = (value + (newval & 0x00ffffff)) & 0x00ffffff; - newval = value | (newval & 0xfe000000) | (hbit << 24); - md_number_to_chars (buf, newval, INSN_SIZE); - } - break; - - case BFD_RELOC_THUMB_PCREL_BRANCH9: /* Conditional branch. */ - newval = md_chars_to_number (buf, THUMB_SIZE); - { - addressT diff = (newval & 0xff) << 1; - if (diff & 0x100) - diff |= ~0xff; - - value += diff; - if ((value & ~0xff) && ((value & ~0xff) != ~0xff)) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("branch out of range")); - newval = (newval & 0xff00) | ((value & 0x1ff) >> 1); - } - md_number_to_chars (buf, newval, THUMB_SIZE); - break; - - case BFD_RELOC_THUMB_PCREL_BRANCH12: /* Unconditional branch. */ - newval = md_chars_to_number (buf, THUMB_SIZE); - { - addressT diff = (newval & 0x7ff) << 1; - if (diff & 0x800) - diff |= ~0x7ff; - - value += diff; - if ((value & ~0x7ff) && ((value & ~0x7ff) != ~0x7ff)) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("branch out of range")); - newval = (newval & 0xf800) | ((value & 0xfff) >> 1); - } - md_number_to_chars (buf, newval, THUMB_SIZE); - break; - - case BFD_RELOC_THUMB_PCREL_BLX: - case BFD_RELOC_THUMB_PCREL_BRANCH23: - { - offsetT newval2; - addressT diff; - - newval = md_chars_to_number (buf, THUMB_SIZE); - newval2 = md_chars_to_number (buf + THUMB_SIZE, THUMB_SIZE); - diff = ((newval & 0x7ff) << 12) | ((newval2 & 0x7ff) << 1); - if (diff & 0x400000) - diff |= ~0x3fffff; -#ifdef OBJ_ELF - value = fixP->fx_offset; -#endif - value += diff; - - if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff)) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("branch with link out of range")); - - newval = (newval & 0xf800) | ((value & 0x7fffff) >> 12); - newval2 = (newval2 & 0xf800) | ((value & 0xfff) >> 1); - if (fixP->fx_r_type == BFD_RELOC_THUMB_PCREL_BLX) - /* For a BLX instruction, make sure that the relocation is rounded up - to a word boundary. This follows the semantics of the instruction - which specifies that bit 1 of the target address will come from bit - 1 of the base address. */ - newval2 = (newval2 + 1) & ~ 1; - md_number_to_chars (buf, newval, THUMB_SIZE); - md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE); - } - break; - - case BFD_RELOC_8: - if (fixP->fx_done || fixP->fx_pcrel) - md_number_to_chars (buf, value, 1); -#ifdef OBJ_ELF - else if (!target_oabi) - { - value = fixP->fx_offset; - md_number_to_chars (buf, value, 1); - } -#endif - break; - - case BFD_RELOC_16: - if (fixP->fx_done || fixP->fx_pcrel) - md_number_to_chars (buf, value, 2); -#ifdef OBJ_ELF - else if (!target_oabi) - { - value = fixP->fx_offset; - md_number_to_chars (buf, value, 2); - } -#endif - break; - -#ifdef OBJ_ELF - case BFD_RELOC_ARM_GOT32: - case BFD_RELOC_ARM_GOTOFF: - md_number_to_chars (buf, 0, 4); - break; -#endif - - case BFD_RELOC_RVA: - case BFD_RELOC_32: - if (fixP->fx_done || fixP->fx_pcrel) - md_number_to_chars (buf, value, 4); -#ifdef OBJ_ELF - else if (!target_oabi) - { - value = fixP->fx_offset; - md_number_to_chars (buf, value, 4); - } -#endif - break; - -#ifdef OBJ_ELF - case BFD_RELOC_ARM_PLT32: - /* It appears the instruction is fully prepared at this point. */ - break; -#endif - - case BFD_RELOC_ARM_CP_OFF_IMM: - sign = value >= 0; - if (value < -1023 || value > 1023 || (value & 3)) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("illegal value for co-processor offset")); - if (value < 0) - value = -value; - newval = md_chars_to_number (buf, INSN_SIZE) & 0xff7fff00; - newval |= (value >> 2) | (sign ? INDEX_UP : 0); - md_number_to_chars (buf, newval, INSN_SIZE); - break; - - case BFD_RELOC_ARM_CP_OFF_IMM_S2: - sign = value >= 0; - if (value < -255 || value > 255) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Illegal value for co-processor offset")); - if (value < 0) - value = -value; - newval = md_chars_to_number (buf, INSN_SIZE) & 0xff7fff00; - newval |= value | (sign ? INDEX_UP : 0); - md_number_to_chars (buf, newval , INSN_SIZE); - break; - - case BFD_RELOC_ARM_THUMB_OFFSET: - newval = md_chars_to_number (buf, THUMB_SIZE); - /* Exactly what ranges, and where the offset is inserted depends - on the type of instruction, we can establish this from the - top 4 bits. */ - switch (newval >> 12) - { - case 4: /* PC load. */ - /* Thumb PC loads are somewhat odd, bit 1 of the PC is - forced to zero for these loads, so we will need to round - up the offset if the instruction address is not word - aligned (since the final address produced must be, and - we can only describe word-aligned immediate offsets). */ - - if ((fixP->fx_frag->fr_address + fixP->fx_where + value) & 3) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid offset, target not word aligned (0x%08X)"), - (unsigned int) (fixP->fx_frag->fr_address - + fixP->fx_where + value)); - - if ((value + 2) & ~0x3fe) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid offset, value too big (0x%08lX)"), - (long) value); - - /* Round up, since pc will be rounded down. */ - newval |= (value + 2) >> 2; - break; - - case 9: /* SP load/store. */ - if (value & ~0x3fc) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid offset, value too big (0x%08lX)"), - (long) value); - newval |= value >> 2; - break; - - case 6: /* Word load/store. */ - if (value & ~0x7c) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid offset, value too big (0x%08lX)"), - (long) value); - newval |= value << 4; /* 6 - 2. */ - break; - - case 7: /* Byte load/store. */ - if (value & ~0x1f) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid offset, value too big (0x%08lX)"), - (long) value); - newval |= value << 6; - break; - - case 8: /* Halfword load/store. */ - if (value & ~0x3e) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid offset, value too big (0x%08lX)"), - (long) value); - newval |= value << 5; /* 6 - 1. */ - break; - - default: - as_bad_where (fixP->fx_file, fixP->fx_line, - "Unable to process relocation for thumb opcode: %lx", - (unsigned long) newval); - break; - } - md_number_to_chars (buf, newval, THUMB_SIZE); - break; - - case BFD_RELOC_ARM_THUMB_ADD: - /* This is a complicated relocation, since we use it for all of - the following immediate relocations: - - 3bit ADD/SUB - 8bit ADD/SUB - 9bit ADD/SUB SP word-aligned - 10bit ADD PC/SP word-aligned - - The type of instruction being processed is encoded in the - instruction field: - - 0x8000 SUB - 0x00F0 Rd - 0x000F Rs - */ - newval = md_chars_to_number (buf, THUMB_SIZE); - { - int rd = (newval >> 4) & 0xf; - int rs = newval & 0xf; - int subtract = newval & 0x8000; - - if (rd == REG_SP) - { - if (value & ~0x1fc) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid immediate for stack address calculation")); - newval = subtract ? T_OPCODE_SUB_ST : T_OPCODE_ADD_ST; - newval |= value >> 2; - } - else if (rs == REG_PC || rs == REG_SP) - { - if (subtract || - value & ~0x3fc) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid immediate for address calculation (value = 0x%08lX)"), - (unsigned long) value); - newval = (rs == REG_PC ? T_OPCODE_ADD_PC : T_OPCODE_ADD_SP); - newval |= rd << 8; - newval |= value >> 2; - } - else if (rs == rd) - { - if (value & ~0xff) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid 8bit immediate")); - newval = subtract ? T_OPCODE_SUB_I8 : T_OPCODE_ADD_I8; - newval |= (rd << 8) | value; - } - else - { - if (value & ~0x7) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid 3bit immediate")); - newval = subtract ? T_OPCODE_SUB_I3 : T_OPCODE_ADD_I3; - newval |= rd | (rs << 3) | (value << 6); - } - } - md_number_to_chars (buf, newval, THUMB_SIZE); - break; - - case BFD_RELOC_ARM_THUMB_IMM: - newval = md_chars_to_number (buf, THUMB_SIZE); - switch (newval >> 11) - { - case 0x04: /* 8bit immediate MOV. */ - case 0x05: /* 8bit immediate CMP. */ - if (value < 0 || value > 255) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid immediate: %ld is too large"), - (long) value); - newval |= value; - break; - - default: - abort (); - } - md_number_to_chars (buf, newval, THUMB_SIZE); - break; - - case BFD_RELOC_ARM_THUMB_SHIFT: - /* 5bit shift value (0..31). */ - if (value < 0 || value > 31) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("illegal Thumb shift value: %ld"), (long) value); - newval = md_chars_to_number (buf, THUMB_SIZE) & 0xf03f; - newval |= value << 6; - md_number_to_chars (buf, newval, THUMB_SIZE); - break; - - case BFD_RELOC_VTABLE_INHERIT: - case BFD_RELOC_VTABLE_ENTRY: - fixP->fx_done = 0; - return; - - case BFD_RELOC_NONE: - default: - as_bad_where (fixP->fx_file, fixP->fx_line, - _("bad relocation fixup type (%d)"), fixP->fx_r_type); - } -} - -/* Translate internal representation of relocation info to BFD target - format. */ - -arelent * -tc_gen_reloc (section, fixp) - asection * section ATTRIBUTE_UNUSED; - fixS * fixp; -{ - arelent * reloc; - bfd_reloc_code_real_type code; - - reloc = (arelent *) xmalloc (sizeof (arelent)); - - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; - - /* @@ Why fx_addnumber sometimes and fx_offset other times? */ -#ifndef OBJ_ELF - if (fixp->fx_pcrel == 0) - reloc->addend = fixp->fx_offset; - else - reloc->addend = fixp->fx_offset = reloc->address; -#else /* OBJ_ELF */ - reloc->addend = fixp->fx_offset; -#endif - - switch (fixp->fx_r_type) - { - case BFD_RELOC_8: - if (fixp->fx_pcrel) - { - code = BFD_RELOC_8_PCREL; - break; - } - - case BFD_RELOC_16: - if (fixp->fx_pcrel) - { - code = BFD_RELOC_16_PCREL; - break; - } - - case BFD_RELOC_32: - if (fixp->fx_pcrel) - { - code = BFD_RELOC_32_PCREL; - break; - } - - case BFD_RELOC_ARM_PCREL_BRANCH: - case BFD_RELOC_ARM_PCREL_BLX: - case BFD_RELOC_RVA: - case BFD_RELOC_THUMB_PCREL_BRANCH9: - case BFD_RELOC_THUMB_PCREL_BRANCH12: - case BFD_RELOC_THUMB_PCREL_BRANCH23: - case BFD_RELOC_THUMB_PCREL_BLX: - case BFD_RELOC_VTABLE_ENTRY: - case BFD_RELOC_VTABLE_INHERIT: - code = fixp->fx_r_type; - break; - - case BFD_RELOC_ARM_LITERAL: - case BFD_RELOC_ARM_HWLITERAL: - /* If this is called then the a literal has - been referenced across a section boundary. */ - as_bad_where (fixp->fx_file, fixp->fx_line, - _("literal referenced across section boundary")); - return NULL; - -#ifdef OBJ_ELF - case BFD_RELOC_ARM_GOT32: - case BFD_RELOC_ARM_GOTOFF: - case BFD_RELOC_ARM_PLT32: - code = fixp->fx_r_type; - break; -#endif - - case BFD_RELOC_ARM_IMMEDIATE: - as_bad_where (fixp->fx_file, fixp->fx_line, - _("internal relocation (type: IMMEDIATE) not fixed up")); - return NULL; - - case BFD_RELOC_ARM_ADRL_IMMEDIATE: - as_bad_where (fixp->fx_file, fixp->fx_line, - _("ADRL used for a symbol not defined in the same file")); - return NULL; - - case BFD_RELOC_ARM_OFFSET_IMM: - if (fixp->fx_addsy != NULL - && !S_IS_DEFINED (fixp->fx_addsy) - && S_IS_LOCAL (fixp->fx_addsy)) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("undefined local label `%s'"), - S_GET_NAME (fixp->fx_addsy)); - return NULL; - } - - as_bad_where (fixp->fx_file, fixp->fx_line, - _("internal_relocation (type: OFFSET_IMM) not fixed up")); - return NULL; - - default: - { - char * type; - - switch (fixp->fx_r_type) - { - case BFD_RELOC_ARM_OFFSET_IMM8: type = "OFFSET_IMM8"; break; - case BFD_RELOC_ARM_SHIFT_IMM: type = "SHIFT_IMM"; break; - case BFD_RELOC_ARM_SWI: type = "SWI"; break; - case BFD_RELOC_ARM_MULTI: type = "MULTI"; break; - case BFD_RELOC_ARM_CP_OFF_IMM: type = "CP_OFF_IMM"; break; - case BFD_RELOC_ARM_THUMB_ADD: type = "THUMB_ADD"; break; - case BFD_RELOC_ARM_THUMB_SHIFT: type = "THUMB_SHIFT"; break; - case BFD_RELOC_ARM_THUMB_IMM: type = "THUMB_IMM"; break; - case BFD_RELOC_ARM_THUMB_OFFSET: type = "THUMB_OFFSET"; break; - default: type = _(""); break; - } - as_bad_where (fixp->fx_file, fixp->fx_line, - _("cannot represent %s relocation in this object file format"), - type); - return NULL; - } - } - -#ifdef OBJ_ELF - if ((code == BFD_RELOC_32_PCREL || code == BFD_RELOC_32) - && GOT_symbol - && fixp->fx_addsy == GOT_symbol) - { - code = BFD_RELOC_ARM_GOTPC; - reloc->addend = fixp->fx_offset = reloc->address; - } -#endif - - reloc->howto = bfd_reloc_type_lookup (stdoutput, code); - - if (reloc->howto == NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("cannot represent %s relocation in this object file format"), - bfd_get_reloc_code_name (code)); - return NULL; - } - - /* HACK: Since arm ELF uses Rel instead of Rela, encode the - vtable entry to be used in the relocation's section offset. */ - if (fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - reloc->address = fixp->fx_offset; - - return reloc; -} - -int -md_estimate_size_before_relax (fragP, segtype) - fragS * fragP ATTRIBUTE_UNUSED; - segT segtype ATTRIBUTE_UNUSED; -{ - as_fatal (_("md_estimate_size_before_relax\n")); - return 1; -} - -static void -output_inst (str) - const char *str; -{ - char * to = NULL; - - if (inst.error) - { - as_bad ("%s -- `%s'", inst.error, str); - return; - } - - to = frag_more (inst.size); - - if (thumb_mode && (inst.size > THUMB_SIZE)) - { - assert (inst.size == (2 * THUMB_SIZE)); - md_number_to_chars (to, inst.instruction >> 16, THUMB_SIZE); - md_number_to_chars (to + THUMB_SIZE, inst.instruction, THUMB_SIZE); - } - else if (inst.size > INSN_SIZE) - { - assert (inst.size == (2 * INSN_SIZE)); - md_number_to_chars (to, inst.instruction, INSN_SIZE); - md_number_to_chars (to + INSN_SIZE, inst.instruction, INSN_SIZE); - } - else - md_number_to_chars (to, inst.instruction, inst.size); - - if (inst.reloc.type != BFD_RELOC_NONE) - fix_new_arm (frag_now, to - frag_now->fr_literal, - inst.size, & inst.reloc.exp, inst.reloc.pc_rel, - inst.reloc.type); - -#ifdef OBJ_ELF - dwarf2_emit_insn (inst.size); -#endif -} - -void -md_assemble (str) - char * str; -{ - char c; - char *p; - char *start; - - /* Align the instruction. - This may not be the right thing to do but ... */ -#if 0 - arm_align (2, 0); -#endif - - /* Align the previous label if needed. */ - if (last_label_seen != NULL) - { - symbol_set_frag (last_label_seen, frag_now); - S_SET_VALUE (last_label_seen, (valueT) frag_now_fix ()); - S_SET_SEGMENT (last_label_seen, now_seg); - } - - memset (&inst, '\0', sizeof (inst)); - inst.reloc.type = BFD_RELOC_NONE; - - skip_whitespace (str); - - /* Scan up to the end of the op-code, which must end in white space or - end of string. */ - for (start = p = str; *p != '\0'; p++) - if (*p == ' ') - break; - - if (p == str) - { - as_bad (_("no operator -- statement `%s'\n"), str); - return; - } - - if (thumb_mode) - { - const struct thumb_opcode * opcode; - - c = *p; - *p = '\0'; - opcode = (const struct thumb_opcode *) hash_find (arm_tops_hsh, str); - *p = c; - - if (opcode) - { - /* Check that this instruction is supported for this CPU. */ - if (thumb_mode == 1 && (opcode->variant & cpu_variant) == 0) - { - as_bad (_("selected processor does not support `%s'"), str); - return; - } - - mapping_state (MAP_THUMB); - inst.instruction = opcode->value; - inst.size = opcode->size; - (*opcode->parms) (p); - output_inst (str); - return; - } - } - else - { - const struct asm_opcode * opcode; - - c = *p; - *p = '\0'; - opcode = (const struct asm_opcode *) hash_find (arm_ops_hsh, str); - *p = c; - - if (opcode) - { - /* Check that this instruction is supported for this CPU. */ - if ((opcode->variant & cpu_variant) == 0) - { - as_bad (_("selected processor does not support `%s'"), str); - return; - } - - mapping_state (MAP_ARM); - inst.instruction = opcode->value; - inst.size = INSN_SIZE; - (*opcode->parms) (p); - output_inst (str); - return; - } - } - - /* It wasn't an instruction, but it might be a register alias of the form - alias .req reg. */ - if (create_register_alias (str, p)) - return; - - as_bad (_("bad instruction `%s'"), start); -} - -/* md_parse_option - Invocation line includes a switch not recognized by the base assembler. - See if it's a processor-specific option. - - This routine is somewhat complicated by the need for backwards - compatibility (since older releases of gcc can't be changed). - The new options try to make the interface as compatible as - possible with GCC. - - New options (supported) are: - - -mcpu= Assemble for selected processor - -march= Assemble for selected architecture - -mfpu= Assemble for selected FPU. - -EB/-mbig-endian Big-endian - -EL/-mlittle-endian Little-endian - -k Generate PIC code - -mthumb Start in Thumb mode - -mthumb-interwork Code supports ARM/Thumb interworking - - For now we will also provide support for: - - -mapcs-32 32-bit Program counter - -mapcs-26 26-bit Program counter - -macps-float Floats passed in FP registers - -mapcs-reentrant Reentrant code - -matpcs - (sometime these will probably be replaced with -mapcs= - and -matpcs=) - - The remaining options are only supported for back-wards compatibility. - Cpu variants, the arm part is optional: - -m[arm]1 Currently not supported. - -m[arm]2, -m[arm]250 Arm 2 and Arm 250 processor - -m[arm]3 Arm 3 processor - -m[arm]6[xx], Arm 6 processors - -m[arm]7[xx][t][[d]m] Arm 7 processors - -m[arm]8[10] Arm 8 processors - -m[arm]9[20][tdmi] Arm 9 processors - -mstrongarm[110[0]] StrongARM processors - -mxscale XScale processors - -m[arm]v[2345[t[e]]] Arm architectures - -mall All (except the ARM1) - FP variants: - -mfpa10, -mfpa11 FPA10 and 11 co-processor instructions - -mfpe-old (No float load/store multiples) - -mvfpxd VFP Single precision - -mvfp All VFP - -mno-fpu Disable all floating point instructions - - The following CPU names are recognized: - arm1, arm2, arm250, arm3, arm6, arm600, arm610, arm620, - arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, arm70, arm700, - arm700i, arm710 arm710t, arm720, arm720t, arm740t, arm710c, - arm7100, arm7500, arm7500fe, arm7tdmi, arm8, arm810, arm9, - arm920, arm920t, arm940t, arm946, arm966, arm9tdmi, arm9e, - arm10t arm10e, arm1020t, arm1020e, arm10200e, - strongarm, strongarm110, strongarm1100, strongarm1110, xscale. - - */ - -const char * md_shortopts = "m:k"; - -#ifdef ARM_BI_ENDIAN -#define OPTION_EB (OPTION_MD_BASE + 0) -#define OPTION_EL (OPTION_MD_BASE + 1) -#else -#if TARGET_BYTES_BIG_ENDIAN -#define OPTION_EB (OPTION_MD_BASE + 0) -#else -#define OPTION_EL (OPTION_MD_BASE + 1) -#endif -#endif - -struct option md_longopts[] = -{ -#ifdef OPTION_EB - {"EB", no_argument, NULL, OPTION_EB}, -#endif -#ifdef OPTION_EL - {"EL", no_argument, NULL, OPTION_EL}, -#endif - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -struct arm_option_table -{ - char *option; /* Option name to match. */ - char *help; /* Help information. */ - int *var; /* Variable to change. */ - int value; /* What to change it to. */ - char *deprecated; /* If non-null, print this message. */ -}; - -struct arm_option_table arm_opts[] = -{ - {"k", N_("generate PIC code"), &pic_code, 1, NULL}, - {"mthumb", N_("assemble Thumb code"), &thumb_mode, 1, NULL}, - {"mthumb-interwork", N_("support ARM/Thumb interworking"), - &support_interwork, 1, NULL}, - {"moabi", N_("use old ABI (ELF only)"), &target_oabi, 1, NULL}, - {"mapcs-32", N_("code uses 32-bit program counter"), &uses_apcs_26, 0, NULL}, - {"mapcs-26", N_("code uses 26-bit program counter"), &uses_apcs_26, 1, NULL}, - {"mapcs-float", N_("floating point args are in fp regs"), &uses_apcs_float, - 1, NULL}, - {"mapcs-reentrant", N_("re-entrant code"), &pic_code, 1, NULL}, - {"matpcs", N_("code is ATPCS conformant"), &atpcs, 1, NULL}, - {"mbig-endian", N_("assemble for big-endian"), &target_big_endian, 1, NULL}, - {"mlittle-endian", N_("assemble for little-endian"), &target_big_endian, 1, - NULL}, - - /* These are recognized by the assembler, but have no affect on code. */ - {"mapcs-frame", N_("use frame pointer"), NULL, 0, NULL}, - {"mapcs-stack-check", N_("use stack size checking"), NULL, 0, NULL}, - - /* DON'T add any new processors to this list -- we want the whole list - to go away... Add them to the processors table instead. */ - {"marm1", NULL, &legacy_cpu, ARM_ARCH_V1, N_("use -mcpu=arm1")}, - {"m1", NULL, &legacy_cpu, ARM_ARCH_V1, N_("use -mcpu=arm1")}, - {"marm2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -mcpu=arm2")}, - {"m2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -mcpu=arm2")}, - {"marm250", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm250")}, - {"m250", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm250")}, - {"marm3", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm3")}, - {"m3", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm3")}, - {"marm6", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm6")}, - {"m6", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm6")}, - {"marm600", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm600")}, - {"m600", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm600")}, - {"marm610", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm610")}, - {"m610", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm610")}, - {"marm620", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm620")}, - {"m620", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm620")}, - {"marm7", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7")}, - {"m7", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7")}, - {"marm70", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm70")}, - {"m70", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm70")}, - {"marm700", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700")}, - {"m700", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700")}, - {"marm700i", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700i")}, - {"m700i", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700i")}, - {"marm710", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710")}, - {"m710", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710")}, - {"marm710c", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710c")}, - {"m710c", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710c")}, - {"marm720", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm720")}, - {"m720", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm720")}, - {"marm7d", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7d")}, - {"m7d", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7d")}, - {"marm7di", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7di")}, - {"m7di", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7di")}, - {"marm7m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7m")}, - {"m7m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7m")}, - {"marm7dm", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dm")}, - {"m7dm", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dm")}, - {"marm7dmi", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dmi")}, - {"m7dmi", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dmi")}, - {"marm7100", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7100")}, - {"m7100", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7100")}, - {"marm7500", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500")}, - {"m7500", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500")}, - {"marm7500fe", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500fe")}, - {"m7500fe", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500fe")}, - {"marm7t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, - {"m7t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, - {"marm7tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, - {"m7tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, - {"marm710t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm710t")}, - {"m710t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm710t")}, - {"marm720t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm720t")}, - {"m720t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm720t")}, - {"marm740t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm740t")}, - {"m740t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm740t")}, - {"marm8", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm8")}, - {"m8", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm8")}, - {"marm810", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm810")}, - {"m810", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm810")}, - {"marm9", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9")}, - {"m9", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9")}, - {"marm9tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9tdmi")}, - {"m9tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9tdmi")}, - {"marm920", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm920")}, - {"m920", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm920")}, - {"marm940", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm940")}, - {"m940", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm940")}, - {"mstrongarm", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=strongarm")}, - {"mstrongarm110", NULL, &legacy_cpu, ARM_ARCH_V4, - N_("use -mcpu=strongarm110")}, - {"mstrongarm1100", NULL, &legacy_cpu, ARM_ARCH_V4, - N_("use -mcpu=strongarm1100")}, - {"mstrongarm1110", NULL, &legacy_cpu, ARM_ARCH_V4, - N_("use -mcpu=strongarm1110")}, - {"mxscale", NULL, &legacy_cpu, ARM_ARCH_XSCALE, N_("use -mcpu=xscale")}, - {"miwmmxt", NULL, &legacy_cpu, ARM_ARCH_IWMMXT, N_("use -mcpu=iwmmxt")}, - {"mall", NULL, &legacy_cpu, ARM_ANY, N_("use -mcpu=all")}, - - /* Architecture variants -- don't add any more to this list either. */ - {"mv2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -march=armv2")}, - {"marmv2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -march=armv2")}, - {"mv2a", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -march=armv2a")}, - {"marmv2a", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -march=armv2a")}, - {"mv3", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -march=armv3")}, - {"marmv3", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -march=armv3")}, - {"mv3m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -march=armv3m")}, - {"marmv3m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -march=armv3m")}, - {"mv4", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -march=armv4")}, - {"marmv4", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -march=armv4")}, - {"mv4t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -march=armv4t")}, - {"marmv4t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -march=armv4t")}, - {"mv5", NULL, &legacy_cpu, ARM_ARCH_V5, N_("use -march=armv5")}, - {"marmv5", NULL, &legacy_cpu, ARM_ARCH_V5, N_("use -march=armv5")}, - {"mv5t", NULL, &legacy_cpu, ARM_ARCH_V5T, N_("use -march=armv5t")}, - {"marmv5t", NULL, &legacy_cpu, ARM_ARCH_V5T, N_("use -march=armv5t")}, - {"mv5e", NULL, &legacy_cpu, ARM_ARCH_V5TE, N_("use -march=armv5te")}, - {"marmv5e", NULL, &legacy_cpu, ARM_ARCH_V5TE, N_("use -march=armv5te")}, - - /* Floating point variants -- don't add any more to this list either. */ - {"mfpe-old", NULL, &legacy_fpu, FPU_ARCH_FPE, N_("use -mfpu=fpe")}, - {"mfpa10", NULL, &legacy_fpu, FPU_ARCH_FPA, N_("use -mfpu=fpa10")}, - {"mfpa11", NULL, &legacy_fpu, FPU_ARCH_FPA, N_("use -mfpu=fpa11")}, - {"mno-fpu", NULL, &legacy_fpu, 0, - N_("use either -mfpu=softfpa or -mfpu=softvfp")}, - - {NULL, NULL, NULL, 0, NULL} -}; - -struct arm_cpu_option_table -{ - char *name; - int value; - /* For some CPUs we assume an FPU unless the user explicitly sets - -mfpu=... */ - int default_fpu; -}; - -/* This list should, at a minimum, contain all the cpu names - recognized by GCC. */ -static struct arm_cpu_option_table arm_cpus[] = -{ - {"all", ARM_ANY, FPU_ARCH_FPA}, - {"arm1", ARM_ARCH_V1, FPU_ARCH_FPA}, - {"arm2", ARM_ARCH_V2, FPU_ARCH_FPA}, - {"arm250", ARM_ARCH_V2S, FPU_ARCH_FPA}, - {"arm3", ARM_ARCH_V2S, FPU_ARCH_FPA}, - {"arm6", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm60", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm600", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm610", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm620", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7m", ARM_ARCH_V3M, FPU_ARCH_FPA}, - {"arm7d", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7dm", ARM_ARCH_V3M, FPU_ARCH_FPA}, - {"arm7di", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7dmi", ARM_ARCH_V3M, FPU_ARCH_FPA}, - {"arm70", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm700", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm700i", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm710", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm710t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm720", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm720t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm740t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm710c", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7100", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7500", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7500fe", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"arm7t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm7tdmi", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm8", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"arm810", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"strongarm", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"strongarm1", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"strongarm110", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"strongarm1100", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"strongarm1110", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"arm9", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm920", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm920t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm922t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm940t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"arm9tdmi", ARM_ARCH_V4T, FPU_ARCH_FPA}, - /* For V5 or later processors we default to using VFP; but the user - should really set the FPU type explicitly. */ - {"arm9e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, - {"arm9e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm926ej", ARM_ARCH_V5TEJ, FPU_ARCH_VFP_V2}, - {"arm926ejs", ARM_ARCH_V5TEJ, FPU_ARCH_VFP_V2}, - {"arm946e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, - {"arm946e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm966e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, - {"arm966e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm10t", ARM_ARCH_V5T, FPU_ARCH_VFP_V1}, - {"arm10e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm1020", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm1020t", ARM_ARCH_V5T, FPU_ARCH_VFP_V1}, - {"arm1020e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm1026ejs", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, - {"arm1136js", ARM_ARCH_V6, FPU_NONE}, - {"arm1136jfs", ARM_ARCH_V6, FPU_ARCH_VFP_V2}, - /* ??? XSCALE is really an architecture. */ - {"xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP_V2}, - /* ??? iwmmxt is not a processor. */ - {"iwmmxt", ARM_ARCH_IWMMXT, FPU_ARCH_VFP_V2}, - {"i80200", ARM_ARCH_XSCALE, FPU_ARCH_VFP_V2}, - /* Maverick */ - {"ep9312", ARM_ARCH_V4T | ARM_CEXT_MAVERICK, FPU_ARCH_MAVERICK}, - {NULL, 0, 0} -}; - -struct arm_arch_option_table -{ - char *name; - int value; - int default_fpu; -}; - -/* This list should, at a minimum, contain all the architecture names - recognized by GCC. */ -static struct arm_arch_option_table arm_archs[] = -{ - {"all", ARM_ANY, FPU_ARCH_FPA}, - {"armv1", ARM_ARCH_V1, FPU_ARCH_FPA}, - {"armv2", ARM_ARCH_V2, FPU_ARCH_FPA}, - {"armv2a", ARM_ARCH_V2S, FPU_ARCH_FPA}, - {"armv2s", ARM_ARCH_V2S, FPU_ARCH_FPA}, - {"armv3", ARM_ARCH_V3, FPU_ARCH_FPA}, - {"armv3m", ARM_ARCH_V3M, FPU_ARCH_FPA}, - {"armv4", ARM_ARCH_V4, FPU_ARCH_FPA}, - {"armv4xm", ARM_ARCH_V4xM, FPU_ARCH_FPA}, - {"armv4t", ARM_ARCH_V4T, FPU_ARCH_FPA}, - {"armv4txm", ARM_ARCH_V4TxM, FPU_ARCH_FPA}, - {"armv5", ARM_ARCH_V5, FPU_ARCH_VFP}, - {"armv5t", ARM_ARCH_V5T, FPU_ARCH_VFP}, - {"armv5txm", ARM_ARCH_V5TxM, FPU_ARCH_VFP}, - {"armv5te", ARM_ARCH_V5TE, FPU_ARCH_VFP}, - {"armv5texp", ARM_ARCH_V5TExP, FPU_ARCH_VFP}, - {"armv5tej", ARM_ARCH_V5TEJ, FPU_ARCH_VFP}, - {"armv6", ARM_ARCH_V6, FPU_ARCH_VFP}, - {"armv6j", ARM_ARCH_V6, FPU_ARCH_VFP}, - {"xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP}, - {"iwmmxt", ARM_ARCH_IWMMXT, FPU_ARCH_VFP}, - {NULL, 0, 0} -}; - -/* ISA extensions in the co-processor space. */ -struct arm_arch_extension_table -{ - char *name; - int value; -}; - -static struct arm_arch_extension_table arm_extensions[] = -{ - {"maverick", ARM_CEXT_MAVERICK}, - {"xscale", ARM_CEXT_XSCALE}, - {"iwmmxt", ARM_CEXT_IWMMXT}, - {NULL, 0} -}; - -struct arm_fpu_option_table -{ - char *name; - int value; -}; - -/* This list should, at a minimum, contain all the fpu names - recognized by GCC. */ -static struct arm_fpu_option_table arm_fpus[] = -{ - {"softfpa", FPU_NONE}, - {"fpe", FPU_ARCH_FPE}, - {"fpe2", FPU_ARCH_FPE}, - {"fpe3", FPU_ARCH_FPA}, /* Third release supports LFM/SFM. */ - {"fpa", FPU_ARCH_FPA}, - {"fpa10", FPU_ARCH_FPA}, - {"fpa11", FPU_ARCH_FPA}, - {"arm7500fe", FPU_ARCH_FPA}, - {"softvfp", FPU_ARCH_VFP}, - {"softvfp+vfp", FPU_ARCH_VFP_V2}, - {"vfp", FPU_ARCH_VFP_V2}, - {"vfp9", FPU_ARCH_VFP_V2}, - {"vfp10", FPU_ARCH_VFP_V2}, - {"vfp10-r0", FPU_ARCH_VFP_V1}, - {"vfpxd", FPU_ARCH_VFP_V1xD}, - {"arm1020t", FPU_ARCH_VFP_V1}, - {"arm1020e", FPU_ARCH_VFP_V2}, - {"arm1136jfs", FPU_ARCH_VFP_V2}, - {"maverick", FPU_ARCH_MAVERICK}, - {NULL, 0} -}; - -struct arm_float_abi_option_table -{ - char *name; - int value; -}; - -static struct arm_float_abi_option_table arm_float_abis[] = -{ - {"hard", ARM_FLOAT_ABI_HARD}, - {"softfp", ARM_FLOAT_ABI_SOFTFP}, - {"soft", ARM_FLOAT_ABI_SOFT}, - {NULL, 0} -}; - -struct arm_long_option_table -{ - char *option; /* Substring to match. */ - char *help; /* Help information. */ - int (*func) PARAMS ((char *subopt)); /* Function to decode sub-option. */ - char *deprecated; /* If non-null, print this message. */ -}; - -static int -arm_parse_extension (str, opt_p) - char *str; - int *opt_p; -{ - while (str != NULL && *str != 0) - { - struct arm_arch_extension_table *opt; - char *ext; - int optlen; - - if (*str != '+') - { - as_bad (_("invalid architectural extension")); - return 0; - } - - str++; - ext = strchr (str, '+'); - - if (ext != NULL) - optlen = ext - str; - else - optlen = strlen (str); - - if (optlen == 0) - { - as_bad (_("missing architectural extension")); - return 0; - } - - for (opt = arm_extensions; opt->name != NULL; opt++) - if (strncmp (opt->name, str, optlen) == 0) - { - *opt_p |= opt->value; - break; - } - - if (opt->name == NULL) - { - as_bad (_("unknown architectural extnsion `%s'"), str); - return 0; - } - - str = ext; - }; - - return 1; -} - -static int -arm_parse_cpu (str) - char *str; -{ - struct arm_cpu_option_table *opt; - char *ext = strchr (str, '+'); - int optlen; - - if (ext != NULL) - optlen = ext - str; - else - optlen = strlen (str); - - if (optlen == 0) - { - as_bad (_("missing cpu name `%s'"), str); - return 0; - } - - for (opt = arm_cpus; opt->name != NULL; opt++) - if (strncmp (opt->name, str, optlen) == 0) - { - mcpu_cpu_opt = opt->value; - mcpu_fpu_opt = opt->default_fpu; - - if (ext != NULL) - return arm_parse_extension (ext, &mcpu_cpu_opt); - - return 1; - } - - as_bad (_("unknown cpu `%s'"), str); - return 0; -} - -static int -arm_parse_arch (str) - char *str; -{ - struct arm_arch_option_table *opt; - char *ext = strchr (str, '+'); - int optlen; - - if (ext != NULL) - optlen = ext - str; - else - optlen = strlen (str); - - if (optlen == 0) - { - as_bad (_("missing architecture name `%s'"), str); - return 0; - } - - - for (opt = arm_archs; opt->name != NULL; opt++) - if (strcmp (opt->name, str) == 0) - { - march_cpu_opt = opt->value; - march_fpu_opt = opt->default_fpu; - - if (ext != NULL) - return arm_parse_extension (ext, &march_cpu_opt); - - return 1; - } - - as_bad (_("unknown architecture `%s'\n"), str); - return 0; -} - -static int -arm_parse_fpu (str) - char *str; -{ - struct arm_fpu_option_table *opt; - - for (opt = arm_fpus; opt->name != NULL; opt++) - if (strcmp (opt->name, str) == 0) - { - mfpu_opt = opt->value; - return 1; - } - - as_bad (_("unknown floating point format `%s'\n"), str); - return 0; -} - -static int -arm_parse_float_abi (str) - char * str; -{ - struct arm_float_abi_option_table *opt; - - for (opt = arm_float_abis; opt->name != NULL; opt++) - if (strcmp (opt->name, str) == 0) - { - mfloat_abi_opt = opt->value; - return 1; - } - - as_bad (_("unknown floating point abi `%s'\n"), str); - return 0; -} - -struct arm_long_option_table arm_long_opts[] = -{ - {"mcpu=", N_("\t assemble for CPU "), - arm_parse_cpu, NULL}, - {"march=", N_("\t assemble for architecture "), - arm_parse_arch, NULL}, - {"mfpu=", N_("\t assemble for FPU architecture "), - arm_parse_fpu, NULL}, - {"mfloat-abi=", N_("\t assemble for floating point ABI "), - arm_parse_float_abi, NULL}, - {NULL, NULL, 0, NULL} -}; - -int -md_parse_option (c, arg) - int c; - char * arg; -{ - struct arm_option_table *opt; - struct arm_long_option_table *lopt; - - switch (c) - { -#ifdef OPTION_EB - case OPTION_EB: - target_big_endian = 1; - break; -#endif - -#ifdef OPTION_EL - case OPTION_EL: - target_big_endian = 0; - break; -#endif - - case 'a': - /* Listing option. Just ignore these, we don't support additional - ones. */ - return 0; - - default: - for (opt = arm_opts; opt->option != NULL; opt++) - { - if (c == opt->option[0] - && ((arg == NULL && opt->option[1] == 0) - || strcmp (arg, opt->option + 1) == 0)) - { -#if WARN_DEPRECATED - /* If the option is deprecated, tell the user. */ - if (opt->deprecated != NULL) - as_tsktsk (_("option `-%c%s' is deprecated: %s"), c, - arg ? arg : "", _(opt->deprecated)); -#endif - - if (opt->var != NULL) - *opt->var = opt->value; - - return 1; - } - } - - for (lopt = arm_long_opts; lopt->option != NULL; lopt++) - { - /* These options are expected to have an argument. */ - if (c == lopt->option[0] - && arg != NULL - && strncmp (arg, lopt->option + 1, - strlen (lopt->option + 1)) == 0) - { -#if WARN_DEPRECATED - /* If the option is deprecated, tell the user. */ - if (lopt->deprecated != NULL) - as_tsktsk (_("option `-%c%s' is deprecated: %s"), c, arg, - _(lopt->deprecated)); -#endif - - /* Call the sup-option parser. */ - return (*lopt->func)(arg + strlen (lopt->option) - 1); - } - } - - as_bad (_("unrecognized option `-%c%s'"), c, arg ? arg : ""); - return 0; - } - - return 1; -} - -void -md_show_usage (fp) - FILE * fp; -{ - struct arm_option_table *opt; - struct arm_long_option_table *lopt; - - fprintf (fp, _(" ARM-specific assembler options:\n")); - - for (opt = arm_opts; opt->option != NULL; opt++) - if (opt->help != NULL) - fprintf (fp, " -%-23s%s\n", opt->option, _(opt->help)); - - for (lopt = arm_long_opts; lopt->option != NULL; lopt++) - if (lopt->help != NULL) - fprintf (fp, " -%s%s\n", lopt->option, _(lopt->help)); - -#ifdef OPTION_EB - fprintf (fp, _("\ - -EB assemble code for a big-endian cpu\n")); -#endif - -#ifdef OPTION_EL - fprintf (fp, _("\ - -EL assemble code for a little-endian cpu\n")); -#endif -} - -/* We need to be able to fix up arbitrary expressions in some statements. - This is so that we can handle symbols that are an arbitrary distance from - the pc. The most common cases are of the form ((+/-sym -/+ . - 8) & mask), - which returns part of an address in a form which will be valid for - a data instruction. We do this by pushing the expression into a symbol - in the expr_section, and creating a fix for that. */ - -static void -fix_new_arm (frag, where, size, exp, pc_rel, reloc) - fragS * frag; - int where; - short int size; - expressionS * exp; - int pc_rel; - int reloc; -{ - fixS * new_fix; - arm_fix_data * arm_data; - - switch (exp->X_op) - { - case O_constant: - case O_symbol: - case O_add: - case O_subtract: - new_fix = fix_new_exp (frag, where, size, exp, pc_rel, reloc); - break; - - default: - new_fix = fix_new (frag, where, size, make_expr_symbol (exp), 0, - pc_rel, reloc); - break; - } - - /* Mark whether the fix is to a THUMB instruction, or an ARM - instruction. */ - arm_data = (arm_fix_data *) obstack_alloc (& notes, sizeof (arm_fix_data)); - new_fix->tc_fix_data = (PTR) arm_data; - arm_data->thumb_mode = thumb_mode; -} - -/* This fix_new is called by cons via TC_CONS_FIX_NEW. */ - -void -cons_fix_new_arm (frag, where, size, exp) - fragS * frag; - int where; - int size; - expressionS * exp; -{ - bfd_reloc_code_real_type type; - int pcrel = 0; - - /* Pick a reloc. - FIXME: @@ Should look at CPU word size. */ - switch (size) - { - case 1: - type = BFD_RELOC_8; - break; - case 2: - type = BFD_RELOC_16; - break; - case 4: - default: - type = BFD_RELOC_32; - break; - case 8: - type = BFD_RELOC_64; - break; - } - - fix_new_exp (frag, where, (int) size, exp, pcrel, type); -} - -/* A good place to do this, although this was probably not intended - for this kind of use. We need to dump the literal pool before - references are made to a null symbol pointer. */ - -void -arm_cleanup () -{ - literal_pool * pool; - - for (pool = list_of_pools; pool; pool = pool->next) - { - /* Put it at the end of the relevent section. */ - subseg_set (pool->section, pool->sub_section); - s_ltorg (0); - } -} - -void -arm_start_line_hook () -{ - last_label_seen = NULL; -} - -void -arm_frob_label (sym) - symbolS * sym; -{ - last_label_seen = sym; - - ARM_SET_THUMB (sym, thumb_mode); - -#if defined OBJ_COFF || defined OBJ_ELF - ARM_SET_INTERWORK (sym, support_interwork); -#endif - - /* Note - do not allow local symbols (.Lxxx) to be labeled - as Thumb functions. This is because these labels, whilst - they exist inside Thumb code, are not the entry points for - possible ARM->Thumb calls. Also, these labels can be used - as part of a computed goto or switch statement. eg gcc - can generate code that looks like this: - - ldr r2, [pc, .Laaa] - lsl r3, r3, #2 - ldr r2, [r3, r2] - mov pc, r2 - - .Lbbb: .word .Lxxx - .Lccc: .word .Lyyy - ..etc... - .Laaa: .word Lbbb - - The first instruction loads the address of the jump table. - The second instruction converts a table index into a byte offset. - The third instruction gets the jump address out of the table. - The fourth instruction performs the jump. - - If the address stored at .Laaa is that of a symbol which has the - Thumb_Func bit set, then the linker will arrange for this address - to have the bottom bit set, which in turn would mean that the - address computation performed by the third instruction would end - up with the bottom bit set. Since the ARM is capable of unaligned - word loads, the instruction would then load the incorrect address - out of the jump table, and chaos would ensue. */ - if (label_is_thumb_function_name - && (S_GET_NAME (sym)[0] != '.' || S_GET_NAME (sym)[1] != 'L') - && (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) - { - /* When the address of a Thumb function is taken the bottom - bit of that address should be set. This will allow - interworking between Arm and Thumb functions to work - correctly. */ - - THUMB_SET_FUNC (sym, 1); - - label_is_thumb_function_name = FALSE; - } -} - -/* Adjust the symbol table. This marks Thumb symbols as distinct from - ARM ones. */ - -void -arm_adjust_symtab () -{ -#ifdef OBJ_COFF - symbolS * sym; - - for (sym = symbol_rootP; sym != NULL; sym = symbol_next (sym)) - { - if (ARM_IS_THUMB (sym)) - { - if (THUMB_IS_FUNC (sym)) - { - /* Mark the symbol as a Thumb function. */ - if ( S_GET_STORAGE_CLASS (sym) == C_STAT - || S_GET_STORAGE_CLASS (sym) == C_LABEL) /* This can happen! */ - S_SET_STORAGE_CLASS (sym, C_THUMBSTATFUNC); - - else if (S_GET_STORAGE_CLASS (sym) == C_EXT) - S_SET_STORAGE_CLASS (sym, C_THUMBEXTFUNC); - else - as_bad (_("%s: unexpected function type: %d"), - S_GET_NAME (sym), S_GET_STORAGE_CLASS (sym)); - } - else switch (S_GET_STORAGE_CLASS (sym)) - { - case C_EXT: - S_SET_STORAGE_CLASS (sym, C_THUMBEXT); - break; - case C_STAT: - S_SET_STORAGE_CLASS (sym, C_THUMBSTAT); - break; - case C_LABEL: - S_SET_STORAGE_CLASS (sym, C_THUMBLABEL); - break; - default: - /* Do nothing. */ - break; - } - } - - if (ARM_IS_INTERWORK (sym)) - coffsymbol (symbol_get_bfdsym (sym))->native->u.syment.n_flags = 0xFF; - } -#endif -#ifdef OBJ_ELF - symbolS * sym; - char bind; - - for (sym = symbol_rootP; sym != NULL; sym = symbol_next (sym)) - { - if (ARM_IS_THUMB (sym)) - { - elf_symbol_type * elf_sym; - - elf_sym = elf_symbol (symbol_get_bfdsym (sym)); - bind = ELF_ST_BIND (elf_sym); - - /* If it's a .thumb_func, declare it as so, - otherwise tag label as .code 16. */ - if (THUMB_IS_FUNC (sym)) - elf_sym->internal_elf_sym.st_info = - ELF_ST_INFO (bind, STT_ARM_TFUNC); - else - elf_sym->internal_elf_sym.st_info = - ELF_ST_INFO (bind, STT_ARM_16BIT); - } - } -#endif -} - -int -arm_data_in_code () -{ - if (thumb_mode && ! strncmp (input_line_pointer + 1, "data:", 5)) - { - *input_line_pointer = '/'; - input_line_pointer += 5; - *input_line_pointer = 0; - return 1; - } - - return 0; -} - -char * -arm_canonicalize_symbol_name (name) - char * name; -{ - int len; - - if (thumb_mode && (len = strlen (name)) > 5 - && streq (name + len - 5, "/data")) - *(name + len - 5) = 0; - - return name; -} - -#if defined OBJ_COFF || defined OBJ_ELF -void -arm_validate_fix (fixP) - fixS * fixP; -{ - /* If the destination of the branch is a defined symbol which does not have - the THUMB_FUNC attribute, then we must be calling a function which has - the (interfacearm) attribute. We look for the Thumb entry point to that - function and change the branch to refer to that function instead. */ - if (fixP->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23 - && fixP->fx_addsy != NULL - && S_IS_DEFINED (fixP->fx_addsy) - && ! THUMB_IS_FUNC (fixP->fx_addsy)) - { - fixP->fx_addsy = find_real_start (fixP->fx_addsy); - } -} -#endif - -int -arm_force_relocation (fixp) - struct fix * fixp; -{ -#if defined (OBJ_COFF) && defined (TE_PE) - if (fixp->fx_r_type == BFD_RELOC_RVA) - return 1; -#endif -#ifdef OBJ_ELF - if (fixp->fx_r_type == BFD_RELOC_ARM_PCREL_BRANCH - || fixp->fx_r_type == BFD_RELOC_ARM_PCREL_BLX - || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BLX - || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23) - return 1; -#endif - - /* Resolve these relocations even if the symbol is extern or weak. */ - if (fixp->fx_r_type == BFD_RELOC_ARM_IMMEDIATE - || fixp->fx_r_type == BFD_RELOC_ARM_OFFSET_IMM - || fixp->fx_r_type == BFD_RELOC_ARM_ADRL_IMMEDIATE) - return 0; - - return generic_force_reloc (fixp); -} - -#ifdef OBJ_COFF -/* This is a little hack to help the gas/arm/adrl.s test. It prevents - local labels from being added to the output symbol table when they - are used with the ADRL pseudo op. The ADRL relocation should always - be resolved before the binbary is emitted, so it is safe to say that - it is adjustable. */ - -bfd_boolean -arm_fix_adjustable (fixP) - fixS * fixP; -{ - if (fixP->fx_r_type == BFD_RELOC_ARM_ADRL_IMMEDIATE) - return 1; - return 0; -} -#endif - -#ifdef OBJ_ELF -/* Relocations against Thumb function names must be left unadjusted, - so that the linker can use this information to correctly set the - bottom bit of their addresses. The MIPS version of this function - also prevents relocations that are mips-16 specific, but I do not - know why it does this. - - FIXME: - There is one other problem that ought to be addressed here, but - which currently is not: Taking the address of a label (rather - than a function) and then later jumping to that address. Such - addresses also ought to have their bottom bit set (assuming that - they reside in Thumb code), but at the moment they will not. */ - -bfd_boolean -arm_fix_adjustable (fixP) - fixS * fixP; -{ - if (fixP->fx_addsy == NULL) - return 1; - - if (THUMB_IS_FUNC (fixP->fx_addsy) - && fixP->fx_subsy == NULL) - return 0; - - /* We need the symbol name for the VTABLE entries. */ - if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT - || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - return 0; - - /* Don't allow symbols to be discarded on GOT related relocs. */ - if (fixP->fx_r_type == BFD_RELOC_ARM_PLT32 - || fixP->fx_r_type == BFD_RELOC_ARM_GOT32 - || fixP->fx_r_type == BFD_RELOC_ARM_GOTOFF) - return 0; - - return 1; -} - -const char * -elf32_arm_target_format () -{ - if (target_big_endian) - { - if (target_oabi) - return "elf32-bigarm-oabi"; - else - return "elf32-bigarm"; - } - else - { - if (target_oabi) - return "elf32-littlearm-oabi"; - else - return "elf32-littlearm"; - } -} - -void -armelf_frob_symbol (symp, puntp) - symbolS * symp; - int * puntp; -{ - elf_frob_symbol (symp, puntp); -} - -static bfd_reloc_code_real_type -arm_parse_reloc () -{ - char id [16]; - char * ip; - unsigned int i; - static struct - { - char * str; - int len; - bfd_reloc_code_real_type reloc; - } - reloc_map[] = - { -#define MAP(str,reloc) { str, sizeof (str) - 1, reloc } - MAP ("(got)", BFD_RELOC_ARM_GOT32), - MAP ("(gotoff)", BFD_RELOC_ARM_GOTOFF), - /* ScottB: Jan 30, 1998 - Added support for parsing "var(PLT)" - branch instructions generated by GCC for PLT relocs. */ - MAP ("(plt)", BFD_RELOC_ARM_PLT32), - { NULL, 0, BFD_RELOC_UNUSED } -#undef MAP - }; - - for (i = 0, ip = input_line_pointer; - i < sizeof (id) && (ISALNUM (*ip) || ISPUNCT (*ip)); - i++, ip++) - id[i] = TOLOWER (*ip); - - for (i = 0; reloc_map[i].str; i++) - if (strncmp (id, reloc_map[i].str, reloc_map[i].len) == 0) - break; - - input_line_pointer += reloc_map[i].len; - - return reloc_map[i].reloc; -} - -static void -s_arm_elf_cons (nbytes) - int nbytes; -{ - expressionS exp; - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - if (is_it_end_of_statement ()) - { - demand_empty_rest_of_line (); - return; - } - -#ifdef md_cons_align - md_cons_align (nbytes); -#endif - - mapping_state (MAP_DATA); - do - { - bfd_reloc_code_real_type reloc; - - expression (& exp); - - if (exp.X_op == O_symbol - && * input_line_pointer == '(' - && (reloc = arm_parse_reloc ()) != BFD_RELOC_UNUSED) - { - reloc_howto_type *howto = bfd_reloc_type_lookup (stdoutput, reloc); - int size = bfd_get_reloc_size (howto); - - if (size > nbytes) - as_bad ("%s relocations do not fit in %d bytes", - howto->name, nbytes); - else - { - register char *p = frag_more ((int) nbytes); - int offset = nbytes - size; - - fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size, - &exp, 0, reloc); - } - } - else - emit_expr (&exp, (unsigned int) nbytes); - } - while (*input_line_pointer++ == ','); - - /* Put terminator back into stream. */ - input_line_pointer --; - demand_empty_rest_of_line (); -} - -#endif /* OBJ_ELF */ - -/* This is called from HANDLE_ALIGN in write.c. Fill in the contents - of an rs_align_code fragment. */ - -void -arm_handle_align (fragP) - fragS *fragP; -{ - static char const arm_noop[4] = { 0x00, 0x00, 0xa0, 0xe1 }; - static char const thumb_noop[2] = { 0xc0, 0x46 }; - static char const arm_bigend_noop[4] = { 0xe1, 0xa0, 0x00, 0x00 }; - static char const thumb_bigend_noop[2] = { 0x46, 0xc0 }; - - int bytes, fix, noop_size; - char * p; - const char * noop; - - if (fragP->fr_type != rs_align_code) - return; - - bytes = fragP->fr_next->fr_address - fragP->fr_address - fragP->fr_fix; - p = fragP->fr_literal + fragP->fr_fix; - fix = 0; - - if (bytes > MAX_MEM_FOR_RS_ALIGN_CODE) - bytes &= MAX_MEM_FOR_RS_ALIGN_CODE; - - if (fragP->tc_frag_data) - { - if (target_big_endian) - noop = thumb_bigend_noop; - else - noop = thumb_noop; - noop_size = sizeof (thumb_noop); - } - else - { - if (target_big_endian) - noop = arm_bigend_noop; - else - noop = arm_noop; - noop_size = sizeof (arm_noop); - } - - if (bytes & (noop_size - 1)) - { - fix = bytes & (noop_size - 1); - memset (p, 0, fix); - p += fix; - bytes -= fix; - } - - while (bytes >= noop_size) - { - memcpy (p, noop, noop_size); - p += noop_size; - bytes -= noop_size; - fix += noop_size; - } - - fragP->fr_fix += fix; - fragP->fr_var = noop_size; -} - -/* Called from md_do_align. Used to create an alignment - frag in a code section. */ - -void -arm_frag_align_code (n, max) - int n; - int max; -{ - char * p; - - /* We assume that there will never be a requirement - to support alignments greater than 32 bytes. */ - if (max > MAX_MEM_FOR_RS_ALIGN_CODE) - as_fatal (_("alignments greater than 32 bytes not supported in .text sections.")); - - p = frag_var (rs_align_code, - MAX_MEM_FOR_RS_ALIGN_CODE, - 1, - (relax_substateT) max, - (symbolS *) NULL, - (offsetT) n, - (char *) NULL); - *p = 0; - -} - -/* Perform target specific initialisation of a frag. */ - -void -arm_init_frag (fragP) - fragS *fragP; -{ - /* Record whether this frag is in an ARM or a THUMB area. */ - fragP->tc_frag_data = thumb_mode; -} diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h deleted file mode 100644 index 58396cc56..000000000 --- a/gas/config/tc-arm.h +++ /dev/null @@ -1,225 +0,0 @@ -/* This file is tc-arm.h - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. - Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) - Modified by David Taylor (dtaylor@armltd.co.uk) - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_ARM 1 - -#ifndef TARGET_BYTES_BIG_ENDIAN -#define TARGET_BYTES_BIG_ENDIAN 0 -#endif - -#define WORKING_DOT_WORD - -#define COFF_MAGIC ARMMAGIC -#define TARGET_ARCH bfd_arch_arm - -#define AOUT_MACHTYPE 0 - -#define DIFF_EXPR_OK - -#ifdef LITTLE_ENDIAN -#undef LITTLE_ENDIAN -#endif - -#ifdef BIG_ENDIAN -#undef BIG_ENDIAN -#endif - -#define LITTLE_ENDIAN 1234 -#define BIG_ENDIAN 4321 - -#if defined OBJ_AOUT -#if defined TE_RISCIX -# define TARGET_FORMAT "a.out-riscix" -#elif defined TE_LINUX -# define ARM_BI_ENDIAN -# define TARGET_FORMAT "a.out-arm-linux" -#elif defined TE_NetBSD -# define TARGET_FORMAT "a.out-arm-netbsd" -#else -# define ARM_BI_ENDIAN -# define TARGET_FORMAT \ - (target_big_endian ? "a.out-arm-big" : "a.out-arm-little") -#endif -#endif /* OBJ_AOUT */ - -#ifdef OBJ_AIF -#define TARGET_FORMAT "aif" -#endif - -struct fix; - -#if defined OBJ_COFF || defined OBJ_ELF -# define ARM_BI_ENDIAN - -# define TC_VALIDATE_FIX(FIX, SEGTYPE, LABEL) arm_validate_fix (FIX) - extern void arm_validate_fix PARAMS ((struct fix *)); -#endif - -#ifdef OBJ_COFF -# if defined TE_PE -# ifdef TE_EPOC -# define TARGET_FORMAT (target_big_endian ? "epoc-pe-arm-big" : "epoc-pe-arm-little") -# else -# define TARGET_FORMAT (target_big_endian ? "pe-arm-big" : "pe-arm-little") -# endif -# else -# define TARGET_FORMAT (target_big_endian ? "coff-arm-big" : "coff-arm-little") -# endif -#endif - -#ifdef OBJ_ELF -# define TARGET_FORMAT elf32_arm_target_format() - extern const char * elf32_arm_target_format PARAMS ((void)); - -# define md_elf_section_change_hook() arm_elf_change_section - extern void arm_elf_change_section (void); -#endif - -#define TC_FORCE_RELOCATION(FIX) arm_force_relocation (FIX) -extern int arm_force_relocation PARAMS ((struct fix *)); - -#define md_convert_frag(b, s, f) {as_fatal (_("arm convert_frag\n"));} - -#define md_cleanup() arm_cleanup () - extern void arm_cleanup PARAMS ((void)); - -#define md_start_line_hook() arm_start_line_hook () - extern void arm_start_line_hook PARAMS ((void)); - -#define tc_frob_label(S) arm_frob_label (S) - extern void arm_frob_label PARAMS ((symbolS *)); - -/* We also need to mark assembler created symbols: */ -#define tc_frob_fake_label(S) arm_frob_label (S) - -/* NOTE: The fake label creation in stabs.c:s_stab_generic() has - deliberately not been updated to mark assembler created stabs - symbols as Thumb. */ - -#define TC_FIX_TYPE PTR -#define TC_INIT_FIX_DATA(FIX) ((FIX)->tc_fix_data = NULL) - -#if defined OBJ_ELF || defined OBJ_COFF -#define EXTERN_FORCE_RELOC 1 - -#define tc_fix_adjustable(FIX) arm_fix_adjustable (FIX) -bfd_boolean arm_fix_adjustable PARAMS ((struct fix *)); - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 -#endif - -/* We need to keep some local information on symbols. */ - -#define TC_SYMFIELD_TYPE unsigned int -#define ARM_GET_FLAG(s) (*symbol_get_tc (s)) -#define ARM_SET_FLAG(s,v) (*symbol_get_tc (s) |= (v)) -#define ARM_RESET_FLAG(s,v) (*symbol_get_tc (s) &= ~(v)) - -#define ARM_FLAG_THUMB (1 << 0) /* The symbol is a Thumb symbol rather than an Arm symbol. */ -#define ARM_FLAG_INTERWORK (1 << 1) /* The symbol is attached to code that supports interworking. */ -#define THUMB_FLAG_FUNC (1 << 2) /* The symbol is attached to the start of a Thumb function. */ - -#define ARM_IS_THUMB(s) (ARM_GET_FLAG (s) & ARM_FLAG_THUMB) -#define ARM_IS_INTERWORK(s) (ARM_GET_FLAG (s) & ARM_FLAG_INTERWORK) -#define THUMB_IS_FUNC(s) (ARM_GET_FLAG (s) & THUMB_FLAG_FUNC) - -#define ARM_SET_THUMB(s,t) ((t) ? ARM_SET_FLAG (s, ARM_FLAG_THUMB) : ARM_RESET_FLAG (s, ARM_FLAG_THUMB)) -#define ARM_SET_INTERWORK(s,t) ((t) ? ARM_SET_FLAG (s, ARM_FLAG_INTERWORK) : ARM_RESET_FLAG (s, ARM_FLAG_INTERWORK)) -#define THUMB_SET_FUNC(s,t) ((t) ? ARM_SET_FLAG (s, THUMB_FLAG_FUNC) : ARM_RESET_FLAG (s, THUMB_FLAG_FUNC)) - -#define TC_START_LABEL(C,STR) \ - (c == ':' || (c == '/' && arm_data_in_code ())) -int arm_data_in_code PARAMS ((void)); - -#define tc_canonicalize_symbol_name(str) \ - arm_canonicalize_symbol_name (str); -char * arm_canonicalize_symbol_name PARAMS ((char *)); - -#define obj_adjust_symtab() arm_adjust_symtab () - extern void arm_adjust_symtab PARAMS ((void)); - -#ifdef OBJ_ELF -#define obj_frob_symbol(sym, punt) armelf_frob_symbol ((sym), & (punt)) -void armelf_frob_symbol PARAMS ((symbolS *, int *)); -#endif - -#define tc_aout_pre_write_hook(x) {;} /* not used */ - -#define LISTING_HEADER "ARM GAS " - -#define OPTIONAL_REGISTER_PREFIX '%' - -#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L')) -#define LOCAL_LABELS_FB 1 -#ifdef OBJ_ELF -#define LOCAL_LABEL_PREFIX '.' -#endif - -/* This expression evaluates to true if the relocation is for a local - object for which we still want to do the relocation at runtime. - False if we are willing to perform this relocation while building - the .o file. GOTOFF does not need to be checked here because it is - not pcrel. I am not sure if some of the others are ever used with - pcrel, but it is easier to be safe than sorry. */ - -#define TC_FORCE_RELOCATION_LOCAL(FIX) \ - (!(FIX)->fx_pcrel \ - || (FIX)->fx_plt \ - || (FIX)->fx_r_type == BFD_RELOC_ARM_GOT12 \ - || (FIX)->fx_r_type == BFD_RELOC_ARM_GOT32 \ - || (FIX)->fx_r_type == BFD_RELOC_32 \ - || TC_FORCE_RELOCATION (FIX)) - -#define TC_CONS_FIX_NEW cons_fix_new_arm - extern void cons_fix_new_arm PARAMS ((fragS *, int, int, expressionS *)); - -#ifdef OBJ_ELF -#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_" -#else -#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_" -#endif - -#ifdef OBJ_ELF -#define DWARF2_LINE_MIN_INSN_LENGTH 2 -#endif - -#define MAX_MEM_FOR_RS_ALIGN_CODE 31 - -/* For frags in code sections we need to record whether they contain - ARM code or THUMB code. This is that if they have to be aligned, - they can contain the correct type of no-op instruction. */ -#define TC_FRAG_TYPE int -#define TC_FRAG_INIT(fragp) arm_init_frag (fragp) -extern void arm_init_frag PARAMS ((struct frag *)); - -#define HANDLE_ALIGN(fragp) arm_handle_align (fragp) -extern void arm_handle_align PARAMS ((struct frag *)); - -#define md_do_align(N, FILL, LEN, MAX, LABEL) \ - if (FILL == NULL && (N) != 0 && ! need_pass_2 && subseg_text_p (now_seg)) \ - { \ - arm_frag_align_code (N, MAX); \ - goto LABEL; \ - } -extern void arm_frag_align_code PARAMS ((int, int)); diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c deleted file mode 100644 index 43b4b7167..000000000 --- a/gas/config/tc-avr.c +++ /dev/null @@ -1,1300 +0,0 @@ -/* tc-avr.c -- Assembler code for the ATMEL AVR - - Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - Contributed by Denis Chertykov - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" - -struct avr_opcodes_s -{ - char *name; - char *constraints; - int insn_size; /* In words. */ - int isa; - unsigned int bin_opcode; -}; - -#define AVR_INSN(NAME, CONSTR, OPCODE, SIZE, ISA, BIN) \ -{#NAME, CONSTR, SIZE, ISA, BIN}, - -struct avr_opcodes_s avr_opcodes[] = -{ - #include "opcode/avr.h" - {NULL, NULL, 0, 0, 0} -}; - -const char comment_chars[] = ";"; -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = "$"; - -const char *md_shortopts = "m:"; -struct mcu_type_s -{ - char *name; - int isa; - int mach; -}; - -/* XXX - devices that don't seem to exist (renamed, replaced with larger - ones, or planned but never produced), left here for compatibility. - TODO: hide them in show_mcu_list output? */ - -static struct mcu_type_s mcu_types[] = -{ - {"avr1", AVR_ISA_TINY1, bfd_mach_avr1}, - {"avr2", AVR_ISA_2xxx, bfd_mach_avr2}, - {"avr3", AVR_ISA_M103, bfd_mach_avr3}, - {"avr4", AVR_ISA_M8, bfd_mach_avr4}, - {"avr5", AVR_ISA_ALL, bfd_mach_avr5}, - {"at90s1200", AVR_ISA_1200, bfd_mach_avr1}, - {"attiny10", AVR_ISA_TINY1, bfd_mach_avr1}, /* XXX -> tn11 */ - {"attiny11", AVR_ISA_TINY1, bfd_mach_avr1}, - {"attiny12", AVR_ISA_TINY1, bfd_mach_avr1}, - {"attiny15", AVR_ISA_TINY1, bfd_mach_avr1}, - {"attiny28", AVR_ISA_TINY1, bfd_mach_avr1}, - {"at90s2313", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at90s2323", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at90s2333", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 4433 */ - {"at90s2343", AVR_ISA_2xxx, bfd_mach_avr2}, - {"attiny22", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 2343 */ - {"attiny26", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at90s4433", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at90s4414", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8515 */ - {"at90s4434", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8535 */ - {"at90s8515", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at90s8535", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at90c8534", AVR_ISA_2xxx, bfd_mach_avr2}, - {"at86rf401", AVR_ISA_2xxx, bfd_mach_avr2}, - {"atmega603", AVR_ISA_M603, bfd_mach_avr3}, /* XXX -> m103 */ - {"atmega103", AVR_ISA_M103, bfd_mach_avr3}, - {"at43usb320",AVR_ISA_M103, bfd_mach_avr3}, - {"at43usb355",AVR_ISA_M603, bfd_mach_avr3}, - {"at76c711", AVR_ISA_M603, bfd_mach_avr3}, - {"atmega8", AVR_ISA_M8, bfd_mach_avr4}, - {"atmega83", AVR_ISA_M8, bfd_mach_avr4}, /* XXX -> m8535 */ - {"atmega85", AVR_ISA_M8, bfd_mach_avr4}, /* XXX -> m8 */ - {"atmega8515",AVR_ISA_M8, bfd_mach_avr4}, - {"atmega8535",AVR_ISA_M8, bfd_mach_avr4}, - {"atmega16", AVR_ISA_M323, bfd_mach_avr5}, - {"atmega161", AVR_ISA_M161, bfd_mach_avr5}, - {"atmega162", AVR_ISA_M323, bfd_mach_avr5}, - {"atmega163", AVR_ISA_M161, bfd_mach_avr5}, - {"atmega169", AVR_ISA_M323, bfd_mach_avr5}, - {"atmega32", AVR_ISA_M323, bfd_mach_avr5}, - {"atmega323", AVR_ISA_M323, bfd_mach_avr5}, - {"atmega64", AVR_ISA_M323, bfd_mach_avr5}, - {"atmega128", AVR_ISA_M128, bfd_mach_avr5}, - {"at94k", AVR_ISA_94K, bfd_mach_avr5}, - {NULL, 0, 0} -}; - -/* Current MCU type. */ -static struct mcu_type_s default_mcu = {"avr2", AVR_ISA_2xxx,bfd_mach_avr2}; -static struct mcu_type_s *avr_mcu = &default_mcu; - -/* AVR target-specific switches. */ -struct avr_opt_s -{ - int all_opcodes; /* -mall-opcodes: accept all known AVR opcodes */ - int no_skip_bug; /* -mno-skip-bug: no warnings for skipping 2-word insns */ - int no_wrap; /* -mno-wrap: reject rjmp/rcall with 8K wrap-around */ -}; - -static struct avr_opt_s avr_opt = { 0, 0, 0 }; - -const char EXP_CHARS[] = "eE"; -const char FLT_CHARS[] = "dD"; -static void avr_set_arch (int dummy); - -/* The target specific pseudo-ops which we support. */ -const pseudo_typeS md_pseudo_table[] = -{ - {"arch", avr_set_arch, 0}, - { NULL, NULL, 0} -}; - -#define LDI_IMMEDIATE(x) (((x) & 0xf) | (((x) << 4) & 0xf00)) - -static void show_mcu_list PARAMS ((FILE *)); -static char *skip_space PARAMS ((char *)); -static char *extract_word PARAMS ((char *, char *, int)); -static unsigned int avr_operand PARAMS ((struct avr_opcodes_s *, - int, char *, char **)); -static unsigned int avr_operands PARAMS ((struct avr_opcodes_s *, char **)); -static unsigned int avr_get_constant PARAMS ((char *, int)); -static char *parse_exp PARAMS ((char *, expressionS *)); -static bfd_reloc_code_real_type avr_ldi_expression PARAMS ((expressionS *)); - -#define EXP_MOD_NAME(i) exp_mod[i].name -#define EXP_MOD_RELOC(i) exp_mod[i].reloc -#define EXP_MOD_NEG_RELOC(i) exp_mod[i].neg_reloc -#define HAVE_PM_P(i) exp_mod[i].have_pm - -struct exp_mod_s -{ - char *name; - bfd_reloc_code_real_type reloc; - bfd_reloc_code_real_type neg_reloc; - int have_pm; -}; - -static struct exp_mod_s exp_mod[] = -{ - {"hh8", BFD_RELOC_AVR_HH8_LDI, BFD_RELOC_AVR_HH8_LDI_NEG, 1}, - {"pm_hh8", BFD_RELOC_AVR_HH8_LDI_PM, BFD_RELOC_AVR_HH8_LDI_PM_NEG, 0}, - {"hi8", BFD_RELOC_AVR_HI8_LDI, BFD_RELOC_AVR_HI8_LDI_NEG, 1}, - {"pm_hi8", BFD_RELOC_AVR_HI8_LDI_PM, BFD_RELOC_AVR_HI8_LDI_PM_NEG, 0}, - {"lo8", BFD_RELOC_AVR_LO8_LDI, BFD_RELOC_AVR_LO8_LDI_NEG, 1}, - {"pm_lo8", BFD_RELOC_AVR_LO8_LDI_PM, BFD_RELOC_AVR_LO8_LDI_PM_NEG, 0}, - {"hlo8", -BFD_RELOC_AVR_LO8_LDI, -BFD_RELOC_AVR_LO8_LDI_NEG, 0}, - {"hhi8", -BFD_RELOC_AVR_HI8_LDI, -BFD_RELOC_AVR_HI8_LDI_NEG, 0}, -}; - -/* Opcode hash table. */ -static struct hash_control *avr_hash; - -/* Reloc modifiers hash control (hh8,hi8,lo8,pm_xx). */ -static struct hash_control *avr_mod_hash; - -#define OPTION_MMCU 'm' -#define OPTION_ALL_OPCODES (OPTION_MD_BASE + 1) -#define OPTION_NO_SKIP_BUG (OPTION_MD_BASE + 2) -#define OPTION_NO_WRAP (OPTION_MD_BASE + 3) - -struct option md_longopts[] = -{ - { "mmcu", required_argument, NULL, OPTION_MMCU }, - { "mall-opcodes", no_argument, NULL, OPTION_ALL_OPCODES }, - { "mno-skip-bug", no_argument, NULL, OPTION_NO_SKIP_BUG }, - { "mno-wrap", no_argument, NULL, OPTION_NO_WRAP }, - { NULL, no_argument, NULL, 0 } -}; - -size_t md_longopts_size = sizeof (md_longopts); - -/* Display nicely formatted list of known MCU names. */ - -static void -show_mcu_list (stream) - FILE *stream; -{ - int i, x; - - fprintf (stream, _("Known MCU names:")); - x = 1000; - - for (i = 0; mcu_types[i].name; i++) - { - int len = strlen (mcu_types[i].name); - - x += len + 1; - - if (x < 75) - fprintf (stream, " %s", mcu_types[i].name); - else - { - fprintf (stream, "\n %s", mcu_types[i].name); - x = len + 2; - } - } - - fprintf (stream, "\n"); -} - -static inline char * -skip_space (s) - char *s; -{ - while (*s == ' ' || *s == '\t') - ++s; - return s; -} - -/* Extract one word from FROM and copy it to TO. */ - -static char * -extract_word (char *from, char *to, int limit) -{ - char *op_start; - char *op_end; - int size = 0; - - /* Drop leading whitespace. */ - from = skip_space (from); - *to = 0; - - /* Find the op code end. */ - for (op_start = op_end = from; *op_end != 0 && is_part_of_name (*op_end);) - { - to[size++] = *op_end++; - if (size + 1 >= limit) - break; - } - - to[size] = 0; - return op_end; -} - -int -md_estimate_size_before_relax (fragp, seg) - fragS *fragp ATTRIBUTE_UNUSED; - asection *seg ATTRIBUTE_UNUSED; -{ - abort (); - return 0; -} - -void -md_show_usage (stream) - FILE *stream; -{ - fprintf (stream, - _("AVR options:\n" - " -mmcu=[avr-name] select microcontroller variant\n" - " [avr-name] can be:\n" - " avr1 - AT90S1200, ATtiny1x, ATtiny28\n" - " avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22\n" - " avr3 - ATmega103, ATmega603\n" - " avr4 - ATmega83, ATmega85\n" - " avr5 - ATmega161, ATmega163, ATmega32, AT94K\n" - " or immediate microcontroller name.\n")); - fprintf (stream, - _(" -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n" - " -mno-skip-bug disable warnings for skipping two-word instructions\n" - " (default for avr4, avr5)\n" - " -mno-wrap reject rjmp/rcall instructions with 8K wrap-around\n" - " (default for avr3, avr5)\n")); - show_mcu_list (stream); -} - -static void -avr_set_arch (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - char *str; - - str = (char *) alloca (20); - input_line_pointer = extract_word (input_line_pointer, str, 20); - md_parse_option (OPTION_MMCU, str); - bfd_set_arch_mach (stdoutput, TARGET_ARCH, avr_mcu->mach); -} - -int -md_parse_option (c, arg) - int c; - char *arg; -{ - switch (c) - { - case OPTION_MMCU: - { - int i; - char *s = alloca (strlen (arg) + 1); - - { - char *t = s; - char *arg1 = arg; - - do - *t = TOLOWER (*arg1++); - while (*t++); - } - - for (i = 0; mcu_types[i].name; ++i) - if (strcmp (mcu_types[i].name, s) == 0) - break; - - if (!mcu_types[i].name) - { - show_mcu_list (stderr); - as_fatal (_("unknown MCU: %s\n"), arg); - } - - /* It is OK to redefine mcu type within the same avr[1-5] bfd machine - type - this for allows passing -mmcu=... via gcc ASM_SPEC as well - as .arch ... in the asm output at the same time. */ - if (avr_mcu == &default_mcu || avr_mcu->mach == mcu_types[i].mach) - avr_mcu = &mcu_types[i]; - else - as_fatal (_("redefinition of mcu type `%s' to `%s'"), - avr_mcu->name, mcu_types[i].name); - return 1; - } - case OPTION_ALL_OPCODES: - avr_opt.all_opcodes = 1; - return 1; - case OPTION_NO_SKIP_BUG: - avr_opt.no_skip_bug = 1; - return 1; - case OPTION_NO_WRAP: - avr_opt.no_wrap = 1; - return 1; - } - - return 0; -} - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (type, litP, sizeP) - int type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[4]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - prec = 2; - break; - case 'd': - prec = 4; - break; - default: - *sizeP = 0; - return _("bad call to md_atof"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - - /* This loop outputs the LITTLENUMs in REVERSE order. */ - for (wordP = words + prec - 1; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP--), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return NULL; -} - -void -md_convert_frag (abfd, sec, fragP) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - fragS *fragP ATTRIBUTE_UNUSED; -{ - abort (); -} - -void -md_begin () -{ - unsigned int i; - struct avr_opcodes_s *opcode; - avr_hash = hash_new (); - - /* Insert unique names into hash table. This hash table then provides a - quick index to the first opcode with a particular name in the opcode - table. */ - for (opcode = avr_opcodes; opcode->name; opcode++) - hash_insert (avr_hash, opcode->name, (char *) opcode); - - avr_mod_hash = hash_new (); - - for (i = 0; i < sizeof (exp_mod) / sizeof (exp_mod[0]); ++i) - hash_insert (avr_mod_hash, EXP_MOD_NAME (i), (void *) (i + 10)); - - bfd_set_arch_mach (stdoutput, TARGET_ARCH, avr_mcu->mach); -} - -/* Resolve STR as a constant expression and return the result. - If result greater than MAX then error. */ - -static unsigned int -avr_get_constant (str, max) - char *str; - int max; -{ - expressionS ex; - str = skip_space (str); - input_line_pointer = str; - expression (&ex); - - if (ex.X_op != O_constant) - as_bad (_("constant value required")); - - if (ex.X_add_number > max || ex.X_add_number < 0) - as_bad (_("number must be less than %d"), max + 1); - - return ex.X_add_number; -} - -/* Parse instruction operands. - Return binary opcode. */ - -static unsigned int -avr_operands (opcode, line) - struct avr_opcodes_s *opcode; - char **line; -{ - char *op = opcode->constraints; - unsigned int bin = opcode->bin_opcode; - char *frag = frag_more (opcode->insn_size * 2); - char *str = *line; - int where = frag - frag_now->fr_literal; - static unsigned int prev = 0; /* Previous opcode. */ - - /* Opcode have operands. */ - if (*op) - { - unsigned int reg1 = 0; - unsigned int reg2 = 0; - int reg1_present = 0; - int reg2_present = 0; - - /* Parse first operand. */ - if (REGISTER_P (*op)) - reg1_present = 1; - reg1 = avr_operand (opcode, where, op, &str); - ++op; - - /* Parse second operand. */ - if (*op) - { - if (*op == ',') - ++op; - - if (*op == '=') - { - reg2 = reg1; - reg2_present = 1; - } - else - { - if (REGISTER_P (*op)) - reg2_present = 1; - - str = skip_space (str); - if (*str++ != ',') - as_bad (_("`,' required")); - str = skip_space (str); - - reg2 = avr_operand (opcode, where, op, &str); - - } - - if (reg1_present && reg2_present) - reg2 = (reg2 & 0xf) | ((reg2 << 5) & 0x200); - else if (reg2_present) - reg2 <<= 4; - } - if (reg1_present) - reg1 <<= 4; - bin |= reg1 | reg2; - } - - /* Detect undefined combinations (like ld r31,Z+). */ - if (!avr_opt.all_opcodes && AVR_UNDEF_P (bin)) - as_warn (_("undefined combination of operands")); - - if (opcode->insn_size == 2) - { - /* Warn if the previous opcode was cpse/sbic/sbis/sbrc/sbrs - (AVR core bug, fixed in the newer devices). */ - - if (!(avr_opt.no_skip_bug || (avr_mcu->isa & AVR_ISA_MUL)) - && AVR_SKIP_P (prev)) - as_warn (_("skipping two-word instruction")); - - bfd_putl32 ((bfd_vma) bin, frag); - } - else - bfd_putl16 ((bfd_vma) bin, frag); - - prev = bin; - *line = str; - return bin; -} - -/* Parse one instruction operand. - Return operand bitmask. Also fixups can be generated. */ - -static unsigned int -avr_operand (opcode, where, op, line) - struct avr_opcodes_s *opcode; - int where; - char *op; - char **line; -{ - expressionS op_expr; - unsigned int op_mask = 0; - char *str = skip_space (*line); - - switch (*op) - { - /* Any register operand. */ - case 'w': - case 'd': - case 'r': - case 'a': - case 'v': - if (*str == 'r' || *str == 'R') - { - char r_name[20]; - - str = extract_word (str, r_name, sizeof (r_name)); - op_mask = 0xff; - if (ISDIGIT (r_name[1])) - { - if (r_name[2] == '\0') - op_mask = r_name[1] - '0'; - else if (r_name[1] != '0' - && ISDIGIT (r_name[2]) - && r_name[3] == '\0') - op_mask = (r_name[1] - '0') * 10 + r_name[2] - '0'; - } - } - else - { - op_mask = avr_get_constant (str, 31); - str = input_line_pointer; - } - - if (op_mask <= 31) - { - switch (*op) - { - case 'a': - if (op_mask < 16 || op_mask > 23) - as_bad (_("register r16-r23 required")); - op_mask -= 16; - break; - - case 'd': - if (op_mask < 16) - as_bad (_("register number above 15 required")); - op_mask -= 16; - break; - - case 'v': - if (op_mask & 1) - as_bad (_("even register number required")); - op_mask >>= 1; - break; - - case 'w': - if ((op_mask & 1) || op_mask < 24) - as_bad (_("register r24, r26, r28 or r30 required")); - op_mask = (op_mask - 24) >> 1; - break; - } - break; - } - as_bad (_("register name or number from 0 to 31 required")); - break; - - case 'e': - { - char c; - - if (*str == '-') - { - str = skip_space (str + 1); - op_mask = 0x1002; - } - c = TOLOWER (*str); - if (c == 'x') - op_mask |= 0x100c; - else if (c == 'y') - op_mask |= 0x8; - else if (c != 'z') - as_bad (_("pointer register (X, Y or Z) required")); - - str = skip_space (str + 1); - if (*str == '+') - { - ++str; - if (op_mask & 2) - as_bad (_("cannot both predecrement and postincrement")); - op_mask |= 0x1001; - } - - /* avr1 can do "ld r,Z" and "st Z,r" but no other pointer - registers, no predecrement, no postincrement. */ - if (!avr_opt.all_opcodes && (op_mask & 0x100F) - && !(avr_mcu->isa & AVR_ISA_SRAM)) - as_bad (_("addressing mode not supported")); - } - break; - - case 'z': - if (*str == '-') - as_bad (_("can't predecrement")); - - if (! (*str == 'z' || *str == 'Z')) - as_bad (_("pointer register Z required")); - - str = skip_space (str + 1); - - if (*str == '+') - { - ++str; - op_mask |= 1; - } - break; - - case 'b': - { - char c = TOLOWER (*str++); - - if (c == 'y') - op_mask |= 0x8; - else if (c != 'z') - as_bad (_("pointer register (Y or Z) required")); - str = skip_space (str); - if (*str++ == '+') - { - unsigned int x; - x = avr_get_constant (str, 63); - str = input_line_pointer; - op_mask |= (x & 7) | ((x & (3 << 3)) << 7) | ((x & (1 << 5)) << 8); - } - } - break; - - case 'h': - str = parse_exp (str, &op_expr); - fix_new_exp (frag_now, where, opcode->insn_size * 2, - &op_expr, FALSE, BFD_RELOC_AVR_CALL); - break; - - case 'L': - str = parse_exp (str, &op_expr); - fix_new_exp (frag_now, where, opcode->insn_size * 2, - &op_expr, TRUE, BFD_RELOC_AVR_13_PCREL); - break; - - case 'l': - str = parse_exp (str, &op_expr); - fix_new_exp (frag_now, where, opcode->insn_size * 2, - &op_expr, TRUE, BFD_RELOC_AVR_7_PCREL); - break; - - case 'i': - str = parse_exp (str, &op_expr); - fix_new_exp (frag_now, where + 2, opcode->insn_size * 2, - &op_expr, FALSE, BFD_RELOC_16); - break; - - case 'M': - { - bfd_reloc_code_real_type r_type; - - input_line_pointer = str; - r_type = avr_ldi_expression (&op_expr); - str = input_line_pointer; - fix_new_exp (frag_now, where, 3, - &op_expr, FALSE, r_type); - } - break; - - case 'n': - { - unsigned int x; - - x = ~avr_get_constant (str, 255); - str = input_line_pointer; - op_mask |= (x & 0xf) | ((x << 4) & 0xf00); - } - break; - - case 'K': - { - unsigned int x; - - x = avr_get_constant (str, 63); - str = input_line_pointer; - op_mask |= (x & 0xf) | ((x & 0x30) << 2); - } - break; - - case 'S': - case 's': - { - unsigned int x; - - x = avr_get_constant (str, 7); - str = input_line_pointer; - if (*op == 'S') - x <<= 4; - op_mask |= x; - } - break; - - case 'P': - { - unsigned int x; - - x = avr_get_constant (str, 63); - str = input_line_pointer; - op_mask |= (x & 0xf) | ((x & 0x30) << 5); - } - break; - - case 'p': - { - unsigned int x; - - x = avr_get_constant (str, 31); - str = input_line_pointer; - op_mask |= x << 3; - } - break; - - case '?': - break; - - default: - as_bad (_("unknown constraint `%c'"), *op); - } - - *line = str; - return op_mask; -} - -/* GAS will call this function for each section at the end of the assembly, - to permit the CPU backend to adjust the alignment of a section. */ - -valueT -md_section_align (seg, addr) - asection *seg; - valueT addr; -{ - int align = bfd_get_section_alignment (stdoutput, seg); - return ((addr + (1 << align) - 1) & (-1 << align)); -} - -/* If you define this macro, it should return the offset between the - address of a PC relative fixup and the position from which the PC - relative adjustment should be made. On many processors, the base - of a PC relative instruction is the next instruction, so this - macro would return the length of an instruction. */ - -long -md_pcrel_from_section (fixp, sec) - fixS *fixp; - segT sec; -{ - if (fixp->fx_addsy != (symbolS *) NULL - && (!S_IS_DEFINED (fixp->fx_addsy) - || (S_GET_SEGMENT (fixp->fx_addsy) != sec))) - return 0; - - return fixp->fx_frag->fr_address + fixp->fx_where; -} - -/* GAS will call this for each fixup. It should store the correct - value in the object file. */ - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT * valP; - segT seg; -{ - unsigned char *where; - unsigned long insn; - long value = *valP; - - if (fixP->fx_addsy == (symbolS *) NULL) - fixP->fx_done = 1; - - else if (fixP->fx_pcrel) - { - segT s = S_GET_SEGMENT (fixP->fx_addsy); - - if (s == seg || s == absolute_section) - { - value += S_GET_VALUE (fixP->fx_addsy); - fixP->fx_done = 1; - } - } - - /* We don't actually support subtracting a symbol. */ - if (fixP->fx_subsy != (symbolS *) NULL) - as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); - - switch (fixP->fx_r_type) - { - default: - fixP->fx_no_overflow = 1; - break; - case BFD_RELOC_AVR_7_PCREL: - case BFD_RELOC_AVR_13_PCREL: - case BFD_RELOC_32: - case BFD_RELOC_16: - case BFD_RELOC_AVR_CALL: - break; - } - - if (fixP->fx_done) - { - /* Fetch the instruction, insert the fully resolved operand - value, and stuff the instruction back again. */ - where = fixP->fx_frag->fr_literal + fixP->fx_where; - insn = bfd_getl16 (where); - - switch (fixP->fx_r_type) - { - case BFD_RELOC_AVR_7_PCREL: - if (value & 1) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("odd address operand: %ld"), value); - - /* Instruction addresses are always right-shifted by 1. */ - value >>= 1; - --value; /* Correct PC. */ - - if (value < -64 || value > 63) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("operand out of range: %ld"), value); - value = (value << 3) & 0x3f8; - bfd_putl16 ((bfd_vma) (value | insn), where); - break; - - case BFD_RELOC_AVR_13_PCREL: - if (value & 1) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("odd address operand: %ld"), value); - - /* Instruction addresses are always right-shifted by 1. */ - value >>= 1; - --value; /* Correct PC. */ - - if (value < -2048 || value > 2047) - { - /* No wrap for devices with >8K of program memory. */ - if ((avr_mcu->isa & AVR_ISA_MEGA) || avr_opt.no_wrap) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("operand out of range: %ld"), value); - } - - value &= 0xfff; - bfd_putl16 ((bfd_vma) (value | insn), where); - break; - - case BFD_RELOC_32: - bfd_putl16 ((bfd_vma) value, where); - break; - - case BFD_RELOC_16: - bfd_putl16 ((bfd_vma) value, where); - break; - - case BFD_RELOC_AVR_16_PM: - bfd_putl16 ((bfd_vma) (value >> 1), where); - break; - - case BFD_RELOC_AVR_LO8_LDI: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value), where); - break; - - case -BFD_RELOC_AVR_LO8_LDI: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 16), where); - break; - - case BFD_RELOC_AVR_HI8_LDI: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 8), where); - break; - - case -BFD_RELOC_AVR_HI8_LDI: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 24), where); - break; - - case BFD_RELOC_AVR_HH8_LDI: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 16), where); - break; - - case BFD_RELOC_AVR_LO8_LDI_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value), where); - break; - - case -BFD_RELOC_AVR_LO8_LDI_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 16), where); - break; - - case BFD_RELOC_AVR_HI8_LDI_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 8), where); - break; - - case -BFD_RELOC_AVR_HI8_LDI_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 24), where); - break; - - case BFD_RELOC_AVR_HH8_LDI_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 16), where); - break; - - case BFD_RELOC_AVR_LO8_LDI_PM: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 1), where); - break; - - case BFD_RELOC_AVR_HI8_LDI_PM: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 9), where); - break; - - case BFD_RELOC_AVR_HH8_LDI_PM: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value >> 17), where); - break; - - case BFD_RELOC_AVR_LO8_LDI_PM_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 1), where); - break; - - case BFD_RELOC_AVR_HI8_LDI_PM_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 9), where); - break; - - case BFD_RELOC_AVR_HH8_LDI_PM_NEG: - bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (-value >> 17), where); - break; - - case BFD_RELOC_AVR_CALL: - { - unsigned long x; - - x = bfd_getl16 (where); - if (value & 1) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("odd address operand: %ld"), value); - value >>= 1; - x |= ((value & 0x10000) | ((value << 3) & 0x1f00000)) >> 16; - bfd_putl16 ((bfd_vma) x, where); - bfd_putl16 ((bfd_vma) (value & 0xffff), where + 2); - } - break; - - default: - as_fatal (_("line %d: unknown relocation type: 0x%x"), - fixP->fx_line, fixP->fx_r_type); - break; - } - } - else - { - switch (fixP->fx_r_type) - { - case -BFD_RELOC_AVR_HI8_LDI_NEG: - case -BFD_RELOC_AVR_HI8_LDI: - case -BFD_RELOC_AVR_LO8_LDI_NEG: - case -BFD_RELOC_AVR_LO8_LDI: - as_bad_where (fixP->fx_file, fixP->fx_line, - _("only constant expression allowed")); - fixP->fx_done = 1; - break; - default: - break; - } - } -} - -/* A `BFD_ASSEMBLER' GAS will call this to generate a reloc. GAS - will pass the resulting reloc to `bfd_install_relocation'. This - currently works poorly, as `bfd_install_relocation' often does the - wrong thing, and instances of `tc_gen_reloc' have been written to - work around the problems, which in turns makes it difficult to fix - `bfd_install_relocation'. */ - -/* If while processing a fixup, a reloc really needs to be created - then it is done here. */ - -arelent * -tc_gen_reloc (seg, fixp) - asection *seg ATTRIBUTE_UNUSED; - fixS *fixp; -{ - arelent *reloc; - - reloc = (arelent *) xmalloc (sizeof (arelent)); - - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); - if (reloc->howto == (reloc_howto_type *) NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("reloc %d not supported by object file format"), - (int) fixp->fx_r_type); - return NULL; - } - - if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT - || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - reloc->address = fixp->fx_offset; - - reloc->addend = fixp->fx_offset; - - return reloc; -} - -void -md_assemble (str) - char *str; -{ - struct avr_opcodes_s *opcode; - char op[11]; - - str = skip_space (extract_word (str, op, sizeof (op))); - - if (!op[0]) - as_bad (_("can't find opcode ")); - - opcode = (struct avr_opcodes_s *) hash_find (avr_hash, op); - - if (opcode == NULL) - { - as_bad (_("unknown opcode `%s'"), op); - return; - } - - /* Special case for opcodes with optional operands (lpm, elpm) - - version with operands exists in avr_opcodes[] in the next entry. */ - - if (*str && *opcode->constraints == '?') - ++opcode; - - if (!avr_opt.all_opcodes && (opcode->isa & avr_mcu->isa) != opcode->isa) - as_bad (_("illegal opcode %s for mcu %s"), opcode->name, avr_mcu->name); - - /* We used to set input_line_pointer to the result of get_operands, - but that is wrong. Our caller assumes we don't change it. */ - { - char *t = input_line_pointer; - avr_operands (opcode, &str); - if (*skip_space (str)) - as_bad (_("garbage at end of line")); - input_line_pointer = t; - } -} - -/* Parse ordinary expression. */ - -static char * -parse_exp (s, op) - char *s; - expressionS *op; -{ - input_line_pointer = s; - expression (op); - if (op->X_op == O_absent) - as_bad (_("missing operand")); - return input_line_pointer; -} - -/* Parse special expressions (needed for LDI command): - xx8 (address) - xx8 (-address) - pm_xx8 (address) - pm_xx8 (-address) - where xx is: hh, hi, lo. */ - -static bfd_reloc_code_real_type -avr_ldi_expression (exp) - expressionS *exp; -{ - char *str = input_line_pointer; - char *tmp; - char op[8]; - int mod; - tmp = str; - - str = extract_word (str, op, sizeof (op)); - - if (op[0]) - { - mod = (int) hash_find (avr_mod_hash, op); - - if (mod) - { - int closes = 0; - - mod -= 10; - str = skip_space (str); - - if (*str == '(') - { - int neg_p = 0; - - ++str; - - if (strncmp ("pm(", str, 3) == 0 - || strncmp ("-(pm(", str, 5) == 0) - { - if (HAVE_PM_P (mod)) - { - ++mod; - ++closes; - } - else - as_bad (_("illegal expression")); - - if (*str == '-') - { - neg_p = 1; - ++closes; - str += 5; - } - else - str += 3; - } - - if (*str == '-' && *(str + 1) == '(') - { - neg_p ^= 1; - ++closes; - str += 2; - } - - input_line_pointer = str; - expression (exp); - - do - { - if (*input_line_pointer != ')') - { - as_bad (_("`)' required")); - break; - } - input_line_pointer++; - } - while (closes--); - - return neg_p ? EXP_MOD_NEG_RELOC (mod) : EXP_MOD_RELOC (mod); - } - } - } - - input_line_pointer = tmp; - expression (exp); - - /* Warn about expressions that fail to use lo8 (). */ - if (exp->X_op == O_constant) - { - int x = exp->X_add_number; - if (x < -255 || x > 255) - as_warn (_("constant out of 8-bit range: %d"), x); - } - else - as_warn (_("expression possibly out of 8-bit range")); - - return BFD_RELOC_AVR_LO8_LDI; -} - -/* Flag to pass `pm' mode between `avr_parse_cons_expression' and - `avr_cons_fix_new'. */ -static int exp_mod_pm = 0; - -/* Parse special CONS expression: pm (expression) - which is used for addressing to a program memory. - Relocation: BFD_RELOC_AVR_16_PM. */ - -void -avr_parse_cons_expression (exp, nbytes) - expressionS *exp; - int nbytes; -{ - char *tmp; - - exp_mod_pm = 0; - - tmp = input_line_pointer = skip_space (input_line_pointer); - - if (nbytes == 2) - { - char *pm_name = "pm"; - int len = strlen (pm_name); - - if (strncasecmp (input_line_pointer, pm_name, len) == 0) - { - input_line_pointer = skip_space (input_line_pointer + len); - - if (*input_line_pointer == '(') - { - input_line_pointer = skip_space (input_line_pointer + 1); - exp_mod_pm = 1; - expression (exp); - - if (*input_line_pointer == ')') - ++input_line_pointer; - else - { - as_bad (_("`)' required")); - exp_mod_pm = 0; - } - - return; - } - - input_line_pointer = tmp; - } - } - - expression (exp); -} - -void -avr_cons_fix_new (frag, where, nbytes, exp) - fragS *frag; - int where; - int nbytes; - expressionS *exp; -{ - if (exp_mod_pm == 0) - { - if (nbytes == 2) - fix_new_exp (frag, where, nbytes, exp, FALSE, BFD_RELOC_16); - else if (nbytes == 4) - fix_new_exp (frag, where, nbytes, exp, FALSE, BFD_RELOC_32); - else - as_bad (_("illegal %srelocation size: %d"), "", nbytes); - } - else - { - if (nbytes == 2) - fix_new_exp (frag, where, nbytes, exp, FALSE, BFD_RELOC_AVR_16_PM); - else - as_bad (_("illegal %srelocation size: %d"), "`pm' ", nbytes); - exp_mod_pm = 0; - } -} diff --git a/gas/config/tc-avr.h b/gas/config/tc-avr.h deleted file mode 100644 index 8a1a4eb9e..000000000 --- a/gas/config/tc-avr.h +++ /dev/null @@ -1,126 +0,0 @@ -/* This file is tc-avr.h - Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - - Contributed by Denis Chertykov - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#ifndef BFD_ASSEMBLER - #error AVR support requires BFD_ASSEMBLER -#endif - -/* By convention, you should define this macro in the `.h' file. For - example, `tc-m68k.h' defines `TC_M68K'. You might have to use this - if it is necessary to add CPU specific code to the object format - file. */ -#define TC_AVR - -/* This macro is the BFD target name to use when creating the output - file. This will normally depend upon the `OBJ_FMT' macro. */ -#define TARGET_FORMAT "elf32-avr" - -/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */ -#define TARGET_ARCH bfd_arch_avr - -/* This macro is the BFD machine number to pass to - `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */ -#define TARGET_MACH 0 - -/* You should define this macro to be non-zero if the target is big - endian, and zero if the target is little endian. */ -#define TARGET_BYTES_BIG_ENDIAN 0 - -/* If you define this macro, GAS will warn about the use of - nonstandard escape sequences in a string. */ -#define ONLY_STANDARD_ESCAPES - -/* GAS will call this function for any expression that can not be - recognized. When the function is called, `input_line_pointer' - will point to the start of the expression. */ -#define md_operand(x) - -/* You may define this macro to parse an expression used in a data - allocation pseudo-op such as `.word'. You can use this to - recognize relocation directives that may appear in such directives. */ -#define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N) -void avr_parse_cons_expression (expressionS *exp, int nbytes); - -/* You may define this macro to generate a fixup for a data - allocation pseudo-op. */ -#define TC_CONS_FIX_NEW(FRAG,WHERE,N,EXP) avr_cons_fix_new(FRAG,WHERE,N,EXP) -void avr_cons_fix_new(fragS *frag,int where, int nbytes, expressionS *exp); - -/* This should just call either `number_to_chars_bigendian' or - `number_to_chars_littleendian', whichever is appropriate. On - targets like the MIPS which support options to change the - endianness, which function to call is a runtime decision. On - other targets, `md_number_to_chars' can be a simple macro. */ -#define md_number_to_chars number_to_chars_littleendian - -/* `md_short_jump_size' - `md_long_jump_size' - `md_create_short_jump' - `md_create_long_jump' - If `WORKING_DOT_WORD' is defined, GAS will not do broken word - processing (*note Broken words::.). Otherwise, you should set - `md_short_jump_size' to the size of a short jump (a jump that is - just long enough to jump around a long jmp) and - `md_long_jump_size' to the size of a long jump (a jump that can go - anywhere in the function), You should define - `md_create_short_jump' to create a short jump around a long jump, - and define `md_create_long_jump' to create a long jump. */ -#define WORKING_DOT_WORD - -/* If you define this macro, it means that `tc_gen_reloc' may return - multiple relocation entries for a single fixup. In this case, the - return value of `tc_gen_reloc' is a pointer to a null terminated - array. */ -#undef RELOC_EXPANSION_POSSIBLE - -/* No shared lib support, so we don't need to ensure externally - visible symbols can be overridden. */ -#define EXTERN_FORCE_RELOC 0 - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -/* If you define this macro, it should return the offset between the - address of a PC relative fixup and the position from which the PC - relative adjustment should be made. On many processors, the base - of a PC relative instruction is the next instruction, so this - macro would return the length of an instruction. */ -#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section(FIX, SEC) -extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); - -/* The number of bytes to put into a word in a listing. This affects - the way the bytes are clumped together in the listing. For - example, a value of 2 might print `1234 5678' where a value of 1 - would print `12 34 56 78'. The default value is 4. */ -#define LISTING_WORD_SIZE 2 - -/* AVR port uses `$' as a logical line separator */ -#define LEX_DOLLAR 0 - -/* An `.lcomm' directive with no explicit alignment parameter will - use this macro to set P2VAR to the alignment that a request for - SIZE bytes will have. The alignment is expressed as a power of - two. If no alignment should take place, the macro definition - should do nothing. Some targets define a `.bss' directive that is - also affected by this macro. The default definition will set - P2VAR to the truncated power of two of sizes up to eight bytes. */ -#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) (P2VAR) = 0 diff --git a/gas/config/tc-cris.c b/gas/config/tc-cris.c deleted file mode 100644 index 736261caf..000000000 --- a/gas/config/tc-cris.c +++ /dev/null @@ -1,3306 +0,0 @@ -/* tc-cris.c -- Assembler code for the CRIS CPU core. - Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - Contributed by Axis Communications AB, Lund, Sweden. - Originally written for GAS 1.38.1 by Mikael Asker. - Updates, BFDizing, GNUifying and ELF support by Hans-Peter Nilsson. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. */ - -#include -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "opcode/cris.h" -#include "dwarf2dbg.h" - -/* Conventions used here: - Generally speaking, pointers to binutils types such as "fragS" and - "expressionS" get parameter and variable names ending in "P", such as - "fragP", to harmonize with the rest of the binutils code. Other - pointers get a "p" suffix, such as "bufp". Any function or type-name - that could clash with a current or future binutils or GAS function get - a "cris_" prefix. */ - -#define SYNTAX_RELAX_REG_PREFIX "no_register_prefix" -#define SYNTAX_ENFORCE_REG_PREFIX "register_prefix" -#define SYNTAX_USER_SYM_LEADING_UNDERSCORE "leading_underscore" -#define SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE "no_leading_underscore" -#define REGISTER_PREFIX_CHAR '$' - -/* True for expressions where getting X_add_symbol and X_add_number is - enough to get the "base" and "offset"; no need to make_expr_symbol. - It's not enough to check if X_op_symbol is NULL; that misses unary - operations like O_uminus. */ -#define SIMPLE_EXPR(EXP) \ - ((EXP)->X_op == O_constant || (EXP)->X_op == O_symbol) - -/* Like in ":GOT", ":GOTOFF" etc. Other ports use '@', but that's in - line_separator_chars for CRIS, so we avoid it. */ -#define PIC_SUFFIX_CHAR ':' - -/* This might be CRIS_INSN_NONE if we're assembling a prefix-insn only. - Note that some prefix-insns might be assembled as CRIS_INSN_NORMAL. */ -enum cris_insn_kind -{ - CRIS_INSN_NORMAL, CRIS_INSN_NONE, CRIS_INSN_BRANCH -}; - -/* An instruction will have one of these prefixes. - Although the same bit-pattern, we handle BDAP with an immediate - expression (eventually quick or [pc+]) different from when we only have - register expressions. */ -enum prefix_kind -{ - PREFIX_NONE, PREFIX_BDAP_IMM, PREFIX_BDAP, PREFIX_BIAP, PREFIX_DIP, - PREFIX_PUSH -}; - -/* The prefix for an instruction. */ -struct cris_prefix -{ - enum prefix_kind kind; - int base_reg_number; - unsigned int opcode; - - /* There might be an expression to be evaluated, like I in [rN+I]. */ - expressionS expr; - - /* If there's an expression, we might need a relocation. Here's the - type of what relocation to start relaxaton with. - The relocation is assumed to start immediately after the prefix insn, - so we don't provide an offset. */ - enum bfd_reloc_code_real reloc; -}; - -/* The description of the instruction being assembled. */ -struct cris_instruction -{ - /* If CRIS_INSN_NONE, then this insn is of zero length. */ - enum cris_insn_kind insn_type; - - /* If a special register was mentioned, this is its description, else - it is NULL. */ - const struct cris_spec_reg *spec_reg; - - unsigned int opcode; - - /* An insn may have at most one expression; theoretically there could be - another in its prefix (but I don't see how that could happen). */ - expressionS expr; - - /* The expression might need a relocation. Here's one to start - relaxation with. */ - enum bfd_reloc_code_real reloc; - - /* The size in bytes of an immediate expression, or zero if - nonapplicable. */ - int imm_oprnd_size; -}; - -static void cris_process_instruction PARAMS ((char *, - struct cris_instruction *, - struct cris_prefix *)); -static int get_bwd_size_modifier PARAMS ((char **, int *)); -static int get_bw_size_modifier PARAMS ((char **, int *)); -static int get_gen_reg PARAMS ((char **, int *)); -static int get_spec_reg PARAMS ((char **, - const struct cris_spec_reg **)); -static int get_autoinc_prefix_or_indir_op PARAMS ((char **, - struct cris_prefix *, - int *, int *, int *, - expressionS *)); -static int get_3op_or_dip_prefix_op PARAMS ((char **, - struct cris_prefix *)); -static int cris_get_expression PARAMS ((char **, expressionS *)); -static int get_flags PARAMS ((char **, int *)); -static void gen_bdap PARAMS ((int, expressionS *)); -static int branch_disp PARAMS ((int)); -static void gen_cond_branch_32 PARAMS ((char *, char *, fragS *, - symbolS *, symbolS *, long int)); -static void cris_number_to_imm PARAMS ((char *, long, int, fixS *, segT)); -static void cris_create_short_jump PARAMS ((char *, addressT, addressT, - fragS *, symbolS *)); -static void s_syntax PARAMS ((int)); -static void s_cris_file PARAMS ((int)); -static void s_cris_loc PARAMS ((int)); - -/* Get ":GOT", ":GOTOFF", ":PLT" etc. suffixes. */ -static void cris_get_pic_suffix PARAMS ((char **, - bfd_reloc_code_real_type *, - expressionS *)); -static unsigned int cris_get_pic_reloc_size - PARAMS ((bfd_reloc_code_real_type)); - -/* All the .syntax functions. */ -static void cris_force_reg_prefix PARAMS ((void)); -static void cris_relax_reg_prefix PARAMS ((void)); -static void cris_sym_leading_underscore PARAMS ((void)); -static void cris_sym_no_leading_underscore PARAMS ((void)); -static char *cris_insn_first_word_frag PARAMS ((void)); - -/* Handle to the opcode hash table. */ -static struct hash_control *op_hash = NULL; - -/* If we target cris-axis-linux-gnu (as opposed to generic cris-axis-elf), - we default to no underscore and required register-prefixes. The - difference is in the default values. */ -#ifdef TE_LINUX -#define DEFAULT_CRIS_AXIS_LINUX_GNU TRUE -#else -#define DEFAULT_CRIS_AXIS_LINUX_GNU FALSE -#endif - -/* Whether we demand that registers have a `$' prefix. Default here. */ -static bfd_boolean demand_register_prefix = DEFAULT_CRIS_AXIS_LINUX_GNU; - -/* Whether global user symbols have a leading underscore. Default here. */ -static bfd_boolean symbols_have_leading_underscore - = !DEFAULT_CRIS_AXIS_LINUX_GNU; - -/* Whether or not we allow PIC, and expand to PIC-friendly constructs. */ -static bfd_boolean pic = FALSE; - -const pseudo_typeS md_pseudo_table[] = -{ - {"dword", cons, 4}, - {"syntax", s_syntax, 0}, - {"file", s_cris_file, 0}, - {"loc", s_cris_loc, 0}, - {NULL, 0, 0} -}; - -static int warn_for_branch_expansion = 0; - -const char cris_comment_chars[] = ";"; - -/* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' - .line and .file directives will appear in the pre-processed output. */ -/* Note that input_file.c hand-checks for '#' at the beginning of the - first line of the input file. This is because the compiler outputs - #NO_APP at the beginning of its output. */ -/* Also note that slash-star will always start a comment. */ -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = "@"; - -/* Now all floating point support is shut off. See md_atof. */ -const char EXP_CHARS[] = ""; -const char FLT_CHARS[] = ""; - -/* For CRIS, we encode the relax_substateTs (in e.g. fr_substate) as: - 2 1 0 - ---/ /--+-----------------+-----------------+-----------------+ - | what state ? | how long ? | - ---/ /--+-----------------+-----------------+-----------------+ - - The "how long" bits are 00 = byte, 01 = word, 10 = dword (long). - This is a Un*x convention. - Not all lengths are legit for a given value of (what state). - - Groups for CRIS address relaxing: - - 1. Bcc - length: byte, word, 10-byte expansion - - 2. BDAP - length: byte, word, dword */ - -#define STATE_CONDITIONAL_BRANCH (1) -#define STATE_BASE_PLUS_DISP_PREFIX (2) - -#define STATE_LENGTH_MASK (3) -#define STATE_BYTE (0) -#define STATE_WORD (1) -#define STATE_DWORD (2) -/* Symbol undefined. */ -#define STATE_UNDF (3) -#define STATE_MAX_LENGTH (3) - -/* These displacements are relative to the address following the opcode - word of the instruction. The first letter is Byte, Word. The 2nd - letter is Forward, Backward. */ - -#define BRANCH_BF ( 254) -#define BRANCH_BB (-256) -#define BRANCH_WF (2 + 32767) -#define BRANCH_WB (2 + -32768) - -#define BDAP_BF ( 127) -#define BDAP_BB (-128) -#define BDAP_WF ( 32767) -#define BDAP_WB (-32768) - -#define ENCODE_RELAX(what, length) (((what) << 2) + (length)) - -const relax_typeS md_cris_relax_table[] = -{ - /* Error sentinel (0, 0). */ - {1, 1, 0, 0}, - - /* Unused (0, 1). */ - {1, 1, 0, 0}, - - /* Unused (0, 2). */ - {1, 1, 0, 0}, - - /* Unused (0, 3). */ - {1, 1, 0, 0}, - - /* Bcc o (1, 0). */ - {BRANCH_BF, BRANCH_BB, 0, ENCODE_RELAX (1, 1)}, - - /* Bcc [PC+] (1, 1). */ - {BRANCH_WF, BRANCH_WB, 2, ENCODE_RELAX (1, 2)}, - - /* BEXT/BWF, BA, JUMP (external), JUMP (always), Bnot_cc, JUMP (default) - (1, 2). */ - {0, 0, 10, 0}, - - /* Unused (1, 3). */ - {1, 1, 0, 0}, - - /* BDAP o (2, 0). */ - {BDAP_BF, BDAP_BB, 0, ENCODE_RELAX (2, 1)}, - - /* BDAP.[bw] [PC+] (2, 1). */ - {BDAP_WF, BDAP_WB, 2, ENCODE_RELAX (2, 2)}, - - /* BDAP.d [PC+] (2, 2). */ - {0, 0, 4, 0} -}; - -#undef BRANCH_BF -#undef BRANCH_BB -#undef BRANCH_WF -#undef BRANCH_WB -#undef BDAP_BF -#undef BDAP_BB -#undef BDAP_WF -#undef BDAP_WB - -/* Target-specific multicharacter options, not const-declared at usage - in 2.9.1 and CVS of 2000-02-16. */ -struct option md_longopts[] = -{ -#define OPTION_NO_US (OPTION_MD_BASE + 0) - {"no-underscore", no_argument, NULL, OPTION_NO_US}, -#define OPTION_US (OPTION_MD_BASE + 1) - {"underscore", no_argument, NULL, OPTION_US}, -#define OPTION_PIC (OPTION_MD_BASE + 2) - {"pic", no_argument, NULL, OPTION_PIC}, - {NULL, no_argument, NULL, 0} -}; - -/* Not const-declared at usage in 2.9.1. */ -size_t md_longopts_size = sizeof (md_longopts); -const char *md_shortopts = "hHN"; - -/* At first glance, this may seems wrong and should be 4 (ba + nop); but - since a short_jump must skip a *number* of long jumps, it must also be - a long jump. Here, we hope to make it a "ba [16bit_offs]" and a "nop" - for the delay slot and hope that the jump table at most needs - 32767/4=8191 long-jumps. A branch is better than a jump, since it is - relative; we will not have a reloc to fix up somewhere. - - Note that we can't add relocs, because relaxation uses these fixed - numbers, and md_create_short_jump is called after relaxation. */ - -const int md_short_jump_size = 6; -const int md_long_jump_size = 6; - -/* Report output format. Small changes in output format (like elf - variants below) can happen until all options are parsed, but after - that, the output format must remain fixed. */ - -const char * -cris_target_format () -{ - switch (OUTPUT_FLAVOR) - { - case bfd_target_aout_flavour: - return "a.out-cris"; - - case bfd_target_elf_flavour: - if (symbols_have_leading_underscore) - return "elf32-us-cris"; - return "elf32-cris"; - - default: - abort (); - return NULL; - } -} - -/* We need a port-specific relaxation function to cope with sym2 - sym1 - relative expressions with both symbols in the same segment (but not - necessarily in the same frag as this insn), for example: - move.d [pc+sym2-(sym1-2)],r10 - sym1: - The offset can be 8, 16 or 32 bits long. */ - -long -cris_relax_frag (seg, fragP, stretch) - segT seg ATTRIBUTE_UNUSED; - fragS *fragP; - long stretch ATTRIBUTE_UNUSED; -{ - long growth; - offsetT aim = 0; - symbolS *symbolP; - const relax_typeS *this_type; - const relax_typeS *start_type; - relax_substateT next_state; - relax_substateT this_state; - const relax_typeS *table = TC_GENERIC_RELAX_TABLE; - - /* We only have to cope with frags as prepared by - md_estimate_size_before_relax. The dword cases may get here - because of the different reasons that they aren't relaxable. */ - switch (fragP->fr_subtype) - { - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD): - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD): - /* When we get to these states, the frag won't grow any more. */ - return 0; - - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_WORD): - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE): - if (fragP->fr_symbol == NULL - || S_GET_SEGMENT (fragP->fr_symbol) != absolute_section) - as_fatal (_("internal inconsistency problem in %s: fr_symbol %lx"), - __FUNCTION__, (long) fragP->fr_symbol); - symbolP = fragP->fr_symbol; - if (symbol_resolved_p (symbolP)) - as_fatal (_("internal inconsistency problem in %s: resolved symbol"), - __FUNCTION__); - aim = S_GET_VALUE (symbolP); - break; - - default: - as_fatal (_("internal inconsistency problem in %s: fr_subtype %d"), - __FUNCTION__, fragP->fr_subtype); - } - - /* The rest is stolen from relax_frag. There's no obvious way to - share the code, but fortunately no requirement to keep in sync as - long as fragP->fr_symbol does not have its segment changed. */ - - this_state = fragP->fr_subtype; - start_type = this_type = table + this_state; - - if (aim < 0) - { - /* Look backwards. */ - for (next_state = this_type->rlx_more; next_state;) - if (aim >= this_type->rlx_backward) - next_state = 0; - else - { - /* Grow to next state. */ - this_state = next_state; - this_type = table + this_state; - next_state = this_type->rlx_more; - } - } - else - { - /* Look forwards. */ - for (next_state = this_type->rlx_more; next_state;) - if (aim <= this_type->rlx_forward) - next_state = 0; - else - { - /* Grow to next state. */ - this_state = next_state; - this_type = table + this_state; - next_state = this_type->rlx_more; - } - } - - growth = this_type->rlx_length - start_type->rlx_length; - if (growth != 0) - fragP->fr_subtype = this_state; - return growth; -} - -/* Prepare machine-dependent frags for relaxation. - - Called just before relaxation starts. Any symbol that is now undefined - will not become defined. - - Return the correct fr_subtype in the frag. - - Return the initial "guess for fr_var" to caller. The guess for fr_var - is *actually* the growth beyond fr_fix. Whatever we do to grow fr_fix - or fr_var contributes to our returned value. - - Although it may not be explicit in the frag, pretend - fr_var starts with a value. */ - -int -md_estimate_size_before_relax (fragP, segment_type) - fragS *fragP; - /* The segment is either N_DATA or N_TEXT. */ - segT segment_type; -{ - int old_fr_fix; - - old_fr_fix = fragP->fr_fix; - - switch (fragP->fr_subtype) - { - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_UNDF): - if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) - /* The symbol lies in the same segment - a relaxable case. */ - fragP->fr_subtype - = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE); - else - /* Unknown or not the same segment, so not relaxable. */ - fragP->fr_subtype - = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD); - fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; - break; - - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_UNDF): - /* Note that we can not do anything sane with relaxing - [rX + a_known_symbol_in_text], it will have to be a 32-bit - value. - - We could play tricks with managing a constant pool and make - a_known_symbol_in_text a "bdap [pc + offset]" pointing there - (like the GOT for ELF shared libraries), but that's no use, it - would in general be no shorter or faster code, only more - complicated. */ - - if (S_GET_SEGMENT (fragP->fr_symbol) != absolute_section) - { - /* Go for dword if not absolute or same segment. */ - fragP->fr_subtype - = ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD); - fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; - } - else if (!symbol_resolved_p (fragP->fr_symbol)) - { - /* The symbol will eventually be completely resolved as an - absolute expression, but right now it depends on the result - of relaxation and we don't know anything else about the - value. We start relaxation with the assumption that it'll - fit in a byte. */ - fragP->fr_subtype - = ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE); - fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; - } - else - { - /* Absolute expression. */ - long int value; - value = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset; - - if (value >= -128 && value <= 127) - { - /* Byte displacement. */ - (fragP->fr_opcode)[0] = value; - } - else - { - /* Word or dword displacement. */ - int pow2_of_size = 1; - char *writep; - - if (value < -32768 || value > 32767) - { - /* Outside word range, make it a dword. */ - pow2_of_size = 2; - } - - /* Modify the byte-offset BDAP into a word or dword offset - BDAP. Or really, a BDAP rX,8bit into a - BDAP.[wd] rX,[PC+] followed by a word or dword. */ - (fragP->fr_opcode)[0] = BDAP_PC_LOW + pow2_of_size * 16; - - /* Keep the register number in the highest four bits. */ - (fragP->fr_opcode)[1] &= 0xF0; - (fragP->fr_opcode)[1] |= BDAP_INCR_HIGH; - - /* It grew by two or four bytes. */ - fragP->fr_fix += 1 << pow2_of_size; - writep = fragP->fr_literal + old_fr_fix; - md_number_to_chars (writep, value, 1 << pow2_of_size); - } - frag_wane (fragP); - } - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE): - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD): - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD): - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE): - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_WORD): - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD): - /* When relaxing a section for the second time, we don't need to - do anything except making sure that fr_var is set right. */ - fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; - break; - - default: - BAD_CASE (fragP->fr_subtype); - } - - return fragP->fr_var + (fragP->fr_fix - old_fr_fix); -} - -/* Perform post-processing of machine-dependent frags after relaxation. - Called after relaxation is finished. - In: Address of frag. - fr_type == rs_machine_dependent. - fr_subtype is what the address relaxed to. - - Out: Any fixS:s and constants are set up. - - The caller will turn the frag into a ".space 0". */ - -void -md_convert_frag (abfd, sec, fragP) - bfd *abfd ATTRIBUTE_UNUSED; - segT sec ATTRIBUTE_UNUSED; - fragS *fragP; -{ - /* Pointer to first byte in variable-sized part of the frag. */ - char *var_partp; - - /* Pointer to first opcode byte in frag. */ - char *opcodep; - - /* Used to check integrity of the relaxation. - One of 2 = long, 1 = word, or 0 = byte. */ - int length_code; - - /* Size in bytes of variable-sized part of frag. */ - int var_part_size = 0; - - /* This is part of *fragP. It contains all information about addresses - and offsets to varying parts. */ - symbolS *symbolP; - unsigned long var_part_offset; - - /* Where, in file space, is _var of *fragP? */ - unsigned long address_of_var_part = 0; - - /* Where, in file space, does addr point? */ - unsigned long target_address; - - know (fragP->fr_type == rs_machine_dependent); - - length_code = fragP->fr_subtype & STATE_LENGTH_MASK; - know (length_code >= 0 && length_code < STATE_MAX_LENGTH); - - var_part_offset = fragP->fr_fix; - var_partp = fragP->fr_literal + var_part_offset; - opcodep = fragP->fr_opcode; - - symbolP = fragP->fr_symbol; - target_address = (symbolP ? S_GET_VALUE (symbolP) : 0) + fragP->fr_offset; - address_of_var_part = fragP->fr_address + var_part_offset; - - switch (fragP->fr_subtype) - { - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE): - opcodep[0] = branch_disp ((target_address - address_of_var_part)); - var_part_size = 0; - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD): - /* We had a quick immediate branch, now turn it into a word one i.e. a - PC autoincrement. */ - opcodep[0] = BRANCH_PC_LOW; - opcodep[1] &= 0xF0; - opcodep[1] |= BRANCH_INCR_HIGH; - md_number_to_chars (var_partp, - (long) (target_address - (address_of_var_part + 2)), - 2); - var_part_size = 2; - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD): - gen_cond_branch_32 (fragP->fr_opcode, var_partp, fragP, - fragP->fr_symbol, (symbolS *) NULL, - fragP->fr_offset); - /* Ten bytes added: a branch, nop and a jump. */ - var_part_size = 2 + 2 + 4 + 2; - break; - - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE): - if (symbolP == NULL) - as_fatal (_("internal inconsistency in %s: bdapq no symbol"), - __FUNCTION__); - opcodep[0] = S_GET_VALUE (symbolP); - var_part_size = 0; - break; - - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_WORD): - /* We had a BDAP 8-bit "quick immediate", now turn it into a 16-bit - one that uses PC autoincrement. */ - opcodep[0] = BDAP_PC_LOW + (1 << 4); - opcodep[1] &= 0xF0; - opcodep[1] |= BDAP_INCR_HIGH; - if (symbolP == NULL) - as_fatal (_("internal inconsistency in %s: bdap.w with no symbol"), - __FUNCTION__); - md_number_to_chars (var_partp, S_GET_VALUE (symbolP), 2); - var_part_size = 2; - break; - - case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD): - /* We had a BDAP 16-bit "word", change the offset to a dword. */ - opcodep[0] = BDAP_PC_LOW + (2 << 4); - opcodep[1] &= 0xF0; - opcodep[1] |= BDAP_INCR_HIGH; - if (fragP->fr_symbol == NULL) - md_number_to_chars (var_partp, fragP->fr_offset, 4); - else - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset, 0, BFD_RELOC_32); - var_part_size = 4; - break; - - default: - BAD_CASE (fragP->fr_subtype); - break; - } - - fragP->fr_fix += var_part_size; -} - -/* Generate a short jump around a secondary jump table. - Used by md_create_long_jump. - - This used to be md_create_short_jump, but is now called from - md_create_long_jump instead, when sufficient. - since the sizes of the jumps are the same. It used to be brittle, - making possibilities for creating bad code. */ - -static void -cris_create_short_jump (storep, from_addr, to_addr, fragP, to_symbol) - char *storep; - addressT from_addr; - addressT to_addr; - fragS *fragP ATTRIBUTE_UNUSED; - symbolS *to_symbol ATTRIBUTE_UNUSED; -{ - long int distance; - - distance = to_addr - from_addr; - - if (-254 <= distance && distance <= 256) - { - /* Create a "short" short jump: "BA distance - 2". */ - storep[0] = branch_disp (distance - 2); - storep[1] = BA_QUICK_HIGH; - - /* A nop for the delay slot. */ - md_number_to_chars (storep + 2, NOP_OPCODE, 2); - - /* The extra word should be filled with something sane too. Make it - a nop to keep disassembly sane. */ - md_number_to_chars (storep + 4, NOP_OPCODE, 2); - } - else - { - /* Make it a "long" short jump: "BA (PC+)". */ - md_number_to_chars (storep, BA_PC_INCR_OPCODE, 2); - - /* ".WORD distance - 4". */ - md_number_to_chars (storep + 2, (long) (distance - 4), 2); - - /* A nop for the delay slot. */ - md_number_to_chars (storep + 4, NOP_OPCODE, 2); - } -} - -/* Generate a long jump in a secondary jump table. - - storep Where to store the jump instruction. - from_addr Address of the jump instruction. - to_addr Destination address of the jump. - fragP Which frag the destination address operand - lies in. - to_symbol Destination symbol. */ - -void -md_create_long_jump (storep, from_addr, to_addr, fragP, to_symbol) - char *storep; - addressT from_addr; - addressT to_addr; - fragS *fragP; - symbolS *to_symbol; -{ - long int distance; - - distance = to_addr - from_addr; - - if (-32763 <= distance && distance <= 32772) - { - /* Then make it a "short" long jump. */ - cris_create_short_jump (storep, from_addr, to_addr, fragP, - to_symbol); - } - else - { - /* We have a "long" long jump: "JUMP [PC+]". - Make it an "ADD [PC+],PC" if we're supposed to emit PIC code. */ - md_number_to_chars (storep, - pic ? ADD_PC_INCR_OPCODE : JUMP_PC_INCR_OPCODE, 2); - - /* Follow with a ".DWORD to_addr", PC-relative for PIC. */ - fix_new (fragP, storep + 2 - fragP->fr_literal, 4, to_symbol, - 0, pic ? 1 : 0, pic ? BFD_RELOC_32_PCREL : BFD_RELOC_32); - } -} - -/* Allocate space for the first piece of an insn, and mark it as the - start of the insn for debug-format use. */ - -static char * -cris_insn_first_word_frag () -{ - char *insnp = frag_more (2); - - /* We need to mark the start of the insn by passing dwarf2_emit_insn - the offset from the current fragment position. This must be done - after the first fragment is created but before any other fragments - (fixed or varying) are created. Note that the offset only - corresponds to the "size" of the insn for a fixed-size, - non-expanded insn. */ - if (OUTPUT_FLAVOR == bfd_target_elf_flavour) - dwarf2_emit_insn (2); - - return insnp; -} - -/* Port-specific assembler initialization. */ - -void -md_begin () -{ - const char *hashret = NULL; - int i = 0; - - /* Set up a hash table for the instructions. */ - op_hash = hash_new (); - if (op_hash == NULL) - as_fatal (_("Virtual memory exhausted")); - - while (cris_opcodes[i].name != NULL) - { - const char *name = cris_opcodes[i].name; - hashret = hash_insert (op_hash, name, (PTR) &cris_opcodes[i]); - - if (hashret != NULL && *hashret != '\0') - as_fatal (_("Can't hash `%s': %s\n"), cris_opcodes[i].name, - *hashret == 0 ? _("(unknown reason)") : hashret); - do - { - if (cris_opcodes[i].match & cris_opcodes[i].lose) - as_fatal (_("Buggy opcode: `%s' \"%s\"\n"), cris_opcodes[i].name, - cris_opcodes[i].args); - - ++i; - } - while (cris_opcodes[i].name != NULL - && strcmp (cris_opcodes[i].name, name) == 0); - } -} - -/* Assemble a source line. */ - -void -md_assemble (str) - char *str; -{ - struct cris_instruction output_instruction; - struct cris_prefix prefix; - char *opcodep; - char *p; - - know (str); - - /* Do the low-level grunt - assemble to bits and split up into a prefix - and ordinary insn. */ - cris_process_instruction (str, &output_instruction, &prefix); - - /* Handle any prefixes to the instruction. */ - switch (prefix.kind) - { - case PREFIX_NONE: - break; - - /* When the expression is unknown for a BDAP, it can need 0, 2 or 4 - extra bytes, so we handle it separately. */ - case PREFIX_BDAP_IMM: - /* We only do it if the relocation is unspecified, i.e. not a PIC - relocation. */ - if (prefix.reloc == BFD_RELOC_NONE) - { - gen_bdap (prefix.base_reg_number, &prefix.expr); - break; - } - /* Fall through. */ - case PREFIX_BDAP: - case PREFIX_BIAP: - case PREFIX_DIP: - opcodep = cris_insn_first_word_frag (); - - /* Output the prefix opcode. */ - md_number_to_chars (opcodep, (long) prefix.opcode, 2); - - /* Having a specified reloc only happens for DIP and for BDAP with - PIC operands, but it is ok to drop through here for the other - prefixes as they can have no relocs specified. */ - if (prefix.reloc != BFD_RELOC_NONE) - { - unsigned int relocsize - = (prefix.kind == PREFIX_DIP - ? 4 : cris_get_pic_reloc_size (prefix.reloc)); - - p = frag_more (relocsize); - fix_new_exp (frag_now, (p - frag_now->fr_literal), relocsize, - &prefix.expr, 0, prefix.reloc); - } - break; - - case PREFIX_PUSH: - opcodep = cris_insn_first_word_frag (); - - /* Output the prefix opcode. Being a "push", we add the negative - size of the register to "sp". */ - if (output_instruction.spec_reg != NULL) - { - /* Special register. */ - opcodep[0] = -output_instruction.spec_reg->reg_size; - } - else - { - /* General register. */ - opcodep[0] = -4; - } - opcodep[1] = (REG_SP << 4) + (BDAP_QUICK_OPCODE >> 8); - break; - - default: - BAD_CASE (prefix.kind); - } - - /* If we only had a prefix insn, we're done. */ - if (output_instruction.insn_type == CRIS_INSN_NONE) - return; - - /* Done with the prefix. Continue with the main instruction. */ - if (prefix.kind == PREFIX_NONE) - opcodep = cris_insn_first_word_frag (); - else - opcodep = frag_more (2); - - /* Output the instruction opcode. */ - md_number_to_chars (opcodep, (long) (output_instruction.opcode), 2); - - /* Output the symbol-dependent instruction stuff. */ - if (output_instruction.insn_type == CRIS_INSN_BRANCH) - { - segT to_seg = absolute_section; - int is_undefined = 0; - int length_code; - - if (output_instruction.expr.X_op != O_constant) - { - to_seg = S_GET_SEGMENT (output_instruction.expr.X_add_symbol); - - if (to_seg == undefined_section) - is_undefined = 1; - } - - if (to_seg == now_seg || is_undefined) - { - /* Handle complex expressions. */ - valueT addvalue - = (SIMPLE_EXPR (&output_instruction.expr) - ? output_instruction.expr.X_add_number - : 0); - symbolS *sym - = (SIMPLE_EXPR (&output_instruction.expr) - ? output_instruction.expr.X_add_symbol - : make_expr_symbol (&output_instruction.expr)); - - /* If is_undefined, then the expression may BECOME now_seg. */ - length_code = is_undefined ? STATE_UNDF : STATE_BYTE; - - /* Make room for max ten bytes of variable length. */ - frag_var (rs_machine_dependent, 10, 0, - ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, length_code), - sym, addvalue, opcodep); - } - else - { - /* We have: to_seg != now_seg && to_seg != undefined_section. - This means it is a branch to a known symbol in another - section, perhaps an absolute address. Emit a 32-bit branch. */ - char *cond_jump = frag_more (10); - - gen_cond_branch_32 (opcodep, cond_jump, frag_now, - output_instruction.expr.X_add_symbol, - (symbolS *) NULL, - output_instruction.expr.X_add_number); - } - } - else - { - if (output_instruction.imm_oprnd_size > 0) - { - /* The instruction has an immediate operand. */ - enum bfd_reloc_code_real reloc = BFD_RELOC_NONE; - - switch (output_instruction.imm_oprnd_size) - { - /* Any byte-size immediate constants are treated as - word-size. FIXME: Thus overflow check does not work - correctly. */ - - case 2: - /* Note that size-check for the explicit reloc has already - been done when we get here. */ - if (output_instruction.reloc != BFD_RELOC_NONE) - reloc = output_instruction.reloc; - else - reloc = BFD_RELOC_16; - break; - - case 4: - /* Allow a relocation specified in the operand. */ - if (output_instruction.reloc != BFD_RELOC_NONE) - reloc = output_instruction.reloc; - else - reloc = BFD_RELOC_32; - break; - - default: - BAD_CASE (output_instruction.imm_oprnd_size); - } - - p = frag_more (output_instruction.imm_oprnd_size); - fix_new_exp (frag_now, (p - frag_now->fr_literal), - output_instruction.imm_oprnd_size, - &output_instruction.expr, 0, reloc); - } - else if (output_instruction.reloc != BFD_RELOC_NONE) - { - /* An immediate operand that has a relocation and needs to be - processed further. */ - - /* It is important to use fix_new_exp here and everywhere else - (and not fix_new), as fix_new_exp can handle "difference - expressions" - where the expression contains a difference of - two symbols in the same segment. */ - fix_new_exp (frag_now, (opcodep - frag_now->fr_literal), 2, - &output_instruction.expr, 0, - output_instruction.reloc); - } - } -} - -/* Low level text-to-bits assembly. */ - -static void -cris_process_instruction (insn_text, out_insnp, prefixp) - char *insn_text; - struct cris_instruction *out_insnp; - struct cris_prefix *prefixp; -{ - char *s; - char modified_char = 0; - const char *args; - struct cris_opcode *instruction; - char *operands; - int match = 0; - int mode; - int regno; - int size_bits; - - /* Reset these fields to a harmless state in case we need to return in - error. */ - prefixp->kind = PREFIX_NONE; - prefixp->reloc = BFD_RELOC_NONE; - out_insnp->insn_type = CRIS_INSN_NORMAL; - out_insnp->imm_oprnd_size = 0; - - /* Find the end of the opcode mnemonic. We assume (true in 2.9.1) - that the caller has translated the opcode to lower-case, up to the - first non-letter. */ - for (operands = insn_text; ISLOWER (*operands); ++operands) - ; - - /* Terminate the opcode after letters, but save the character there if - it was of significance. */ - switch (*operands) - { - case '\0': - break; - - case '.': - /* Put back the modified character later. */ - modified_char = *operands; - /* Fall through. */ - - case ' ': - /* Consume the character after the mnemonic - and replace it with '\0'. */ - *operands++ = '\0'; - break; - - default: - as_bad (_("Unknown opcode: `%s'"), insn_text); - return; - } - - /* Find the instruction. */ - instruction = (struct cris_opcode *) hash_find (op_hash, insn_text); - if (instruction == NULL) - { - as_bad (_("Unknown opcode: `%s'"), insn_text); - return; - } - - /* Put back the modified character. */ - switch (modified_char) - { - case 0: - break; - - default: - *--operands = modified_char; - } - - /* Try to match an opcode table slot. */ - for (s = operands;;) - { - int imm_expr_found; - - /* Initialize *prefixp, perhaps after being modified for a - "near match". */ - prefixp->kind = PREFIX_NONE; - prefixp->reloc = BFD_RELOC_NONE; - - /* Initialize *out_insnp. */ - memset (out_insnp, 0, sizeof (*out_insnp)); - out_insnp->opcode = instruction->match; - out_insnp->reloc = BFD_RELOC_NONE; - out_insnp->insn_type = CRIS_INSN_NORMAL; - out_insnp->imm_oprnd_size = 0; - - imm_expr_found = 0; - - /* Build the opcode, checking as we go to make sure that the - operands match. */ - for (args = instruction->args;; ++args) - { - switch (*args) - { - case '\0': - /* If we've come to the end of arguments, we're done. */ - if (*s == '\0') - match = 1; - break; - - case '!': - /* Non-matcher character for disassembly. - Ignore it here. */ - continue; - - case ',': - case ' ': - /* These must match exactly. */ - if (*s++ == *args) - continue; - break; - - case 'B': - /* This is not really an operand, but causes a "BDAP - -size,SP" prefix to be output, for PUSH instructions. */ - prefixp->kind = PREFIX_PUSH; - continue; - - case 'b': - /* This letter marks an operand that should not be matched - in the assembler. It is a branch with 16-bit - displacement. The assembler will create them from the - 8-bit flavor when necessary. The assembler does not - support the [rN+] operand, as the [r15+] that is - generated for 16-bit displacements. */ - break; - - case 'c': - /* A 5-bit unsigned immediate in bits <4:0>. */ - if (! cris_get_expression (&s, &out_insnp->expr)) - break; - else - { - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < 0 - || out_insnp->expr.X_add_number > 31)) - as_bad (_("Immediate value not in 5 bit unsigned range: %ld"), - out_insnp->expr.X_add_number); - - out_insnp->reloc = BFD_RELOC_CRIS_UNSIGNED_5; - continue; - } - - case 'C': - /* A 4-bit unsigned immediate in bits <3:0>. */ - if (! cris_get_expression (&s, &out_insnp->expr)) - break; - else - { - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < 0 - || out_insnp->expr.X_add_number > 15)) - as_bad (_("Immediate value not in 4 bit unsigned range: %ld"), - out_insnp->expr.X_add_number); - - out_insnp->reloc = BFD_RELOC_CRIS_UNSIGNED_4; - continue; - } - - case 'D': - /* General register in bits <15:12> and <3:0>. */ - if (! get_gen_reg (&s, ®no)) - break; - else - { - out_insnp->opcode |= regno /* << 0 */; - out_insnp->opcode |= regno << 12; - continue; - } - - case 'f': - /* Flags from the condition code register. */ - { - int flags = 0; - - if (! get_flags (&s, &flags)) - break; - - out_insnp->opcode |= ((flags & 0xf0) << 8) | (flags & 0xf); - continue; - } - - case 'i': - /* A 6-bit signed immediate in bits <5:0>. */ - if (! cris_get_expression (&s, &out_insnp->expr)) - break; - else - { - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < -32 - || out_insnp->expr.X_add_number > 31)) - as_bad (_("Immediate value not in 6 bit range: %ld"), - out_insnp->expr.X_add_number); - out_insnp->reloc = BFD_RELOC_CRIS_SIGNED_6; - continue; - } - - case 'I': - /* A 6-bit unsigned immediate in bits <5:0>. */ - if (! cris_get_expression (&s, &out_insnp->expr)) - break; - else - { - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < 0 - || out_insnp->expr.X_add_number > 63)) - as_bad (_("Immediate value not in 6 bit unsigned range: %ld"), - out_insnp->expr.X_add_number); - out_insnp->reloc = BFD_RELOC_CRIS_UNSIGNED_6; - continue; - } - - case 'M': - /* A size modifier, B, W or D, to be put in a bit position - suitable for CLEAR instructions (i.e. reflecting a zero - register). */ - if (! get_bwd_size_modifier (&s, &size_bits)) - break; - else - { - switch (size_bits) - { - case 0: - out_insnp->opcode |= 0 << 12; - break; - - case 1: - out_insnp->opcode |= 4 << 12; - break; - - case 2: - out_insnp->opcode |= 8 << 12; - break; - } - continue; - } - - case 'm': - /* A size modifier, B, W or D, to be put in bits <5:4>. */ - if (! get_bwd_size_modifier (&s, &size_bits)) - break; - else - { - out_insnp->opcode |= size_bits << 4; - continue; - } - - case 'o': - /* A branch expression. */ - if (! cris_get_expression (&s, &out_insnp->expr)) - break; - else - { - out_insnp->insn_type = CRIS_INSN_BRANCH; - continue; - } - - case 'O': - /* A BDAP expression for any size, "expr,r". */ - if (! cris_get_expression (&s, &prefixp->expr)) - break; - else - { - if (*s != ',') - break; - - s++; - - if (!get_gen_reg (&s, &prefixp->base_reg_number)) - break; - - /* Since 'O' is used with an explicit bdap, we have no - "real" instruction. */ - prefixp->kind = PREFIX_BDAP_IMM; - prefixp->opcode - = BDAP_QUICK_OPCODE | (prefixp->base_reg_number << 12); - - out_insnp->insn_type = CRIS_INSN_NONE; - continue; - } - - case 'P': - /* Special register in bits <15:12>. */ - if (! get_spec_reg (&s, &out_insnp->spec_reg)) - break; - else - { - /* Use of some special register names come with a - specific warning. Note that we have no ".cpu type" - pseudo yet, so some of this is just unused - framework. */ - if (out_insnp->spec_reg->warning) - as_warn (out_insnp->spec_reg->warning); - else if (out_insnp->spec_reg->applicable_version - == cris_ver_warning) - /* Others have a generic warning. */ - as_warn (_("Unimplemented register `%s' specified"), - out_insnp->spec_reg->name); - - out_insnp->opcode - |= out_insnp->spec_reg->number << 12; - continue; - } - - case 'p': - /* This character is used in the disassembler to - recognize a prefix instruction to fold into the - addressing mode for the next instruction. It is - ignored here. */ - continue; - - case 'R': - /* General register in bits <15:12>. */ - if (! get_gen_reg (&s, ®no)) - break; - else - { - out_insnp->opcode |= regno << 12; - continue; - } - - case 'r': - /* General register in bits <3:0>. */ - if (! get_gen_reg (&s, ®no)) - break; - else - { - out_insnp->opcode |= regno /* << 0 */; - continue; - } - - case 'S': - /* Source operand in bit <10> and a prefix; a 3-operand - prefix. */ - if (! get_3op_or_dip_prefix_op (&s, prefixp)) - break; - else - continue; - - case 's': - /* Source operand in bits <10>, <3:0> and optionally a - prefix; i.e. an indirect operand or an side-effect - prefix. */ - if (! get_autoinc_prefix_or_indir_op (&s, prefixp, &mode, - ®no, - &imm_expr_found, - &out_insnp->expr)) - break; - else - { - if (prefixp->kind != PREFIX_NONE) - { - /* A prefix, so it has the autoincrement bit - set. */ - out_insnp->opcode |= (AUTOINCR_BIT << 8); - } - else - { - /* No prefix. The "mode" variable contains bits like - whether or not this is autoincrement mode. */ - out_insnp->opcode |= (mode << 10); - - /* If there was a PIC reloc specifier, then it was - attached to the prefix. Note that we can't check - that the reloc size matches, since we don't have - all the operands yet in all cases. */ - if (prefixp->reloc != BFD_RELOC_NONE) - out_insnp->reloc = prefixp->reloc; - } - - out_insnp->opcode |= regno /* << 0 */ ; - continue; - } - - case 'x': - /* Rs.m in bits <15:12> and <5:4>. */ - if (! get_gen_reg (&s, ®no) - || ! get_bwd_size_modifier (&s, &size_bits)) - break; - else - { - out_insnp->opcode |= (regno << 12) | (size_bits << 4); - continue; - } - - case 'y': - /* Source operand in bits <10>, <3:0> and optionally a - prefix; i.e. an indirect operand or an side-effect - prefix. - - The difference to 's' is that this does not allow an - "immediate" expression. */ - if (! get_autoinc_prefix_or_indir_op (&s, prefixp, - &mode, ®no, - &imm_expr_found, - &out_insnp->expr) - || imm_expr_found) - break; - else - { - if (prefixp->kind != PREFIX_NONE) - { - /* A prefix, and those matched here always have - side-effects (see 's' case). */ - out_insnp->opcode |= (AUTOINCR_BIT << 8); - } - else - { - /* No prefix. The "mode" variable contains bits - like whether or not this is autoincrement - mode. */ - out_insnp->opcode |= (mode << 10); - } - - out_insnp->opcode |= regno /* << 0 */; - continue; - } - - case 'z': - /* Size modifier (B or W) in bit <4>. */ - if (! get_bw_size_modifier (&s, &size_bits)) - break; - else - { - out_insnp->opcode |= size_bits << 4; - continue; - } - - default: - BAD_CASE (*args); - } - - /* We get here when we fail a match above or we found a - complete match. Break out of this loop. */ - break; - } - - /* Was it a match or a miss? */ - if (match == 0) - { - /* If it's just that the args don't match, maybe the next - item in the table is the same opcode but with - matching operands. */ - if (instruction[1].name != NULL - && ! strcmp (instruction->name, instruction[1].name)) - { - /* Yep. Restart and try that one instead. */ - ++instruction; - s = operands; - continue; - } - else - { - /* We've come to the end of instructions with this - opcode, so it must be an error. */ - as_bad (_("Illegal operands")); - return; - } - } - else - { - /* We have a match. Check if there's anything more to do. */ - if (imm_expr_found) - { - /* There was an immediate mode operand, so we must check - that it has an appropriate size. */ - switch (instruction->imm_oprnd_size) - { - default: - case SIZE_NONE: - /* Shouldn't happen; this one does not have immediate - operands with different sizes. */ - BAD_CASE (instruction->imm_oprnd_size); - break; - - case SIZE_FIX_32: - out_insnp->imm_oprnd_size = 4; - break; - - case SIZE_SPEC_REG: - switch (out_insnp->spec_reg->reg_size) - { - case 1: - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < -128 - || out_insnp->expr.X_add_number > 255)) - as_bad (_("Immediate value not in 8 bit range: %ld"), - out_insnp->expr.X_add_number); - /* Fall through. */ - case 2: - /* FIXME: We need an indicator in the instruction - table to pass on, to indicate if we need to check - overflow for a signed or unsigned number. */ - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < -32768 - || out_insnp->expr.X_add_number > 65535)) - as_bad (_("Immediate value not in 16 bit range: %ld"), - out_insnp->expr.X_add_number); - out_insnp->imm_oprnd_size = 2; - break; - - case 4: - out_insnp->imm_oprnd_size = 4; - break; - - default: - BAD_CASE (out_insnp->spec_reg->reg_size); - } - break; - - case SIZE_FIELD: - switch (size_bits) - { - case 0: - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < -128 - || out_insnp->expr.X_add_number > 255)) - as_bad (_("Immediate value not in 8 bit range: %ld"), - out_insnp->expr.X_add_number); - /* Fall through. */ - case 1: - if (out_insnp->expr.X_op == O_constant - && (out_insnp->expr.X_add_number < -32768 - || out_insnp->expr.X_add_number > 65535)) - as_bad (_("Immediate value not in 16 bit range: %ld"), - out_insnp->expr.X_add_number); - out_insnp->imm_oprnd_size = 2; - break; - - case 2: - out_insnp->imm_oprnd_size = 4; - break; - - default: - BAD_CASE (out_insnp->spec_reg->reg_size); - } - } - - /* If there was a relocation specified for the immediate - expression (i.e. it had a PIC modifier) check that the - size of the PIC relocation matches the size specified by - the opcode. */ - if (out_insnp->reloc != BFD_RELOC_NONE - && (cris_get_pic_reloc_size (out_insnp->reloc) - != (unsigned int) out_insnp->imm_oprnd_size)) - as_bad (_("PIC relocation size does not match operand size")); - } - } - break; - } -} - -/* Get a B, W, or D size modifier from the string pointed out by *cPP, - which must point to a '.' in front of the modifier. On successful - return, *cPP is advanced to the character following the size - modifier, and is undefined otherwise. - - cPP Pointer to pointer to string starting - with the size modifier. - - size_bitsp Pointer to variable to contain the size bits on - successful return. - - Return 1 iff a correct size modifier is found, else 0. */ - -static int -get_bwd_size_modifier (cPP, size_bitsp) - char **cPP; - int *size_bitsp; -{ - if (**cPP != '.') - return 0; - else - { - /* Consume the '.'. */ - (*cPP)++; - - switch (**cPP) - { - case 'B': - case 'b': - *size_bitsp = 0; - break; - - case 'W': - case 'w': - *size_bitsp = 1; - break; - - case 'D': - case 'd': - *size_bitsp = 2; - break; - - default: - return 0; - } - - /* Consume the size letter. */ - (*cPP)++; - return 1; - } -} - -/* Get a B or W size modifier from the string pointed out by *cPP, - which must point to a '.' in front of the modifier. On successful - return, *cPP is advanced to the character following the size - modifier, and is undefined otherwise. - - cPP Pointer to pointer to string starting - with the size modifier. - - size_bitsp Pointer to variable to contain the size bits on - successful return. - - Return 1 iff a correct size modifier is found, else 0. */ - -static int -get_bw_size_modifier (cPP, size_bitsp) - char **cPP; - int *size_bitsp; -{ - if (**cPP != '.') - return 0; - else - { - /* Consume the '.'. */ - (*cPP)++; - - switch (**cPP) - { - case 'B': - case 'b': - *size_bitsp = 0; - break; - - case 'W': - case 'w': - *size_bitsp = 1; - break; - - default: - return 0; - } - - /* Consume the size letter. */ - (*cPP)++; - return 1; - } -} - -/* Get a general register from the string pointed out by *cPP. The - variable *cPP is advanced to the character following the general - register name on a successful return, and has its initial position - otherwise. - - cPP Pointer to pointer to string, beginning with a general - register name. - - regnop Pointer to int containing the register number. - - Return 1 iff a correct general register designator is found, - else 0. */ - -static int -get_gen_reg (cPP, regnop) - char **cPP; - int *regnop; -{ - char *oldp; - oldp = *cPP; - - /* Handle a sometimes-mandatory dollar sign as register prefix. */ - if (**cPP == REGISTER_PREFIX_CHAR) - (*cPP)++; - else if (demand_register_prefix) - return 0; - - switch (**cPP) - { - case 'P': - case 'p': - /* "P" as in "PC"? Consume the "P". */ - (*cPP)++; - - if ((**cPP == 'C' || **cPP == 'c') - && ! ISALNUM ((*cPP)[1])) - { - /* It's "PC": consume the "c" and we're done. */ - (*cPP)++; - *regnop = REG_PC; - return 1; - } - break; - - case 'R': - case 'r': - /* Hopefully r[0-9] or r1[0-5]. Consume 'R' or 'r'. */ - (*cPP)++; - - if (ISDIGIT (**cPP)) - { - /* It's r[0-9]. Consume and check the next digit. */ - *regnop = **cPP - '0'; - (*cPP)++; - - if (! ISALNUM (**cPP)) - { - /* No more digits, we're done. */ - return 1; - } - else - { - /* One more digit. Consume and add. */ - *regnop = *regnop * 10 + (**cPP - '0'); - - /* We need to check for a valid register number; Rn, - 0 <= n <= MAX_REG. */ - if (*regnop <= MAX_REG) - { - /* Consume second digit. */ - (*cPP)++; - return 1; - } - } - } - break; - - case 'S': - case 's': - /* "S" as in "SP"? Consume the "S". */ - (*cPP)++; - if (**cPP == 'P' || **cPP == 'p') - { - /* It's "SP": consume the "p" and we're done. */ - (*cPP)++; - *regnop = REG_SP; - return 1; - } - break; - - default: - /* Just here to silence compilation warnings. */ - ; - } - - /* We get here if we fail. Restore the pointer. */ - *cPP = oldp; - return 0; -} - -/* Get a special register from the string pointed out by *cPP. The - variable *cPP is advanced to the character following the special - register name if one is found, and retains its original position - otherwise. - - cPP Pointer to pointer to string starting with a special register - name. - - sregpp Pointer to Pointer to struct spec_reg, where a pointer to the - register description will be stored. - - Return 1 iff a correct special register name is found. */ - -static int -get_spec_reg (cPP, sregpp) - char **cPP; - const struct cris_spec_reg **sregpp; -{ - char *s1; - const char *s2; - char *name_begin = *cPP; - - const struct cris_spec_reg *sregp; - - /* Handle a sometimes-mandatory dollar sign as register prefix. */ - if (*name_begin == REGISTER_PREFIX_CHAR) - name_begin++; - else if (demand_register_prefix) - return 0; - - /* Loop over all special registers. */ - for (sregp = cris_spec_regs; sregp->name != NULL; sregp++) - { - /* Start over from beginning of the supposed name. */ - s1 = name_begin; - s2 = sregp->name; - - while (*s2 != '\0' && TOLOWER (*s1) == *s2) - { - s1++; - s2++; - } - - /* For a match, we must have consumed the name in the table, and we - must be outside what could be part of a name. Assume here that a - test for alphanumerics is sufficient for a name test. */ - if (*s2 == 0 && ! ISALNUM (*s1)) - { - /* We have a match. Update the pointer and be done. */ - *cPP = s1; - *sregpp = sregp; - return 1; - } - } - - /* If we got here, we did not find any name. */ - return 0; -} - -/* Get an unprefixed or side-effect-prefix operand from the string pointed - out by *cPP. The pointer *cPP is advanced to the character following - the indirect operand if we have success, else it contains an undefined - value. - - cPP Pointer to pointer to string beginning with the first - character of the supposed operand. - - prefixp Pointer to structure containing an optional instruction - prefix. - - is_autoincp Pointer to int indicating the indirect or autoincrement - bits. - - src_regnop Pointer to int containing the source register number in - the instruction. - - imm_foundp Pointer to an int indicating if an immediate expression - is found. - - imm_exprP Pointer to a structure containing an immediate - expression, if success and if *imm_foundp is nonzero. - - Return 1 iff a correct indirect operand is found. */ - -static int -get_autoinc_prefix_or_indir_op (cPP, prefixp, is_autoincp, src_regnop, - imm_foundp, imm_exprP) - char **cPP; - struct cris_prefix *prefixp; - int *is_autoincp; - int *src_regnop; - int *imm_foundp; - expressionS *imm_exprP; -{ - /* Assume there was no immediate mode expression. */ - *imm_foundp = 0; - - if (**cPP == '[') - { - /* So this operand is one of: - Indirect: [rN] - Autoincrement: [rN+] - Indexed with assign: [rN=rM+rO.S] - Offset with assign: [rN=rM+I], [rN=rM+[rO].s], [rN=rM+[rO+].s] - - Either way, consume the '['. */ - (*cPP)++; - - /* Get the rN register. */ - if (! get_gen_reg (cPP, src_regnop)) - /* If there was no register, then this cannot match. */ - return 0; - else - { - /* We got the register, now check the next character. */ - switch (**cPP) - { - case ']': - /* Indirect mode. We're done here. */ - prefixp->kind = PREFIX_NONE; - *is_autoincp = 0; - break; - - case '+': - /* This must be an auto-increment mode, if there's a - match. */ - prefixp->kind = PREFIX_NONE; - *is_autoincp = 1; - - /* We consume this character and break out to check the - closing ']'. */ - (*cPP)++; - break; - - case '=': - /* This must be indexed with assign, or offset with assign - to match. */ - (*cPP)++; - - /* Either way, the next thing must be a register. */ - if (! get_gen_reg (cPP, &prefixp->base_reg_number)) - /* No register, no match. */ - return 0; - else - { - /* We've consumed "[rN=rM", so we must be looking at - "+rO.s]" or "+I]", or "-I]", or "+[rO].s]" or - "+[rO+].s]". */ - if (**cPP == '+') - { - int index_reg_number; - (*cPP)++; - - if (**cPP == '[') - { - int size_bits; - /* This must be [rx=ry+[rz].s] or - [rx=ry+[rz+].s] or no match. We must be - looking at rz after consuming the '['. */ - (*cPP)++; - - if (!get_gen_reg (cPP, &index_reg_number)) - return 0; - - prefixp->kind = PREFIX_BDAP; - prefixp->opcode - = (BDAP_INDIR_OPCODE - + (prefixp->base_reg_number << 12) - + index_reg_number); - - if (**cPP == '+') - { - /* We've seen "[rx=ry+[rz+" here, so now we - know that there must be "].s]" left to - check. */ - (*cPP)++; - prefixp->opcode |= AUTOINCR_BIT << 8; - } - - /* If it wasn't autoincrement, we don't need to - add anything. */ - - /* Check the next-to-last ']'. */ - if (**cPP != ']') - return 0; - - (*cPP)++; - - /* Check the ".s" modifier. */ - if (! get_bwd_size_modifier (cPP, &size_bits)) - return 0; - - prefixp->opcode |= size_bits << 4; - - /* Now we got [rx=ry+[rz+].s or [rx=ry+[rz].s. - We break out to check the final ']'. */ - break; - } - /* It wasn't an indirection. Check if it's a - register. */ - else if (get_gen_reg (cPP, &index_reg_number)) - { - int size_bits; - - /* Indexed with assign mode: "[rN+rM.S]". */ - prefixp->kind = PREFIX_BIAP; - prefixp->opcode - = (BIAP_OPCODE + (index_reg_number << 12) - + prefixp->base_reg_number /* << 0 */); - - if (! get_bwd_size_modifier (cPP, &size_bits)) - /* Size missing, this isn't a match. */ - return 0; - else - { - /* Size found, break out to check the - final ']'. */ - prefixp->opcode |= size_bits << 4; - break; - } - } - /* Not a register. Then this must be "[rN+I]". */ - else if (cris_get_expression (cPP, &prefixp->expr)) - { - /* We've got offset with assign mode. Fill - in the blanks and break out to match the - final ']'. */ - prefixp->kind = PREFIX_BDAP_IMM; - - /* We tentatively put an opcode corresponding to - a 32-bit operand here, although it may be - relaxed when there's no PIC specifier for the - operand. */ - prefixp->opcode - = (BDAP_INDIR_OPCODE - | (prefixp->base_reg_number << 12) - | (AUTOINCR_BIT << 8) - | (2 << 4) - | REG_PC /* << 0 */); - - /* This can have a PIC suffix, specifying reloc - type to use. */ - if (pic && **cPP == PIC_SUFFIX_CHAR) - { - unsigned int relocsize; - - cris_get_pic_suffix (cPP, &prefixp->reloc, - &prefixp->expr); - - /* Tweak the size of the immediate operand - in the prefix opcode if it isn't what we - set. */ - relocsize - = cris_get_pic_reloc_size (prefixp->reloc); - if (relocsize != 4) - prefixp->opcode - = ((prefixp->opcode & ~(3 << 4)) - | ((relocsize >> 1) << 4)); - } - break; - } - else - /* Neither register nor expression found, so - this can't be a match. */ - return 0; - } - /* Not "[rN+" but perhaps "[rN-"? */ - else if (**cPP == '-') - { - /* We must have an offset with assign mode. */ - if (! cris_get_expression (cPP, &prefixp->expr)) - /* No expression, no match. */ - return 0; - else - { - /* We've got offset with assign mode. Fill - in the blanks and break out to match the - final ']'. - - Note that we don't allow a PIC suffix for an - operand with a minus sign. */ - prefixp->kind = PREFIX_BDAP_IMM; - break; - } - } - else - /* Neither '+' nor '-' after "[rN=rM". Lose. */ - return 0; - } - default: - /* Neither ']' nor '+' nor '=' after "[rN". Lose. */ - return 0; - } - } - - /* When we get here, we have a match and will just check the closing - ']'. We can still fail though. */ - if (**cPP != ']') - return 0; - else - { - /* Don't forget to consume the final ']'. - Then return in glory. */ - (*cPP)++; - return 1; - } - } - /* No indirection. Perhaps a constant? */ - else if (cris_get_expression (cPP, imm_exprP)) - { - /* Expression found, this is immediate mode. */ - prefixp->kind = PREFIX_NONE; - *is_autoincp = 1; - *src_regnop = REG_PC; - *imm_foundp = 1; - - /* This can have a PIC suffix, specifying reloc type to use. The - caller must check that the reloc size matches the operand size. */ - if (pic && **cPP == PIC_SUFFIX_CHAR) - cris_get_pic_suffix (cPP, &prefixp->reloc, imm_exprP); - - return 1; - } - - /* No luck today. */ - return 0; -} - -/* This function gets an indirect operand in a three-address operand - combination from the string pointed out by *cPP. The pointer *cPP is - advanced to the character following the indirect operand on success, or - has an unspecified value on failure. - - cPP Pointer to pointer to string beginning - with the operand - - prefixp Pointer to structure containing an - instruction prefix - - Returns 1 iff a correct indirect operand is found. */ - -static int -get_3op_or_dip_prefix_op (cPP, prefixp) - char **cPP; - struct cris_prefix *prefixp; -{ - int reg_number; - - if (**cPP != '[') - /* We must have a '[' or it's a clean failure. */ - return 0; - - /* Eat the first '['. */ - (*cPP)++; - - if (**cPP == '[') - { - /* A second '[', so this must be double-indirect mode. */ - (*cPP)++; - prefixp->kind = PREFIX_DIP; - prefixp->opcode = DIP_OPCODE; - - /* Get the register or fail entirely. */ - if (! get_gen_reg (cPP, ®_number)) - return 0; - else - { - prefixp->opcode |= reg_number /* << 0 */ ; - if (**cPP == '+') - { - /* Since we found a '+', this must be double-indirect - autoincrement mode. */ - (*cPP)++; - prefixp->opcode |= AUTOINCR_BIT << 8; - } - - /* There's nothing particular to do, if this was a - double-indirect *without* autoincrement. */ - } - - /* Check the first ']'. The second one is checked at the end. */ - if (**cPP != ']') - return 0; - - /* Eat the first ']', so we'll be looking at a second ']'. */ - (*cPP)++; - } - /* No second '['. Then we should have a register here, making - it "[rN". */ - else if (get_gen_reg (cPP, &prefixp->base_reg_number)) - { - /* This must be indexed or offset mode: "[rN+I]" or - "[rN+rM.S]" or "[rN+[rM].S]" or "[rN+[rM+].S]". */ - if (**cPP == '+') - { - int index_reg_number; - - (*cPP)++; - - if (**cPP == '[') - { - /* This is "[rx+["... Expect a register next. */ - int size_bits; - (*cPP)++; - - if (!get_gen_reg (cPP, &index_reg_number)) - return 0; - - prefixp->kind = PREFIX_BDAP; - prefixp->opcode - = (BDAP_INDIR_OPCODE - + (prefixp->base_reg_number << 12) - + index_reg_number); - - /* We've seen "[rx+[ry", so check if this is - autoincrement. */ - if (**cPP == '+') - { - /* Yep, now at "[rx+[ry+". */ - (*cPP)++; - prefixp->opcode |= AUTOINCR_BIT << 8; - } - /* If it wasn't autoincrement, we don't need to - add anything. */ - - /* Check a first closing ']': "[rx+[ry]" or - "[rx+[ry+]". */ - if (**cPP != ']') - return 0; - (*cPP)++; - - /* Now expect a size modifier ".S". */ - if (! get_bwd_size_modifier (cPP, &size_bits)) - return 0; - - prefixp->opcode |= size_bits << 4; - - /* Ok, all interesting stuff has been seen: - "[rx+[ry+].S" or "[rx+[ry].S". We only need to - expect a final ']', which we'll do in a common - closing session. */ - } - /* Seen "[rN+", but not a '[', so check if we have a - register. */ - else if (get_gen_reg (cPP, &index_reg_number)) - { - /* This is indexed mode: "[rN+rM.S]" or - "[rN+rM.S+]". */ - int size_bits; - prefixp->kind = PREFIX_BIAP; - prefixp->opcode - = (BIAP_OPCODE - | prefixp->base_reg_number /* << 0 */ - | (index_reg_number << 12)); - - /* Consume the ".S". */ - if (! get_bwd_size_modifier (cPP, &size_bits)) - /* Missing size, so fail. */ - return 0; - else - /* Size found. Add that piece and drop down to - the common checking of the closing ']'. */ - prefixp->opcode |= size_bits << 4; - } - /* Seen "[rN+", but not a '[' or a register, so then - it must be a constant "I". */ - else if (cris_get_expression (cPP, &prefixp->expr)) - { - /* Expression found, so fill in the bits of offset - mode and drop down to check the closing ']'. */ - prefixp->kind = PREFIX_BDAP_IMM; - - /* We tentatively put an opcode corresponding to a 32-bit - operand here, although it may be relaxed when there's no - PIC specifier for the operand. */ - prefixp->opcode - = (BDAP_INDIR_OPCODE - | (prefixp->base_reg_number << 12) - | (AUTOINCR_BIT << 8) - | (2 << 4) - | REG_PC /* << 0 */); - - /* This can have a PIC suffix, specifying reloc type to use. */ - if (pic && **cPP == PIC_SUFFIX_CHAR) - { - unsigned int relocsize; - - cris_get_pic_suffix (cPP, &prefixp->reloc, &prefixp->expr); - - /* Tweak the size of the immediate operand in the prefix - opcode if it isn't what we set. */ - relocsize = cris_get_pic_reloc_size (prefixp->reloc); - if (relocsize != 4) - prefixp->opcode - = ((prefixp->opcode & ~(3 << 4)) - | ((relocsize >> 1) << 4)); - } - } - else - /* Nothing valid here: lose. */ - return 0; - } - /* Seen "[rN" but no '+', so check if it's a '-'. */ - else if (**cPP == '-') - { - /* Yep, we must have offset mode. */ - if (! cris_get_expression (cPP, &prefixp->expr)) - /* No expression, so we lose. */ - return 0; - else - { - /* Expression found to make this offset mode, so - fill those bits and drop down to check the - closing ']'. - - Note that we don't allow a PIC suffix for - an operand with a minus sign like this. */ - prefixp->kind = PREFIX_BDAP_IMM; - } - } - else - { - /* We've seen "[rN", but not '+' or '-'; rather a ']'. - Hmm. Normally this is a simple indirect mode that we - shouldn't match, but if we expect ']', then we have a - zero offset, so it can be a three-address-operand, - like "[rN],rO,rP", thus offset mode. - - Don't eat the ']', that will be done in the closing - ceremony. */ - prefixp->expr.X_op = O_constant; - prefixp->expr.X_add_number = 0; - prefixp->expr.X_add_symbol = NULL; - prefixp->expr.X_op_symbol = NULL; - prefixp->kind = PREFIX_BDAP_IMM; - } - } - /* A '[', but no second '[', and no register. Check if we - have an expression, making this "[I]" for a double-indirect - prefix. */ - else if (cris_get_expression (cPP, &prefixp->expr)) - { - /* Expression found, the so called absolute mode for a - double-indirect prefix on PC. */ - prefixp->kind = PREFIX_DIP; - prefixp->opcode = DIP_OPCODE | (AUTOINCR_BIT << 8) | REG_PC; - prefixp->reloc = BFD_RELOC_32; - } - else - /* Neither '[' nor register nor expression. We lose. */ - return 0; - - /* We get here as a closing ceremony to a successful match. We just - need to check the closing ']'. */ - if (**cPP != ']') - /* Oops. Close but no air-polluter. */ - return 0; - - /* Don't forget to consume that ']', before returning in glory. */ - (*cPP)++; - return 1; -} - -/* Get an expression from the string pointed out by *cPP. - The pointer *cPP is advanced to the character following the expression - on a success, or retains its original value otherwise. - - cPP Pointer to pointer to string beginning with the expression. - - exprP Pointer to structure containing the expression. - - Return 1 iff a correct expression is found. */ - -static int -cris_get_expression (cPP, exprP) - char **cPP; - expressionS *exprP; -{ - char *saved_input_line_pointer; - segT exp; - - /* The "expression" function expects to find an expression at the - global variable input_line_pointer, so we have to save it to give - the impression that we don't fiddle with global variables. */ - saved_input_line_pointer = input_line_pointer; - input_line_pointer = *cPP; - - exp = expression (exprP); - if (exprP->X_op == O_illegal || exprP->X_op == O_absent) - { - input_line_pointer = saved_input_line_pointer; - return 0; - } - - /* Everything seems to be fine, just restore the global - input_line_pointer and say we're successful. */ - *cPP = input_line_pointer; - input_line_pointer = saved_input_line_pointer; - return 1; -} - -/* Get a sequence of flag characters from *spp. The pointer *cPP is - advanced to the character following the expression. The flag - characters are consecutive, no commas or spaces. - - cPP Pointer to pointer to string beginning with the expression. - - flagp Pointer to int to return the flags expression. - - Return 1 iff a correct flags expression is found. */ - -static int -get_flags (cPP, flagsp) - char **cPP; - int *flagsp; -{ - for (;;) - { - switch (**cPP) - { - case 'd': - case 'D': - case 'm': - case 'M': - *flagsp |= 0x80; - break; - - case 'e': - case 'E': - case 'b': - case 'B': - *flagsp |= 0x40; - break; - - case 'i': - case 'I': - *flagsp |= 0x20; - break; - - case 'x': - case 'X': - *flagsp |= 0x10; - break; - - case 'n': - case 'N': - *flagsp |= 0x8; - break; - - case 'z': - case 'Z': - *flagsp |= 0x4; - break; - - case 'v': - case 'V': - *flagsp |= 0x2; - break; - - case 'c': - case 'C': - *flagsp |= 1; - break; - - default: - /* We consider this successful if we stop at a comma or - whitespace. Anything else, and we consider it a failure. */ - if (**cPP != ',' - && **cPP != 0 - && ! ISSPACE (**cPP)) - return 0; - else - return 1; - } - - /* Don't forget to consume each flag character. */ - (*cPP)++; - } -} - -/* Generate code and fixes for a BDAP prefix. - - base_regno Int containing the base register number. - - exprP Pointer to structure containing the offset expression. */ - -static void -gen_bdap (base_regno, exprP) - int base_regno; - expressionS *exprP; -{ - unsigned int opcode; - char *opcodep; - - /* Put out the prefix opcode; assume quick immediate mode at first. */ - opcode = BDAP_QUICK_OPCODE | (base_regno << 12); - opcodep = cris_insn_first_word_frag (); - md_number_to_chars (opcodep, opcode, 2); - - if (exprP->X_op == O_constant) - { - /* We have an absolute expression that we know the size of right - now. */ - long int value; - int size; - - value = exprP->X_add_number; - if (value < -32768 || value > 32767) - /* Outside range for a "word", make it a dword. */ - size = 2; - else - /* Assume "word" size. */ - size = 1; - - /* If this is a signed-byte value, we can fit it into the prefix - insn itself. */ - if (value >= -128 && value <= 127) - opcodep[0] = value; - else - { - /* This is a word or dword displacement, which will be put in a - word or dword after the prefix. */ - char *p; - - opcodep[0] = BDAP_PC_LOW + (size << 4); - opcodep[1] &= 0xF0; - opcodep[1] |= BDAP_INCR_HIGH; - p = frag_more (1 << size); - md_number_to_chars (p, value, 1 << size); - } - } - else - { - /* Handle complex expressions. */ - valueT addvalue - = SIMPLE_EXPR (exprP) ? exprP->X_add_number : 0; - symbolS *sym - = (SIMPLE_EXPR (exprP) - ? exprP->X_add_symbol : make_expr_symbol (exprP)); - - /* The expression is not defined yet but may become absolute. We - make it a relocation to be relaxed. */ - frag_var (rs_machine_dependent, 4, 0, - ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_UNDF), - sym, addvalue, opcodep); - } -} - -/* Encode a branch displacement in the range -256..254 into the form used - by CRIS conditional branch instructions. - - offset The displacement value in bytes. */ - -static int -branch_disp (offset) - int offset; -{ - int disp; - - disp = offset & 0xFE; - - if (offset < 0) - disp |= 1; - - return disp; -} - -/* Generate code and fixes for a 32-bit conditional branch instruction - created by "extending" an existing 8-bit branch instruction. - - opcodep Pointer to the word containing the original 8-bit branch - instruction. - - writep Pointer to "extension area" following the first instruction - word. - - fragP Pointer to the frag containing the instruction. - - add_symP, Parts of the destination address expression. - sub_symP, - add_num. */ - -static void -gen_cond_branch_32 (opcodep, writep, fragP, add_symP, sub_symP, add_num) - char *opcodep; - char *writep; - fragS *fragP; - symbolS *add_symP; - symbolS *sub_symP; - long int add_num; -{ - if (warn_for_branch_expansion) - as_warn_where (fragP->fr_file, fragP->fr_line, - _("32-bit conditional branch generated")); - - /* Here, writep points to what will be opcodep + 2. First, we change - the actual branch in opcodep[0] and opcodep[1], so that in the - final insn, it will look like: - opcodep+10: Bcc .-6 - - This means we don't have to worry about changing the opcode or - messing with the delay-slot instruction. So, we move it to last in - the "extended" branch, and just change the displacement. Admittedly, - it's not the optimal extended construct, but we should get this - rarely enough that it shouldn't matter. */ - - writep[8] = branch_disp (-2 - 6); - writep[9] = opcodep[1]; - - /* Then, we change the branch to an unconditional branch over the - extended part, to the new location of the Bcc: - opcodep: BA .+10 - opcodep+2: NOP - - Note that these two writes are to currently different locations, - merged later. */ - - md_number_to_chars (opcodep, BA_QUICK_OPCODE + 8, 2); - md_number_to_chars (writep, NOP_OPCODE, 2); - - /* Then the extended thing, the 32-bit jump insn. - opcodep+4: JUMP [PC+] - or, in the PIC case, - opcodep+4: ADD [PC+],PC. */ - - md_number_to_chars (writep + 2, - pic ? ADD_PC_INCR_OPCODE : JUMP_PC_INCR_OPCODE, 2); - - /* We have to fill in the actual value too. - opcodep+6: .DWORD - This is most probably an expression, but we can cope with an absolute - value too. FIXME: Testcase needed with and without pic. */ - - if (add_symP == NULL && sub_symP == NULL) - { - /* An absolute address. */ - if (pic) - fix_new (fragP, writep + 4 - fragP->fr_literal, 4, - section_symbol (absolute_section), - add_num, 1, BFD_RELOC_32_PCREL); - else - md_number_to_chars (writep + 4, add_num, 4); - } - else - { - if (sub_symP != NULL) - as_bad_where (fragP->fr_file, fragP->fr_line, - _("Complex expression not supported")); - - /* Not absolute, we have to make it a frag for later evaluation. */ - fix_new (fragP, writep + 4 - fragP->fr_literal, 4, add_symP, - add_num, pic ? 1 : 0, pic ? BFD_RELOC_32_PCREL : BFD_RELOC_32); - } -} - -/* Get the size of an immediate-reloc in bytes. Only valid for PIC - relocs. */ - -static unsigned int -cris_get_pic_reloc_size (reloc) - bfd_reloc_code_real_type reloc; -{ - return reloc == BFD_RELOC_CRIS_16_GOTPLT || reloc == BFD_RELOC_CRIS_16_GOT - ? 2 : 4; -} - -/* Store a reloc type at *RELOCP corresponding to the PIC suffix at *CPP. - Adjust *EXPRP with any addend found after the PIC suffix. */ - -static void -cris_get_pic_suffix (cPP, relocp, exprP) - char **cPP; - bfd_reloc_code_real_type *relocp; - expressionS *exprP; -{ - char *s = *cPP; - unsigned int i; - expressionS const_expr; - - const struct pic_suffixes_struct - { - const char *const suffix; - unsigned int len; - bfd_reloc_code_real_type reloc; - } pic_suffixes[] = - { -#undef PICMAP -#define PICMAP(s, r) {s, sizeof (s) - 1, r} - /* Keep this in order with longest unambiguous prefix first. */ - PICMAP ("GOTPLT16", BFD_RELOC_CRIS_16_GOTPLT), - PICMAP ("GOTPLT", BFD_RELOC_CRIS_32_GOTPLT), - PICMAP ("PLTG", BFD_RELOC_CRIS_32_PLT_GOTREL), - PICMAP ("PLT", BFD_RELOC_CRIS_32_PLT_PCREL), - PICMAP ("GOTOFF", BFD_RELOC_CRIS_32_GOTREL), - PICMAP ("GOT16", BFD_RELOC_CRIS_16_GOT), - PICMAP ("GOT", BFD_RELOC_CRIS_32_GOT) - }; - - /* We've already seen the ':', so consume it. */ - s++; - - for (i = 0; i < sizeof (pic_suffixes)/sizeof (pic_suffixes[0]); i++) - { - if (strncmp (s, pic_suffixes[i].suffix, pic_suffixes[i].len) == 0 - && ! is_part_of_name (s[pic_suffixes[i].len])) - { - /* We have a match. Consume the suffix and set the relocation - type. */ - s += pic_suffixes[i].len; - - /* There can be a constant term appended. If so, we will add it - to *EXPRP. */ - if (*s == '+' || *s == '-') - { - if (! cris_get_expression (&s, &const_expr)) - /* There was some kind of syntax error. Bail out. */ - break; - - /* Allow complex expressions as the constant part. It still - has to be an assembly-time constant or there will be an - error emitting the reloc. This makes the PIC qualifiers - idempotent; foo:GOTOFF+32 == foo+32:GOTOFF. The former we - recognize here; the latter is parsed in the incoming - expression. */ - exprP->X_add_symbol = make_expr_symbol (exprP); - exprP->X_op = O_add; - exprP->X_add_number = 0; - exprP->X_op_symbol = make_expr_symbol (&const_expr); - } - - *relocp = pic_suffixes[i].reloc; - *cPP = s; - return; - } - } - - /* No match. Don't consume anything; fall back and there will be a - syntax error. */ -} - -/* This *could* be: - - Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. - - type A character from FLTCHARS that describes what kind of - floating-point number is wanted. - - litp A pointer to an array that the result should be stored in. - - sizep A pointer to an integer where the size of the result is stored. - - But we don't support floating point constants in assembly code *at all*, - since it's suboptimal and just opens up bug opportunities. GCC emits - the bit patterns as hex. All we could do here is to emit what GCC - would have done in the first place. *Nobody* writes floating-point - code as assembly code, but if they do, they should be able enough to - find out the correct bit patterns and use them. */ - -char * -md_atof (type, litp, sizep) - char type ATTRIBUTE_UNUSED; - char *litp ATTRIBUTE_UNUSED; - int *sizep ATTRIBUTE_UNUSED; -{ - /* FIXME: Is this function mentioned in the internals.texi manual? If - not, add it. */ - return _("Bad call to md_atof () - floating point formats are not supported"); -} - -/* Turn a number as a fixS * into a series of bytes that represents the - number on the target machine. The purpose of this procedure is the - same as that of md_number_to_chars but this procedure is supposed to - handle general bit field fixes and machine-dependent fixups. - - bufp Pointer to an array where the result should be stored. - - val The value to store. - - n The number of bytes in "val" that should be stored. - - fixP The fix to be applied to the bit field starting at bufp. - - seg The segment containing this number. */ - -static void -cris_number_to_imm (bufp, val, n, fixP, seg) - char *bufp; - long val; - int n; - fixS *fixP; - segT seg; -{ - segT sym_seg; - - know (n <= 4); - know (fixP); - - /* We put the relative "vma" for the other segment for inter-segment - relocations in the object data to stay binary "compatible" (with an - uninteresting old version) for the relocation. - Maybe delete some day. */ - if (fixP->fx_addsy - && (sym_seg = S_GET_SEGMENT (fixP->fx_addsy)) != seg) - val += sym_seg->vma; - - if (fixP->fx_addsy != NULL || fixP->fx_pcrel) - switch (fixP->fx_r_type) - { - /* These must be fully resolved when getting here. */ - case BFD_RELOC_32_PCREL: - case BFD_RELOC_16_PCREL: - case BFD_RELOC_8_PCREL: - as_bad_where (fixP->fx_frag->fr_file, fixP->fx_frag->fr_line, - _("PC-relative relocation must be trivially resolved")); - default: - ; - } - - switch (fixP->fx_r_type) - { - /* Ditto here, we put the addend into the object code as - well as the reloc addend. Keep it that way for now, to simplify - regression tests on the object file contents. FIXME: Seems - uninteresting now that we have a test suite. */ - - case BFD_RELOC_CRIS_16_GOT: - case BFD_RELOC_CRIS_32_GOT: - case BFD_RELOC_CRIS_32_GOTREL: - case BFD_RELOC_CRIS_16_GOTPLT: - case BFD_RELOC_CRIS_32_GOTPLT: - case BFD_RELOC_CRIS_32_PLT_GOTREL: - case BFD_RELOC_CRIS_32_PLT_PCREL: - /* We don't want to put in any kind of non-zero bits in the data - being relocated for these. */ - break; - - case BFD_RELOC_32: - case BFD_RELOC_32_PCREL: - /* No use having warnings here, since most hosts have a 32-bit type - for "long" (which will probably change soon, now that I wrote - this). */ - bufp[3] = (val >> 24) & 0xFF; - bufp[2] = (val >> 16) & 0xFF; - bufp[1] = (val >> 8) & 0xFF; - bufp[0] = val & 0xFF; - break; - - /* FIXME: The 16 and 8-bit cases should have a way to check - whether a signed or unsigned (or any signedness) number is - accepted. - FIXME: Does the as_bad calls find the line number by themselves, - or should we change them into as_bad_where? */ - - case BFD_RELOC_16: - case BFD_RELOC_16_PCREL: - if (val > 0xffff || val < -32768) - as_bad (_("Value not in 16 bit range: %ld"), val); - if (! fixP->fx_addsy) - { - bufp[1] = (val >> 8) & 0xFF; - bufp[0] = val & 0xFF; - } - break; - - case BFD_RELOC_8: - case BFD_RELOC_8_PCREL: - if (val > 255 || val < -128) - as_bad (_("Value not in 8 bit range: %ld"), val); - if (! fixP->fx_addsy) - bufp[0] = val & 0xFF; - break; - - case BFD_RELOC_CRIS_UNSIGNED_4: - if (val > 15 || val < 0) - as_bad (_("Value not in 4 bit unsigned range: %ld"), val); - if (! fixP->fx_addsy) - bufp[0] |= val & 0x0F; - break; - - case BFD_RELOC_CRIS_UNSIGNED_5: - if (val > 31 || val < 0) - as_bad (_("Value not in 5 bit unsigned range: %ld"), val); - if (! fixP->fx_addsy) - bufp[0] |= val & 0x1F; - break; - - case BFD_RELOC_CRIS_SIGNED_6: - if (val > 31 || val < -32) - as_bad (_("Value not in 6 bit range: %ld"), val); - if (! fixP->fx_addsy) - bufp[0] |= val & 0x3F; - break; - - case BFD_RELOC_CRIS_UNSIGNED_6: - if (val > 63 || val < 0) - as_bad (_("Value not in 6 bit unsigned range: %ld"), val); - if (! fixP->fx_addsy) - bufp[0] |= val & 0x3F; - break; - - case BFD_RELOC_CRIS_BDISP8: - if (! fixP->fx_addsy) - bufp[0] = branch_disp (val); - break; - - case BFD_RELOC_NONE: - /* May actually happen automatically. For example at broken - words, if the word turns out not to be broken. - FIXME: When? Which testcase? */ - if (! fixP->fx_addsy) - md_number_to_chars (bufp, val, n); - break; - - case BFD_RELOC_VTABLE_INHERIT: - /* This borrowed from tc-ppc.c on a whim. */ - if (fixP->fx_addsy - && !S_IS_DEFINED (fixP->fx_addsy) - && !S_IS_WEAK (fixP->fx_addsy)) - S_SET_WEAK (fixP->fx_addsy); - /* Fall through. */ - - case BFD_RELOC_VTABLE_ENTRY: - fixP->fx_done = 0; - break; - - default: - BAD_CASE (fixP->fx_r_type); - } -} - -/* Processes machine-dependent command line options. Called once for - each option on the command line that the machine-independent part of - GAS does not understand. */ - -int -md_parse_option (arg, argp) - int arg; - char *argp ATTRIBUTE_UNUSED; -{ - switch (arg) - { - case 'H': - case 'h': - printf (_("Please use --help to see usage and options for this assembler.\n")); - md_show_usage (stdout); - exit (EXIT_SUCCESS); - - case 'N': - warn_for_branch_expansion = 1; - return 1; - - case OPTION_NO_US: - demand_register_prefix = TRUE; - - if (OUTPUT_FLAVOR == bfd_target_aout_flavour) - as_bad (_("--no-underscore is invalid with a.out format")); - else - symbols_have_leading_underscore = FALSE; - return 1; - - case OPTION_US: - demand_register_prefix = FALSE; - symbols_have_leading_underscore = TRUE; - return 1; - - case OPTION_PIC: - pic = TRUE; - return 1; - - default: - return 0; - } -} - -/* Round up a section size to the appropriate boundary. */ -valueT -md_section_align (segment, size) - segT segment; - valueT size; -{ - /* Round all sects to multiple of 4, except the bss section, which - we'll round to word-size. - - FIXME: Check if this really matters. All sections should be - rounded up, and all sections should (optionally) be assumed to be - dword-aligned, it's just that there is actual usage of linking to a - multiple of two. */ - if (OUTPUT_FLAVOR == bfd_target_aout_flavour) - { - if (segment == bss_section) - return (size + 1) & ~1; - return (size + 3) & ~3; - } - else - { - /* FIXME: Is this wanted? It matches the testsuite, but that's not - really a valid reason. */ - if (segment == text_section) - return (size + 3) & ~3; - } - - return size; -} - -/* Generate a machine-dependent relocation. */ -arelent * -tc_gen_reloc (section, fixP) - asection *section ATTRIBUTE_UNUSED; - fixS *fixP; -{ - arelent *relP; - bfd_reloc_code_real_type code; - - switch (fixP->fx_r_type) - { - case BFD_RELOC_CRIS_16_GOT: - case BFD_RELOC_CRIS_32_GOT: - case BFD_RELOC_CRIS_16_GOTPLT: - case BFD_RELOC_CRIS_32_GOTPLT: - case BFD_RELOC_CRIS_32_GOTREL: - case BFD_RELOC_CRIS_32_PLT_GOTREL: - case BFD_RELOC_CRIS_32_PLT_PCREL: - case BFD_RELOC_32: - case BFD_RELOC_16: - case BFD_RELOC_8: - case BFD_RELOC_VTABLE_INHERIT: - case BFD_RELOC_VTABLE_ENTRY: - code = fixP->fx_r_type; - break; - default: - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Semantics error. This type of operand can not be relocated, it must be an assembly-time constant")); - return 0; - } - - relP = (arelent *) xmalloc (sizeof (arelent)); - assert (relP != 0); - relP->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relP->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy); - relP->address = fixP->fx_frag->fr_address + fixP->fx_where; - - if (fixP->fx_pcrel) - relP->addend = 0; - else - relP->addend = fixP->fx_offset; - - /* This is the standard place for KLUDGEs to work around bugs in - bfd_install_relocation (first such note in the documentation - appears with binutils-2.8). - - That function bfd_install_relocation does the wrong thing with - putting stuff into the addend of a reloc (it should stay out) for a - weak symbol. The really bad thing is that it adds the - "segment-relative offset" of the symbol into the reloc. In this - case, the reloc should instead be relative to the symbol with no - other offset than the assembly code shows; and since the symbol is - weak, any local definition should be ignored until link time (or - thereafter). - To wit: weaksym+42 should be weaksym+42 in the reloc, - not weaksym+(offset_from_segment_of_local_weaksym_definition) - - To "work around" this, we subtract the segment-relative offset of - "known" weak symbols. This evens out the extra offset. - - That happens for a.out but not for ELF, since for ELF, - bfd_install_relocation uses the "special function" field of the - howto, and does not execute the code that needs to be undone. */ - - if (OUTPUT_FLAVOR == bfd_target_aout_flavour - && fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy) - && ! bfd_is_und_section (S_GET_SEGMENT (fixP->fx_addsy))) - { - relP->addend -= S_GET_VALUE (fixP->fx_addsy); - } - - relP->howto = bfd_reloc_type_lookup (stdoutput, code); - if (! relP->howto) - { - const char *name; - - name = S_GET_NAME (fixP->fx_addsy); - if (name == NULL) - name = _(""); - as_fatal (_("Cannot generate relocation type for symbol %s, code %s"), - name, bfd_get_reloc_code_name (code)); - } - - return relP; -} - -/* Machine-dependent usage-output. */ - -void -md_show_usage (stream) - FILE *stream; -{ - /* The messages are formatted to line up with the generic options. */ - fprintf (stream, _("CRIS-specific options:\n")); - fprintf (stream, "%s", - _(" -h, -H Don't execute, print this help text. Deprecated.\n")); - fprintf (stream, "%s", - _(" -N Warn when branches are expanded to jumps.\n")); - fprintf (stream, "%s", - _(" --underscore User symbols are normally prepended with underscore.\n")); - fprintf (stream, "%s", - _(" Registers will not need any prefix.\n")); - fprintf (stream, "%s", - _(" --no-underscore User symbols do not have any prefix.\n")); - fprintf (stream, "%s", - _(" Registers will require a `$'-prefix.\n")); - fprintf (stream, "%s", - _(" --pic Enable generation of position-independent code.\n")); -} - -/* Apply a fixS (fixup of an instruction or data that we didn't have - enough info to complete immediately) to the data in a frag. */ - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT *valP; - segT seg; -{ - /* This assignment truncates upper bits if valueT is 64 bits (as with - --enable-64-bit-bfd), which is fine here, though we cast to avoid - any compiler warnings. */ - long val = (long) *valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - - if (fixP->fx_addsy == 0 && !fixP->fx_pcrel) - fixP->fx_done = 1; - - if (fixP->fx_bit_fixP || fixP->fx_im_disp != 0) - { - as_bad_where (fixP->fx_file, fixP->fx_line, _("Invalid relocation")); - fixP->fx_done = 1; - } - else - { - /* We can't actually support subtracting a symbol. */ - if (fixP->fx_subsy != (symbolS *) NULL) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("expression too complex")); - - cris_number_to_imm (buf, val, fixP->fx_size, fixP, seg); - } -} - -/* All relocations are relative to the location just after the fixup; - the address of the fixup plus its size. */ - -long -md_pcrel_from (fixP) - fixS *fixP; -{ - valueT addr = fixP->fx_where + fixP->fx_frag->fr_address; - - /* FIXME: We get here only at the end of assembly, when X in ".-X" is - still unknown. Since we don't have pc-relative relocations in a.out, - this is invalid. What to do if anything for a.out, is to add - pc-relative relocations everywhere including the elinux program - loader. For ELF, allow straight-forward PC-relative relocations, - which are always relative to the location after the relocation. */ - if (OUTPUT_FLAVOR != bfd_target_elf_flavour - || (fixP->fx_r_type != BFD_RELOC_8_PCREL - && fixP->fx_r_type != BFD_RELOC_16_PCREL - && fixP->fx_r_type != BFD_RELOC_32_PCREL)) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid pc-relative relocation")); - return fixP->fx_size + addr; -} - -/* We have no need to give defaults for symbol-values. */ -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* If this function returns non-zero, it prevents the relocation - against symbol(s) in the FIXP from being replaced with relocations - against section symbols, and guarantees that a relocation will be - emitted even when the value can be resolved locally. */ -int -md_cris_force_relocation (fixp) - struct fix *fixp; -{ - switch (fixp->fx_r_type) - { - case BFD_RELOC_CRIS_16_GOT: - case BFD_RELOC_CRIS_32_GOT: - case BFD_RELOC_CRIS_16_GOTPLT: - case BFD_RELOC_CRIS_32_GOTPLT: - case BFD_RELOC_CRIS_32_GOTREL: - case BFD_RELOC_CRIS_32_PLT_GOTREL: - case BFD_RELOC_CRIS_32_PLT_PCREL: - return 1; - default: - ; - } - - return generic_force_reloc (fixp); -} - -/* Check and emit error if broken-word handling has failed to fix up a - case-table. This is called from write.c, after doing everything it - knows about how to handle broken words. */ - -void -tc_cris_check_adjusted_broken_word (new_offset, brokwP) - offsetT new_offset; - struct broken_word *brokwP; -{ - if (new_offset > 32767 || new_offset < -32768) - /* We really want a genuine error, not a warning, so make it one. */ - as_bad_where (brokwP->frag->fr_file, brokwP->frag->fr_line, - _("Adjusted signed .word (%ld) overflows: `switch'-statement too large."), - (long) new_offset); -} - -/* Make a leading REGISTER_PREFIX_CHAR mandatory for all registers. */ - -static void cris_force_reg_prefix () -{ - demand_register_prefix = TRUE; -} - -/* Do not demand a leading REGISTER_PREFIX_CHAR for all registers. */ - -static void cris_relax_reg_prefix () -{ - demand_register_prefix = FALSE; -} - -/* Adjust for having a leading '_' on all user symbols. */ - -static void cris_sym_leading_underscore () -{ - /* We can't really do anything more than assert that what the program - thinks symbol starts with agrees with the command-line options, since - the bfd is already created. */ - - if (!symbols_have_leading_underscore) - as_bad (_(".syntax %s requires command-line option `--underscore'"), - SYNTAX_USER_SYM_LEADING_UNDERSCORE); -} - -/* Adjust for not having any particular prefix on user symbols. */ - -static void cris_sym_no_leading_underscore () -{ - if (symbols_have_leading_underscore) - as_bad (_(".syntax %s requires command-line option `--no-underscore'"), - SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE); -} - -/* Handle the .syntax pseudo, which takes an argument that decides what - syntax the assembly code has. */ - -static void -s_syntax (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - static const struct syntaxes - { - const char *operand; - void (*fn) PARAMS ((void)); - } syntax_table[] = - {{SYNTAX_ENFORCE_REG_PREFIX, cris_force_reg_prefix}, - {SYNTAX_RELAX_REG_PREFIX, cris_relax_reg_prefix}, - {SYNTAX_USER_SYM_LEADING_UNDERSCORE, cris_sym_leading_underscore}, - {SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, cris_sym_no_leading_underscore}}; - - const struct syntaxes *sp; - - for (sp = syntax_table; - sp < syntax_table + sizeof (syntax_table) / sizeof (syntax_table[0]); - sp++) - { - if (strncmp (input_line_pointer, sp->operand, - strlen (sp->operand)) == 0) - { - (sp->fn) (); - - input_line_pointer += strlen (sp->operand); - demand_empty_rest_of_line (); - return; - } - } - - as_bad (_("Unknown .syntax operand")); -} - -/* Wrapper for dwarf2_directive_file to emit error if this is seen when - not emitting ELF. */ - -static void -s_cris_file (dummy) - int dummy; -{ - if (OUTPUT_FLAVOR != bfd_target_elf_flavour) - as_bad (_("Pseudodirective .file is only valid when generating ELF")); - else - dwarf2_directive_file (dummy); -} - -/* Wrapper for dwarf2_directive_loc to emit error if this is seen when not - emitting ELF. */ - -static void -s_cris_loc (dummy) - int dummy; -{ - if (OUTPUT_FLAVOR != bfd_target_elf_flavour) - as_bad (_("Pseudodirective .loc is only valid when generating ELF")); - else - dwarf2_directive_loc (dummy); -} - -/* - * Local variables: - * eval: (c-set-style "gnu") - * indent-tabs-mode: t - * End: - */ diff --git a/gas/config/tc-cris.h b/gas/config/tc-cris.h deleted file mode 100644 index 9082a6262..000000000 --- a/gas/config/tc-cris.h +++ /dev/null @@ -1,170 +0,0 @@ -/* tc-cris.h -- Header file for tc-cris.c, the CRIS GAS port. - Copyright 2000, 2001, 2002 Free Software Foundation, Inc. - - Contributed by Axis Communications AB, Lund, Sweden. - Originally written for GAS 1.38.1 by Mikael Asker. - Updates, BFDizing, GNUifying and ELF by Hans-Peter Nilsson. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. */ - -/* See the GAS "internal" document for general documentation on this. - It is called internals.texi (internals.info when makeinfo:d), but is - not installed or makeinfo:d by "make info". */ - -/* Functions and variables that aren't declared in tc.h are declared here, - with the type/prototype that is used in the local extern-declaration of - their usage. */ - -#ifndef TC_CRIS -#define TC_CRIS - -/* Multi-target support is always on. */ -extern const char *cris_target_format PARAMS ((void)); -#define TARGET_FORMAT cris_target_format () - -#define TARGET_ARCH bfd_arch_cris - -#define TARGET_BYTES_BIG_ENDIAN 0 - -extern const char *md_shortopts; -extern struct option md_longopts[]; -extern size_t md_longopts_size; - -extern const pseudo_typeS md_pseudo_table[]; - -#define tc_comment_chars cris_comment_chars -extern const char cris_comment_chars[]; -extern const char line_comment_chars[]; -extern const char line_separator_chars[]; -extern const char EXP_CHARS[]; -extern const char FLT_CHARS[]; - -/* This should be optional, since it is ignored as an escape (assumed to - be itself) if it is not recognized. */ -#define ONLY_STANDARD_ESCAPES - -/* Note that we do not define TC_EQUAL_IN_INSN, since its current use is - in the instruction rather than the operand, and thus does not come to - use for side-effect assignments such as "and.d [r0 = r1 + 42], r3". */ -#define md_operand(x) - -#define md_number_to_chars number_to_chars_littleendian - -extern const int md_short_jump_size; -extern const int md_long_jump_size; - -/* There's no use having different functions for this; the sizes are the - same. Note that we can't #define md_short_jump_size here. */ -#define md_create_short_jump md_create_long_jump - -extern const struct relax_type md_cris_relax_table[]; -#define TC_GENERIC_RELAX_TABLE md_cris_relax_table - -long cris_relax_frag PARAMS ((segT, fragS *, long)); - -/* GAS only handles relaxations for pc-relative data targeting addresses - in the same segment, so we have to handle the rest on our own. */ -#define md_relax_frag(SEG, FRAGP, STRETCH) \ - ((FRAGP)->fr_symbol != NULL \ - && S_GET_SEGMENT ((FRAGP)->fr_symbol) == (SEG) \ - ? relax_frag (SEG, FRAGP, STRETCH) \ - : cris_relax_frag (SEG, FRAGP, STRETCH)) - -#define TC_FORCE_RELOCATION(FIX) md_cris_force_relocation (FIX) -extern int md_cris_force_relocation PARAMS ((struct fix *)); - -#define IS_CRIS_PIC_RELOC(RTYPE) \ - ((RTYPE) == BFD_RELOC_CRIS_16_GOT \ - || (RTYPE) == BFD_RELOC_CRIS_32_GOT \ - || (RTYPE) == BFD_RELOC_CRIS_16_GOTPLT \ - || (RTYPE) == BFD_RELOC_CRIS_32_GOTPLT \ - || (RTYPE) == BFD_RELOC_CRIS_32_GOTREL \ - || (RTYPE) == BFD_RELOC_CRIS_32_PLT_GOTREL \ - || (RTYPE) == BFD_RELOC_CRIS_32_PLT_PCREL) - -/* Make sure we don't resolve fixups for which we want to emit dynamic - relocations. FIXME: Set fx_plt instead of using IS_CRIS_PIC_RELOC. */ -#define TC_FORCE_RELOCATION_LOCAL(FIX) \ - (!(FIX)->fx_pcrel \ - || (FIX)->fx_plt \ - || IS_CRIS_PIC_RELOC ((FIX)->fx_r_type) \ - || TC_FORCE_RELOCATION (FIX)) - -/* For some reloc types, don't adjust fixups by reducing to a section - symbol. */ -#define tc_fix_adjustable(FIX) \ - ((FIX)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ - && (FIX)->fx_r_type != BFD_RELOC_VTABLE_ENTRY \ - && (! IS_CRIS_PIC_RELOC ((FIX)->fx_r_type) \ - || (FIX)->fx_r_type == BFD_RELOC_CRIS_32_GOTREL)) - -/* When we have fixups against constant expressions, we get a GAS-specific - section symbol at no extra charge for obscure reasons in - adjust_reloc_syms. Since ELF outputs section symbols, it gladly - outputs this "*ABS*" symbol in every object. Avoid that. - Also, don't emit undefined symbols (that aren't used in relocations). - They pop up when tentatively parsing register names as symbols. */ -#define tc_frob_symbol(symp, punt) \ - do { \ - if ((OUTPUT_FLAVOR == bfd_target_elf_flavour \ - && (symp) == section_symbol (absolute_section)) \ - || ! S_IS_DEFINED (symp)) \ - (punt) = 1; \ - } while (0) - -#define LISTING_HEADER "GAS for CRIS" - -#if 0 -/* The testsuite does not let me define these, although they IMHO should - be preferred over the default. */ -#define LISTING_WORD_SIZE 2 -#define LISTING_LHS_WIDTH 4 -#define LISTING_LHS_WIDTH_SECOND 4 -#endif - -/* END of declaration and definitions described in the "internals" - document. */ - -/* Do this, or we will never know what hit us when the - broken-word-fixes break. Do _not_ use WARN_SIGNED_OVERFLOW_WORD, - it is only for use with WORKING_DOT_WORD and warns about most stuff. - (still in 2.9.1). */ -struct broken_word; -extern void tc_cris_check_adjusted_broken_word PARAMS ((offsetT, - struct - broken_word *)); -#define TC_CHECK_ADJUSTED_BROKEN_DOT_WORD(new_offset, brokw) \ - tc_cris_check_adjusted_broken_word ((offsetT) (new_offset), brokw) - -/* We don't want any implicit alignment, so we do nothing. */ -#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) - -/* CRIS instructions, with operands and prefixes included, are a multiple - of two bytes long. */ -#define DWARF2_LINE_MIN_INSN_LENGTH 2 - -/* Make port immune to unwanted difference in te-generic.h vs. te-linux.h. */ -#define LOCAL_LABELS_DOLLAR 1 - -#endif /* TC_CRIS */ -/* - * Local variables: - * eval: (c-set-style "gnu") - * indent-tabs-mode: t - * End: - */ diff --git a/gas/config/tc-d10v.c b/gas/config/tc-d10v.c deleted file mode 100644 index 639fdc0c9..000000000 --- a/gas/config/tc-d10v.c +++ /dev/null @@ -1,1905 +0,0 @@ -/* tc-d10v.c -- Assembler code for the Mitsubishi D10V - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "opcode/d10v.h" -#include "elf/ppc.h" - -const char comment_chars[] = ";"; -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = ""; -const char *md_shortopts = "O"; -const char EXP_CHARS[] = "eE"; -const char FLT_CHARS[] = "dD"; - -int Optimizing = 0; - -#define AT_WORD_P(X) ((X)->X_op == O_right_shift \ - && (X)->X_op_symbol != NULL \ - && symbol_constant_p ((X)->X_op_symbol) \ - && S_GET_VALUE ((X)->X_op_symbol) == AT_WORD_RIGHT_SHIFT) -#define AT_WORD_RIGHT_SHIFT 2 - -/* Fixups. */ -#define MAX_INSN_FIXUPS (5) -struct d10v_fixup -{ - expressionS exp; - int operand; - int pcrel; - int size; - bfd_reloc_code_real_type reloc; -}; - -typedef struct _fixups -{ - int fc; - struct d10v_fixup fix[MAX_INSN_FIXUPS]; - struct _fixups *next; -} Fixups; - -static Fixups FixUps[2]; -static Fixups *fixups; - -static int do_not_ignore_hash = 0; - -typedef int packing_type; -#define PACK_UNSPEC (0) /* Packing order not specified. */ -#define PACK_PARALLEL (1) /* "||" */ -#define PACK_LEFT_RIGHT (2) /* "->" */ -#define PACK_RIGHT_LEFT (3) /* "<-" */ -static packing_type etype = PACK_UNSPEC; /* Used by d10v_cleanup. */ - -/* TRUE if instruction swapping warnings should be inhibited. - --nowarnswap. */ -static bfd_boolean flag_warn_suppress_instructionswap; - -/* TRUE if instruction packing should be performed when --gstabs is specified. - --gstabs-packing, --no-gstabs-packing. */ -static bfd_boolean flag_allow_gstabs_packing = 1; - -/* Local functions. */ -static int reg_name_search PARAMS ((char *name)); -static int register_name PARAMS ((expressionS *expressionP)); -static int check_range PARAMS ((unsigned long num, int bits, int flags)); -static int postfix PARAMS ((char *p)); -static bfd_reloc_code_real_type get_reloc PARAMS ((struct d10v_operand *op)); -static int get_operands PARAMS ((expressionS exp[])); -static struct d10v_opcode *find_opcode PARAMS ((struct d10v_opcode *opcode, expressionS ops[])); -static unsigned long build_insn PARAMS ((struct d10v_opcode *opcode, expressionS *opers, unsigned long insn)); -static void write_long PARAMS ((unsigned long insn, Fixups *fx)); -static void write_1_short PARAMS ((struct d10v_opcode *opcode, unsigned long insn, Fixups *fx)); -static int write_2_short PARAMS ((struct d10v_opcode *opcode1, unsigned long insn1, - struct d10v_opcode *opcode2, unsigned long insn2, packing_type exec_type, Fixups *fx)); -static unsigned long do_assemble PARAMS ((char *str, struct d10v_opcode **opcode)); -static unsigned long d10v_insert_operand PARAMS (( unsigned long insn, int op_type, - offsetT value, int left, fixS *fix)); -static int parallel_ok PARAMS ((struct d10v_opcode *opcode1, unsigned long insn1, - struct d10v_opcode *opcode2, unsigned long insn2, - packing_type exec_type)); - -static void check_resource_conflict PARAMS ((struct d10v_opcode *opcode1, - unsigned long insn1, - struct d10v_opcode *opcode2, - unsigned long insn2)); - -static symbolS * find_symbol_matching_register PARAMS ((expressionS *)); - -struct option md_longopts[] = -{ -#define OPTION_NOWARNSWAP (OPTION_MD_BASE) - {"nowarnswap", no_argument, NULL, OPTION_NOWARNSWAP}, -#define OPTION_GSTABSPACKING (OPTION_MD_BASE + 1) - {"gstabspacking", no_argument, NULL, OPTION_GSTABSPACKING}, - {"gstabs-packing", no_argument, NULL, OPTION_GSTABSPACKING}, -#define OPTION_NOGSTABSPACKING (OPTION_MD_BASE + 2) - {"nogstabspacking", no_argument, NULL, OPTION_NOGSTABSPACKING}, - {"no-gstabs-packing", no_argument, NULL, OPTION_NOGSTABSPACKING}, - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -static void d10v_dot_word PARAMS ((int)); - -/* The target specific pseudo-ops which we support. */ -const pseudo_typeS md_pseudo_table[] = -{ - { "word", d10v_dot_word, 2 }, - { NULL, NULL, 0 } -}; - -/* Opcode hash table. */ -static struct hash_control *d10v_hash; - -/* Do a binary search of the d10v_predefined_registers array to see if - NAME is a valid regiter name. Return the register number from the - array on success, or -1 on failure. */ - -static int -reg_name_search (name) - char *name; -{ - int middle, low, high; - int cmp; - - low = 0; - high = d10v_reg_name_cnt () - 1; - - do - { - middle = (low + high) / 2; - cmp = strcasecmp (name, d10v_predefined_registers[middle].name); - if (cmp < 0) - high = middle - 1; - else if (cmp > 0) - low = middle + 1; - else - return d10v_predefined_registers[middle].value; - } - while (low <= high); - return -1; -} - -/* Check the string at input_line_pointer - to see if it is a valid register name. */ - -static int -register_name (expressionP) - expressionS *expressionP; -{ - int reg_number; - char c, *p = input_line_pointer; - - while (*p - && *p != '\n' && *p != '\r' && *p != ',' && *p != ' ' && *p != ')') - p++; - - c = *p; - if (c) - *p++ = 0; - - /* Look to see if it's in the register table. */ - reg_number = reg_name_search (input_line_pointer); - if (reg_number >= 0) - { - expressionP->X_op = O_register; - /* Temporarily store a pointer to the string here. */ - expressionP->X_op_symbol = (symbolS *) input_line_pointer; - expressionP->X_add_number = reg_number; - input_line_pointer = p; - return 1; - } - if (c) - *(p - 1) = c; - return 0; -} - -static int -check_range (num, bits, flags) - unsigned long num; - int bits; - int flags; -{ - long min, max; - int retval = 0; - - /* Don't bother checking 16-bit values. */ - if (bits == 16) - return 0; - - if (flags & OPERAND_SHIFT) - { - /* All special shift operands are unsigned and <= 16. - We allow 0 for now. */ - if (num > 16) - return 1; - else - return 0; - } - - if (flags & OPERAND_SIGNED) - { - /* Signed 3-bit integers are restricted to the (-2, 3) range. */ - if (flags & RESTRICTED_NUM3) - { - if ((long) num < -2 || (long) num > 3) - retval = 1; - } - else - { - max = (1 << (bits - 1)) - 1; - min = - (1 << (bits - 1)); - if (((long) num > max) || ((long) num < min)) - retval = 1; - } - } - else - { - max = (1 << bits) - 1; - min = 0; - if (((long) num > max) || ((long) num < min)) - retval = 1; - } - return retval; -} - -void -md_show_usage (stream) - FILE *stream; -{ - fprintf (stream, _("D10V options:\n\ --O Optimize. Will do some operations in parallel.\n\ ---gstabs-packing Pack adjacent short instructions together even\n\ - when --gstabs is specified. On by default.\n\ ---no-gstabs-packing If --gstabs is specified, do not pack adjacent\n\ - instructions together.\n")); -} - -int -md_parse_option (c, arg) - int c; - char *arg ATTRIBUTE_UNUSED; -{ - switch (c) - { - case 'O': - /* Optimize. Will attempt to parallelize operations. */ - Optimizing = 1; - break; - case OPTION_NOWARNSWAP: - flag_warn_suppress_instructionswap = 1; - break; - case OPTION_GSTABSPACKING: - flag_allow_gstabs_packing = 1; - break; - case OPTION_NOGSTABSPACKING: - flag_allow_gstabs_packing = 0; - break; - default: - return 0; - } - return 1; -} - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (type, litP, sizeP) - int type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[4]; - char *t; - int i; - - switch (type) - { - case 'f': - prec = 2; - break; - case 'd': - prec = 4; - break; - default: - *sizeP = 0; - return _("bad call to md_atof"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * 2; - - for (i = 0; i < prec; i++) - { - md_number_to_chars (litP, (valueT) words[i], 2); - litP += 2; - } - return NULL; -} - -void -md_convert_frag (abfd, sec, fragP) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - fragS *fragP ATTRIBUTE_UNUSED; -{ - abort (); -} - -valueT -md_section_align (seg, addr) - asection *seg; - valueT addr; -{ - int align = bfd_get_section_alignment (stdoutput, seg); - return ((addr + (1 << align) - 1) & (-1 << align)); -} - -void -md_begin () -{ - char *prev_name = ""; - struct d10v_opcode *opcode; - d10v_hash = hash_new (); - - /* Insert unique names into hash table. The D10v instruction set - has many identical opcode names that have different opcodes based - on the operands. This hash table then provides a quick index to - the first opcode with a particular name in the opcode table. */ - - for (opcode = (struct d10v_opcode *) d10v_opcodes; opcode->name; opcode++) - { - if (strcmp (prev_name, opcode->name)) - { - prev_name = (char *) opcode->name; - hash_insert (d10v_hash, opcode->name, (char *) opcode); - } - } - - fixups = &FixUps[0]; - FixUps[0].next = &FixUps[1]; - FixUps[1].next = &FixUps[0]; -} - -/* Remove the postincrement or postdecrement operator ( '+' or '-' ) - from an expression. */ - -static int -postfix (p) - char *p; -{ - while (*p != '-' && *p != '+') - { - if (*p == 0 || *p == '\n' || *p == '\r') - break; - p++; - } - - if (*p == '-') - { - *p = ' '; - return (-1); - } - if (*p == '+') - { - *p = ' '; - return (1); - } - - return (0); -} - -static bfd_reloc_code_real_type -get_reloc (op) - struct d10v_operand *op; -{ - int bits = op->bits; - - if (bits <= 4) - return (0); - - if (op->flags & OPERAND_ADDR) - { - if (bits == 8) - return (BFD_RELOC_D10V_10_PCREL_R); - else - return (BFD_RELOC_D10V_18_PCREL); - } - - return (BFD_RELOC_16); -} - -/* Parse a string of operands. Return an array of expressions. */ - -static int -get_operands (exp) - expressionS exp[]; -{ - char *p = input_line_pointer; - int numops = 0; - int post = 0; - int uses_at = 0; - - while (*p) - { - while (*p == ' ' || *p == '\t' || *p == ',') - p++; - if (*p == 0 || *p == '\n' || *p == '\r') - break; - - if (*p == '@') - { - uses_at = 1; - - p++; - exp[numops].X_op = O_absent; - if (*p == '(') - { - p++; - exp[numops].X_add_number = OPERAND_ATPAR; - } - else if (*p == '-') - { - p++; - exp[numops].X_add_number = OPERAND_ATMINUS; - } - else - { - exp[numops].X_add_number = OPERAND_ATSIGN; - if (*p == '+') - { - numops++; - exp[numops].X_op = O_absent; - exp[numops].X_add_number = OPERAND_PLUS; - p++; - } - post = postfix (p); - } - numops++; - continue; - } - - if (*p == ')') - { - /* Just skip the trailing paren. */ - p++; - continue; - } - - input_line_pointer = p; - - /* Check to see if it might be a register name. */ - if (!register_name (&exp[numops])) - { - /* Parse as an expression. */ - if (uses_at) - { - /* Any expression that involves the indirect addressing - cannot also involve immediate addressing. Therefore - the use of the hash character is illegal. */ - int save = do_not_ignore_hash; - do_not_ignore_hash = 1; - - expression (&exp[numops]); - - do_not_ignore_hash = save; - } - else - expression (&exp[numops]); - } - - if (strncasecmp (input_line_pointer, "@word", 5) == 0) - { - input_line_pointer += 5; - if (exp[numops].X_op == O_register) - { - /* If it looked like a register name but was followed by - "@word" then it was really a symbol, so change it to - one. */ - exp[numops].X_op = O_symbol; - exp[numops].X_add_symbol = - symbol_find_or_make ((char *) exp[numops].X_op_symbol); - } - - /* Check for identifier@word+constant. */ - if (*input_line_pointer == '-' || *input_line_pointer == '+') - { - expressionS new_exp; - expression (&new_exp); - exp[numops].X_add_number = new_exp.X_add_number; - } - - /* Convert expr into a right shift by AT_WORD_RIGHT_SHIFT. */ - { - expressionS new_exp; - memset (&new_exp, 0, sizeof new_exp); - new_exp.X_add_number = AT_WORD_RIGHT_SHIFT; - new_exp.X_op = O_constant; - new_exp.X_unsigned = 1; - exp[numops].X_op_symbol = make_expr_symbol (&new_exp); - exp[numops].X_op = O_right_shift; - } - - know (AT_WORD_P (&exp[numops])); - } - - if (exp[numops].X_op == O_illegal) - as_bad (_("illegal operand")); - else if (exp[numops].X_op == O_absent) - as_bad (_("missing operand")); - - numops++; - p = input_line_pointer; - } - - switch (post) - { - case -1: /* Postdecrement mode. */ - exp[numops].X_op = O_absent; - exp[numops++].X_add_number = OPERAND_MINUS; - break; - case 1: /* Postincrement mode. */ - exp[numops].X_op = O_absent; - exp[numops++].X_add_number = OPERAND_PLUS; - break; - } - - exp[numops].X_op = 0; - return (numops); -} - -static unsigned long -d10v_insert_operand (insn, op_type, value, left, fix) - unsigned long insn; - int op_type; - offsetT value; - int left; - fixS *fix; -{ - int shift, bits; - - shift = d10v_operands[op_type].shift; - if (left) - shift += 15; - - bits = d10v_operands[op_type].bits; - - /* Truncate to the proper number of bits. */ - if (check_range (value, bits, d10v_operands[op_type].flags)) - as_bad_where (fix->fx_file, fix->fx_line, - _("operand out of range: %ld"), (long) value); - - value &= 0x7FFFFFFF >> (31 - bits); - insn |= (value << shift); - - return insn; -} - -/* Take a pointer to the opcode entry in the opcode table and the - array of operand expressions. Return the instruction. */ - -static unsigned long -build_insn (opcode, opers, insn) - struct d10v_opcode *opcode; - expressionS *opers; - unsigned long insn; -{ - int i, bits, shift, flags, format; - unsigned long number; - - /* The insn argument is only used for the DIVS kludge. */ - if (insn) - format = LONG_R; - else - { - insn = opcode->opcode; - format = opcode->format; - } - - for (i = 0; opcode->operands[i]; i++) - { - flags = d10v_operands[opcode->operands[i]].flags; - bits = d10v_operands[opcode->operands[i]].bits; - shift = d10v_operands[opcode->operands[i]].shift; - number = opers[i].X_add_number; - - if (flags & OPERAND_REG) - { - number &= REGISTER_MASK; - if (format == LONG_L) - shift += 15; - } - - if (opers[i].X_op != O_register && opers[i].X_op != O_constant) - { - /* Now create a fixup. */ - - if (fixups->fc >= MAX_INSN_FIXUPS) - as_fatal (_("too many fixups")); - - if (AT_WORD_P (&opers[i])) - { - /* Recognize XXX>>1+N aka XXX@word+N as special (AT_WORD). */ - fixups->fix[fixups->fc].reloc = BFD_RELOC_D10V_18; - opers[i].X_op = O_symbol; - opers[i].X_op_symbol = NULL; /* Should free it. */ - /* number is left shifted by AT_WORD_RIGHT_SHIFT so - that, it is aligned with the symbol's value. Later, - BFD_RELOC_D10V_18 will right shift (symbol_value + - X_add_number). */ - number <<= AT_WORD_RIGHT_SHIFT; - opers[i].X_add_number = number; - } - else - { - fixups->fix[fixups->fc].reloc = - get_reloc ((struct d10v_operand *) &d10v_operands[opcode->operands[i]]); - - /* Check that an immediate was passed to ops that expect one. */ - if ((flags & OPERAND_NUM) - && (fixups->fix[fixups->fc].reloc == 0)) - as_bad (_("operand is not an immediate")); - } - - if (fixups->fix[fixups->fc].reloc == BFD_RELOC_16 || - fixups->fix[fixups->fc].reloc == BFD_RELOC_D10V_18) - fixups->fix[fixups->fc].size = 2; - else - fixups->fix[fixups->fc].size = 4; - - fixups->fix[fixups->fc].exp = opers[i]; - fixups->fix[fixups->fc].operand = opcode->operands[i]; - fixups->fix[fixups->fc].pcrel = - (flags & OPERAND_ADDR) ? TRUE : FALSE; - (fixups->fc)++; - } - - /* Truncate to the proper number of bits. */ - if ((opers[i].X_op == O_constant) && check_range (number, bits, flags)) - as_bad (_("operand out of range: %lu"), number); - number &= 0x7FFFFFFF >> (31 - bits); - insn = insn | (number << shift); - } - - /* kludge: for DIVS, we need to put the operands in twice on the second - pass, format is changed to LONG_R to force the second set of operands - to not be shifted over 15. */ - if ((opcode->opcode == OPCODE_DIVS) && (format == LONG_L)) - insn = build_insn (opcode, opers, insn); - - return insn; -} - -/* Write out a long form instruction. */ - -static void -write_long (insn, fx) - unsigned long insn; - Fixups *fx; -{ - int i, where; - char *f = frag_more (4); - - insn |= FM11; - number_to_chars_bigendian (f, insn, 4); - - for (i = 0; i < fx->fc; i++) - { - if (fx->fix[i].reloc) - { - where = f - frag_now->fr_literal; - if (fx->fix[i].size == 2) - where += 2; - - if (fx->fix[i].reloc == BFD_RELOC_D10V_18) - fx->fix[i].operand |= 4096; - - fix_new_exp (frag_now, - where, - fx->fix[i].size, - &(fx->fix[i].exp), - fx->fix[i].pcrel, - fx->fix[i].operand|2048); - } - } - fx->fc = 0; -} - -/* Write out a short form instruction by itself. */ - -static void -write_1_short (opcode, insn, fx) - struct d10v_opcode *opcode; - unsigned long insn; - Fixups *fx; -{ - char *f = frag_more (4); - int i, where; - - if (opcode->exec_type & PARONLY) - as_fatal (_("Instruction must be executed in parallel with another instruction.")); - - /* The other container needs to be NOP. - According to 4.3.1: for FM=00, sub-instructions performed only by IU - cannot be encoded in L-container. */ - if (opcode->unit == IU) - insn |= FM00 | (NOP << 15); /* Right container. */ - else - insn = FM00 | (insn << 15) | NOP; /* Left container. */ - - number_to_chars_bigendian (f, insn, 4); - for (i = 0; i < fx->fc; i++) - { - if (fx->fix[i].reloc) - { - where = f - frag_now->fr_literal; - if (fx->fix[i].size == 2) - where += 2; - - if (fx->fix[i].reloc == BFD_RELOC_D10V_18) - fx->fix[i].operand |= 4096; - - /* If it's an R reloc, we may have to switch it to L. */ - if ((fx->fix[i].reloc == BFD_RELOC_D10V_10_PCREL_R) - && (opcode->unit != IU)) - fx->fix[i].operand |= 1024; - - fix_new_exp (frag_now, - where, - fx->fix[i].size, - &(fx->fix[i].exp), - fx->fix[i].pcrel, - fx->fix[i].operand|2048); - } - } - fx->fc = 0; -} - -/* Expects two short instructions. - If possible, writes out both as a single packed instruction. - Otherwise, writes out the first one, packed with a NOP. - Returns number of instructions not written out. */ - -static int -write_2_short (opcode1, insn1, opcode2, insn2, exec_type, fx) - struct d10v_opcode *opcode1, *opcode2; - unsigned long insn1, insn2; - packing_type exec_type; - Fixups *fx; -{ - unsigned long insn; - char *f; - int i, j, where; - - if ((exec_type != PACK_PARALLEL) - && ((opcode1->exec_type & PARONLY) || (opcode2->exec_type & PARONLY))) - as_fatal (_("Instruction must be executed in parallel")); - - if ((opcode1->format & LONG_OPCODE) || (opcode2->format & LONG_OPCODE)) - as_fatal (_("Long instructions may not be combined.")); - - switch (exec_type) - { - case PACK_UNSPEC: /* Order not specified. */ - if (opcode1->exec_type & ALONE) - { - /* Case of a short branch on a separate GAS line. Pack with NOP. */ - write_1_short (opcode1, insn1, fx->next); - return 1; - } - if (Optimizing - && parallel_ok (opcode1, insn1, opcode2, insn2, exec_type)) - { - /* Parallel. */ - if (opcode1->unit == IU) - insn = FM00 | (insn2 << 15) | insn1; - else if (opcode2->unit == MU) - insn = FM00 | (insn2 << 15) | insn1; - else - insn = FM00 | (insn1 << 15) | insn2; - } - else if (opcode1->unit == IU) - /* Reverse sequential with IU opcode1 on right and done first. */ - insn = FM10 | (insn2 << 15) | insn1; - else - /* Sequential with non-IU opcode1 on left and done first. */ - insn = FM01 | (insn1 << 15) | insn2; - break; - - case PACK_PARALLEL: - if (opcode1->exec_type & SEQ || opcode2->exec_type & SEQ) - as_fatal - (_("One of these instructions may not be executed in parallel.")); - if (opcode1->unit == IU) - { - if (opcode2->unit == IU) - as_fatal (_("Two IU instructions may not be executed in parallel")); - if (!flag_warn_suppress_instructionswap) - as_warn (_("Swapping instruction order")); - insn = FM00 | (insn2 << 15) | insn1; - } - else if (opcode2->unit == MU) - { - if (opcode1->unit == MU) - as_fatal (_("Two MU instructions may not be executed in parallel")); - if (!flag_warn_suppress_instructionswap) - as_warn (_("Swapping instruction order")); - insn = FM00 | (insn2 << 15) | insn1; - } - else - insn = FM00 | (insn1 << 15) | insn2; - check_resource_conflict (opcode1, insn1, opcode2, insn2); - break; - - case PACK_LEFT_RIGHT: - if (opcode1->unit != IU) - insn = FM01 | (insn1 << 15) | insn2; - else if (opcode2->unit == MU || opcode2->unit == EITHER) - { - if (!flag_warn_suppress_instructionswap) - as_warn (_("Swapping instruction order")); - insn = FM10 | (insn2 << 15) | insn1; - } - else - as_fatal (_("IU instruction may not be in the left container")); - if (opcode1->exec_type & ALONE) - as_warn (_("Instruction in R container is squashed by flow control instruction in L container.")); - break; - - case PACK_RIGHT_LEFT: - if (opcode2->unit != MU) - insn = FM10 | (insn1 << 15) | insn2; - else if (opcode1->unit == IU || opcode1->unit == EITHER) - { - if (!flag_warn_suppress_instructionswap) - as_warn (_("Swapping instruction order")); - insn = FM01 | (insn2 << 15) | insn1; - } - else - as_fatal (_("MU instruction may not be in the right container")); - if (opcode2->exec_type & ALONE) - as_warn (_("Instruction in R container is squashed by flow control instruction in L container.")); - break; - - default: - as_fatal (_("unknown execution type passed to write_2_short()")); - } - - f = frag_more (4); - number_to_chars_bigendian (f, insn, 4); - - /* Process fixup chains. fx refers to insn2 when j == 0, and to - insn1 when j == 1. Yes, it's reversed. */ - - for (j = 0; j < 2; j++) - { - for (i = 0; i < fx->fc; i++) - { - if (fx->fix[i].reloc) - { - where = f - frag_now->fr_literal; - if (fx->fix[i].size == 2) - where += 2; - - if (fx->fix[i].reloc == BFD_RELOC_D10V_10_PCREL_R - /* A BFD_RELOC_D10V_10_PCREL_R relocation applied to - the instruction in the L container has to be - adjusted to BDF_RELOC_D10V_10_PCREL_L. When - j==0, we're processing insn2's operands, so we - want to mark the operand if insn2 is *not* in the - R container. When j==1, we're processing insn1's - operands, so we want to mark the operand if insn2 - *is* in the R container. Note that, if two - instructions are identical, we're never going to - swap them, so the test is safe. */ - && j == ((insn & 0x7fff) == insn2)) - fx->fix[i].operand |= 1024; - - if (fx->fix[i].reloc == BFD_RELOC_D10V_18) - fx->fix[i].operand |= 4096; - - fix_new_exp (frag_now, - where, - fx->fix[i].size, - &(fx->fix[i].exp), - fx->fix[i].pcrel, - fx->fix[i].operand|2048); - } - } - fx->fc = 0; - fx = fx->next; - } - return (0); -} - -/* Check 2 instructions and determine if they can be safely - executed in parallel. Return 1 if they can be. */ - -static int -parallel_ok (op1, insn1, op2, insn2, exec_type) - struct d10v_opcode *op1, *op2; - unsigned long insn1, insn2; - packing_type exec_type; -{ - int i, j, flags, mask, shift, regno; - unsigned long ins, mod[2], used[2]; - struct d10v_opcode *op; - - if ((op1->exec_type & SEQ) != 0 || (op2->exec_type & SEQ) != 0 - || (op1->exec_type & PAR) == 0 || (op2->exec_type & PAR) == 0 - || (op1->unit == BOTH) || (op2->unit == BOTH) - || (op1->unit == IU && op2->unit == IU) - || (op1->unit == MU && op2->unit == MU)) - return 0; - - /* If this is auto parallelization, and the first instruction is a - branch or should not be packed, then don't parallelize. */ - if (exec_type == PACK_UNSPEC - && (op1->exec_type & (ALONE | BRANCH))) - return 0; - - /* The idea here is to create two sets of bitmasks (mod and used) - which indicate which registers are modified or used by each - instruction. The operation can only be done in parallel if - instruction 1 and instruction 2 modify different registers, and - the first instruction does not modify registers that the second - is using (The second instruction can modify registers that the - first is using as they are only written back after the first - instruction has completed). Accesses to control registers, PSW, - and memory are treated as accesses to a single register. So if - both instructions write memory or if the first instruction writes - memory and the second reads, then they cannot be done in - parallel. Likewise, if the first instruction mucks with the psw - and the second reads the PSW (which includes C, F0, and F1), then - they cannot operate safely in parallel. */ - - /* The bitmasks (mod and used) look like this (bit 31 = MSB). - r0-r15 0-15 - a0-a1 16-17 - cr (not psw) 18 - psw 19 - mem 20 */ - - for (j = 0; j < 2; j++) - { - if (j == 0) - { - op = op1; - ins = insn1; - } - else - { - op = op2; - ins = insn2; - } - mod[j] = used[j] = 0; - if (op->exec_type & BRANCH_LINK) - mod[j] |= 1 << 13; - - for (i = 0; op->operands[i]; i++) - { - flags = d10v_operands[op->operands[i]].flags; - shift = d10v_operands[op->operands[i]].shift; - mask = 0x7FFFFFFF >> (31 - d10v_operands[op->operands[i]].bits); - if (flags & OPERAND_REG) - { - regno = (ins >> shift) & mask; - if (flags & (OPERAND_ACC0 | OPERAND_ACC1)) - regno += 16; - else if (flags & OPERAND_CONTROL) /* mvtc or mvfc. */ - { - if (regno == 0) - regno = 19; - else - regno = 18; - } - else if (flags & (OPERAND_FFLAG | OPERAND_CFLAG)) - regno = 19; - - if (flags & OPERAND_DEST) - { - mod[j] |= 1 << regno; - if (flags & OPERAND_EVEN) - mod[j] |= 1 << (regno + 1); - } - else - { - used[j] |= 1 << regno; - if (flags & OPERAND_EVEN) - used[j] |= 1 << (regno + 1); - - /* Auto inc/dec also modifies the register. */ - if (op->operands[i + 1] != 0 - && (d10v_operands[op->operands[i + 1]].flags - & (OPERAND_PLUS | OPERAND_MINUS)) != 0) - mod[j] |= 1 << regno; - } - } - else if (flags & OPERAND_ATMINUS) - { - /* SP implicitly used/modified. */ - mod[j] |= 1 << 15; - used[j] |= 1 << 15; - } - } - if (op->exec_type & RMEM) - used[j] |= 1 << 20; - else if (op->exec_type & WMEM) - mod[j] |= 1 << 20; - else if (op->exec_type & RF0) - used[j] |= 1 << 19; - else if (op->exec_type & WF0) - mod[j] |= 1 << 19; - else if (op->exec_type & WCAR) - mod[j] |= 1 << 19; - } - if ((mod[0] & mod[1]) == 0 && (mod[0] & used[1]) == 0) - return 1; - return 0; -} - -/* Determine if there are any resource conflicts among two manually - parallelized instructions. Some of this was lifted from parallel_ok. */ - -static void -check_resource_conflict (op1, insn1, op2, insn2) - struct d10v_opcode *op1, *op2; - unsigned long insn1, insn2; -{ - int i, j, flags, mask, shift, regno; - unsigned long ins, mod[2]; - struct d10v_opcode *op; - - if ((op1->exec_type & SEQ) - || ! ((op1->exec_type & PAR) || (op1->exec_type & PARONLY))) - { - as_warn (_("packing conflict: %s must dispatch sequentially"), - op1->name); - return; - } - - if ((op2->exec_type & SEQ) - || ! ((op2->exec_type & PAR) || (op2->exec_type & PARONLY))) - { - as_warn (_("packing conflict: %s must dispatch sequentially"), - op2->name); - return; - } - - /* See if both instructions write to the same resource. - - The idea here is to create two sets of bitmasks (mod and used) which - indicate which registers are modified or used by each instruction. - The operation can only be done in parallel if neither instruction - modifies the same register. Accesses to control registers and memory - are treated as accesses to a single register. So if both instructions - write memory or if the first instruction writes memory and the second - reads, then they cannot be done in parallel. We treat reads to the PSW - (which includes C, F0, and F1) in isolation. So simultaneously writing - C and F0 in two different sub-instructions is permitted. */ - - /* The bitmasks (mod and used) look like this (bit 31 = MSB). - r0-r15 0-15 - a0-a1 16-17 - cr (not psw) 18 - psw(other) 19 - mem 20 - psw(C flag) 21 - psw(F0 flag) 22 */ - - for (j = 0; j < 2; j++) - { - if (j == 0) - { - op = op1; - ins = insn1; - } - else - { - op = op2; - ins = insn2; - } - mod[j] = 0; - if (op->exec_type & BRANCH_LINK) - mod[j] |= 1 << 13; - - for (i = 0; op->operands[i]; i++) - { - flags = d10v_operands[op->operands[i]].flags; - shift = d10v_operands[op->operands[i]].shift; - mask = 0x7FFFFFFF >> (31 - d10v_operands[op->operands[i]].bits); - if (flags & OPERAND_REG) - { - regno = (ins >> shift) & mask; - if (flags & (OPERAND_ACC0 | OPERAND_ACC1)) - regno += 16; - else if (flags & OPERAND_CONTROL) /* mvtc or mvfc */ - { - if (regno == 0) - regno = 19; - else - regno = 18; - } - else if (flags & OPERAND_FFLAG) - regno = 22; - else if (flags & OPERAND_CFLAG) - regno = 21; - - if (flags & OPERAND_DEST - /* Auto inc/dec also modifies the register. */ - || (op->operands[i + 1] != 0 - && (d10v_operands[op->operands[i + 1]].flags - & (OPERAND_PLUS | OPERAND_MINUS)) != 0)) - { - mod[j] |= 1 << regno; - if (flags & OPERAND_EVEN) - mod[j] |= 1 << (regno + 1); - } - } - else if (flags & OPERAND_ATMINUS) - { - /* SP implicitly used/modified. */ - mod[j] |= 1 << 15; - } - } - - if (op->exec_type & WMEM) - mod[j] |= 1 << 20; - else if (op->exec_type & WF0) - mod[j] |= 1 << 22; - else if (op->exec_type & WCAR) - mod[j] |= 1 << 21; - } - - if ((mod[0] & mod[1]) == 0) - return; - else - { - unsigned long x; - x = mod[0] & mod[1]; - - for (j = 0; j <= 15; j++) - if (x & (1 << j)) - as_warn (_("resource conflict (R%d)"), j); - for (j = 16; j <= 17; j++) - if (x & (1 << j)) - as_warn (_("resource conflict (A%d)"), j - 16); - if (x & (1 << 19)) - as_warn (_("resource conflict (PSW)")); - if (x & (1 << 21)) - as_warn (_("resource conflict (C flag)")); - if (x & (1 << 22)) - as_warn (_("resource conflict (F flag)")); - } -} - -/* This is the main entry point for the machine-dependent assembler. - str points to a machine-dependent instruction. This function is - supposed to emit the frags/bytes it assembles to. For the D10V, it - mostly handles the special VLIW parsing and packing and leaves the - difficult stuff to do_assemble(). */ - -static unsigned long prev_insn; -static struct d10v_opcode *prev_opcode = 0; -static subsegT prev_subseg; -static segT prev_seg = 0;; - -void -md_assemble (str) - char *str; -{ - /* etype is saved extype. For multi-line instructions. */ - - packing_type extype = PACK_UNSPEC; /* Parallel, etc. */ - - struct d10v_opcode *opcode; - unsigned long insn; - char *str2; - - if (etype == PACK_UNSPEC) - { - /* Look for the special multiple instruction separators. */ - str2 = strstr (str, "||"); - if (str2) - extype = PACK_PARALLEL; - else - { - str2 = strstr (str, "->"); - if (str2) - extype = PACK_LEFT_RIGHT; - else - { - str2 = strstr (str, "<-"); - if (str2) - extype = PACK_RIGHT_LEFT; - } - } - - /* str2 points to the separator, if there is one. */ - if (str2) - { - *str2 = 0; - - /* If two instructions are present and we already have one saved, - then first write out the saved one. */ - d10v_cleanup (); - - /* Assemble first instruction and save it. */ - prev_insn = do_assemble (str, &prev_opcode); - prev_seg = now_seg; - prev_subseg = now_subseg; - if (prev_insn == (unsigned long) -1) - as_fatal (_("can't find opcode ")); - fixups = fixups->next; - str = str2 + 2; - } - } - - insn = do_assemble (str, &opcode); - if (insn == (unsigned long) -1) - { - if (extype != PACK_UNSPEC) - { - etype = extype; - return; - } - as_fatal (_("can't find opcode ")); - } - - if (etype != PACK_UNSPEC) - { - extype = etype; - etype = PACK_UNSPEC; - } - - /* If this is a long instruction, write it and any previous short - instruction. */ - if (opcode->format & LONG_OPCODE) - { - if (extype != PACK_UNSPEC) - as_fatal (_("Unable to mix instructions as specified")); - d10v_cleanup (); - write_long (insn, fixups); - prev_opcode = NULL; - return; - } - - if (prev_opcode - && prev_seg - && ((prev_seg != now_seg) || (prev_subseg != now_subseg))) - d10v_cleanup (); - - if (prev_opcode - && (0 == write_2_short (prev_opcode, prev_insn, opcode, insn, extype, - fixups))) - { - /* No instructions saved. */ - prev_opcode = NULL; - } - else - { - if (extype != PACK_UNSPEC) - as_fatal (_("Unable to mix instructions as specified")); - /* Save last instruction so it may be packed on next pass. */ - prev_opcode = opcode; - prev_insn = insn; - prev_seg = now_seg; - prev_subseg = now_subseg; - fixups = fixups->next; - } -} - -/* Assemble a single instruction. - Return an opcode, or -1 (an invalid opcode) on error. */ - -static unsigned long -do_assemble (str, opcode) - char *str; - struct d10v_opcode **opcode; -{ - unsigned char *op_start, *save; - unsigned char *op_end; - char name[20]; - int nlen = 0; - expressionS myops[6]; - unsigned long insn; - - /* Drop leading whitespace. */ - while (*str == ' ') - str++; - - /* Find the opcode end. */ - for (op_start = op_end = (unsigned char *) (str); - *op_end - && nlen < 20 - && !is_end_of_line[*op_end] && *op_end != ' '; - op_end++) - { - name[nlen] = TOLOWER (op_start[nlen]); - nlen++; - } - name[nlen] = 0; - - if (nlen == 0) - return -1; - - /* Find the first opcode with the proper name. */ - *opcode = (struct d10v_opcode *) hash_find (d10v_hash, name); - if (*opcode == NULL) - as_fatal (_("unknown opcode: %s"), name); - - save = input_line_pointer; - input_line_pointer = op_end; - *opcode = find_opcode (*opcode, myops); - if (*opcode == 0) - return -1; - input_line_pointer = save; - - insn = build_insn ((*opcode), myops, 0); - return (insn); -} - -/* Find the symbol which has the same name as the register in exp. */ - -static symbolS * -find_symbol_matching_register (exp) - expressionS *exp; -{ - int i; - - if (exp->X_op != O_register) - return NULL; - - /* Find the name of the register. */ - for (i = d10v_reg_name_cnt (); i--;) - if (d10v_predefined_registers[i].value == exp->X_add_number) - break; - - if (i < 0) - abort (); - - /* Now see if a symbol has been defined with the same name. */ - return symbol_find (d10v_predefined_registers[i].name); -} - -/* Get a pointer to an entry in the opcode table. - The function must look at all opcodes with the same name and use - the operands to choose the correct opcode. */ - -static struct d10v_opcode * -find_opcode (opcode, myops) - struct d10v_opcode *opcode; - expressionS myops[]; -{ - int i, match; - struct d10v_opcode *next_opcode; - - /* Get all the operands and save them as expressions. */ - get_operands (myops); - - /* Now see if the operand is a fake. If so, find the correct size - instruction, if possible. */ - if (opcode->format == OPCODE_FAKE) - { - int opnum = opcode->operands[0]; - int flags; - - if (myops[opnum].X_op == O_register) - { - myops[opnum].X_op = O_symbol; - myops[opnum].X_add_symbol = - symbol_find_or_make ((char *) myops[opnum].X_op_symbol); - myops[opnum].X_add_number = 0; - myops[opnum].X_op_symbol = NULL; - } - - next_opcode = opcode + 1; - - /* If the first operand is supposed to be a register, make sure - we got a valid one. */ - flags = d10v_operands[next_opcode->operands[0]].flags; - if (flags & OPERAND_REG) - { - int X_op = myops[0].X_op; - int num = myops[0].X_add_number; - - if (X_op != O_register - || (num & ~flags - & (OPERAND_GPR | OPERAND_ACC0 | OPERAND_ACC1 - | OPERAND_FFLAG | OPERAND_CFLAG | OPERAND_CONTROL)) - || ((flags & OPERAND_SP) && ! (num & OPERAND_SP))) - { - as_bad (_("bad opcode or operands")); - return 0; - } - } - - if (myops[opnum].X_op == O_constant - || (myops[opnum].X_op == O_symbol - && S_IS_DEFINED (myops[opnum].X_add_symbol) - && (S_GET_SEGMENT (myops[opnum].X_add_symbol) == now_seg))) - { - for (i = 0; opcode->operands[i + 1]; i++) - { - int bits = d10v_operands[next_opcode->operands[opnum]].bits; - int flags = d10v_operands[next_opcode->operands[opnum]].flags; - if (flags & OPERAND_ADDR) - bits += 2; - - if (myops[opnum].X_op == O_constant) - { - if (!check_range (myops[opnum].X_add_number, bits, flags)) - break; - } - else - { - fragS *sym_frag; - fragS *f; - unsigned long current_position; - unsigned long symbol_position; - unsigned long value; - bfd_boolean found_symbol; - - /* Calculate the address of the current instruction - and the address of the symbol. Do this by summing - the offsets of previous frags until we reach the - frag containing the symbol, and the current frag. */ - sym_frag = symbol_get_frag (myops[opnum].X_add_symbol); - found_symbol = FALSE; - - current_position = - obstack_next_free (&frchain_now->frch_obstack) - - frag_now->fr_literal; - symbol_position = S_GET_VALUE (myops[opnum].X_add_symbol); - - for (f = frchain_now->frch_root; f; f = f->fr_next) - { - current_position += f->fr_fix + f->fr_offset; - - if (f == sym_frag) - found_symbol = TRUE; - - if (! found_symbol) - symbol_position += f->fr_fix + f->fr_offset; - } - - value = symbol_position; - - if (flags & OPERAND_ADDR) - value -= current_position; - - if (AT_WORD_P (&myops[opnum])) - { - if (bits > 4) - { - bits += 2; - if (!check_range (value, bits, flags)) - break; - } - } - else if (!check_range (value, bits, flags)) - break; - } - next_opcode++; - } - - if (opcode->operands [i + 1] == 0) - as_fatal (_("value out of range")); - else - opcode = next_opcode; - } - else - { - /* Not a constant, so use a long instruction. */ - opcode += 2; - } - } - - match = 0; - - /* Now search the opcode table table for one with operands - that matches what we've got. */ - while (!match) - { - match = 1; - for (i = 0; opcode->operands[i]; i++) - { - int flags = d10v_operands[opcode->operands[i]].flags; - int X_op = myops[i].X_op; - int num = myops[i].X_add_number; - - if (X_op == 0) - { - match = 0; - break; - } - - if (flags & OPERAND_REG) - { - if ((X_op != O_register) - || (num & ~flags - & (OPERAND_GPR | OPERAND_ACC0 | OPERAND_ACC1 - | OPERAND_FFLAG | OPERAND_CFLAG - | OPERAND_CONTROL)) - || ((flags & OPERAND_SP) && ! (num & OPERAND_SP))) - { - match = 0; - break; - } - } - - if (((flags & OPERAND_MINUS) && ((X_op != O_absent) || (num != OPERAND_MINUS))) || - ((flags & OPERAND_PLUS) && ((X_op != O_absent) || (num != OPERAND_PLUS))) || - ((flags & OPERAND_ATMINUS) && ((X_op != O_absent) || (num != OPERAND_ATMINUS))) || - ((flags & OPERAND_ATPAR) && ((X_op != O_absent) || (num != OPERAND_ATPAR))) || - ((flags & OPERAND_ATSIGN) && ((X_op != O_absent) || ((num != OPERAND_ATSIGN) && (num != OPERAND_ATPAR))))) - { - match = 0; - break; - } - - /* Unfortunately, for the indirect operand in instructions such - as ``ldb r1, @(c,r14)'' this function can be passed - X_op == O_register (because 'c' is a valid register name). - However we cannot just ignore the case when X_op == O_register - but flags & OPERAND_REG is null, so we check to see if a symbol - of the same name as the register exists. If the symbol does - exist, then the parser was unable to distinguish the two cases - and we fix things here. (Ref: PR14826) */ - - if (!(flags & OPERAND_REG) && (X_op == O_register)) - { - symbolS * sym; - - sym = find_symbol_matching_register (& myops[i]); - - if (sym != NULL) - { - myops[i].X_op = X_op = O_symbol; - myops[i].X_add_symbol = sym; - } - else - as_bad - (_("illegal operand - register name found where none expected")); - } - } - - /* We're only done if the operands matched so far AND there - are no more to check. */ - if (match && myops[i].X_op == 0) - break; - else - match = 0; - - next_opcode = opcode + 1; - - if (next_opcode->opcode == 0) - break; - - if (strcmp (next_opcode->name, opcode->name)) - break; - - opcode = next_opcode; - } - - if (!match) - { - as_bad (_("bad opcode or operands")); - return (0); - } - - /* Check that all registers that are required to be even are. - Also, if any operands were marked as registers, but were really symbols, - fix that here. */ - for (i = 0; opcode->operands[i]; i++) - { - if ((d10v_operands[opcode->operands[i]].flags & OPERAND_EVEN) && - (myops[i].X_add_number & 1)) - as_fatal (_("Register number must be EVEN")); - if ((d10v_operands[opcode->operands[i]].flags & OPERAND_NOSP) - && (myops[i].X_add_number & OPERAND_SP)) - as_bad (_("Unsupported use of sp")); - if (myops[i].X_op == O_register) - { - if (!(d10v_operands[opcode->operands[i]].flags & OPERAND_REG)) - { - myops[i].X_op = O_symbol; - myops[i].X_add_symbol = - symbol_find_or_make ((char *) myops[i].X_op_symbol); - myops[i].X_add_number = 0; - myops[i].X_op_symbol = NULL; - } - } - if ((d10v_operands[opcode->operands[i]].flags & OPERAND_CONTROL) - && (myops[i].X_add_number == OPERAND_CONTROL + 4 - || myops[i].X_add_number == OPERAND_CONTROL + 5 - || myops[i].X_add_number == OPERAND_CONTROL + 6 - || myops[i].X_add_number == OPERAND_CONTROL + 12 - || myops[i].X_add_number == OPERAND_CONTROL + 13 - || myops[i].X_add_number == OPERAND_CONTROL + 15)) - as_warn (_("cr%ld is a reserved control register"), - myops[i].X_add_number - OPERAND_CONTROL); - } - return opcode; -} - -/* If while processing a fixup, a reloc really needs to be created. - Then it is done here. */ - -arelent * -tc_gen_reloc (seg, fixp) - asection *seg ATTRIBUTE_UNUSED; - fixS *fixp; -{ - arelent *reloc; - reloc = (arelent *) xmalloc (sizeof (arelent)); - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); - if (reloc->howto == (reloc_howto_type *) NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("reloc %d not supported by object file format"), - (int) fixp->fx_r_type); - return NULL; - } - - if (fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - reloc->address = fixp->fx_offset; - - reloc->addend = 0; - - return reloc; -} - -int -md_estimate_size_before_relax (fragp, seg) - fragS *fragp ATTRIBUTE_UNUSED; - asection *seg ATTRIBUTE_UNUSED; -{ - abort (); - return 0; -} - -long -md_pcrel_from_section (fixp, sec) - fixS *fixp; - segT sec; -{ - if (fixp->fx_addsy != (symbolS *) NULL - && (!S_IS_DEFINED (fixp->fx_addsy) - || (S_GET_SEGMENT (fixp->fx_addsy) != sec))) - return 0; - return fixp->fx_frag->fr_address + fixp->fx_where; -} - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT *valP; - segT seg ATTRIBUTE_UNUSED; -{ - char *where; - unsigned long insn; - long value = *valP; - int op_type; - int left = 0; - - if (fixP->fx_addsy == (symbolS *) NULL) - fixP->fx_done = 1; - - /* We don't actually support subtracting a symbol. */ - if (fixP->fx_subsy != (symbolS *) NULL) - as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); - - op_type = fixP->fx_r_type; - if (op_type & 2048) - { - op_type -= 2048; - if (op_type & 1024) - { - op_type -= 1024; - fixP->fx_r_type = BFD_RELOC_D10V_10_PCREL_L; - left = 1; - } - else if (op_type & 4096) - { - op_type -= 4096; - fixP->fx_r_type = BFD_RELOC_D10V_18; - } - else - fixP->fx_r_type = - get_reloc ((struct d10v_operand *) &d10v_operands[op_type]); - } - - /* Fetch the instruction, insert the fully resolved operand - value, and stuff the instruction back again. */ - where = fixP->fx_frag->fr_literal + fixP->fx_where; - insn = bfd_getb32 ((unsigned char *) where); - - switch (fixP->fx_r_type) - { - case BFD_RELOC_D10V_10_PCREL_L: - case BFD_RELOC_D10V_10_PCREL_R: - case BFD_RELOC_D10V_18_PCREL: - /* If the fix is relative to a global symbol, not a section - symbol, then ignore the offset. - XXX - Do we have to worry about branches to a symbol + offset ? */ - if (fixP->fx_addsy != NULL - && S_IS_EXTERN (fixP->fx_addsy) ) - { - segT fseg = S_GET_SEGMENT (fixP->fx_addsy); - segment_info_type *segf = seg_info(fseg); - - if ( segf && segf->sym != fixP->fx_addsy) - value = 0; - } - /* Drop through. */ - case BFD_RELOC_D10V_18: - /* Instruction addresses are always right-shifted by 2. */ - value >>= AT_WORD_RIGHT_SHIFT; - if (fixP->fx_size == 2) - bfd_putb16 ((bfd_vma) value, (unsigned char *) where); - else - { - struct d10v_opcode *rep, *repi; - - rep = (struct d10v_opcode *) hash_find (d10v_hash, "rep"); - repi = (struct d10v_opcode *) hash_find (d10v_hash, "repi"); - if ((insn & FM11) == FM11 - && ((repi != NULL - && (insn & repi->mask) == (unsigned) repi->opcode) - || (rep != NULL - && (insn & rep->mask) == (unsigned) rep->opcode)) - && value < 4) - as_fatal - (_("line %d: rep or repi must include at least 4 instructions"), - fixP->fx_line); - insn = - d10v_insert_operand (insn, op_type, (offsetT) value, left, fixP); - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - } - break; - case BFD_RELOC_32: - bfd_putb32 ((bfd_vma) value, (unsigned char *) where); - break; - case BFD_RELOC_16: - bfd_putb16 ((bfd_vma) value, (unsigned char *) where); - break; - - case BFD_RELOC_VTABLE_INHERIT: - case BFD_RELOC_VTABLE_ENTRY: - fixP->fx_done = 0; - return; - - default: - as_fatal (_("line %d: unknown relocation type: 0x%x"), - fixP->fx_line, fixP->fx_r_type); - } -} - -/* d10v_cleanup() is called after the assembler has finished parsing - the input file, when a label is read from the input file, or when a - stab directive is output. Because the D10V assembler sometimes - saves short instructions to see if it can package them with the - next instruction, there may be a short instruction that still needs - to be written. - - NOTE: accesses a global, etype. - NOTE: invoked by various macros such as md_cleanup: see. */ - -int -d10v_cleanup () -{ - segT seg; - subsegT subseg; - - /* If cleanup was invoked because the assembler encountered, e.g., a - user label, we write out the pending instruction, if any. If it - was invoked because the assembler is outputting a piece of line - debugging information, though, we write out the pending - instruction only if the --no-gstabs-packing command line switch - has been specified. */ - if (prev_opcode - && etype == PACK_UNSPEC - && (! outputting_stabs_line_debug || ! flag_allow_gstabs_packing)) - { - seg = now_seg; - subseg = now_subseg; - - if (prev_seg) - subseg_set (prev_seg, prev_subseg); - - write_1_short (prev_opcode, prev_insn, fixups->next); - subseg_set (seg, subseg); - prev_opcode = NULL; - } - return 1; -} - -/* Like normal .word, except support @word. - Clobbers input_line_pointer, checks end-of-line. */ - -static void -d10v_dot_word (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - expressionS exp; - char *p; - - if (is_it_end_of_statement ()) - { - demand_empty_rest_of_line (); - return; - } - - do - { - expression (&exp); - if (!strncasecmp (input_line_pointer, "@word", 5)) - { - exp.X_add_number = 0; - input_line_pointer += 5; - - p = frag_more (2); - fix_new_exp (frag_now, p - frag_now->fr_literal, 2, - &exp, 0, BFD_RELOC_D10V_18); - } - else - emit_expr (&exp, 2); - } - while (*input_line_pointer++ == ','); - - input_line_pointer--; /* Put terminator back into stream. */ - demand_empty_rest_of_line (); -} - -/* Mitsubishi asked that we support some old syntax that apparently - had immediate operands starting with '#'. This is in some of their - sample code but is not documented (although it appears in some - examples in their assembler manual). For now, we'll solve this - compatibility problem by simply ignoring any '#' at the beginning - of an operand. */ - -/* Operands that begin with '#' should fall through to here. - From expr.c. */ - -void -md_operand (expressionP) - expressionS *expressionP; -{ - if (*input_line_pointer == '#' && ! do_not_ignore_hash) - { - input_line_pointer++; - expression (expressionP); - } -} - -bfd_boolean -d10v_fix_adjustable (fixP) - fixS *fixP; -{ - /* We need the symbol name for the VTABLE entries. */ - if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT - || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - return 0; - - return 1; -} diff --git a/gas/config/tc-d10v.h b/gas/config/tc-d10v.h deleted file mode 100644 index debb799b9..000000000 --- a/gas/config/tc-d10v.h +++ /dev/null @@ -1,71 +0,0 @@ -/* tc-d10v.h -- Header file for tc-d10v.c. - Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - Written by Martin Hunt, Cygnus Support. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_D10V - -#define TARGET_BYTES_BIG_ENDIAN 0 - -#ifndef BFD_ASSEMBLER - #error D10V support requires BFD_ASSEMBLER -#endif - -/* The target BFD architecture. */ -#define TARGET_ARCH bfd_arch_d10v - -#define TARGET_FORMAT "elf32-d10v" - -/* Call md_pcrel_from_section, not md_pcrel_from. */ -#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section(FIX, SEC) -struct fix; -long md_pcrel_from_section PARAMS ((struct fix *, segT)); - -/* Permit temporary numeric labels. */ -#define LOCAL_LABELS_FB 1 - -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ - -/* We don't need to handle .word strangely. */ -#define WORKING_DOT_WORD - -#define md_number_to_chars number_to_chars_bigendian - -int d10v_cleanup PARAMS ((void)); -#define md_after_pass_hook() d10v_cleanup () -#define md_cleanup() d10v_cleanup () -#define md_do_align(a,b,c,d,e) d10v_cleanup () -#define tc_frob_label(sym) do {\ - d10v_cleanup (); \ - symbol_set_frag (sym, frag_now); \ - S_SET_VALUE (sym, (valueT) frag_now_fix ()); \ -} while (0) - -#define tc_fix_adjustable(FIX) d10v_fix_adjustable(FIX) -bfd_boolean d10v_fix_adjustable PARAMS ((struct fix *)); - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -/* No shared lib support, so we don't need to ensure externally - visible symbols can be overridden. */ -#define EXTERN_FORCE_RELOC 0 - -#define md_flush_pending_output d10v_cleanup diff --git a/gas/config/tc-d30v.c b/gas/config/tc-d30v.c deleted file mode 100644 index 7507c46cf..000000000 --- a/gas/config/tc-d30v.c +++ /dev/null @@ -1,2253 +0,0 @@ -/* tc-d30v.c -- Assembler code for the Mitsubishi D30V - Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "opcode/d30v.h" - -const char comment_chars[] = ";"; -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = ""; -const char *md_shortopts = "OnNcC"; -const char EXP_CHARS[] = "eE"; -const char FLT_CHARS[] = "dD"; - -#if HAVE_LIMITS_H -#include -#endif - -#ifndef CHAR_BIT -#define CHAR_BIT 8 -#endif - -#define NOP_MULTIPLY 1 -#define NOP_ALL 2 -static int warn_nops = 0; -static int Optimizing = 0; -static int warn_register_name_conflicts = 1; - -#define FORCE_SHORT 1 -#define FORCE_LONG 2 - -/* EXEC types. */ -typedef enum _exec_type -{ - EXEC_UNKNOWN, /* no order specified */ - EXEC_PARALLEL, /* done in parallel (FM=00) */ - EXEC_SEQ, /* sequential (FM=01) */ - EXEC_REVSEQ /* reverse sequential (FM=10) */ -} exec_type_enum; - -/* Fixups. */ -#define MAX_INSN_FIXUPS (5) -struct d30v_fixup -{ - expressionS exp; - int operand; - int pcrel; - int size; - bfd_reloc_code_real_type reloc; -}; - -typedef struct _fixups -{ - int fc; - struct d30v_fixup fix[MAX_INSN_FIXUPS]; - struct _fixups *next; -} Fixups; - -static Fixups FixUps[2]; -static Fixups *fixups; - -/* Whether current and previous instruction are word multiply insns. */ -static int cur_mul32_p = 0; -static int prev_mul32_p = 0; - -/* The flag_explicitly_parallel is true iff the instruction being assembled - has been explicitly written as a parallel short-instruction pair by the - human programmer. It is used in parallel_ok () to distinguish between - those dangerous parallelizations attempted by the human, which are to be - allowed, and those attempted by the assembler, which are not. It is set - from md_assemble (). */ -static int flag_explicitly_parallel = 0; -static int flag_xp_state = 0; - -/* Whether current and previous left sub-instruction disables - execution of right sub-instruction. */ -static int cur_left_kills_right_p = 0; -static int prev_left_kills_right_p = 0; - -/* The known current alignment of the current section. */ -static int d30v_current_align; -static segT d30v_current_align_seg; - -/* The last seen label in the current section. This is used to auto-align - labels preceding instructions. */ -static symbolS *d30v_last_label; - -/* Two nops. */ -#define NOP_LEFT ((long long) NOP << 32) -#define NOP_RIGHT ((long long) NOP) -#define NOP2 (FM00 | NOP_LEFT | NOP_RIGHT) - -/* Local functions. */ -static int reg_name_search PARAMS ((char *name)); -static int register_name PARAMS ((expressionS *expressionP)); -static int check_range PARAMS ((unsigned long num, int bits, int flags)); -static int postfix PARAMS ((char *p)); -static bfd_reloc_code_real_type get_reloc PARAMS ((struct d30v_operand *op, int rel_flag)); -static int get_operands PARAMS ((expressionS exp[], int cmp_hack)); -static struct d30v_format *find_format PARAMS ((struct d30v_opcode *opcode, - expressionS ops[],int fsize, int cmp_hack)); -static long long build_insn PARAMS ((struct d30v_insn *opcode, expressionS *opers)); -static void write_long PARAMS ((struct d30v_insn *opcode, long long insn, Fixups *fx)); -static void write_1_short PARAMS ((struct d30v_insn *opcode, long long insn, - Fixups *fx, int use_sequential)); -static int write_2_short PARAMS ((struct d30v_insn *opcode1, long long insn1, - struct d30v_insn *opcode2, long long insn2, exec_type_enum exec_type, Fixups *fx)); -static long long do_assemble PARAMS ((char *str, struct d30v_insn *opcode, - int shortp, int is_parallel)); -static int parallel_ok PARAMS ((struct d30v_insn *opcode1, unsigned long insn1, - struct d30v_insn *opcode2, unsigned long insn2, - exec_type_enum exec_type)); -static void d30v_number_to_chars PARAMS ((char *buf, long long value, int nbytes)); -static void check_size PARAMS ((long value, int bits, char *file, int line)); -static void d30v_align PARAMS ((int, char *, symbolS *)); -static void s_d30v_align PARAMS ((int)); -static void s_d30v_text PARAMS ((int)); -static void s_d30v_data PARAMS ((int)); -static void s_d30v_section PARAMS ((int)); - -struct option md_longopts[] = -{ - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -/* The target specific pseudo-ops which we support. */ -const pseudo_typeS md_pseudo_table[] = -{ - { "word", cons, 4 }, - { "hword", cons, 2 }, - { "align", s_d30v_align, 0 }, - { "text", s_d30v_text, 0 }, - { "data", s_d30v_data, 0 }, - { "section", s_d30v_section, 0 }, - { "section.s", s_d30v_section, 0 }, - { "sect", s_d30v_section, 0 }, - { "sect.s", s_d30v_section, 0 }, - { NULL, NULL, 0 } -}; - -/* Opcode hash table. */ -static struct hash_control *d30v_hash; - -/* Do a binary search of the pre_defined_registers array to see if - NAME is a valid regiter name. Return the register number from the - array on success, or -1 on failure. */ - -static int -reg_name_search (name) - char *name; -{ - int middle, low, high; - int cmp; - - low = 0; - high = reg_name_cnt () - 1; - - do - { - middle = (low + high) / 2; - cmp = strcasecmp (name, pre_defined_registers[middle].name); - if (cmp < 0) - high = middle - 1; - else if (cmp > 0) - low = middle + 1; - else - { - if (symbol_find (name) != NULL) - { - if (warn_register_name_conflicts) - as_warn (_("Register name %s conflicts with symbol of the same name"), - name); - } - - return pre_defined_registers[middle].value; - } - } - while (low <= high); - - return -1; -} - -/* Check the string at input_line_pointer to see if it is a valid - register name. */ - -static int -register_name (expressionP) - expressionS *expressionP; -{ - int reg_number; - char c, *p = input_line_pointer; - - while (*p && *p != '\n' && *p != '\r' && *p != ',' && *p != ' ' && *p != ')') - p++; - - c = *p; - if (c) - *p++ = 0; - - /* Look to see if it's in the register table. */ - reg_number = reg_name_search (input_line_pointer); - if (reg_number >= 0) - { - expressionP->X_op = O_register; - /* Temporarily store a pointer to the string here. */ - expressionP->X_op_symbol = (symbolS *) input_line_pointer; - expressionP->X_add_number = reg_number; - input_line_pointer = p; - return 1; - } - if (c) - *(p - 1) = c; - return 0; -} - -static int -check_range (num, bits, flags) - unsigned long num; - int bits; - int flags; -{ - long min, max; - - /* Don't bother checking 32-bit values. */ - if (bits == 32) - { - if (sizeof (unsigned long) * CHAR_BIT == 32) - return 0; - - /* We don't record signed or unsigned for 32-bit quantities. - Allow either. */ - min = -((unsigned long) 1 << (bits - 1)); - max = ((unsigned long) 1 << bits) - 1; - return (long) num < min || (long) num > max; - } - - if (flags & OPERAND_SHIFT) - { - /* We know that all shifts are right by three bits. */ - num >>= 3; - - if (flags & OPERAND_SIGNED) - { - unsigned long sign_bit = ((unsigned long) -1L >> 4) + 1; - num = (num ^ sign_bit) - sign_bit; - } - } - - if (flags & OPERAND_SIGNED) - { - max = ((unsigned long) 1 << (bits - 1)) - 1; - min = - ((unsigned long) 1 << (bits - 1)); - return (long) num > max || (long) num < min; - } - else - { - max = ((unsigned long) 1 << bits) - 1; - return num > (unsigned long) max; - } -} - -void -md_show_usage (stream) - FILE *stream; -{ - fprintf (stream, _("\nD30V options:\n\ --O Make adjacent short instructions parallel if possible.\n\ --n Warn about all NOPs inserted by the assembler.\n\ --N Warn about NOPs inserted after word multiplies.\n\ --c Warn about symbols whoes names match register names.\n\ --C Opposite of -C. -c is the default.\n")); -} - -int -md_parse_option (c, arg) - int c; - char *arg ATTRIBUTE_UNUSED; -{ - switch (c) - { - /* Optimize. Will attempt to parallelize operations. */ - case 'O': - Optimizing = 1; - break; - - /* Warn about all NOPS that the assembler inserts. */ - case 'n': - warn_nops = NOP_ALL; - break; - - /* Warn about the NOPS that the assembler inserts because of the - multiply hazard. */ - case 'N': - warn_nops = NOP_MULTIPLY; - break; - - case 'c': - warn_register_name_conflicts = 1; - break; - - case 'C': - warn_register_name_conflicts = 0; - break; - - default: - return 0; - } - return 1; -} - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (type, litP, sizeP) - int type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[4]; - char *t; - int i; - - switch (type) - { - case 'f': - prec = 2; - break; - case 'd': - prec = 4; - break; - default: - *sizeP = 0; - return _("bad call to md_atof"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * 2; - - for (i = 0; i < prec; i++) - { - md_number_to_chars (litP, (valueT) words[i], 2); - litP += 2; - } - return NULL; -} - -void -md_convert_frag (abfd, sec, fragP) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - fragS *fragP ATTRIBUTE_UNUSED; -{ - abort (); -} - -valueT -md_section_align (seg, addr) - asection *seg; - valueT addr; -{ - int align = bfd_get_section_alignment (stdoutput, seg); - return ((addr + (1 << align) - 1) & (-1 << align)); -} - -void -md_begin () -{ - struct d30v_opcode *opcode; - d30v_hash = hash_new (); - - /* Insert opcode names into a hash table. */ - for (opcode = (struct d30v_opcode *) d30v_opcode_table; opcode->name; opcode++) - hash_insert (d30v_hash, opcode->name, (char *) opcode); - - fixups = &FixUps[0]; - FixUps[0].next = &FixUps[1]; - FixUps[1].next = &FixUps[0]; - - d30v_current_align_seg = now_seg; -} - -/* Remove the postincrement or postdecrement operator ( '+' or '-' ) - from an expression. */ - -static int -postfix (p) - char *p; -{ - while (*p != '-' && *p != '+') - { - if (*p == 0 || *p == '\n' || *p == '\r' || *p == ' ' || *p == ',') - break; - p++; - } - - if (*p == '-') - { - *p = ' '; - return -1; - } - - if (*p == '+') - { - *p = ' '; - return 1; - } - - return 0; -} - -static bfd_reloc_code_real_type -get_reloc (op, rel_flag) - struct d30v_operand *op; - int rel_flag; -{ - switch (op->bits) - { - case 6: - if (op->flags & OPERAND_SHIFT) - return BFD_RELOC_D30V_9_PCREL; - else - return BFD_RELOC_D30V_6; - break; - case 12: - if (!(op->flags & OPERAND_SHIFT)) - as_warn (_("unexpected 12-bit reloc type")); - if (rel_flag == RELOC_PCREL) - return BFD_RELOC_D30V_15_PCREL; - else - return BFD_RELOC_D30V_15; - case 18: - if (!(op->flags & OPERAND_SHIFT)) - as_warn (_("unexpected 18-bit reloc type")); - if (rel_flag == RELOC_PCREL) - return BFD_RELOC_D30V_21_PCREL; - else - return BFD_RELOC_D30V_21; - case 32: - if (rel_flag == RELOC_PCREL) - return BFD_RELOC_D30V_32_PCREL; - else - return BFD_RELOC_D30V_32; - default: - return 0; - } -} - -/* Parse a string of operands and return an array of expressions. */ - -static int -get_operands (exp, cmp_hack) - expressionS exp[]; - int cmp_hack; -{ - char *p = input_line_pointer; - int numops = 0; - int post = 0; - - if (cmp_hack) - { - exp[numops].X_op = O_absent; - exp[numops++].X_add_number = cmp_hack - 1; - } - - while (*p) - { - while (*p == ' ' || *p == '\t' || *p == ',') - p++; - - if (*p == 0 || *p == '\n' || *p == '\r') - break; - - if (*p == '@') - { - p++; - exp[numops].X_op = O_absent; - if (*p == '(') - { - p++; - exp[numops].X_add_number = OPERAND_ATPAR; - post = postfix (p); - } - else if (*p == '-') - { - p++; - exp[numops].X_add_number = OPERAND_ATMINUS; - } - else - { - exp[numops].X_add_number = OPERAND_ATSIGN; - post = postfix (p); - } - numops++; - continue; - } - - if (*p == ')') - { - /* Just skip the trailing paren. */ - p++; - continue; - } - - input_line_pointer = p; - - /* Check to see if it might be a register name. */ - if (!register_name (&exp[numops])) - { - /* Parse as an expression. */ - expression (&exp[numops]); - } - - if (exp[numops].X_op == O_illegal) - as_bad (_("illegal operand")); - else if (exp[numops].X_op == O_absent) - as_bad (_("missing operand")); - - numops++; - p = input_line_pointer; - - switch (post) - { - case -1: - /* Postdecrement mode. */ - exp[numops].X_op = O_absent; - exp[numops++].X_add_number = OPERAND_MINUS; - break; - case 1: - /* Postincrement mode. */ - exp[numops].X_op = O_absent; - exp[numops++].X_add_number = OPERAND_PLUS; - break; - } - post = 0; - } - - exp[numops].X_op = 0; - - return numops; -} - -/* Generate the instruction. - It does everything but write the FM bits. */ - -static long long -build_insn (opcode, opers) - struct d30v_insn *opcode; - expressionS *opers; -{ - int i, length, bits, shift, flags; - unsigned long number, id = 0; - long long insn; - struct d30v_opcode *op = opcode->op; - struct d30v_format *form = opcode->form; - - insn = - opcode->ecc << 28 | op->op1 << 25 | op->op2 << 20 | form->modifier << 18; - - for (i = 0; form->operands[i]; i++) - { - flags = d30v_operand_table[form->operands[i]].flags; - - /* Must be a register or number. */ - if (!(flags & OPERAND_REG) && !(flags & OPERAND_NUM) - && !(flags & OPERAND_NAME) && !(flags & OPERAND_SPECIAL)) - continue; - - bits = d30v_operand_table[form->operands[i]].bits; - if (flags & OPERAND_SHIFT) - bits += 3; - - length = d30v_operand_table[form->operands[i]].length; - shift = 12 - d30v_operand_table[form->operands[i]].position; - if (opers[i].X_op != O_symbol) - number = opers[i].X_add_number; - else - number = 0; - if (flags & OPERAND_REG) - { - /* Check for mvfsys or mvtsys control registers. */ - if (flags & OPERAND_CONTROL && (number & 0x7f) > MAX_CONTROL_REG) - { - /* PSWL or PSWH. */ - id = (number & 0x7f) - MAX_CONTROL_REG; - number = 0; - } - else if (number & OPERAND_FLAG) - { - /* NUMBER is a flag register. */ - id = 3; - } - number &= 0x7F; - } - else if (flags & OPERAND_SPECIAL) - { - number = id; - } - - if (opers[i].X_op != O_register && opers[i].X_op != O_constant - && !(flags & OPERAND_NAME)) - { - /* Now create a fixup. */ - if (fixups->fc >= MAX_INSN_FIXUPS) - as_fatal (_("too many fixups")); - - fixups->fix[fixups->fc].reloc = - get_reloc ((struct d30v_operand *) &d30v_operand_table[form->operands[i]], op->reloc_flag); - fixups->fix[fixups->fc].size = 4; - fixups->fix[fixups->fc].exp = opers[i]; - fixups->fix[fixups->fc].operand = form->operands[i]; - if (fixups->fix[fixups->fc].reloc == BFD_RELOC_D30V_9_PCREL) - fixups->fix[fixups->fc].pcrel = RELOC_PCREL; - else - fixups->fix[fixups->fc].pcrel = op->reloc_flag; - (fixups->fc)++; - } - - /* Truncate to the proper number of bits. */ - if ((opers[i].X_op == O_constant) && check_range (number, bits, flags)) - as_bad (_("operand out of range: %ld"), number); - if (bits < 31) - number &= 0x7FFFFFFF >> (31 - bits); - if (flags & OPERAND_SHIFT) - number >>= 3; - if (bits == 32) - { - /* It's a LONG instruction. */ - insn |= ((number & 0xffffffff) >> 26); /* top 6 bits */ - insn <<= 32; /* shift the first word over */ - insn |= ((number & 0x03FC0000) << 2); /* next 8 bits */ - insn |= number & 0x0003FFFF; /* bottom 18 bits */ - } - else - insn |= number << shift; - } - - return insn; -} - -/* Write out a long form instruction. */ - -static void -write_long (opcode, insn, fx) - struct d30v_insn *opcode ATTRIBUTE_UNUSED; - long long insn; - Fixups *fx; -{ - int i, where; - char *f = frag_more (8); - - insn |= FM11; - d30v_number_to_chars (f, insn, 8); - - for (i = 0; i < fx->fc; i++) - { - if (fx->fix[i].reloc) - { - where = f - frag_now->fr_literal; - fix_new_exp (frag_now, - where, - fx->fix[i].size, - &(fx->fix[i].exp), - fx->fix[i].pcrel, - fx->fix[i].reloc); - } - } - - fx->fc = 0; -} - -/* Write out a short form instruction by itself. */ - -static void -write_1_short (opcode, insn, fx, use_sequential) - struct d30v_insn *opcode; - long long insn; - Fixups *fx; - int use_sequential; -{ - char *f = frag_more (8); - int i, where; - - if (warn_nops == NOP_ALL) - as_warn (_("%s NOP inserted"), use_sequential ? - _("sequential") : _("parallel")); - - /* The other container needs to be NOP. */ - if (use_sequential) - { - /* Use a sequential NOP rather than a parallel one, - as the current instruction is a FLAG_MUL32 type one - and the next instruction is a load. */ - - /* According to 4.3.1: for FM=01, sub-instructions performed - only by IU cannot be encoded in L-container. */ - - if (opcode->op->unit == IU) - /* Right then left. */ - insn |= FM10 | NOP_LEFT; - else - /* Left then right. */ - insn = FM01 | (insn << 32) | NOP_RIGHT; - } - else - { - /* According to 4.3.1: for FM=00, sub-instructions performed - only by IU cannot be encoded in L-container. */ - - if (opcode->op->unit == IU) - /* Right container. */ - insn |= FM00 | NOP_LEFT; - else - /* Left container. */ - insn = FM00 | (insn << 32) | NOP_RIGHT; - } - - d30v_number_to_chars (f, insn, 8); - - for (i = 0; i < fx->fc; i++) - { - if (fx->fix[i].reloc) - { - where = f - frag_now->fr_literal; - fix_new_exp (frag_now, - where, - fx->fix[i].size, - &(fx->fix[i].exp), - fx->fix[i].pcrel, - fx->fix[i].reloc); - } - } - - fx->fc = 0; -} - -/* Write out a short form instruction if possible. - Return number of instructions not written out. */ - -static int -write_2_short (opcode1, insn1, opcode2, insn2, exec_type, fx) - struct d30v_insn *opcode1, *opcode2; - long long insn1, insn2; - exec_type_enum exec_type; - Fixups *fx; -{ - long long insn = NOP2; - char *f; - int i, j, where; - - if (exec_type == EXEC_SEQ - && (opcode1->op->flags_used & (FLAG_JMP | FLAG_JSR)) - && ((opcode1->op->flags_used & FLAG_DELAY) == 0) - && ((opcode1->ecc == ECC_AL) || ! Optimizing)) - { - /* Unconditional, non-delayed branches kill instructions in - the right bin. Conditional branches don't always but if - we are not optimizing, then we have been asked to produce - an error about such constructs. For the purposes of this - test, subroutine calls are considered to be branches. */ - write_1_short (opcode1, insn1, fx->next, FALSE); - return 1; - } - - /* Note: we do not have to worry about subroutine calls occurring - in the right hand container. The return address is always - aligned to the next 64 bit boundary, be that 64 or 32 bit away. */ - switch (exec_type) - { - case EXEC_UNKNOWN: /* Order not specified. */ - if (Optimizing - && parallel_ok (opcode1, insn1, opcode2, insn2, exec_type) - && ! ( (opcode1->op->unit == EITHER_BUT_PREFER_MU - || opcode1->op->unit == MU) - && - ( opcode2->op->unit == EITHER_BUT_PREFER_MU - || opcode2->op->unit == MU))) - { - /* Parallel. */ - exec_type = EXEC_PARALLEL; - - if (opcode1->op->unit == IU - || opcode2->op->unit == MU - || opcode2->op->unit == EITHER_BUT_PREFER_MU) - insn = FM00 | (insn2 << 32) | insn1; - else - { - insn = FM00 | (insn1 << 32) | insn2; - fx = fx->next; - } - } - else if ((opcode1->op->flags_used & (FLAG_JMP | FLAG_JSR) - && ((opcode1->op->flags_used & FLAG_DELAY) == 0)) - || opcode1->op->flags_used & FLAG_RP) - { - /* We must emit (non-delayed) branch type instructions - on their own with nothing in the right container. */ - /* We must treat repeat instructions likewise, since the - following instruction has to be separate from the repeat - in order to be repeated. */ - write_1_short (opcode1, insn1, fx->next, FALSE); - return 1; - } - else if (prev_left_kills_right_p) - { - /* The left instruction kils the right slot, so we - must leave it empty. */ - write_1_short (opcode1, insn1, fx->next, FALSE); - return 1; - } - else if (opcode1->op->unit == IU) - { - if (opcode2->op->unit == EITHER_BUT_PREFER_MU) - { - /* Case 103810 is a request from Mitsubishi that opcodes - with EITHER_BUT_PREFER_MU should not be executed in - reverse sequential order. */ - write_1_short (opcode1, insn1, fx->next, FALSE); - return 1; - } - - /* Reverse sequential. */ - insn = FM10 | (insn2 << 32) | insn1; - exec_type = EXEC_REVSEQ; - } - else - { - /* Sequential. */ - insn = FM01 | (insn1 << 32) | insn2; - fx = fx->next; - exec_type = EXEC_SEQ; - } - break; - - case EXEC_PARALLEL: /* Parallel. */ - flag_explicitly_parallel = flag_xp_state; - if (! parallel_ok (opcode1, insn1, opcode2, insn2, exec_type)) - as_bad (_("Instructions may not be executed in parallel")); - else if (opcode1->op->unit == IU) - { - if (opcode2->op->unit == IU) - as_bad (_("Two IU instructions may not be executed in parallel")); - as_warn (_("Swapping instruction order")); - insn = FM00 | (insn2 << 32) | insn1; - } - else if (opcode2->op->unit == MU) - { - if (opcode1->op->unit == MU) - as_bad (_("Two MU instructions may not be executed in parallel")); - else if (opcode1->op->unit == EITHER_BUT_PREFER_MU) - as_warn (_("Executing %s in IU may not work"), opcode1->op->name); - as_warn (_("Swapping instruction order")); - insn = FM00 | (insn2 << 32) | insn1; - } - else - { - if (opcode2->op->unit == EITHER_BUT_PREFER_MU) - as_warn (_("Executing %s in IU may not work in parallel execution"), - opcode2->op->name); - - insn = FM00 | (insn1 << 32) | insn2; - fx = fx->next; - } - flag_explicitly_parallel = 0; - break; - - case EXEC_SEQ: /* Sequential. */ - if (opcode1->op->unit == IU) - as_bad (_("IU instruction may not be in the left container")); - if (prev_left_kills_right_p) - as_bad (_("special left instruction `%s' kills instruction " - "`%s' in right container"), - opcode1->op->name, opcode2->op->name); - insn = FM01 | (insn1 << 32) | insn2; - fx = fx->next; - break; - - case EXEC_REVSEQ: /* Reverse sequential. */ - if (opcode2->op->unit == MU) - as_bad (_("MU instruction may not be in the right container")); - if (opcode1->op->unit == EITHER_BUT_PREFER_MU) - as_warn (_("Executing %s in reverse serial with %s may not work"), - opcode1->op->name, opcode2->op->name); - else if (opcode2->op->unit == EITHER_BUT_PREFER_MU) - as_warn (_("Executing %s in IU in reverse serial may not work"), - opcode2->op->name); - insn = FM10 | (insn1 << 32) | insn2; - fx = fx->next; - break; - - default: - as_fatal (_("unknown execution type passed to write_2_short()")); - } - -#if 0 - printf ("writing out %llx\n", insn); -#endif - f = frag_more (8); - d30v_number_to_chars (f, insn, 8); - - /* If the previous instruction was a 32-bit multiply but it is put into a - parallel container, mark the current instruction as being a 32-bit - multiply. */ - if (prev_mul32_p && exec_type == EXEC_PARALLEL) - cur_mul32_p = 1; - - for (j = 0; j < 2; j++) - { - for (i = 0; i < fx->fc; i++) - { - if (fx->fix[i].reloc) - { - where = (f - frag_now->fr_literal) + 4 * j; - - fix_new_exp (frag_now, - where, - fx->fix[i].size, - &(fx->fix[i].exp), - fx->fix[i].pcrel, - fx->fix[i].reloc); - } - } - - fx->fc = 0; - fx = fx->next; - } - - return 0; -} - -/* Check 2 instructions and determine if they can be safely - executed in parallel. Return 1 if they can be. */ - -static int -parallel_ok (op1, insn1, op2, insn2, exec_type) - struct d30v_insn *op1, *op2; - unsigned long insn1, insn2; - exec_type_enum exec_type; -{ - int i, j, shift, regno, bits, ecc; - unsigned long flags, mask, flags_set1, flags_set2, flags_used1, flags_used2; - unsigned long ins, mod_reg[2][3], used_reg[2][3], flag_reg[2]; - struct d30v_format *f; - struct d30v_opcode *op; - - /* Section 4.3: Both instructions must not be IU or MU only. */ - if ((op1->op->unit == IU && op2->op->unit == IU) - || (op1->op->unit == MU && op2->op->unit == MU)) - return 0; - - /* First instruction must not be a jump to safely optimize, unless this - is an explicit parallel operation. */ - if (exec_type != EXEC_PARALLEL - && (op1->op->flags_used & (FLAG_JMP | FLAG_JSR))) - return 0; - - /* If one instruction is /TX or /XT and the other is /FX or /XF respectively, - then it is safe to allow the two to be done as parallel ops, since only - one will ever be executed at a time. */ - if ((op1->ecc == ECC_TX && op2->ecc == ECC_FX) - || (op1->ecc == ECC_FX && op2->ecc == ECC_TX) - || (op1->ecc == ECC_XT && op2->ecc == ECC_XF) - || (op1->ecc == ECC_XF && op2->ecc == ECC_XT)) - return 1; - - /* [0] r0-r31 - [1] r32-r63 - [2] a0, a1, flag registers. */ - for (j = 0; j < 2; j++) - { - if (j == 0) - { - f = op1->form; - op = op1->op; - ecc = op1->ecc; - ins = insn1; - } - else - { - f = op2->form; - op = op2->op; - ecc = op2->ecc; - ins = insn2; - } - - flag_reg[j] = 0; - mod_reg[j][0] = mod_reg[j][1] = 0; - used_reg[j][0] = used_reg[j][1] = 0; - - if (flag_explicitly_parallel) - { - /* For human specified parallel instructions we have been asked - to ignore the possibility that both instructions could modify - bits in the PSW, so we initialise the mod & used arrays to 0. - We have been asked, however, to refuse to allow parallel - instructions which explicitly set the same flag register, - eg "cmpne f0,r1,0x10 || cmpeq f0, r5, 0x2", so further on we test - for the use of a flag register and set a bit in the mod or used - array appropriately. */ - mod_reg[j][2] = 0; - used_reg[j][2] = 0; - } - else - { - mod_reg[j][2] = (op->flags_set & FLAG_ALL); - used_reg[j][2] = (op->flags_used & FLAG_ALL); - } - - /* BSR/JSR always sets R62. */ - if (op->flags_used & FLAG_JSR) - mod_reg[j][1] = (1L << (62 - 32)); - - /* Conditional execution affects the flags_used. */ - switch (ecc) - { - case ECC_TX: - case ECC_FX: - used_reg[j][2] |= flag_reg[j] = FLAG_0; - break; - - case ECC_XT: - case ECC_XF: - used_reg[j][2] |= flag_reg[j] = FLAG_1; - break; - - case ECC_TT: - case ECC_TF: - used_reg[j][2] |= flag_reg[j] = (FLAG_0 | FLAG_1); - break; - } - - for (i = 0; f->operands[i]; i++) - { - flags = d30v_operand_table[f->operands[i]].flags; - shift = 12 - d30v_operand_table[f->operands[i]].position; - bits = d30v_operand_table[f->operands[i]].bits; - if (bits == 32) - mask = 0xffffffff; - else - mask = 0x7FFFFFFF >> (31 - bits); - - if ((flags & OPERAND_PLUS) || (flags & OPERAND_MINUS)) - { - /* This is a post-increment or post-decrement. - The previous register needs to be marked as modified. */ - shift = 12 - d30v_operand_table[f->operands[i - 1]].position; - regno = (ins >> shift) & 0x3f; - if (regno >= 32) - mod_reg[j][1] |= 1L << (regno - 32); - else - mod_reg[j][0] |= 1L << regno; - } - else if (flags & OPERAND_REG) - { - regno = (ins >> shift) & mask; - /* The memory write functions don't have a destination - register. */ - if ((flags & OPERAND_DEST) && !(op->flags_set & FLAG_MEM)) - { - /* MODIFIED registers and flags. */ - if (flags & OPERAND_ACC) - { - if (regno == 0) - mod_reg[j][2] |= FLAG_A0; - else if (regno == 1) - mod_reg[j][2] |= FLAG_A1; - else - abort (); - } - else if (flags & OPERAND_FLAG) - mod_reg[j][2] |= 1L << regno; - else if (!(flags & OPERAND_CONTROL)) - { - int r, z; - - /* Need to check if there are two destination - registers, for example ld2w. */ - if (flags & OPERAND_2REG) - z = 1; - else - z = 0; - - for (r = regno; r <= regno + z; r++) - { - if (r >= 32) - mod_reg[j][1] |= 1L << (r - 32); - else - mod_reg[j][0] |= 1L << r; - } - } - } - else - { - /* USED, but not modified registers and flags. */ - if (flags & OPERAND_ACC) - { - if (regno == 0) - used_reg[j][2] |= FLAG_A0; - else if (regno == 1) - used_reg[j][2] |= FLAG_A1; - else - abort (); - } - else if (flags & OPERAND_FLAG) - used_reg[j][2] |= 1L << regno; - else if (!(flags & OPERAND_CONTROL)) - { - int r, z; - - /* Need to check if there are two source - registers, for example st2w. */ - if (flags & OPERAND_2REG) - z = 1; - else - z = 0; - - for (r = regno; r <= regno + z; r++) - { - if (r >= 32) - used_reg[j][1] |= 1L << (r - 32); - else - used_reg[j][0] |= 1L << r; - } - } - } - } - } - } - - flags_set1 = op1->op->flags_set; - flags_set2 = op2->op->flags_set; - flags_used1 = op1->op->flags_used; - flags_used2 = op2->op->flags_used; - - /* Check for illegal combinations with ADDppp/SUBppp. */ - if (((flags_set1 & FLAG_NOT_WITH_ADDSUBppp) != 0 - && (flags_used2 & FLAG_ADDSUBppp) != 0) - || ((flags_set2 & FLAG_NOT_WITH_ADDSUBppp) != 0 - && (flags_used1 & FLAG_ADDSUBppp) != 0)) - return 0; - - /* Load instruction combined with half-word multiply is illegal. */ - if (((flags_used1 & FLAG_MEM) != 0 && (flags_used2 & FLAG_MUL16)) - || ((flags_used2 & FLAG_MEM) != 0 && (flags_used1 & FLAG_MUL16))) - return 0; - - /* Specifically allow add || add by removing carry, overflow bits dependency. - This is safe, even if an addc follows since the IU takes the argument in - the right container, and it writes its results last. - However, don't paralellize add followed by addc or sub followed by - subb. */ - if (mod_reg[0][2] == FLAG_CVVA && mod_reg[1][2] == FLAG_CVVA - && (used_reg[0][2] & ~flag_reg[0]) == 0 - && (used_reg[1][2] & ~flag_reg[1]) == 0 - && op1->op->unit == EITHER && op2->op->unit == EITHER) - { - mod_reg[0][2] = mod_reg[1][2] = 0; - } - - for (j = 0; j < 3; j++) - { - /* If the second instruction depends on the first, we obviously - cannot parallelize. Note, the mod flag implies use, so - check that as well. */ - /* If flag_explicitly_parallel is set, then the case of the - second instruction using a register the first instruction - modifies is assumed to be okay; we trust the human. We - don't trust the human if both instructions modify the same - register but we do trust the human if they modify the same - flags. */ - /* We have now been requested not to trust the human if the - instructions modify the same flag registers either. */ - if (flag_explicitly_parallel) - { - if ((mod_reg[0][j] & mod_reg[1][j]) != 0) - return 0; - } - else - if ((mod_reg[0][j] & (mod_reg[1][j] | used_reg[1][j])) != 0) - return 0; - } - - return 1; -} - -/* This is the main entry point for the machine-dependent assembler. - STR points to a machine-dependent instruction. This function is - supposed to emit the frags/bytes it assembles to. For the D30V, it - mostly handles the special VLIW parsing and packing and leaves the - difficult stuff to do_assemble (). */ - -static long long prev_insn = -1; -static struct d30v_insn prev_opcode; -static subsegT prev_subseg; -static segT prev_seg = 0; - -void -md_assemble (str) - char *str; -{ - struct d30v_insn opcode; - long long insn; - /* Execution type; parallel, etc. */ - exec_type_enum extype = EXEC_UNKNOWN; - /* Saved extype. Used for multiline instructions. */ - static exec_type_enum etype = EXEC_UNKNOWN; - char *str2; - - if ((prev_insn != -1) && prev_seg - && ((prev_seg != now_seg) || (prev_subseg != now_subseg))) - d30v_cleanup (FALSE); - - if (d30v_current_align < 3) - d30v_align (3, NULL, d30v_last_label); - else if (d30v_current_align > 3) - d30v_current_align = 3; - d30v_last_label = NULL; - - flag_explicitly_parallel = 0; - flag_xp_state = 0; - if (etype == EXEC_UNKNOWN) - { - /* Look for the special multiple instruction separators. */ - str2 = strstr (str, "||"); - if (str2) - { - extype = EXEC_PARALLEL; - flag_xp_state = 1; - } - else - { - str2 = strstr (str, "->"); - if (str2) - extype = EXEC_SEQ; - else - { - str2 = strstr (str, "<-"); - if (str2) - extype = EXEC_REVSEQ; - } - } - - /* STR2 points to the separator, if one. */ - if (str2) - { - *str2 = 0; - - /* If two instructions are present and we already have one saved, - then first write it out. */ - d30v_cleanup (FALSE); - - /* Assemble first instruction and save it. */ - prev_insn = do_assemble (str, &prev_opcode, 1, 0); - if (prev_insn == -1) - as_bad (_("Cannot assemble instruction")); - if (prev_opcode.form != NULL && prev_opcode.form->form >= LONG) - as_bad (_("First opcode is long. Unable to mix instructions as specified.")); - fixups = fixups->next; - str = str2 + 2; - prev_seg = now_seg; - prev_subseg = now_subseg; - } - } - - insn = do_assemble (str, &opcode, - (extype != EXEC_UNKNOWN || etype != EXEC_UNKNOWN), - extype == EXEC_PARALLEL); - if (insn == -1) - { - if (extype != EXEC_UNKNOWN) - etype = extype; - as_bad (_("Cannot assemble instruction")); - return; - } - - if (etype != EXEC_UNKNOWN) - { - extype = etype; - etype = EXEC_UNKNOWN; - } - - /* Word multiply instructions must not be followed by either a load or a - 16-bit multiply instruction in the next cycle. */ - if ( (extype != EXEC_REVSEQ) - && prev_mul32_p - && (opcode.op->flags_used & (FLAG_MEM | FLAG_MUL16))) - { - /* However, load and multiply should able to be combined in a parallel - operation, so check for that first. */ - if (prev_insn != -1 - && (opcode.op->flags_used & FLAG_MEM) - && opcode.form->form < LONG - && (extype == EXEC_PARALLEL || (Optimizing && extype == EXEC_UNKNOWN)) - && parallel_ok (&prev_opcode, (long) prev_insn, - &opcode, (long) insn, extype) - && write_2_short (&prev_opcode, (long) prev_insn, - &opcode, (long) insn, extype, fixups) == 0) - { - /* No instructions saved. */ - prev_insn = -1; - return; - } - else - { - /* Can't parallelize, flush previous instruction and emit a - word of NOPS, unless the previous instruction is a NOP, - in which case just flush it, as this will generate a word - of NOPs for us. */ - - if (prev_insn != -1 && (strcmp (prev_opcode.op->name, "nop") == 0)) - d30v_cleanup (FALSE); - else - { - char *f; - - if (prev_insn != -1) - d30v_cleanup (TRUE); - else - { - f = frag_more (8); - d30v_number_to_chars (f, NOP2, 8); - - if (warn_nops == NOP_ALL || warn_nops == NOP_MULTIPLY) - { - if (opcode.op->flags_used & FLAG_MEM) - as_warn (_("word of NOPs added between word multiply and load")); - else - as_warn (_("word of NOPs added between word multiply and 16-bit multiply")); - } - } - } - - extype = EXEC_UNKNOWN; - } - } - else if ( (extype == EXEC_REVSEQ) - && cur_mul32_p - && (prev_opcode.op->flags_used & (FLAG_MEM | FLAG_MUL16))) - { - /* Can't parallelize, flush current instruction and add a - sequential NOP. */ - write_1_short (&opcode, (long) insn, fixups->next->next, TRUE); - - /* Make the previous instruction the current one. */ - extype = EXEC_UNKNOWN; - insn = prev_insn; - now_seg = prev_seg; - now_subseg = prev_subseg; - prev_insn = -1; - cur_mul32_p = prev_mul32_p; - prev_mul32_p = 0; - memcpy (&opcode, &prev_opcode, sizeof (prev_opcode)); - } - - /* If this is a long instruction, write it and any previous short - instruction. */ - if (opcode.form->form >= LONG) - { - if (extype != EXEC_UNKNOWN) - as_bad (_("Instruction uses long version, so it cannot be mixed as specified")); - d30v_cleanup (FALSE); - write_long (&opcode, insn, fixups); - prev_insn = -1; - } - else if ((prev_insn != -1) - && (write_2_short - (&prev_opcode, (long) prev_insn, &opcode, - (long) insn, extype, fixups) == 0)) - { - /* No instructions saved. */ - prev_insn = -1; - } - else - { - if (extype != EXEC_UNKNOWN) - as_bad (_("Unable to mix instructions as specified")); - - /* Save off last instruction so it may be packed on next pass. */ - memcpy (&prev_opcode, &opcode, sizeof (prev_opcode)); - prev_insn = insn; - prev_seg = now_seg; - prev_subseg = now_subseg; - fixups = fixups->next; - prev_mul32_p = cur_mul32_p; - } -} - -/* Assemble a single instruction and return an opcode. - Return -1 (an invalid opcode) on error. */ - -#define NAME_BUF_LEN 20 - -static long long -do_assemble (str, opcode, shortp, is_parallel) - char *str; - struct d30v_insn *opcode; - int shortp; - int is_parallel; -{ - unsigned char *op_start; - unsigned char *save; - unsigned char *op_end; - char name[NAME_BUF_LEN]; - int cmp_hack; - int nlen = 0; - int fsize = (shortp ? FORCE_SHORT : 0); - expressionS myops[6]; - long long insn; - - /* Drop leading whitespace. */ - while (*str == ' ') - str++; - - /* Find the opcode end. */ - for (op_start = op_end = (unsigned char *) (str); - *op_end - && nlen < (NAME_BUF_LEN - 1) - && *op_end != '/' - && !is_end_of_line[*op_end] && *op_end != ' '; - op_end++) - { - name[nlen] = TOLOWER (op_start[nlen]); - nlen++; - } - - if (nlen == 0) - return -1; - - name[nlen] = 0; - - /* If there is an execution condition code, handle it. */ - if (*op_end == '/') - { - int i = 0; - while ((i < ECC_MAX) && strncasecmp (d30v_ecc_names[i], op_end + 1, 2)) - i++; - - if (i == ECC_MAX) - { - char tmp[4]; - strncpy (tmp, op_end + 1, 2); - tmp[2] = 0; - as_bad (_("unknown condition code: %s"), tmp); - return -1; - } -#if 0 - printf ("condition code=%d\n", i); -#endif - opcode->ecc = i; - op_end += 3; - } - else - opcode->ecc = ECC_AL; - - /* CMP and CMPU change their name based on condition codes. */ - if (!strncmp (name, "cmp", 3)) - { - int p, i; - char **str = (char **) d30v_cc_names; - if (name[3] == 'u') - p = 4; - else - p = 3; - - for (i = 1; *str && strncmp (*str, &name[p], 2); i++, str++) - ; - - /* cmpu only supports some condition codes. */ - if (p == 4) - { - if (i < 3 || i > 6) - { - name[p + 2] = 0; - as_bad (_("cmpu doesn't support condition code %s"), &name[p]); - } - } - - if (!*str) - { - name[p + 2] = 0; - as_bad (_("unknown condition code: %s"), &name[p]); - } - - cmp_hack = i; - name[p] = 0; - } - else - cmp_hack = 0; - -#if 0 - printf ("cmp_hack=%d\n", cmp_hack); -#endif - - /* Need to look for .s or .l. */ - if (name[nlen - 2] == '.') - { - switch (name[nlen - 1]) - { - case 's': - fsize = FORCE_SHORT; - break; - case 'l': - fsize = FORCE_LONG; - break; - } - name[nlen - 2] = 0; - } - - /* Find the first opcode with the proper name. */ - opcode->op = (struct d30v_opcode *) hash_find (d30v_hash, name); - if (opcode->op == NULL) - { - as_bad (_("unknown opcode: %s"), name); - return -1; - } - - save = input_line_pointer; - input_line_pointer = op_end; - while (!(opcode->form = find_format (opcode->op, myops, fsize, cmp_hack))) - { - opcode->op++; - if (opcode->op->name == NULL || strcmp (opcode->op->name, name)) - { - as_bad (_("operands for opcode `%s' do not match any valid format"), - name); - return -1; - } - } - input_line_pointer = save; - - insn = build_insn (opcode, myops); - - /* Propagate multiply status. */ - if (insn != -1) - { - if (is_parallel && prev_mul32_p) - cur_mul32_p = 1; - else - { - prev_mul32_p = cur_mul32_p; - cur_mul32_p = (opcode->op->flags_used & FLAG_MUL32) != 0; - } - } - - /* Propagate left_kills_right status. */ - if (insn != -1) - { - prev_left_kills_right_p = cur_left_kills_right_p; - - if (opcode->op->flags_set & FLAG_LKR) - { - cur_left_kills_right_p = 1; - - if (strcmp (opcode->op->name, "mvtsys") == 0) - { - /* Left kills right for only mvtsys only for - PSW/PSWH/PSWL/flags target. */ - if ((myops[0].X_op == O_register) && - ((myops[0].X_add_number == OPERAND_CONTROL) || /* psw */ - (myops[0].X_add_number == OPERAND_CONTROL+MAX_CONTROL_REG+2) || /* pswh */ - (myops[0].X_add_number == OPERAND_CONTROL+MAX_CONTROL_REG+1) || /* pswl */ - (myops[0].X_add_number == OPERAND_FLAG+0) || /* f0 */ - (myops[0].X_add_number == OPERAND_FLAG+1) || /* f1 */ - (myops[0].X_add_number == OPERAND_FLAG+2) || /* f2 */ - (myops[0].X_add_number == OPERAND_FLAG+3) || /* f3 */ - (myops[0].X_add_number == OPERAND_FLAG+4) || /* f4 */ - (myops[0].X_add_number == OPERAND_FLAG+5) || /* f5 */ - (myops[0].X_add_number == OPERAND_FLAG+6) || /* f6 */ - (myops[0].X_add_number == OPERAND_FLAG+7))) /* f7 */ - { - cur_left_kills_right_p = 1; - } - else - { - /* Other mvtsys target registers don't kill right - instruction. */ - cur_left_kills_right_p = 0; - } - } /* mvtsys */ - } - else - cur_left_kills_right_p = 0; - } - - return insn; -} - -/* Get a pointer to an entry in the format table. - It must look at all formats for an opcode and use the operands - to choose the correct one. Return NULL on error. */ - -static struct d30v_format * -find_format (opcode, myops, fsize, cmp_hack) - struct d30v_opcode *opcode; - expressionS myops[]; - int fsize; - int cmp_hack; -{ - int numops, match, index, i = 0, j, k; - struct d30v_format *fm; - - if (opcode == NULL) - return NULL; - - /* Get all the operands and save them as expressions. */ - numops = get_operands (myops, cmp_hack); - - while ((index = opcode->format[i++]) != 0) - { - if (fsize == FORCE_SHORT && index >= LONG) - continue; - - if (fsize == FORCE_LONG && index < LONG) - continue; - - fm = (struct d30v_format *) &d30v_format_table[index]; - k = index; - while (fm->form == index) - { - match = 1; - /* Now check the operands for compatibility. */ - for (j = 0; match && fm->operands[j]; j++) - { - int flags = d30v_operand_table[fm->operands[j]].flags; - int bits = d30v_operand_table[fm->operands[j]].bits; - int X_op = myops[j].X_op; - int num = myops[j].X_add_number; - - if (flags & OPERAND_SPECIAL) - break; - else if (X_op == O_illegal) - match = 0; - else if (flags & OPERAND_REG) - { - if (X_op != O_register - || ((flags & OPERAND_ACC) && !(num & OPERAND_ACC)) - || (!(flags & OPERAND_ACC) && (num & OPERAND_ACC)) - || ((flags & OPERAND_FLAG) && !(num & OPERAND_FLAG)) - || (!(flags & (OPERAND_FLAG | OPERAND_CONTROL)) && (num & OPERAND_FLAG)) - || ((flags & OPERAND_CONTROL) - && !(num & (OPERAND_CONTROL | OPERAND_FLAG)))) - { - match = 0; - } - } - else if (((flags & OPERAND_MINUS) - && (X_op != O_absent || num != OPERAND_MINUS)) - || ((flags & OPERAND_PLUS) - && (X_op != O_absent || num != OPERAND_PLUS)) - || ((flags & OPERAND_ATMINUS) - && (X_op != O_absent || num != OPERAND_ATMINUS)) - || ((flags & OPERAND_ATPAR) - && (X_op != O_absent || num != OPERAND_ATPAR)) - || ((flags & OPERAND_ATSIGN) - && (X_op != O_absent || num != OPERAND_ATSIGN))) - { - match = 0; - } - else if (flags & OPERAND_NUM) - { - /* A number can be a constant or symbol expression. */ - - /* If we have found a register name, but that name - also matches a symbol, then re-parse the name as - an expression. */ - if (X_op == O_register - && symbol_find ((char *) myops[j].X_op_symbol)) - { - input_line_pointer = (char *) myops[j].X_op_symbol; - expression (&myops[j]); - } - - /* Turn an expression into a symbol for later resolution. */ - if (X_op != O_absent && X_op != O_constant - && X_op != O_symbol && X_op != O_register - && X_op != O_big) - { - symbolS *sym = make_expr_symbol (&myops[j]); - myops[j].X_op = X_op = O_symbol; - myops[j].X_add_symbol = sym; - myops[j].X_add_number = num = 0; - } - - if (fm->form >= LONG) - { - /* If we're testing for a LONG format, either fits. */ - if (X_op != O_constant && X_op != O_symbol) - match = 0; - } - else if (fm->form < LONG - && ((fsize == FORCE_SHORT && X_op == O_symbol) - || (fm->form == SHORT_D2 && j == 0))) - match = 1; - - /* This is the tricky part. Will the constant or symbol - fit into the space in the current format? */ - else if (X_op == O_constant) - { - if (check_range (num, bits, flags)) - match = 0; - } - else if (X_op == O_symbol - && S_IS_DEFINED (myops[j].X_add_symbol) - && S_GET_SEGMENT (myops[j].X_add_symbol) == now_seg - && opcode->reloc_flag == RELOC_PCREL) - { - /* If the symbol is defined, see if the value will fit - into the form we're considering. */ - fragS *f; - long value; - - /* Calculate the current address by running through the - previous frags and adding our current offset. */ - value = 0; - for (f = frchain_now->frch_root; f; f = f->fr_next) - value += f->fr_fix + f->fr_offset; - value = (S_GET_VALUE (myops[j].X_add_symbol) - value - - (obstack_next_free (&frchain_now->frch_obstack) - - frag_now->fr_literal)); - if (check_range (value, bits, flags)) - match = 0; - } - else - match = 0; - } - } -#if 0 - printf ("through the loop: match=%d\n", match); -#endif - /* We're only done if the operands matched so far AND there - are no more to check. */ - if (match && myops[j].X_op == 0) - { - /* Final check - issue a warning if an odd numbered register - is used as the first register in an instruction that reads - or writes 2 registers. */ - - for (j = 0; fm->operands[j]; j++) - if (myops[j].X_op == O_register - && (myops[j].X_add_number & 1) - && (d30v_operand_table[fm->operands[j]].flags & OPERAND_2REG)) - as_warn (_("Odd numbered register used as target of multi-register instruction")); - - return fm; - } - fm = (struct d30v_format *) &d30v_format_table[++k]; - } -#if 0 - printf ("trying another format: i=%d\n", i); -#endif - } - return NULL; -} - -/* If while processing a fixup, a reloc really needs to be created, - then it is done here. */ - -arelent * -tc_gen_reloc (seg, fixp) - asection *seg ATTRIBUTE_UNUSED; - fixS *fixp; -{ - arelent *reloc; - reloc = (arelent *) xmalloc (sizeof (arelent)); - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); - if (reloc->howto == (reloc_howto_type *) NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("reloc %d not supported by object file format"), - (int) fixp->fx_r_type); - return NULL; - } - - reloc->addend = 0; - return reloc; -} - -int -md_estimate_size_before_relax (fragp, seg) - fragS *fragp ATTRIBUTE_UNUSED; - asection *seg ATTRIBUTE_UNUSED; -{ - abort (); - return 0; -} - -long -md_pcrel_from_section (fixp, sec) - fixS *fixp; - segT sec; -{ - if (fixp->fx_addsy != (symbolS *) NULL - && (!S_IS_DEFINED (fixp->fx_addsy) - || (S_GET_SEGMENT (fixp->fx_addsy) != sec))) - return 0; - return fixp->fx_frag->fr_address + fixp->fx_where; -} - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT *valP; - segT seg ATTRIBUTE_UNUSED; -{ - char *where; - unsigned long insn, insn2; - long value = *valP; - - if (fixP->fx_addsy == (symbolS *) NULL) - fixP->fx_done = 1; - - /* We don't support subtracting a symbol. */ - if (fixP->fx_subsy != (symbolS *) NULL) - as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); - - /* Fetch the instruction, insert the fully resolved operand - value, and stuff the instruction back again. */ - where = fixP->fx_frag->fr_literal + fixP->fx_where; - insn = bfd_getb32 ((unsigned char *) where); - - switch (fixP->fx_r_type) - { - case BFD_RELOC_8: /* Check for a bad .byte directive. */ - if (fixP->fx_addsy != NULL) - as_bad (_("line %d: unable to place address of symbol '%s' into a byte"), - fixP->fx_line, S_GET_NAME (fixP->fx_addsy)); - else if (((unsigned)value) > 0xff) - as_bad (_("line %d: unable to place value %lx into a byte"), - fixP->fx_line, value); - else - *(unsigned char *) where = value; - break; - - case BFD_RELOC_16: /* Check for a bad .short directive. */ - if (fixP->fx_addsy != NULL) - as_bad (_("line %d: unable to place address of symbol '%s' into a short"), - fixP->fx_line, S_GET_NAME (fixP->fx_addsy)); - else if (((unsigned)value) > 0xffff) - as_bad (_("line %d: unable to place value %lx into a short"), - fixP->fx_line, value); - else - bfd_putb16 ((bfd_vma) value, (unsigned char *) where); - break; - - case BFD_RELOC_64: /* Check for a bad .quad directive. */ - if (fixP->fx_addsy != NULL) - as_bad (_("line %d: unable to place address of symbol '%s' into a quad"), - fixP->fx_line, S_GET_NAME (fixP->fx_addsy)); - else - { - bfd_putb32 ((bfd_vma) value, (unsigned char *) where); - bfd_putb32 (0, ((unsigned char *) where) + 4); - } - break; - - case BFD_RELOC_D30V_6: - check_size (value, 6, fixP->fx_file, fixP->fx_line); - insn |= value & 0x3F; - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - break; - - case BFD_RELOC_D30V_9_PCREL: - if (fixP->fx_where & 0x7) - { - if (fixP->fx_done) - value += 4; - else - fixP->fx_r_type = BFD_RELOC_D30V_9_PCREL_R; - } - check_size (value, 9, fixP->fx_file, fixP->fx_line); - insn |= ((value >> 3) & 0x3F) << 12; - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - break; - - case BFD_RELOC_D30V_15: - check_size (value, 15, fixP->fx_file, fixP->fx_line); - insn |= (value >> 3) & 0xFFF; - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - break; - - case BFD_RELOC_D30V_15_PCREL: - if (fixP->fx_where & 0x7) - { - if (fixP->fx_done) - value += 4; - else - fixP->fx_r_type = BFD_RELOC_D30V_15_PCREL_R; - } - check_size (value, 15, fixP->fx_file, fixP->fx_line); - insn |= (value >> 3) & 0xFFF; - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - break; - - case BFD_RELOC_D30V_21: - check_size (value, 21, fixP->fx_file, fixP->fx_line); - insn |= (value >> 3) & 0x3FFFF; - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - break; - - case BFD_RELOC_D30V_21_PCREL: - if (fixP->fx_where & 0x7) - { - if (fixP->fx_done) - value += 4; - else - fixP->fx_r_type = BFD_RELOC_D30V_21_PCREL_R; - } - check_size (value, 21, fixP->fx_file, fixP->fx_line); - insn |= (value >> 3) & 0x3FFFF; - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - break; - - case BFD_RELOC_D30V_32: - insn2 = bfd_getb32 ((unsigned char *) where + 4); - insn |= (value >> 26) & 0x3F; /* Top 6 bits. */ - insn2 |= ((value & 0x03FC0000) << 2); /* Next 8 bits. */ - insn2 |= value & 0x0003FFFF; /* Bottom 18 bits. */ - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - bfd_putb32 ((bfd_vma) insn2, (unsigned char *) where + 4); - break; - - case BFD_RELOC_D30V_32_PCREL: - insn2 = bfd_getb32 ((unsigned char *) where + 4); - insn |= (value >> 26) & 0x3F; /* Top 6 bits. */ - insn2 |= ((value & 0x03FC0000) << 2); /* Next 8 bits. */ - insn2 |= value & 0x0003FFFF; /* Bottom 18 bits. */ - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - bfd_putb32 ((bfd_vma) insn2, (unsigned char *) where + 4); - break; - - case BFD_RELOC_32: - bfd_putb32 ((bfd_vma) value, (unsigned char *) where); - break; - - default: - as_bad (_("line %d: unknown relocation type: 0x%x"), - fixP->fx_line, fixP->fx_r_type); - } -} - -/* Called after the assembler has finished parsing the input file or - after a label is defined. Because the D30V assembler sometimes - saves short instructions to see if it can package them with the - next instruction, there may be a short instruction that still needs - written. */ - -int -d30v_cleanup (use_sequential) - int use_sequential; -{ - segT seg; - subsegT subseg; - - if (prev_insn != -1) - { - seg = now_seg; - subseg = now_subseg; - subseg_set (prev_seg, prev_subseg); - write_1_short (&prev_opcode, (long) prev_insn, fixups->next, - use_sequential); - subseg_set (seg, subseg); - prev_insn = -1; - if (use_sequential) - prev_mul32_p = FALSE; - } - - return 1; -} - -static void -d30v_number_to_chars (buf, value, n) - char *buf; /* Return 'nbytes' of chars here. */ - long long value; /* The value of the bits. */ - int n; /* Number of bytes in the output. */ -{ - while (n--) - { - buf[n] = value & 0xff; - value >>= 8; - } -} - -/* This function is called at the start of every line. It checks to - see if the first character is a '.', which indicates the start of a - pseudo-op. If it is, then write out any unwritten instructions. */ - -void -d30v_start_line () -{ - char *c = input_line_pointer; - - while (ISSPACE (*c)) - c++; - - if (*c == '.') - d30v_cleanup (FALSE); -} - -static void -check_size (value, bits, file, line) - long value; - int bits; - char *file; - int line; -{ - int tmp, max; - - if (value < 0) - tmp = ~value; - else - tmp = value; - - max = (1 << (bits - 1)) - 1; - - if (tmp > max) - as_bad_where (file, line, _("value too large to fit in %d bits"), bits); -} - -/* d30v_frob_label() is called when after a label is recognized. */ - -void -d30v_frob_label (lab) - symbolS *lab; -{ - /* Emit any pending instructions. */ - d30v_cleanup (FALSE); - - /* Update the label's address with the current output pointer. */ - symbol_set_frag (lab, frag_now); - S_SET_VALUE (lab, (valueT) frag_now_fix ()); - - /* Record this label for future adjustment after we find out what - kind of data it references, and the required alignment therewith. */ - d30v_last_label = lab; -} - -/* Hook into cons for capturing alignment changes. */ - -void -d30v_cons_align (size) - int size; -{ - int log_size; - - log_size = 0; - while ((size >>= 1) != 0) - ++log_size; - - if (d30v_current_align < log_size) - d30v_align (log_size, (char *) NULL, NULL); - else if (d30v_current_align > log_size) - d30v_current_align = log_size; - d30v_last_label = NULL; -} - -/* Called internally to handle all alignment needs. This takes care - of eliding calls to frag_align if'n the cached current alignment - says we've already got it, as well as taking care of the auto-aligning - labels wrt code. */ - -static void -d30v_align (n, pfill, label) - int n; - char *pfill; - symbolS *label; -{ - /* The front end is prone to changing segments out from under us - temporarily when -g is in effect. */ - int switched_seg_p = (d30v_current_align_seg != now_seg); - - /* Do not assume that if 'd30v_current_align >= n' and - '! switched_seg_p' that it is safe to avoid performing - this alignment request. The alignment of the current frag - can be changed under our feet, for example by a .ascii - directive in the source code. cf testsuite/gas/d30v/reloc.s */ - d30v_cleanup (FALSE); - - if (pfill == NULL) - { - if (n > 2 - && (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) - { - static char const nop[4] = { 0x00, 0xf0, 0x00, 0x00 }; - - /* First, make sure we're on a four-byte boundary, in case - someone has been putting .byte values the text section. */ - if (d30v_current_align < 2 || switched_seg_p) - frag_align (2, 0, 0); - frag_align_pattern (n, nop, sizeof nop, 0); - } - else - frag_align (n, 0, 0); - } - else - frag_align (n, *pfill, 0); - - if (!switched_seg_p) - d30v_current_align = n; - - if (label != NULL) - { - symbolS *sym; - int label_seen = FALSE; - struct frag *old_frag; - valueT old_value; - valueT new_value; - - assert (S_GET_SEGMENT (label) == now_seg); - - old_frag = symbol_get_frag (label); - old_value = S_GET_VALUE (label); - new_value = (valueT) frag_now_fix (); - - /* It is possible to have more than one label at a particular - address, especially if debugging is enabled, so we must - take care to adjust all the labels at this address in this - fragment. To save time we search from the end of the symbol - list, backwards, since the symbols we are interested in are - almost certainly the ones that were most recently added. - Also to save time we stop searching once we have seen at least - one matching label, and we encounter a label that is no longer - in the target fragment. Note, this search is guaranteed to - find at least one match when sym == label, so no special case - code is necessary. */ - for (sym = symbol_lastP; sym != NULL; sym = symbol_previous (sym)) - { - if (symbol_get_frag (sym) == old_frag - && S_GET_VALUE (sym) == old_value) - { - label_seen = TRUE; - symbol_set_frag (sym, frag_now); - S_SET_VALUE (sym, new_value); - } - else if (label_seen && symbol_get_frag (sym) != old_frag) - break; - } - } - - record_alignment (now_seg, n); -} - -/* Handle the .align pseudo-op. This aligns to a power of two. We - hook here to latch the current alignment. */ - -static void -s_d30v_align (ignore) - int ignore ATTRIBUTE_UNUSED; -{ - int align; - char fill, *pfill = NULL; - long max_alignment = 15; - - align = get_absolute_expression (); - if (align > max_alignment) - { - align = max_alignment; - as_warn (_("Alignment too large: %d assumed"), align); - } - else if (align < 0) - { - as_warn (_("Alignment negative: 0 assumed")); - align = 0; - } - - if (*input_line_pointer == ',') - { - input_line_pointer++; - fill = get_absolute_expression (); - pfill = &fill; - } - - d30v_last_label = NULL; - d30v_align (align, pfill, NULL); - - demand_empty_rest_of_line (); -} - -/* Handle the .text pseudo-op. This is like the usual one, but it - clears the saved last label and resets known alignment. */ - -static void -s_d30v_text (i) - int i; - -{ - s_text (i); - d30v_last_label = NULL; - d30v_current_align = 0; - d30v_current_align_seg = now_seg; -} - -/* Handle the .data pseudo-op. This is like the usual one, but it - clears the saved last label and resets known alignment. */ - -static void -s_d30v_data (i) - int i; -{ - s_data (i); - d30v_last_label = NULL; - d30v_current_align = 0; - d30v_current_align_seg = now_seg; -} - -/* Handle the .section pseudo-op. This is like the usual one, but it - clears the saved last label and resets known alignment. */ - -static void -s_d30v_section (ignore) - int ignore; -{ - obj_elf_section (ignore); - d30v_last_label = NULL; - d30v_current_align = 0; - d30v_current_align_seg = now_seg; -} diff --git a/gas/config/tc-d30v.h b/gas/config/tc-d30v.h deleted file mode 100644 index 7306817c1..000000000 --- a/gas/config/tc-d30v.h +++ /dev/null @@ -1,68 +0,0 @@ -/* tc-310v.h -- Header file for tc-d30v.c. - Copyright 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. - Written by Martin Hunt, Cygnus Support. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_D30V - -#ifndef BFD_ASSEMBLER - #error D30V support requires BFD_ASSEMBLER -#endif - -/* The target BFD architecture. */ -#define TARGET_ARCH bfd_arch_d30v -#define TARGET_FORMAT "elf32-d30v" -#define TARGET_BYTES_BIG_ENDIAN 1 - -#define md_operand(x) - -/* Call md_pcrel_from_section, not md_pcrel_from. */ -struct fix; -extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); -#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section(FIX, SEC) - -/* Permit temporary numeric labels. */ -#define LOCAL_LABELS_FB 1 - -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ - -/* We don't need to handle .word strangely. */ -#define WORKING_DOT_WORD - -#define md_number_to_chars number_to_chars_bigendian - -int d30v_cleanup PARAMS ((int)); -#define md_after_pass_hook() d30v_cleanup (FALSE) -#define md_cleanup() d30v_cleanup (FALSE) -#define TC_START_LABEL(ch, ptr) (ch == ':' && d30v_cleanup (FALSE)) -void d30v_start_line PARAMS ((void)); -#define md_start_line_hook() d30v_start_line () - -void d30v_frob_label PARAMS ((symbolS *)); -#define tc_frob_label(sym) d30v_frob_label(sym) - -void d30v_cons_align PARAMS ((int)); -#define md_cons_align(nbytes) d30v_cons_align(nbytes) - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -/* No shared lib support, so we don't need to ensure externally - visible symbols can be overridden. */ -#define EXTERN_FORCE_RELOC 0 diff --git a/gas/config/tc-dlx.c b/gas/config/tc-dlx.c deleted file mode 100644 index 4b72b564d..000000000 --- a/gas/config/tc-dlx.c +++ /dev/null @@ -1,1444 +0,0 @@ -/* tc-ldx.c -- Assemble for the DLX - Copyright 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Initially created by Kuang Hwa Lin, 3/20/2002. */ - -#include "safe-ctype.h" -#include "as.h" -#include "tc-dlx.h" -#include "opcode/dlx.h" -#if 0 -#include "elf/dlx.h" -#endif - -/* Make it easier to clone this machine desc into another one. */ -#define machine_opcode dlx_opcode -#define machine_opcodes dlx_opcodes -#define machine_ip dlx_ip -#define machine_it dlx_it - -#define NO_RELOC BFD_RELOC_NONE -#define RELOC_DLX_REL26 BFD_RELOC_DLX_JMP26 -#define RELOC_DLX_16 BFD_RELOC_16 -#define RELOC_DLX_REL16 BFD_RELOC_16_PCREL_S2 -#define RELOC_DLX_HI16 BFD_RELOC_HI16_S -#define RELOC_DLX_LO16 BFD_RELOC_LO16 -#define RELOC_DLX_VTINHERIT BFD_RELOC_VTABLE_INHERIT -#define RELOC_DLX_VTENTRY BFD_RELOC_VTABLE_ENTRY - -/* handle of the OPCODE hash table */ -static struct hash_control *op_hash = NULL; - -struct machine_it -{ - char *error; - unsigned long opcode; - struct nlist *nlistp; - expressionS exp; - int pcrel; - int size; - int reloc_offset; /* Offset of reloc within insn. */ - int reloc; - int HI; - int LO; -} -the_insn; - -/* static void print_insn PARAMS ((struct machine_it *)); */ -char * parse_operand PARAMS ((char *, expressionS *)); -int md_chars_to_number PARAMS ((unsigned char *, int)); - -static void machine_ip PARAMS ((char *)); -static void s_proc PARAMS ((int)); -static void insert_sreg PARAMS ((char *, int)); -static int hilo_modifier_ok PARAMS ((char *)); -static int is_ldst_registers PARAMS ((char *)); -static int match_sft_register PARAMS ((char *)); -static void define_some_regs PARAMS ((void)); -static char * dlx_parse_loadop PARAMS ((char *)); -static char * dlx_parse_storeop PARAMS ((char *)); -static char * fix_ld_st_operand PARAMS ((unsigned long, char *)); - -const pseudo_typeS - -dlx_pseudo_table[] = - { - /* Some additional ops that are used by gcc-dlx. */ - {"asciiz", stringer, 1}, - {"half", cons, 2}, - {"dword", cons, 8}, - {"word", cons, 4}, - {"proc", s_proc, 0}, - {"endproc", s_proc, 1}, - {NULL, 0, 0}, - }; - -/* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ -const char comment_chars[] = ";"; - -/* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' - .line and .file directives will appear in the pre-processed output. */ -/* Note that input_file.c hand checks for '#' at the beginning of the - first line of the input file. This is because the compiler outputs - #NO_APP at the beginning of its output. */ -/* Also note that comments like this one will always work. */ -const char line_comment_chars[] = "#"; - -/* We needed an unused char for line separation to work around the - lack of macros, using sed and such. */ -const char line_separator_chars[] = "@"; - -/* Chars that can be used to separate mant from exp in floating point nums. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. - As in 0f12.456 - or 0d1.2345e12. */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -static void -insert_sreg (regname, regnum) - char *regname; - int regnum; -{ - /* Must be large enough to hold the names of the special registers. */ - char buf[80]; - int i; - - symbol_table_insert (symbol_new (regname, reg_section, (valueT) regnum, - &zero_address_frag)); - for (i = 0; regname[i]; i++) - buf[i] = ISLOWER (regname[i]) ? TOUPPER (regname[i]) : regname[i]; - buf[i] = '\0'; - - symbol_table_insert (symbol_new (buf, reg_section, (valueT) regnum, - &zero_address_frag)); -} - -/* Install symbol definitions for assorted special registers. - See MIPS Assembly Language Programmer's Guide page 1-4 */ - -static void -define_some_regs () -{ -#if 0 - /* Hardware representation. */ - insert_sreg ("r0", 0); - insert_sreg ("r1", 1); - insert_sreg ("r2", 2); - insert_sreg ("r3", 3); - insert_sreg ("r4", 4); - insert_sreg ("r5", 5); - insert_sreg ("r6", 6); - insert_sreg ("r7", 7); - insert_sreg ("r8", 8); - insert_sreg ("r9", 9); - insert_sreg ("r10", 10); - insert_sreg ("r11", 11); - insert_sreg ("r12", 12); - insert_sreg ("r13", 13); - insert_sreg ("r14", 14); - insert_sreg ("r15", 15); - insert_sreg ("r16", 16); - insert_sreg ("r17", 17); - insert_sreg ("r18", 18); - insert_sreg ("r19", 19); - insert_sreg ("r20", 20); - insert_sreg ("r21", 21); - insert_sreg ("r22", 22); - insert_sreg ("r23", 23); - insert_sreg ("r24", 24); - insert_sreg ("r25", 25); - insert_sreg ("r26", 26); - insert_sreg ("r27", 27); - insert_sreg ("r28", 28); - insert_sreg ("r29", 29); - insert_sreg ("r30", 30); - insert_sreg ("r31", 31); -#endif - /* Software representation. */ - insert_sreg ("zero", 0); - insert_sreg ("at", 1); - insert_sreg ("v0", 2); - insert_sreg ("v1", 3); - insert_sreg ("a0", 4); - insert_sreg ("a1", 5); - insert_sreg ("a2", 6); - insert_sreg ("a3", 7); - insert_sreg ("t0", 8); - insert_sreg ("t1", 9); - insert_sreg ("t2", 10); - insert_sreg ("t3", 11); - insert_sreg ("t4", 12); - insert_sreg ("t5", 13); - insert_sreg ("t6", 14); - insert_sreg ("t7", 15); - insert_sreg ("s0", 16); - insert_sreg ("s1", 17); - insert_sreg ("s2", 18); - insert_sreg ("s3", 19); - insert_sreg ("s4", 20); - insert_sreg ("s5", 21); - insert_sreg ("s6", 22); - insert_sreg ("s7", 23); - insert_sreg ("t8", 24); - insert_sreg ("t9", 25); - insert_sreg ("k0", 26); - insert_sreg ("k1", 27); - insert_sreg ("gp", 28); - insert_sreg ("sp", 29); - insert_sreg ("fp", 30); - insert_sreg ("ra", 31); - /* Special registers. */ - insert_sreg ("pc", 0); - insert_sreg ("npc", 1); - insert_sreg ("iad", 2); -} - -/* Subroutine check the string to match an register, */ - -static int -match_sft_register (name) - char *name; -{ -#define MAX_REG_NO 35 -/* Currently we have 35 software registers defined - - we borrowed from MIPS. */ - static char *soft_reg[] = - { - "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", - "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", - "s0", "s1", "s2", "s3", "s4", "s5", "s7", "k0", "k1", - "gp", "sp", "fp", "ra", "pc", "npc", "iad", - "EndofTab" /* End of the Table indicator */ - }; - char low_name[21], *ptr; - int idx; - - for (ptr = name,idx = 0; *ptr != '\0'; ptr++) - low_name[idx++] = TOLOWER (*ptr); - - low_name[idx] = '\0'; - idx = 0; - - while (idx < MAX_REG_NO && strcmp (soft_reg[idx], & low_name [0])) - idx += 1; - - return idx < MAX_REG_NO; -} - -/* Subroutine check the string to match an register. */ - -static int -is_ldst_registers (name) - char *name; -{ - char *ptr = name; - - /* The first character of the register name got to be either %, $, r of R. */ - if ((ptr[0] == '%' || ptr[0] == '$' || ptr[0] == 'r' || ptr[0] == 'R') - && ISDIGIT ((unsigned char) ptr[1])) - return 1; - - /* Now check the software register representation. */ - return match_sft_register (ptr); -} - -/* Subroutine of s_proc so targets can choose a different default prefix. - If DEFAULT_PREFIX is NULL, use the target's "leading char". */ - -static void -s_proc (end_p) - int end_p; -{ - /* Record the current function so that we can issue an error message for - misplaced .func,.endfunc, and also so that .endfunc needs no - arguments. */ - static char *current_name; - static char *current_label; - - if (end_p) - { - if (current_name == NULL) - { - as_bad (_("missing .proc")); - ignore_rest_of_line (); - return; - } - - current_name = current_label = NULL; - SKIP_WHITESPACE (); - while (!is_end_of_line[(unsigned char) *input_line_pointer]) - input_line_pointer++; - } - else - { - char *name, *label; - char delim1, delim2; - - if (current_name != NULL) - { - as_bad (_(".endfunc missing for previous .proc")); - ignore_rest_of_line (); - return; - } - - name = input_line_pointer; - delim1 = get_symbol_end (); - name = xstrdup (name); - *input_line_pointer = delim1; - SKIP_WHITESPACE (); - - if (*input_line_pointer != ',') - { - char leading_char = 0; - - leading_char = bfd_get_symbol_leading_char (stdoutput); - /* Missing entry point, use function's name with the leading - char prepended. */ - if (leading_char) - asprintf (&label, "%c%s", leading_char, name); - else - label = name; - } - else - { - ++input_line_pointer; - SKIP_WHITESPACE (); - label = input_line_pointer; - delim2 = get_symbol_end (); - label = xstrdup (label); - *input_line_pointer = delim2; - } - - current_name = name; - current_label = label; - } - demand_empty_rest_of_line (); -} - -/* This function is called once, at assembler startup time. It should - set up all the tables, etc., that the MD part of the assembler will - need. */ - -void -md_begin () -{ - const char *retval = NULL; - int lose = 0; - unsigned int i; - - /* Create a new hash table. */ - op_hash = hash_new (); - - /* Hash up all the opcodes for fast use later. */ - for (i = 0; i < num_dlx_opcodes; i++) - { - const char *name = machine_opcodes[i].name; - - retval = hash_insert (op_hash, name, (PTR) &machine_opcodes[i]); - - if (retval != NULL) - { - fprintf (stderr, "internal error: can't hash `%s': %s\n", - machine_opcodes[i].name, retval); - lose = 1; - } - } - - if (lose) - as_fatal (_("Broken assembler. No assembly attempted.")); - - define_some_regs (); -} - -/* Assemble a single instruction. Its label has already been handled - by the generic front end. We just parse opcode and operands, and - produce the bytes of data and relocation. */ - -void -md_assemble (str) - char *str; -{ - char *toP; - fixS *fixP; - bit_fixS *bitP; - - know (str); - machine_ip (str); - toP = frag_more (4); - /* Put out the opcode. */ - md_number_to_chars (toP, the_insn.opcode, 4); - - /* Put out the symbol-dependent stuff. */ - if (the_insn.reloc != NO_RELOC) - { - fixP = fix_new_exp (frag_now, - (toP - frag_now->fr_literal + the_insn.reloc_offset), - the_insn.size, & the_insn.exp, the_insn.pcrel, - the_insn.reloc); - - switch (fixP->fx_r_type) - { - case RELOC_DLX_REL26: - bitP = malloc (sizeof (bit_fixS)); - bitP->fx_bit_size = 26; - bitP->fx_bit_offset = 25; - bitP->fx_bit_base = the_insn.opcode & 0xFC000000; - bitP->fx_bit_base_adj = 0; - bitP->fx_bit_max = 0; - bitP->fx_bit_min = 0; - bitP->fx_bit_add = 0x03FFFFFF; - fixP->fx_bit_fixP = bitP; - break; - case RELOC_DLX_REL16: - bitP = malloc (sizeof (bit_fixS)); - bitP->fx_bit_size = 16; - bitP->fx_bit_offset = 15; - bitP->fx_bit_base = the_insn.opcode & 0xFFFF0000; - bitP->fx_bit_base_adj = 0; - bitP->fx_bit_max = 0; - bitP->fx_bit_min = 0; - bitP->fx_bit_add = 0x0000FFFF; - fixP->fx_bit_fixP = bitP; - break; - case RELOC_DLX_HI16: - bitP = malloc (sizeof (bit_fixS)); - bitP->fx_bit_size = 16; - bitP->fx_bit_offset = 15; - bitP->fx_bit_base = the_insn.opcode & 0xFFFF0000; - bitP->fx_bit_base_adj = 0; - bitP->fx_bit_max = 0; - bitP->fx_bit_min = 0; - bitP->fx_bit_add = 0x0000FFFF; - fixP->fx_bit_fixP = bitP; - break; - default: - fixP->fx_bit_fixP = (bit_fixS *)NULL; - break; - } - } -} - -static int -hilo_modifier_ok (s) - char *s; -{ - char *ptr = s; - int idx, count = 1; - - if (*ptr != '(') - return 1; - - for (idx = 1; ptr[idx] != '\0' && ptr[idx] != '[' && idx < 73; idx += 1) - { - if (count == 0) - return count; - - if (ptr[idx] == '(') - count += 1; - - if (ptr[idx] == ')') - count -= 1; - } - - return (count == 0) ? 1:0; -} - -char * -parse_operand (s, operandp) - char *s; - expressionS *operandp; -{ - char *save = input_line_pointer; - char *new; - - the_insn.HI = the_insn.LO = 0; - - /* Search for %hi and %lo, make a mark and skip it. */ - if (strncmp (s, "%hi", 3) == 0) - { - s += 3; - the_insn.HI = 1; - } - else - { - if (strncmp (s, "%lo", 3) == 0) - { - s += 3; - the_insn.LO = 1; - } - else - the_insn.LO = 0; - } - - if (the_insn.HI || the_insn.LO) - { - if (!hilo_modifier_ok (s)) - as_bad (_("Expression Error for operand modifier %%hi/%%lo\n")); - } - - /* Check for the % and $ register representation */ - if ((s[0] == '%' || s[0] == '$' || s[0] == 'r' || s[0] == 'R') - && ISDIGIT ((unsigned char) s[1])) - { - /* We have a numeric register expression. No biggy. */ - s += 1; - input_line_pointer = s; - (void) expression (operandp); - if (operandp->X_op != O_constant - || operandp->X_add_number > 31) - as_bad (_("Invalid expression after %%%%\n")); - operandp->X_op = O_register; - } - else - { - /* Normal operand parsing. */ - input_line_pointer = s; - (void) expression (operandp); - } - - new = input_line_pointer; - input_line_pointer = save; - return new; -} - -/* This function will check the opcode and return 1 if the opcode is one - of the load/store instruction, and it will fix the operand string to - the standard form so we can use the standard parse_operand routine. */ - -#define READ_OP 0x100 -#define WRITE_OP 0x200 -static char iBuf[81]; - -static char * -dlx_parse_loadop (str) - char * str; -{ - char *ptr = str; - int idx = 0; - - /* The last pair of ()/[] is the register, all other are the - reloc displacement, and if there is a register then it ought - to have a pair of ()/[] - This is not necessarily true, what if the load instruction come - without the register and with %hi/%lo modifier? */ - for (idx = 0; idx < 72 && ptr[idx] != '\0'; idx++) - ; - - if (idx == 72) - { - badoperand_load: - as_bad (_("Bad operand for a load instruction: <%s>"), str); - return NULL; - } - else - { - int i, pb = 0; - int m2 = 0; - char rs1[7], rd[7], endm, match = '0'; - char imm[72]; - - idx -= 1; - switch (str[idx]) - { - case ')': - match = '('; - endm = ')'; - break; - case ']': - match = '['; - endm = ']'; - break; - default: - /* No register indicated, fill in zero. */ - rs1[0] = 'r'; - rs1[1] = '0'; - rs1[2] = '\0'; - match = 0; - endm = 0; - m2 = 1; - } - - if (!m2) - { - /* Searching for (/[ which will match the ]/). */ - for (pb = idx - 1; str[pb] != match; pb -= 1) - /* Match can only be either '[' or '(', if it is - '(' then this can be a normal expression, we'll treat - it as an operand. */ - if (str[pb] == endm || pb < (idx - 5)) - goto load_no_rs1; - pb += 1; - - for (i = 0; (pb + i) < idx; i++) - rs1[i] = str[pb+i]; - - rs1[i] = '\0'; - - if (is_ldst_registers (& rs1[0])) - /* Point to the last character of the imm. */ - pb -= 1; - else - { - load_no_rs1: - if (match == '[') - goto badoperand_load; - /* No register indicated, fill in zero and restore the imm. */ - rs1[0] = 'r'; - rs1[1] = '0'; - rs1[2] = '\0'; - m2 = 1; - } - } - - /* Duplicate the first register. */ - for (i = 0; i < 7 && str[i] != ','; i++) - rd[i] = ptr[i]; - - if (str[i] != ',') - goto badoperand_load; - else - rd[i] = '\0'; - - /* Copy the immd. */ - if (m2) - /* Put the '\0' back in. */ - pb = idx + 1; - - for (i++, m2 = 0; i < pb; m2++,i++) - imm[m2] = ptr[i]; - - imm[m2] = '\0'; - - /* Assemble the instruction to gas internal format. */ - for (i = 0; rd[i] != '\0'; i++) - iBuf[i] = rd[i]; - - iBuf[i++] = ','; - - for (pb = 0 ; rs1[pb] != '\0'; i++, pb++) - iBuf[i] = rs1[pb]; - - iBuf[i++] = ','; - - for (pb = 0; imm[pb] != '\0'; i++, pb++) - iBuf[i] = imm[pb]; - - iBuf[i] = '\0'; - return iBuf; - } -} - -static char * -dlx_parse_storeop (str) - char * str; -{ - char *ptr = str; - int idx = 0; - - /* Search for the ','. */ - for (idx = 0; idx < 72 && ptr[idx] != ','; idx++) - ; - - if (idx == 72) - { - badoperand_store: - as_bad (_("Bad operand for a store instruction: <%s>"), str); - return NULL; - } - else - { - /* idx now points to the ','. */ - int i, pb = 0; - int comma = idx; - int m2 = 0; - char rs1[7], rd[7], endm, match = '0'; - char imm[72]; - - /* Now parse the '(' and ')', and make idx point to ')'. */ - idx -= 1; - switch (str[idx]) - { - case ')': - match = '('; - endm = ')'; - break; - case ']': - match = '['; - endm = ']'; - break; - default: - /* No register indicated, fill in zero. */ - rs1[0] = 'r'; - rs1[1] = '0'; - rs1[2] = '\0'; - match = 0; - endm = 0; - m2 = 1; - } - - if (!m2) - { - /* Searching for (/[ which will match the ]/). */ - for (pb = idx - 1; str[pb] != match; pb -= 1) - if (pb < (idx - 5) || str[pb] == endm) - goto store_no_rs1; - pb += 1; - - for (i = 0; (pb + i) < idx; i++) - rs1[i] = str[pb + i]; - - rs1[i] = '\0'; - - if (is_ldst_registers (& rs1[0])) - /* Point to the last character of the imm. */ - pb -= 1; - else - { - store_no_rs1: - if (match == '[') - goto badoperand_store; - - /* No register indicated, fill in zero and restore the imm. */ - rs1[0] = 'r'; - rs1[1] = '0'; - rs1[2] = '\0'; - pb = comma; - } - } - else - /* No register was specified. */ - pb = comma; - - /* Duplicate the first register. */ - for (i = comma + 1; (str[i] == ' ' || str[i] == '\t'); i++) - ; - - for (m2 = 0; (m2 < 7 && str[i] != '\0'); i++, m2++) - { - if (str[i] != ' ' && str[i] != '\t') - rd[m2] = str[i]; - else - goto badoperand_store; - } - - if (str[i] != '\0') - goto badoperand_store; - else - rd[m2] = '\0'; - - /* Copy the immd. */ - for (i = 0; i < pb; i++) - imm[i] = ptr[i]; - - imm[i] = '\0'; - - /* Assemble the instruction to gas internal format. */ - for (i = 0; rd[i] != '\0'; i++) - iBuf[i] = rd[i]; - iBuf[i++] = ','; - for (pb = 0 ; rs1[pb] != '\0'; i++, pb++) - iBuf[i] = rs1[pb]; - iBuf[i++] = ','; - for (pb = 0; imm[pb] != '\0'; i++, pb++) - iBuf[i] = imm[pb]; - iBuf[i] = '\0'; - return iBuf; - } -} - -static char * -fix_ld_st_operand (opcode, str) - unsigned long opcode; - char* str; -{ - /* Check the opcode. */ - switch ((int) opcode) - { - case LBOP: - case LBUOP: - case LSBUOP: - case LHOP: - case LHUOP: - case LSHUOP: - case LWOP: - case LSWOP: - return dlx_parse_loadop (str); - case SBOP: - case SHOP: - case SWOP: - return dlx_parse_storeop (str); - default: - return str; - } -} - -/* Instruction parsing. Takes a string containing the opcode. - Operands are at input_line_pointer. Output is in the_insn. - Warnings or errors are generated. */ - -static void -machine_ip (str) - char *str; -{ - char *s; - const char *args; - struct machine_opcode *insn; - char *argsStart; - unsigned long opcode; - expressionS the_operand; - expressionS *operand = &the_operand; - unsigned int reg, reg_shift = 0; - - /* Fixup the opcode string to all lower cases, and also - allow numerical digits. */ - s = str; - - if (ISALPHA (*s)) - for (; ISALNUM (*s); ++s) - if (ISUPPER (*s)) - *s = TOLOWER (*s); - - switch (*s) - { - case '\0': - break; - - /* FIXME-SOMEDAY more whitespace. */ - case ' ': - *s++ = '\0'; - break; - - default: - as_bad (_("Unknown opcode: `%s'"), str); - return; - } - - /* Hash the opcode, insn will have the string from opcode table. - also initialized the_insn struct. */ - if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL) - { - /* Handle the ret and return macro here. */ - if ((strcmp (str, "ret") == 0) || (strcmp (str, "return") == 0)) - { - memset (&the_insn, '\0', sizeof (the_insn)); - the_insn.reloc = NO_RELOC; - the_insn.pcrel = 0; - the_insn.opcode = - (unsigned long)(JROP | 0x03e00000); /* 0x03e00000 = r31 << 21 */ - } - else - as_bad (_("Unknown opcode `%s'."), str); - - return; - } - - argsStart = s; - opcode = insn->opcode; - memset (&the_insn, '\0', sizeof (the_insn)); - the_insn.reloc = NO_RELOC; - the_insn.pcrel = 0; - - /* Set the sip reloc HI16 flag. */ - if (!set_dlx_skip_hi16_flag (1)) - as_bad (_("Can not set dlx_skip_hi16_flag")); - - /* Fix the operand string if it is one of load store instructions. */ - s = fix_ld_st_operand (opcode, s); - - /* Build the opcode, checking as we go to make sure that the - operands match. - If an operand matches, we modify the_insn or opcode appropriately, - and do a "continue". If an operand fails to match, we "break". */ - if (insn->args[0] != '\0' && insn->args[0] != 'N') - { - /* Prime the pump. */ - if (*s == '\0') - { - as_bad (_("Missing arguments for opcode <%s>."), str); - return; - } - else - s = parse_operand (s, operand); - } - else if (insn->args[0] == 'N') - { - /* Clean up the insn and done! */ - the_insn.opcode = opcode; - return; - } - - /* Parse through the args (this is from opcode table), *s point to - the current character of the instruction stream. */ - for (args = insn->args;; ++args) - { - switch (*args) - { - /* End of Line. */ - case '\0': - /* End of args. */ - if (*s == '\0') - { - /* We are truly done. */ - the_insn.opcode = opcode; - /* Clean up the HI and LO mark. */ - the_insn.HI = 0; - the_insn.LO = 0; - return; - } - - the_insn.HI = 0; - the_insn.LO = 0; - as_bad (_("Too many operands: %s"), s); - break; - - /* ',' Args separator */ - case ',': - /* Must match a comma. */ - if (*s++ == ',') - { - /* Parse next operand. */ - s = parse_operand (s, operand); - continue; - } - break; - - /* It can be a 'a' register or 'i' operand. */ - case 'P': - /* Macro move operand/reg. */ - if (operand->X_op == O_register) - { - /* Its a register. */ - reg_shift = 21; - goto general_reg; - } - - /* The immediate 16 bits literal, bit 0-15. */ - case 'i': - /* offset, unsigned. */ - case 'I': - /* offset, signed. */ - if (operand->X_op == O_constant) - { - if (the_insn.HI) - operand->X_add_number >>= 16; - - opcode |= operand->X_add_number & 0xFFFF; - - if (the_insn.HI && the_insn.LO) - as_bad (_("Both the_insn.HI and the_insn.LO are set : %s"), s); - else - { - the_insn.HI = 0; - the_insn.LO = 0; - } - continue; - } - - the_insn.reloc = (the_insn.HI) ? RELOC_DLX_HI16 : RELOC_DLX_16; - the_insn.reloc_offset = 2; - the_insn.size = 2; - the_insn.pcrel = 0; - the_insn.exp = * operand; - the_insn.HI = 0; - the_insn.LO = 0; - continue; - - case 'd': - /* offset, signed. */ - if (operand->X_op == O_constant) - { - opcode |= operand->X_add_number & 0xFFFF; - continue; - } - the_insn.reloc = RELOC_DLX_REL16; - the_insn.reloc_offset = 0; /* BIG-ENDIAN Byte 3 of insn. */ - the_insn.size = 4; - the_insn.pcrel = 1; - the_insn.exp = *operand; - continue; - - /* The immediate 26 bits literal, bit 0-25. */ - case 'D': - /* offset, signed. */ - if (operand->X_op == O_constant) - { - opcode |= operand->X_add_number & 0x3FFFFFF; - continue; - } - the_insn.reloc = RELOC_DLX_REL26; - the_insn.reloc_offset = 0; /* BIG-ENDIAN Byte 3 of insn. */ - the_insn.size = 4; - the_insn.pcrel = 1; - the_insn.exp = *operand; - continue; - - /* Type 'a' Register. */ - case 'a': - /* A general register at bits 21-25, rs1. */ - know (operand->X_op != O_register); - reg_shift = 21; - goto general_reg; - - /* Type 'b' Register. */ - case 'b': - /* A general register at bits 16-20, rs2/rd. */ - know (operand->X_op != O_register); - reg_shift = 16; - goto general_reg; - - /* Type 'c' Register. */ - case 'c': - /* A general register at bits 11-15, rd. */ - know (operand->X_op != O_register); - reg_shift = 11; - - general_reg: - know (operand->X_add_symbol == 0); - know (operand->X_op_symbol == 0); - reg = operand->X_add_number; - if (reg & 0xffffffe0) - as_fatal (_("failed regnum sanity check.")); - else - /* Got the register, now figure out where it goes in the opcode. */ - opcode |= reg << reg_shift; - - switch (*args) - { - case 'a': - case 'b': - case 'c': - case 'P': - continue; - } - as_fatal (_("failed general register sanity check.")); - break; - - default: - BAD_CASE (*args); - } - - /* Types or values of args don't match. */ - as_bad ("Invalid operands"); - return; - } -} - -/* This is identical to the md_atof in m68k.c. I think this is right, - but I'm not sure. - - Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ -/* Dlx will not use it anyway, so I just leave it here for now. */ - -/* Equal to MAX_PRECISION in atof-ieee.c. */ -#define MAX_LITTLENUMS 6 - -char * -md_atof (type, litP, sizeP) - char type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return "Bad call to MD_ATOF()"; - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return 0; -} - -/* Write out big-endian. */ -void -md_number_to_chars (buf, val, n) - char *buf; - valueT val; - int n; -{ - number_to_chars_bigendian (buf, val, n); -} - -/* md_chars_to_number: convert from target byte order to host byte order. */ - -int -md_chars_to_number (val, n) - unsigned char *val; /* Value in target byte order. */ - int n; /* Number of bytes in the input. */ -{ - int retval; - - for (retval = 0; n--;) - { - retval <<= 8; - retval |= val[n]; - } - - return retval; -} - -bfd_boolean -md_dlx_fix_adjustable (fixP) - fixS *fixP; -{ - /* We need the symbol name for the VTABLE entries. */ - return (fixP->fx_r_type != BFD_RELOC_VTABLE_INHERIT - && fixP->fx_r_type != BFD_RELOC_VTABLE_ENTRY); -} - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT *valP; - segT seg ATTRIBUTE_UNUSED; -{ - long val = *valP; - char *place = fixP->fx_where + fixP->fx_frag->fr_literal; - - know (fixP->fx_size == 4); - know (fixP->fx_r_type < NO_RELOC); - - switch (fixP->fx_r_type) - { - case RELOC_DLX_REL16: - if (fixP->fx_bit_fixP != (bit_fixS *) NULL) - { - val = (val & 0x0000FFFF) | fixP->fx_bit_fixP->fx_bit_base; - free (fixP->fx_bit_fixP); - fixP->fx_bit_fixP = (bit_fixS *) NULL; - } -#ifdef DEBUG - else - know ((fixP->fx_bit_fixP != (bit_fixS *) NULL)); -#endif - break; - - case RELOC_DLX_HI16: - if (fixP->fx_bit_fixP != (bit_fixS *) NULL) - { - val = (val >> 16) | fixP->fx_bit_fixP->fx_bit_base; - free (fixP->fx_bit_fixP); - fixP->fx_bit_fixP = (bit_fixS *)NULL; - } -#ifdef DEBUG - else - know ((fixP->fx_bit_fixP != (bit_fixS *) NULL)); -#endif - break; - - case RELOC_DLX_REL26: - if (fixP->fx_bit_fixP != (bit_fixS *) NULL) - { - val = (val & 0x03FFFFFF) | fixP->fx_bit_fixP->fx_bit_base; - free (fixP->fx_bit_fixP); - fixP->fx_bit_fixP = (bit_fixS *) NULL; - } -#ifdef DEBUG - else - know ((fixP->fx_bit_fixP != (bit_fixS *) NULL)); -#endif - break; - - case BFD_RELOC_VTABLE_INHERIT: - /* This borrowed from tc-ppc.c on a whim. */ - fixP->fx_done = 0; - if (fixP->fx_addsy - && !S_IS_DEFINED (fixP->fx_addsy) - && !S_IS_WEAK (fixP->fx_addsy)) - S_SET_WEAK (fixP->fx_addsy); - return; - - case BFD_RELOC_VTABLE_ENTRY: - fixP->fx_done = 0; - return; - - default: - break; - } - - number_to_chars_bigendian (place, val, fixP->fx_size); - if (fixP->fx_addsy == NULL) - fixP->fx_done = 1; -} - -const char *md_shortopts = ""; - -struct option md_longopts[] = - { - {NULL, no_argument, NULL, 0} - }; - -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (c, arg) - int c ATTRIBUTE_UNUSED; - char *arg ATTRIBUTE_UNUSED; -{ - return 0; -} - -void -md_show_usage (stream) - FILE *stream ATTRIBUTE_UNUSED; -{ -} - -/* This is called when a line is unrecognized. */ - -int -dlx_unrecognized_line (c) - int c; -{ - int lab; - char *s; - - if (c != '$' || ! ISDIGIT ((unsigned char) input_line_pointer[0])) - return 0; - - s = input_line_pointer; - - lab = 0; - while (ISDIGIT ((unsigned char) *s)) - { - lab = lab * 10 + *s - '0'; - ++s; - } - - if (*s != ':') - { - /* Not a label definition. */ - return 0; - } - - if (dollar_label_defined (lab)) - { - as_bad (_("label \"$%d\" redefined"), lab); - return 0; - } - - define_dollar_label (lab); - colon (dollar_label_name (lab, 0)); - input_line_pointer = s + 1; - - return 1; -} - -/* Default the values of symbols known that should be "predefined". We - don't bother to predefine them unless you actually use one, since there - are a lot of them. */ - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return NULL; -} - - -/* Parse an operand that is machine-specific, the function was called - in expr.c by operand() function, when everything failed before it - call a quit. */ - -void -md_operand (expressionP) - expressionS* expressionP; -{ - /* Check for the #number representation */ - if (input_line_pointer[0] == '#' && - ISDIGIT ((unsigned char) input_line_pointer[1])) - { - /* We have a numeric number expression. No biggy. */ - input_line_pointer += 1; /* Skip # */ - - (void) expression (expressionP); - - if (expressionP->X_op != O_constant) - as_bad (_("Invalid expression after # number\n")); - } - - return; -#if 0 - else if (input_line_pointer[0] == '$' - && ISDIGIT ((unsigned char) input_line_pointer[1])) - { - long lab; - char *name; - symbolS *sym; - - /* This is a local label. */ - ++input_line_pointer; - lab = (long) get_absolute_expression (); - if (dollar_label_defined (lab)) - { - name = dollar_label_name (lab, 0); - sym = symbol_find (name); - } - else - { - name = dollar_label_name (lab, 1); - sym = symbol_find_or_make (name); - } - - expressionP->X_op = O_symbol; - expressionP->X_add_symbol = sym; - expressionP->X_add_number = 0; - } -#endif -} - -/* Round up a section size to the appropriate boundary. */ - -valueT -md_section_align (segment, size) - segT segment ATTRIBUTE_UNUSED; - valueT size; -{ - /* Byte alignment is fine. */ - return size; -} - -/* Exactly what point is a PC-relative offset relative TO? - On the 29000, they're relative to the address of the instruction, - which we have set up as the address of the fixup too. */ - -long -md_pcrel_from (fixP) - fixS* fixP; -{ - return 4 + fixP->fx_where + fixP->fx_frag->fr_address; -} - -/* From cgen.c: */ - -#if 0 -static short -tc_bfd_fix2rtype (fixP) - fixS* fixP; -{ -#if 0 - if (fixP->fx_bsr) - abort (); -#endif - - if (fixP->fx_pcrel == 0 && fixP->fx_size == 4) - return BFD_RELOC_32; - - if (fixP->fx_pcrel != 0 && fixP->fx_size == 4) - return BFD_RELOC_26_PCREL; - - abort (); - - return 0; -} -#endif - -/* Translate internal representation of relocation info to BFD target - format. - FIXME: To what extent can we get all relevant targets to use this? - The above FIXME is from a29k, but I think it is also needed here. */ - -arelent * -tc_gen_reloc (section, fixP) - asection *section ATTRIBUTE_UNUSED; - fixS *fixP; -{ - arelent * reloc; - - reloc = (arelent *) xmalloc (sizeof (arelent)); - reloc->howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type); - - if (reloc->howto == (reloc_howto_type *) NULL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - "internal error: can't export reloc type %d (`%s')", - fixP->fx_r_type, - bfd_get_reloc_code_name (fixP->fx_r_type)); - return NULL; - } - - assert (!fixP->fx_pcrel == !reloc->howto->pc_relative); - - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy); - reloc->address = fixP->fx_frag->fr_address + fixP->fx_where; - - if (fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - reloc->address = fixP->fx_offset; - reloc->addend = 0; - - return reloc; -} - -extern void pop_insert PARAMS ((const pseudo_typeS *)); - -void -dlx_pop_insert () -{ - pop_insert (dlx_pseudo_table); - return ; -} diff --git a/gas/config/tc-dlx.h b/gas/config/tc-dlx.h deleted file mode 100644 index 9aab0d2d4..000000000 --- a/gas/config/tc-dlx.h +++ /dev/null @@ -1,94 +0,0 @@ -/* tc-dlx.h -- Assemble for the DLX - Copyright 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Initially created by Kuang Hwa Lin, 3/20/2002. */ - -#define TC_DLX - -#ifndef BFD_ASSEMBLER - #error DLX support requires BFD_ASSEMBLER -#endif - -#ifndef __BFD_H_SEEN__ -#include "bfd.h" -#endif - -/* The target BFD architecture. */ -#define TARGET_ARCH bfd_arch_dlx -#define TARGET_FORMAT "elf32-dlx" -#define TARGET_BYTES_BIG_ENDIAN 1 - -#define WORKING_DOT_WORD - -#define LEX_DOLLAR 1 - -/* #define md_operand(x) */ -extern void dlx_pop_insert PARAMS ((void)); -extern int set_dlx_skip_hi16_flag PARAMS ((int)); - -#define md_pop_insert() dlx_pop_insert () - -#define md_convert_frag(b,s,f) as_fatal ("convert_frag called\n") -#define md_estimate_size_before_relax(f,s) \ - (as_fatal ("estimate_size_before_relax called"),1) - -#define tc_unrecognized_line(c) dlx_unrecognized_line (c) - -extern int dlx_unrecognized_line PARAMS ((int)); - -#define tc_headers_hook(a) ; /* not used */ -#define tc_headers_hook(a) ; /* not used */ -#define tc_crawl_symbol_chain(a) ; /* not used */ -#define tc_coff_symbol_emit_hook(a) ; /* not used */ - -#define AOUT_MACHTYPE 101 -#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr) -#define BFD_ARCH bfd_arch_dlx -#define COFF_MAGIC DLXMAGIC -/* Should the reloc be output ? - on the 29k, this is true only if there is a symbol attached. - on the h8, this is always true, since no fixup is done - on dlx, I have no idea!! but lets keep it here just for fun. -*/ -#define TC_COUNT_RELOC(x) (x->fx_addsy) -#define TC_CONS_RELOC BFD_RELOC_32_PCREL - -/* No shared lib support, so we don't need to ensure externally - visible symbols can be overridden. */ -#define EXTERN_FORCE_RELOC 0 - -#define tc_fix_adjustable(FIX) md_dlx_fix_adjustable (FIX) -extern bfd_boolean md_dlx_fix_adjustable PARAMS ((struct fix *)); - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -#define NEED_FX_R_TYPE - -/* Zero Based Segment?? sound very dangerous to me! */ -#define ZERO_BASED_SEGMENTS - -/* Permit temporary numeric labels. */ -#define LOCAL_LABELS_FB 1 - -#undef LOCAL_LABELS_DOLLAR -#define LOCAL_LABELS_DOLLAR 0 - -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ diff --git a/gas/config/tc-fr30.c b/gas/config/tc-fr30.c deleted file mode 100644 index b47903e44..000000000 --- a/gas/config/tc-fr30.c +++ /dev/null @@ -1,640 +0,0 @@ -/* tc-fr30.c -- Assembler for the Fujitsu FR30. - Copyright 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "symcat.h" -#include "opcodes/fr30-desc.h" -#include "opcodes/fr30-opc.h" -#include "cgen.h" - -/* Structure to hold all of the different components describing - an individual instruction. */ -typedef struct -{ - const CGEN_INSN * insn; - const CGEN_INSN * orig_insn; - CGEN_FIELDS fields; -#if CGEN_INT_INSN_P - CGEN_INSN_INT buffer [1]; -#define INSN_VALUE(buf) (*(buf)) -#else - unsigned char buffer [CGEN_MAX_INSN_SIZE]; -#define INSN_VALUE(buf) (buf) -#endif - char * addr; - fragS * frag; - int num_fixups; - fixS * fixups [GAS_CGEN_MAX_FIXUPS]; - int indices [MAX_OPERAND_INSTANCES]; -} -fr30_insn; - -const char comment_chars[] = ";"; -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = "|"; -const char EXP_CHARS[] = "eE"; -const char FLT_CHARS[] = "dD"; - -#define FR30_SHORTOPTS "" -const char * md_shortopts = FR30_SHORTOPTS; - -struct option md_longopts[] = -{ - {NULL, no_argument, NULL, 0} -}; -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (c, arg) - int c ATTRIBUTE_UNUSED; - char *arg ATTRIBUTE_UNUSED; -{ - switch (c) - { - default: - return 0; - } - return 1; -} - -void -md_show_usage (stream) - FILE * stream; -{ - fprintf (stream, _(" FR30 specific command line options:\n")); -} - -/* The target specific pseudo-ops which we support. */ -const pseudo_typeS md_pseudo_table[] = -{ - { "word", cons, 4 }, - { NULL, NULL, 0 } -}; - - -void -md_begin () -{ - /* Initialize the `cgen' interface. */ - - /* Set the machine number and endian. */ - gas_cgen_cpu_desc = fr30_cgen_cpu_open (CGEN_CPU_OPEN_MACHS, 0, - CGEN_CPU_OPEN_ENDIAN, - CGEN_ENDIAN_BIG, - CGEN_CPU_OPEN_END); - fr30_cgen_init_asm (gas_cgen_cpu_desc); - - /* This is a callback from cgen to gas to parse operands. */ - cgen_set_parse_operand_fn (gas_cgen_cpu_desc, gas_cgen_parse_operand); -} - -void -md_assemble (str) - char *str; -{ - static int last_insn_had_delay_slot = 0; - fr30_insn insn; - char *errmsg; - - /* Initialize GAS's cgen interface for a new instruction. */ - gas_cgen_init_parse (); - - insn.insn = fr30_cgen_assemble_insn - (gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, & errmsg); - - if (!insn.insn) - { - as_bad (errmsg); - return; - } - - /* Doesn't really matter what we pass for RELAX_P here. */ - gas_cgen_finish_insn (insn.insn, insn.buffer, - CGEN_FIELDS_BITSIZE (& insn.fields), 1, NULL); - - /* Warn about invalid insns in delay slots. */ - if (last_insn_had_delay_slot - && CGEN_INSN_ATTR_VALUE (insn.insn, CGEN_INSN_NOT_IN_DELAY_SLOT)) - as_warn (_("Instruction %s not allowed in a delay slot."), - CGEN_INSN_NAME (insn.insn)); - - last_insn_had_delay_slot - = CGEN_INSN_ATTR_VALUE (insn.insn, CGEN_INSN_DELAY_SLOT); -} - -/* The syntax in the manual says constants begin with '#'. - We just ignore it. */ - -void -md_operand (expressionP) - expressionS * expressionP; -{ - if (* input_line_pointer == '#') - { - input_line_pointer ++; - expression (expressionP); - } -} - -valueT -md_section_align (segment, size) - segT segment; - valueT size; -{ - int align = bfd_get_section_alignment (stdoutput, segment); - return ((size + (1 << align) - 1) & (-1 << align)); -} - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Interface to relax_segment. */ - -/* FIXME: Build table by hand, get it working, then machine generate. */ - -const relax_typeS md_relax_table[] = -{ -/* The fields are: - 1) most positive reach of this state, - 2) most negative reach of this state, - 3) how many bytes this mode will add to the size of the current frag - 4) which index into the table to try if we can't fit into this one. */ - - /* The first entry must be unused because an `rlx_more' value of zero ends - each list. */ - {1, 1, 0, 0}, - - /* The displacement used by GAS is from the end of the 2 byte insn, - so we subtract 2 from the following. */ - /* 16 bit insn, 8 bit disp -> 10 bit range. - This doesn't handle a branch in the right slot at the border: - the "& -4" isn't taken into account. It's not important enough to - complicate things over it, so we subtract an extra 2 (or + 2 in -ve - case). */ - {511 - 2 - 2, -512 - 2 + 2, 0, 2 }, - /* 32 bit insn, 24 bit disp -> 26 bit range. */ - {0x2000000 - 1 - 2, -0x2000000 - 2, 2, 0 }, - /* Same thing, but with leading nop for alignment. */ - {0x2000000 - 1 - 2, -0x2000000 - 2, 4, 0 } -}; - -#if 0 -long -fr30_relax_frag (segment, fragP, stretch) - segT segment; - fragS * fragP; - long stretch; -{ - /* Address of branch insn. */ - long address = fragP->fr_address + fragP->fr_fix - 2; - long growth = 0; - - /* Keep 32 bit insns aligned on 32 bit boundaries. */ - if (fragP->fr_subtype == 2) - { - if ((address & 3) != 0) - { - fragP->fr_subtype = 3; - growth = 2; - } - } - else if (fragP->fr_subtype == 3) - { - if ((address & 3) == 0) - { - fragP->fr_subtype = 2; - growth = -2; - } - } - else - { - growth = relax_frag (segment, fragP, stretch); - - /* Long jump on odd halfword boundary? */ - if (fragP->fr_subtype == 2 && (address & 3) != 0) - { - fragP->fr_subtype = 3; - growth += 2; - } - } - - return growth; -} -#endif - -/* Return an initial guess of the length by which a fragment must grow to - hold a branch to reach its destination. - Also updates fr_type/fr_subtype as necessary. - - Called just before doing relaxation. - Any symbol that is now undefined will not become defined. - The guess for fr_var is ACTUALLY the growth beyond fr_fix. - Whatever we do to grow fr_fix or fr_var contributes to our returned value. - Although it may not be explicit in the frag, pretend fr_var starts with a - 0 value. */ - -int -md_estimate_size_before_relax (fragP, segment) - fragS * fragP; - segT segment; -{ - /* The only thing we have to handle here are symbols outside of the - current segment. They may be undefined or in a different segment in - which case linker scripts may place them anywhere. - However, we can't finish the fragment here and emit the reloc as insn - alignment requirements may move the insn about. */ - - if (S_GET_SEGMENT (fragP->fr_symbol) != segment) - { -#if 0 - int old_fr_fix = fragP->fr_fix; -#endif - - /* The symbol is undefined in this segment. - Change the relaxation subtype to the max allowable and leave - all further handling to md_convert_frag. */ - fragP->fr_subtype = 2; - -#if 0 /* Can't use this, but leave in for illustration. */ - /* Change 16 bit insn to 32 bit insn. */ - fragP->fr_opcode[0] |= 0x80; - - /* Increase known (fixed) size of fragment. */ - fragP->fr_fix += 2; - - /* Create a relocation for it. */ - fix_new (fragP, old_fr_fix, 4, - fragP->fr_symbol, - fragP->fr_offset, 1 /* pcrel */, - /* FIXME: Can't use a real BFD reloc here. - gas_cgen_md_apply_fix3 can't handle it. */ - BFD_RELOC_FR30_26_PCREL); - - /* Mark this fragment as finished. */ - frag_wane (fragP); - return fragP->fr_fix - old_fr_fix; -#else - { - const CGEN_INSN * insn; - int i; - - /* Update the recorded insn. - Fortunately we don't have to look very far. - FIXME: Change this to record in the instruction the next higher - relaxable insn to use. */ - for (i = 0, insn = fragP->fr_cgen.insn; i < 4; i++, insn++) - { - if ((strcmp (CGEN_INSN_MNEMONIC (insn), - CGEN_INSN_MNEMONIC (fragP->fr_cgen.insn)) - == 0) - && CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXED)) - break; - } - if (i == 4) - abort (); - - fragP->fr_cgen.insn = insn; - return 2; - } -#endif - } - - /* Return the size of the variable part of the frag. */ - return md_relax_table[fragP->fr_subtype].rlx_length; -} - -/* *fragP has been relaxed to its final size, and now needs to have - the bytes inside it modified to conform to the new size. - - Called after relaxation is finished. - fragP->fr_type == rs_machine_dependent. - fragP->fr_subtype is the subtype of what the address relaxed to. */ - -void -md_convert_frag (abfd, sec, fragP) - bfd *abfd ATTRIBUTE_UNUSED; - segT sec ATTRIBUTE_UNUSED; - fragS *fragP ATTRIBUTE_UNUSED; -{ -#if 0 - char * opcode; - char * displacement; - int target_address; - int opcode_address; - int extension; - int addend; - - opcode = fragP->fr_opcode; - - /* Address opcode resides at in file space. */ - opcode_address = fragP->fr_address + fragP->fr_fix - 2; - - switch (fragP->fr_subtype) - { - case 1 : - extension = 0; - displacement = & opcode[1]; - break; - case 2 : - opcode[0] |= 0x80; - extension = 2; - displacement = & opcode[1]; - break; - case 3 : - opcode[2] = opcode[0] | 0x80; - md_number_to_chars (opcode, PAR_NOP_INSN, 2); - opcode_address += 2; - extension = 4; - displacement = & opcode[3]; - break; - default : - abort (); - } - - if (S_GET_SEGMENT (fragP->fr_symbol) != sec) - { - /* symbol must be resolved by linker */ - if (fragP->fr_offset & 3) - as_warn (_("Addend to unresolved symbol not on word boundary.")); - addend = fragP->fr_offset >> 2; - } - else - { - /* Address we want to reach in file space. */ - target_address = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset; - addend = (target_address - (opcode_address & -4)) >> 2; - } - - /* Create a relocation for symbols that must be resolved by the linker. - Otherwise output the completed insn. */ - - if (S_GET_SEGMENT (fragP->fr_symbol) != sec) - { - assert (fragP->fr_subtype != 1); - assert (fragP->fr_cgen.insn != 0); - gas_cgen_record_fixup (fragP, - /* Offset of branch insn in frag. */ - fragP->fr_fix + extension - 4, - fragP->fr_cgen.insn, - 4 /*length*/, - /* FIXME: quick hack */ -#if 0 - CGEN_OPERAND_ENTRY (fragP->fr_cgen.opindex), -#else - CGEN_OPERAND_ENTRY (FR30_OPERAND_DISP24), -#endif - fragP->fr_cgen.opinfo, - fragP->fr_symbol, fragP->fr_offset); - } - -#define SIZE_FROM_RELAX_STATE(n) ((n) == 1 ? 1 : 3) - - md_number_to_chars (displacement, (valueT) addend, - SIZE_FROM_RELAX_STATE (fragP->fr_subtype)); - - fragP->fr_fix += extension; -#endif -} - -/* Functions concerning relocs. */ - -/* The location from which a PC relative jump should be calculated, - given a PC relative reloc. */ - -long -md_pcrel_from_section (fixP, sec) - fixS * fixP; - segT sec; -{ - if (fixP->fx_addsy != (symbolS *) NULL - && (! S_IS_DEFINED (fixP->fx_addsy) - || S_GET_SEGMENT (fixP->fx_addsy) != sec)) - { - /* The symbol is undefined (or is defined but not in this section). - Let the linker figure it out. */ - return 0; - } - - return (fixP->fx_frag->fr_address + fixP->fx_where) & ~1; -} - -/* Return the bfd reloc type for OPERAND of INSN at fixup FIXP. - Returns BFD_RELOC_NONE if no reloc type can be found. - *FIXP may be modified if desired. */ - -bfd_reloc_code_real_type -md_cgen_lookup_reloc (insn, operand, fixP) - const CGEN_INSN *insn ATTRIBUTE_UNUSED; - const CGEN_OPERAND *operand; - fixS *fixP; -{ - switch (operand->type) - { - case FR30_OPERAND_LABEL9: fixP->fx_pcrel = 1; return BFD_RELOC_FR30_9_PCREL; - case FR30_OPERAND_LABEL12: fixP->fx_pcrel = 1; return BFD_RELOC_FR30_12_PCREL; - case FR30_OPERAND_DISP10: return BFD_RELOC_FR30_10_IN_8; - case FR30_OPERAND_DISP9: return BFD_RELOC_FR30_9_IN_8; - case FR30_OPERAND_DISP8: return BFD_RELOC_FR30_8_IN_8; - case FR30_OPERAND_UDISP6: return BFD_RELOC_FR30_6_IN_4; - case FR30_OPERAND_I8: return BFD_RELOC_8; - case FR30_OPERAND_I32: return BFD_RELOC_FR30_48; - case FR30_OPERAND_I20: return BFD_RELOC_FR30_20; - default : /* avoid -Wall warning */ - break; - } - - return BFD_RELOC_NONE; -} - -/* Write a value out to the object file, using the appropriate endianness. */ - -void -md_number_to_chars (buf, val, n) - char * buf; - valueT val; - int n; -{ - number_to_chars_bigendian (buf, val, n); -} - -/* Turn a string in input_line_pointer into a floating point constant of type - type, and store the appropriate bytes in *litP. The number of LITTLENUMS - emitted is stored in *sizeP . An error message is returned, or NULL on OK. -*/ - -/* Equal to MAX_PRECISION in atof-ieee.c */ -#define MAX_LITTLENUMS 6 - -char * -md_atof (type, litP, sizeP) - char type; - char * litP; - int * sizeP; -{ - int i; - int prec; - LITTLENUM_TYPE words [MAX_LITTLENUMS]; - char * t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - /* FIXME: Some targets allow other format chars for bigger sizes here. */ - - default: - * sizeP = 0; - return _("Bad call to md_atof()"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - * sizeP = prec * sizeof (LITTLENUM_TYPE); - - for (i = 0; i < prec; i++) - { - md_number_to_chars (litP, (valueT) words[i], - sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return 0; -} - -/* Worker function for fr30_is_colon_insn(). */ -static char restore_colon PARAMS ((int)); - -static char -restore_colon (advance_i_l_p_by) - int advance_i_l_p_by; -{ - char c; - - /* Restore the colon, and advance input_line_pointer to - the end of the new symbol. */ - * input_line_pointer = ':'; - input_line_pointer += advance_i_l_p_by; - c = * input_line_pointer; - * input_line_pointer = 0; - - return c; -} - -/* Determines if the symbol starting at START and ending in - a colon that was at the location pointed to by INPUT_LINE_POINTER - (but which has now been replaced bu a NUL) is in fact an - LDI:8, LDI:20, LDI:32, CALL:D. JMP:D, RET:D or Bcc:D instruction. - If it is, then it restores the colon, advances INPUT_LINE_POINTER - to the real end of the instruction/symbol, and returns the character - that really terminated the symbol. Otherwise it returns 0. */ -char -fr30_is_colon_insn (start) - char * start; -{ - char * i_l_p = input_line_pointer; - - /* Check to see if the symbol parsed so far is 'ldi' */ - if ( (start[0] != 'l' && start[0] != 'L') - || (start[1] != 'd' && start[1] != 'D') - || (start[2] != 'i' && start[2] != 'I') - || start[3] != 0) - { - /* Nope - check to see a 'd' follows the colon. */ - if ( (i_l_p[1] == 'd' || i_l_p[1] == 'D') - && (i_l_p[2] == ' ' || i_l_p[2] == '\t' || i_l_p[2] == '\n')) - { - /* Yup - it might be delay slot instruction. */ - int i; - static char * delay_insns [] = - { - "call", "jmp", "ret", "bra", "bno", - "beq", "bne", "bc", "bnc", "bn", - "bp", "bv", "bnv", "blt", "bge", - "ble", "bgt", "bls", "bhi" - }; - - for (i = sizeof (delay_insns) / sizeof (delay_insns[0]); i--;) - { - char * insn = delay_insns[i]; - int len = strlen (insn); - - if (start [len] != 0) - continue; - - while (len --) - if (TOLOWER (start [len]) != insn [len]) - break; - - if (len == -1) - return restore_colon (1); - } - } - - /* Nope - it is a normal label. */ - return 0; - } - - /* Check to see if the text following the colon is '8' */ - if (i_l_p[1] == '8' && (i_l_p[2] == ' ' || i_l_p[2] == '\t')) - return restore_colon (2); - - /* Check to see if the text following the colon is '20' */ - else if (i_l_p[1] == '2' && i_l_p[2] =='0' && (i_l_p[3] == ' ' || i_l_p[3] == '\t')) - return restore_colon (3); - - /* Check to see if the text following the colon is '32' */ - else if (i_l_p[1] == '3' && i_l_p[2] =='2' && (i_l_p[3] == ' ' || i_l_p[3] == '\t')) - return restore_colon (3); - - return 0; -} - -bfd_boolean -fr30_fix_adjustable (fixP) - fixS * fixP; -{ - /* We need the symbol name for the VTABLE entries */ - if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT - || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - return 0; - - return 1; -} diff --git a/gas/config/tc-fr30.h b/gas/config/tc-fr30.h deleted file mode 100644 index 8c1166b90..000000000 --- a/gas/config/tc-fr30.h +++ /dev/null @@ -1,75 +0,0 @@ -/* tc-fr30.h -- Header file for tc-fr30.c. - Copyright 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#define TC_FR30 - -#ifndef BFD_ASSEMBLER -/* leading space so will compile with cc */ - #error FR30 support requires BFD_ASSEMBLER -#endif - -#define LISTING_HEADER "FR30 GAS " - -/* The target BFD architecture. */ -#define TARGET_ARCH bfd_arch_fr30 - -#define TARGET_FORMAT "elf32-fr30" - -#define TARGET_BYTES_BIG_ENDIAN 1 - -/* Permit temporary numeric labels. */ -#define LOCAL_LABELS_FB 1 - -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ - -/* We don't need to handle .word strangely. */ -#define WORKING_DOT_WORD - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -#define md_apply_fix3 gas_cgen_md_apply_fix3 - -#define tc_fix_adjustable(FIX) fr30_fix_adjustable (FIX) -struct fix; -extern bfd_boolean fr30_fix_adjustable PARAMS ((struct fix *)); - -#define tc_gen_reloc gas_cgen_tc_gen_reloc - -/* Call md_pcrel_from_section(), not md_pcrel_from(). */ -#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC) -extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); - -/* For 8 vs 16 vs 32 bit branch selection. */ -#define TC_GENERIC_RELAX_TABLE md_relax_table -extern const struct relax_type md_relax_table[]; - -/* We need a special version of the TC_START_LABEL macro so that we - allow the LDI:8, LDI:20, LDI:32 and delay slot instructions to be - parsed as such. Note - in a HORRIBLE HACK, we make use of the - knowledge that this marco is only ever evaluated in one place - (read_a_source_file in read.c) where we can access the local - variable 's' - the start of the symbol that was terminated by - 'character'. Also we need to be able to change the contents of - the local variable 'c' which is passed to this macro as 'character'. */ -#define TC_START_LABEL(character, i_l_p) \ - ((character) != ':' ? 0 : (character = fr30_is_colon_insn (s)) ? 0 : ((character = ':'), 1)) -extern char fr30_is_colon_insn PARAMS ((char *)); diff --git a/gas/config/tc-frv.c b/gas/config/tc-frv.c deleted file mode 100644 index 96e630bf2..000000000 --- a/gas/config/tc-frv.c +++ /dev/null @@ -1,1754 +0,0 @@ -/* tc-frv.c -- Assembler for the Fujitsu FRV. - Copyright 2002, 2003 Free Software Foundation. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include "as.h" -#include "subsegs.h" -#include "symcat.h" -#include "opcodes/frv-desc.h" -#include "opcodes/frv-opc.h" -#include "cgen.h" -#include "libbfd.h" -#include "elf/common.h" -#include "elf/frv.h" - -/* Structure to hold all of the different components describing - an individual instruction. */ -typedef struct -{ - const CGEN_INSN * insn; - const CGEN_INSN * orig_insn; - CGEN_FIELDS fields; -#if CGEN_INT_INSN_P - CGEN_INSN_INT buffer [1]; -#define INSN_VALUE(buf) (*(buf)) -#else - unsigned char buffer [CGEN_MAX_INSN_SIZE]; -#define INSN_VALUE(buf) (buf) -#endif - char * addr; - fragS * frag; - int num_fixups; - fixS * fixups [GAS_CGEN_MAX_FIXUPS]; - int indices [MAX_OPERAND_INSTANCES]; -} -frv_insn; - -enum vliw_insn_type -{ - VLIW_GENERIC_TYPE, /* Don't care about this insn. */ - VLIW_BRANCH_TYPE, /* A Branch. */ - VLIW_LABEL_TYPE, /* A Label. */ - VLIW_NOP_TYPE, /* A NOP. */ - VLIW_BRANCH_HAS_NOPS /* A Branch that requires NOPS. */ -}; - -/* We're going to use these in the fr_subtype field to mark - whether to keep inserted nops. */ - -#define NOP_KEEP 1 /* Keep these NOPS. */ -#define NOP_DELETE 2 /* Delete these NOPS. */ - -#define DO_COUNT TRUE -#define DONT_COUNT FALSE - -/* A list of insns within a VLIW insn. */ -struct vliw_insn_list -{ - /* The type of this insn. */ - enum vliw_insn_type type; - - /* The corresponding gas insn information. */ - const CGEN_INSN *insn; - - /* For branches and labels, the symbol that is referenced. */ - symbolS *sym; - - /* For branches, the frag containing the single nop that was generated. */ - fragS *snop_frag; - - /* For branches, the frag containing the double nop that was generated. */ - fragS *dnop_frag; - - /* Pointer to raw data for this insn. */ - char *address; - - /* Next insn in list. */ - struct vliw_insn_list *next; -}; - -static struct vliw_insn_list single_nop_insn = { - VLIW_NOP_TYPE, NULL, NULL, NULL, NULL, NULL, NULL }; - -static struct vliw_insn_list double_nop_insn = { - VLIW_NOP_TYPE, NULL, NULL, NULL, NULL, NULL, NULL }; - -struct vliw_chain -{ - int num; - int insn_count; - struct vliw_insn_list *insn_list; - struct vliw_chain *next; -}; - -static struct vliw_chain *vliw_chain_top; -static struct vliw_chain *current_vliw_chain; -static struct vliw_chain *previous_vliw_chain; -static struct vliw_insn_list *current_vliw_insn; - -const char comment_chars[] = ";"; -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = "!"; -const char EXP_CHARS[] = "eE"; -const char FLT_CHARS[] = "dD"; - -static FRV_VLIW vliw; - -/* Default machine */ - -#ifdef DEFAULT_CPU_FRV -#define DEFAULT_MACHINE bfd_mach_frv -#define DEFAULT_FLAGS EF_FRV_CPU_GENERIC - -#else -#ifdef DEFAULT_CPU_FR300 -#define DEFAULT_MACHINE bfd_mach_fr300 -#define DEFAULT_FLAGS EF_FRV_CPU_FR300 - -#else -#ifdef DEFAULT_CPU_SIMPLE -#define DEFAULT_MACHINE bfd_mach_frvsimple -#define DEFAULT_FLAGS EF_FRV_CPU_SIMPLE - -#else -#ifdef DEFAULT_CPU_TOMCAT -#define DEFAULT_MACHINE bfd_mach_frvtomcat -#define DEFAULT_FLAGS EF_FRV_CPU_TOMCAT - -#else -#ifdef DEFAULT_CPU_FR400 -#define DEFAULT_MACHINE bfd_mach_fr400 -#define DEFAULT_FLAGS EF_FRV_CPU_FR400 - -#else -#ifdef DEFAULT_CPU_FR550 -#define DEFAULT_MACHINE bfd_mach_fr550 -#define DEFAULT_FLAGS EF_FRV_CPU_FR550 - -#else -#define DEFAULT_MACHINE bfd_mach_fr500 -#define DEFAULT_FLAGS EF_FRV_CPU_FR500 -#endif -#endif -#endif -#endif -#endif -#endif - -static unsigned long frv_mach = bfd_mach_frv; - -/* Flags to set in the elf header */ -static flagword frv_flags = DEFAULT_FLAGS; - -static int frv_user_set_flags_p = 0; -static int frv_pic_p = 0; -static const char *frv_pic_flag = (const char *)0; - -/* Print tomcat-specific debugging info. */ -static int tomcat_debug = 0; - -/* Tomcat-specific NOP statistics. */ -static int tomcat_stats = 0; -static int tomcat_doubles = 0; -static int tomcat_singles = 0; - -/* Forward reference to static functions */ -static void frv_set_flags PARAMS ((int)); -static void frv_pic_ptr PARAMS ((int)); -static void frv_frob_file_section PARAMS ((bfd *, asection *, PTR)); - -/* The target specific pseudo-ops which we support. */ -const pseudo_typeS md_pseudo_table[] = -{ - { "eflags", frv_set_flags, 0 }, - { "word", cons, 4 }, - { "picptr", frv_pic_ptr, 4 }, - { NULL, NULL, 0 } -}; - - -#define FRV_SHORTOPTS "G:" -const char * md_shortopts = FRV_SHORTOPTS; - -#define OPTION_GPR_32 (OPTION_MD_BASE) -#define OPTION_GPR_64 (OPTION_MD_BASE + 1) -#define OPTION_FPR_32 (OPTION_MD_BASE + 2) -#define OPTION_FPR_64 (OPTION_MD_BASE + 3) -#define OPTION_SOFT_FLOAT (OPTION_MD_BASE + 4) -#define OPTION_DWORD_YES (OPTION_MD_BASE + 5) -#define OPTION_DWORD_NO (OPTION_MD_BASE + 6) -#define OPTION_DOUBLE (OPTION_MD_BASE + 7) -#define OPTION_NO_DOUBLE (OPTION_MD_BASE + 8) -#define OPTION_MEDIA (OPTION_MD_BASE + 9) -#define OPTION_NO_MEDIA (OPTION_MD_BASE + 10) -#define OPTION_CPU (OPTION_MD_BASE + 11) -#define OPTION_PIC (OPTION_MD_BASE + 12) -#define OPTION_BIGPIC (OPTION_MD_BASE + 13) -#define OPTION_LIBPIC (OPTION_MD_BASE + 14) -#define OPTION_MULADD (OPTION_MD_BASE + 15) -#define OPTION_NO_MULADD (OPTION_MD_BASE + 16) -#define OPTION_TOMCAT_DEBUG (OPTION_MD_BASE + 17) -#define OPTION_TOMCAT_STATS (OPTION_MD_BASE + 18) -#define OPTION_PACK (OPTION_MD_BASE + 19) -#define OPTION_NO_PACK (OPTION_MD_BASE + 20) -#define OPTION_FDPIC (OPTION_MD_BASE + 21) - -struct option md_longopts[] = -{ - { "mgpr-32", no_argument, NULL, OPTION_GPR_32 }, - { "mgpr-64", no_argument, NULL, OPTION_GPR_64 }, - { "mfpr-32", no_argument, NULL, OPTION_FPR_32 }, - { "mfpr-64", no_argument, NULL, OPTION_FPR_64 }, - { "mhard-float", no_argument, NULL, OPTION_FPR_64 }, - { "msoft-float", no_argument, NULL, OPTION_SOFT_FLOAT }, - { "mdword", no_argument, NULL, OPTION_DWORD_YES }, - { "mno-dword", no_argument, NULL, OPTION_DWORD_NO }, - { "mdouble", no_argument, NULL, OPTION_DOUBLE }, - { "mno-double", no_argument, NULL, OPTION_NO_DOUBLE }, - { "mmedia", no_argument, NULL, OPTION_MEDIA }, - { "mno-media", no_argument, NULL, OPTION_NO_MEDIA }, - { "mcpu", required_argument, NULL, OPTION_CPU }, - { "mpic", no_argument, NULL, OPTION_PIC }, - { "mPIC", no_argument, NULL, OPTION_BIGPIC }, - { "mlibrary-pic", no_argument, NULL, OPTION_LIBPIC }, - { "mmuladd", no_argument, NULL, OPTION_MULADD }, - { "mno-muladd", no_argument, NULL, OPTION_NO_MULADD }, - { "mtomcat-debug", no_argument, NULL, OPTION_TOMCAT_DEBUG }, - { "mtomcat-stats", no_argument, NULL, OPTION_TOMCAT_STATS }, - { "mpack", no_argument, NULL, OPTION_PACK }, - { "mno-pack", no_argument, NULL, OPTION_NO_PACK }, - { "mfdpic", no_argument, NULL, OPTION_FDPIC }, - { NULL, no_argument, NULL, 0 }, -}; - -size_t md_longopts_size = sizeof (md_longopts); - -/* What value to give to bfd_set_gp_size. */ -static int g_switch_value = 8; - -int -md_parse_option (c, arg) - int c; - char * arg; -{ - switch (c) - { - default: - return 0; - - case 'G': - g_switch_value = atoi (arg); - if (! g_switch_value) - frv_flags |= EF_FRV_G0; - break; - - case OPTION_GPR_32: - frv_flags = (frv_flags & ~EF_FRV_GPR_MASK) | EF_FRV_GPR_32; - break; - - case OPTION_GPR_64: - frv_flags = (frv_flags & ~EF_FRV_GPR_MASK) | EF_FRV_GPR_64; - break; - - case OPTION_FPR_32: - frv_flags = (frv_flags & ~EF_FRV_FPR_MASK) | EF_FRV_FPR_32; - break; - - case OPTION_FPR_64: - frv_flags = (frv_flags & ~EF_FRV_FPR_MASK) | EF_FRV_FPR_64; - break; - - case OPTION_SOFT_FLOAT: - frv_flags = (frv_flags & ~EF_FRV_FPR_MASK) | EF_FRV_FPR_NONE; - break; - - case OPTION_DWORD_YES: - frv_flags = (frv_flags & ~EF_FRV_DWORD_MASK) | EF_FRV_DWORD_YES; - break; - - case OPTION_DWORD_NO: - frv_flags = (frv_flags & ~EF_FRV_DWORD_MASK) | EF_FRV_DWORD_NO; - break; - - case OPTION_DOUBLE: - frv_flags |= EF_FRV_DOUBLE; - break; - - case OPTION_NO_DOUBLE: - frv_flags &= ~EF_FRV_DOUBLE; - break; - - case OPTION_MEDIA: - frv_flags |= EF_FRV_MEDIA; - break; - - case OPTION_NO_MEDIA: - frv_flags &= ~EF_FRV_MEDIA; - break; - - case OPTION_MULADD: - frv_flags |= EF_FRV_MULADD; - break; - - case OPTION_NO_MULADD: - frv_flags &= ~EF_FRV_MULADD; - break; - - case OPTION_PACK: - frv_flags &= ~EF_FRV_NOPACK; - break; - - case OPTION_NO_PACK: - frv_flags |= EF_FRV_NOPACK; - break; - - case OPTION_CPU: - { - char *p; - int cpu_flags = EF_FRV_CPU_GENERIC; - - /* Identify the processor type */ - p = arg; - if (strcmp (p, "frv") == 0) - { - cpu_flags = EF_FRV_CPU_GENERIC; - frv_mach = bfd_mach_frv; - } - - else if (strcmp (p, "fr500") == 0) - { - cpu_flags = EF_FRV_CPU_FR500; - frv_mach = bfd_mach_fr500; - } - - else if (strcmp (p, "fr550") == 0) - { - cpu_flags = EF_FRV_CPU_FR550; - frv_mach = bfd_mach_fr550; - } - - else if (strcmp (p, "fr400") == 0) - { - cpu_flags = EF_FRV_CPU_FR400; - frv_mach = bfd_mach_fr400; - } - - else if (strcmp (p, "fr300") == 0) - { - cpu_flags = EF_FRV_CPU_FR300; - frv_mach = bfd_mach_fr300; - } - - else if (strcmp (p, "simple") == 0) - { - cpu_flags = EF_FRV_CPU_SIMPLE; - frv_mach = bfd_mach_frvsimple; - frv_flags |= EF_FRV_NOPACK; - } - - else if (strcmp (p, "tomcat") == 0) - { - cpu_flags = EF_FRV_CPU_TOMCAT; - frv_mach = bfd_mach_frvtomcat; - } - - else - { - as_fatal ("Unknown cpu -mcpu=%s", arg); - return 0; - } - - frv_flags = (frv_flags & ~EF_FRV_CPU_MASK) | cpu_flags; - } - break; - - case OPTION_PIC: - frv_flags |= EF_FRV_PIC; - frv_pic_p = 1; - frv_pic_flag = "-fpic"; - break; - - case OPTION_BIGPIC: - frv_flags |= EF_FRV_BIGPIC; - frv_pic_p = 1; - frv_pic_flag = "-fPIC"; - break; - - case OPTION_LIBPIC: - frv_flags |= (EF_FRV_LIBPIC | EF_FRV_G0); - frv_pic_p = 1; - frv_pic_flag = "-mlibrary-pic"; - g_switch_value = 0; - break; - - case OPTION_FDPIC: - frv_flags |= EF_FRV_FDPIC; - frv_pic_flag = "-mfdpic"; - break; - - case OPTION_TOMCAT_DEBUG: - tomcat_debug = 1; - break; - - case OPTION_TOMCAT_STATS: - tomcat_stats = 1; - break; - } - - return 1; -} - -void -md_show_usage (stream) - FILE * stream; -{ - fprintf (stream, _("FRV specific command line options:\n")); - fprintf (stream, _("-G n Data >= n bytes is in small data area\n")); - fprintf (stream, _("-mgpr-32 Note 32 gprs are used\n")); - fprintf (stream, _("-mgpr-64 Note 64 gprs are used\n")); - fprintf (stream, _("-mfpr-32 Note 32 fprs are used\n")); - fprintf (stream, _("-mfpr-64 Note 64 fprs are used\n")); - fprintf (stream, _("-msoft-float Note software fp is used\n")); - fprintf (stream, _("-mdword Note stack is aligned to a 8 byte boundary\n")); - fprintf (stream, _("-mno-dword Note stack is aligned to a 4 byte boundary\n")); - fprintf (stream, _("-mdouble Note fp double insns are used\n")); - fprintf (stream, _("-mmedia Note media insns are used\n")); - fprintf (stream, _("-mmuladd Note multiply add/subtract insns are used\n")); - fprintf (stream, _("-mpack Note instructions are packed\n")); - fprintf (stream, _("-mno-pack Do not allow instructions to be packed\n")); - fprintf (stream, _("-mpic Note small position independent code\n")); - fprintf (stream, _("-mPIC Note large position independent code\n")); - fprintf (stream, _("-mlibrary-pic Compile library for large position indepedent code\n")); - fprintf (stream, _("-mcpu={fr500|fr550|fr400|fr300|frv|simple|tomcat}\n")); - fprintf (stream, _(" Record the cpu type\n")); - fprintf (stream, _("-mtomcat-stats Print out stats for tomcat workarounds\n")); - fprintf (stream, _("-mtomcat-debug Debug tomcat workarounds\n")); -} - - -void -md_begin () -{ - /* Initialize the `cgen' interface. */ - - /* Set the machine number and endian. */ - gas_cgen_cpu_desc = frv_cgen_cpu_open (CGEN_CPU_OPEN_MACHS, 0, - CGEN_CPU_OPEN_ENDIAN, - CGEN_ENDIAN_BIG, - CGEN_CPU_OPEN_END); - frv_cgen_init_asm (gas_cgen_cpu_desc); - - /* This is a callback from cgen to gas to parse operands. */ - cgen_set_parse_operand_fn (gas_cgen_cpu_desc, gas_cgen_parse_operand); - - /* Set the ELF flags if desired. */ - if (frv_flags) - bfd_set_private_flags (stdoutput, frv_flags); - - /* Set the machine type */ - bfd_default_set_arch_mach (stdoutput, bfd_arch_frv, frv_mach); - - /* Set up gp size so we can put local common items in .sbss */ - bfd_set_gp_size (stdoutput, g_switch_value); - - frv_vliw_reset (& vliw, frv_mach, frv_flags); -} - -int chain_num = 0; - -struct vliw_insn_list *frv_insert_vliw_insn PARAMS ((bfd_boolean)); - -struct vliw_insn_list * -frv_insert_vliw_insn (count) - bfd_boolean count; -{ - struct vliw_insn_list *vliw_insn_list_entry; - struct vliw_chain *vliw_chain_entry; - - if (current_vliw_chain == NULL) - { - vliw_chain_entry = (struct vliw_chain *) xmalloc (sizeof (struct vliw_chain)); - vliw_chain_entry->insn_count = 0; - vliw_chain_entry->insn_list = NULL; - vliw_chain_entry->next = NULL; - vliw_chain_entry->num = chain_num++; - - if (!vliw_chain_top) - vliw_chain_top = vliw_chain_entry; - current_vliw_chain = vliw_chain_entry; - if (previous_vliw_chain) - previous_vliw_chain->next = vliw_chain_entry; - } - - vliw_insn_list_entry = (struct vliw_insn_list *) xmalloc (sizeof (struct vliw_insn_list)); - vliw_insn_list_entry->type = VLIW_GENERIC_TYPE; - vliw_insn_list_entry->insn = NULL; - vliw_insn_list_entry->sym = NULL; - vliw_insn_list_entry->snop_frag = NULL; - vliw_insn_list_entry->dnop_frag = NULL; - vliw_insn_list_entry->next = NULL; - - if (count) - current_vliw_chain->insn_count++; - - if (current_vliw_insn) - current_vliw_insn->next = vliw_insn_list_entry; - current_vliw_insn = vliw_insn_list_entry; - - if (!current_vliw_chain->insn_list) - current_vliw_chain->insn_list = current_vliw_insn; - - return vliw_insn_list_entry; -} - - /* Identify the following cases: - - 1) A VLIW insn that contains both a branch and the branch destination. - This requires the insertion of two vliw instructions before the - branch. The first consists of two nops. The second consists of - a single nop. - - 2) A single instruction VLIW insn which is the destination of a branch - that is in the next VLIW insn. This requires the insertion of a vliw - insn containing two nops before the branch. - - 3) A double instruction VLIW insn which contains the destination of a - branch that is in the next VLIW insn. This requires the insertion of - a VLIW insn containing a single nop before the branch. - - 4) A single instruction VLIW insn which contains branch destination (x), - followed by a single instruction VLIW insn which does not contain - the branch to (x), followed by a VLIW insn which does contain the branch - to (x). This requires the insertion of a VLIW insn containing a single - nop before the VLIW instruction containing the branch. - - */ -#define FRV_IS_NOP(insn) (insn.buffer[0] == FRV_NOP_PACK || insn.buffer[0] == FRV_NOP_NOPACK) -#define FRV_NOP_PACK 0x00880000 /* ori.p gr0,0,gr0 */ -#define FRV_NOP_NOPACK 0x80880000 /* ori gr0,0,gr0 */ - -/* Check a vliw insn for an insn of type containing the sym passed in label_sym. */ - -static struct vliw_insn_list *frv_find_in_vliw - PARAMS ((enum vliw_insn_type, struct vliw_chain *, symbolS *)); - -static struct vliw_insn_list * -frv_find_in_vliw (vliw_insn_type, this_chain, label_sym) - enum vliw_insn_type vliw_insn_type; - struct vliw_chain *this_chain; - symbolS *label_sym; -{ - - struct vliw_insn_list *the_insn; - - if (!this_chain) - return NULL; - - for (the_insn = this_chain->insn_list; the_insn; the_insn = the_insn->next) - { - if (the_insn->type == vliw_insn_type - && the_insn->sym == label_sym) - return the_insn; - } - - return NULL; -} - -enum vliw_nop_type -{ - /* A Vliw insn containing a single nop insn. */ - VLIW_SINGLE_NOP, - - /* A Vliw insn containing two nop insns. */ - VLIW_DOUBLE_NOP, - - /* Two vliw insns. The first containing two nop insns. - The second contain a single nop insn. */ - VLIW_DOUBLE_THEN_SINGLE_NOP -}; - -static void frv_debug_tomcat PARAMS ((struct vliw_chain *)); - -static void -frv_debug_tomcat (start_chain) - struct vliw_chain *start_chain; -{ - struct vliw_chain *this_chain; - struct vliw_insn_list *this_insn; - int i = 1; - - for (this_chain = start_chain; this_chain; this_chain = this_chain->next, i++) - { - fprintf (stderr, "\nVliw Insn #%d, #insns: %d\n", i, this_chain->insn_count); - - for (this_insn = this_chain->insn_list; this_insn; this_insn = this_insn->next) - { - if (this_insn->type == VLIW_LABEL_TYPE) - fprintf (stderr, "Label Value: %d\n", (int) this_insn->sym); - else if (this_insn->type == VLIW_BRANCH_TYPE) - fprintf (stderr, "%s to %d\n", this_insn->insn->base->name, (int) this_insn->sym); - else if (this_insn->type == VLIW_BRANCH_HAS_NOPS) - fprintf (stderr, "nop'd %s to %d\n", this_insn->insn->base->name, (int) this_insn->sym); - else if (this_insn->type == VLIW_NOP_TYPE) - fprintf (stderr, "Nop\n"); - else - fprintf (stderr, " %s\n", this_insn->insn->base->name); - } - } -} - -static void frv_adjust_vliw_count PARAMS ((struct vliw_chain *)); - -static void -frv_adjust_vliw_count (this_chain) - struct vliw_chain *this_chain; -{ - struct vliw_insn_list *this_insn; - - this_chain->insn_count = 0; - - for (this_insn = this_chain->insn_list; - this_insn; - this_insn = this_insn->next) - { - if (this_insn->type != VLIW_LABEL_TYPE) - this_chain->insn_count++; - } - -} - -/* Insert the desired nop combination in the vliw chain before insert_before_insn. - Rechain the vliw insn. */ - -static struct vliw_chain *frv_tomcat_shuffle - PARAMS ((enum vliw_nop_type, struct vliw_chain *, struct vliw_insn_list *)); - -static struct vliw_chain * -frv_tomcat_shuffle (this_nop_type, vliw_to_split, insert_before_insn) - enum vliw_nop_type this_nop_type; - struct vliw_chain *vliw_to_split; - struct vliw_insn_list *insert_before_insn; -{ - - bfd_boolean pack_prev = FALSE; - struct vliw_chain *return_me = NULL; - struct vliw_insn_list *prev_insn = NULL; - struct vliw_insn_list *curr_insn = vliw_to_split->insn_list; - - struct vliw_chain *double_nop = (struct vliw_chain *) xmalloc (sizeof (struct vliw_chain)); - struct vliw_chain *single_nop = (struct vliw_chain *) xmalloc (sizeof (struct vliw_chain)); - struct vliw_chain *second_part = (struct vliw_chain *) xmalloc (sizeof (struct vliw_chain)); - struct vliw_chain *curr_vliw = vliw_chain_top; - struct vliw_chain *prev_vliw = NULL; - - while (curr_insn && curr_insn != insert_before_insn) - { - /* We can't set the packing bit on a label. If we have the case - label 1: - label 2: - label 3: - branch that needs nops - Then don't set pack bit later. */ - - if (curr_insn->type != VLIW_LABEL_TYPE) - pack_prev = TRUE; - prev_insn = curr_insn; - curr_insn = curr_insn->next; - } - - while (curr_vliw && curr_vliw != vliw_to_split) - { - prev_vliw = curr_vliw; - curr_vliw = curr_vliw->next; - } - - switch (this_nop_type) - { - case VLIW_SINGLE_NOP: - if (!prev_insn) - { - /* Branch is first, Insert the NOP prior to this vliw insn. */ - if (prev_vliw) - prev_vliw->next = single_nop; - else - vliw_chain_top = single_nop; - single_nop->next = vliw_to_split; - vliw_to_split->insn_list->type = VLIW_BRANCH_HAS_NOPS; - return_me = vliw_to_split; - } - else - { - /* Set the packing bit on the previous insn. */ - if (pack_prev) - { - unsigned char *buffer = prev_insn->address; - buffer[0] |= 0x80; - } - /* The branch is in the middle. Split this vliw insn into first - and second parts. Insert the NOP inbetween. */ - - second_part->insn_list = insert_before_insn; - second_part->insn_list->type = VLIW_BRANCH_HAS_NOPS; - second_part->next = vliw_to_split->next; - frv_adjust_vliw_count (second_part); - - single_nop->next = second_part; - - vliw_to_split->next = single_nop; - prev_insn->next = NULL; - - return_me = second_part; - frv_adjust_vliw_count (vliw_to_split); - } - break; - - case VLIW_DOUBLE_NOP: - if (!prev_insn) - { - /* Branch is first, Insert the NOP prior to this vliw insn. */ - if (prev_vliw) - prev_vliw->next = double_nop; - else - vliw_chain_top = double_nop; - - double_nop->next = vliw_to_split; - return_me = vliw_to_split; - vliw_to_split->insn_list->type = VLIW_BRANCH_HAS_NOPS; - } - else - { - /* Set the packing bit on the previous insn. */ - if (pack_prev) - { - unsigned char *buffer = prev_insn->address; - buffer[0] |= 0x80; - } - - /* The branch is in the middle. Split this vliw insn into first - and second parts. Insert the NOP inbetween. */ - second_part->insn_list = insert_before_insn; - second_part->insn_list->type = VLIW_BRANCH_HAS_NOPS; - second_part->next = vliw_to_split->next; - frv_adjust_vliw_count (second_part); - - double_nop->next = second_part; - - vliw_to_split->next = single_nop; - prev_insn->next = NULL; - frv_adjust_vliw_count (vliw_to_split); - - return_me = second_part; - } - break; - - case VLIW_DOUBLE_THEN_SINGLE_NOP: - double_nop->next = single_nop; - double_nop->insn_count = 2; - double_nop->insn_list = &double_nop_insn; - single_nop->insn_count = 1; - single_nop->insn_list = &single_nop_insn; - - if (!prev_insn) - { - /* The branch is the first insn in this vliw. Don't split the vliw. Insert - the nops prior to this vliw. */ - if (prev_vliw) - prev_vliw->next = double_nop; - else - vliw_chain_top = double_nop; - - single_nop->next = vliw_to_split; - return_me = vliw_to_split; - vliw_to_split->insn_list->type = VLIW_BRANCH_HAS_NOPS; - } - else - { - /* Set the packing bit on the previous insn. */ - if (pack_prev) - { - unsigned char *buffer = prev_insn->address; - buffer[0] |= 0x80; - } - - /* The branch is in the middle of this vliw insn. Split into first and - second parts. Insert the nop vliws in between. */ - second_part->insn_list = insert_before_insn; - second_part->insn_list->type = VLIW_BRANCH_HAS_NOPS; - second_part->next = vliw_to_split->next; - frv_adjust_vliw_count (second_part); - - single_nop->next = second_part; - - vliw_to_split->next = double_nop; - prev_insn->next = NULL; - frv_adjust_vliw_count (vliw_to_split); - - return_me = second_part; - } - break; - } - - return return_me; -} - -static void frv_tomcat_analyze_vliw_chains PARAMS ((void)); - -static void -frv_tomcat_analyze_vliw_chains () -{ - struct vliw_chain *vliw1 = NULL; - struct vliw_chain *vliw2 = NULL; - struct vliw_chain *vliw3 = NULL; - - struct vliw_insn_list *this_insn = NULL; - struct vliw_insn_list *temp_insn = NULL; - - /* We potentially need to look at three VLIW insns to determine if the - workaround is required. Set them up. Ignore existing nops during analysis. */ - -#define FRV_SET_VLIW_WINDOW(VLIW1, VLIW2, VLIW3) \ - if (VLIW1 && VLIW1->next) \ - VLIW2 = VLIW1->next; \ - else \ - VLIW2 = NULL; \ - if (VLIW2 && VLIW2->next) \ - VLIW3 = VLIW2->next; \ - else \ - VLIW3 = NULL - - vliw1 = vliw_chain_top; - -workaround_top: - - FRV_SET_VLIW_WINDOW (vliw1, vliw2, vliw3); - - if (!vliw1) - return; - - if (vliw1->insn_count == 1) - { - /* check vliw1 for a label. */ - if (vliw1->insn_list->type == VLIW_LABEL_TYPE) - { - temp_insn = frv_find_in_vliw (VLIW_BRANCH_TYPE, vliw2, vliw1->insn_list->sym); - if (temp_insn) - { - vliw1 = frv_tomcat_shuffle (VLIW_DOUBLE_NOP, vliw2, vliw1->insn_list); - temp_insn->dnop_frag->fr_subtype = NOP_KEEP; - vliw1 = vliw1->next; - if (tomcat_stats) - tomcat_doubles++; - goto workaround_top; - } - else if (vliw2 - && vliw2->insn_count == 1 - && (temp_insn = frv_find_in_vliw (VLIW_BRANCH_TYPE, vliw3, vliw1->insn_list->sym)) != NULL) - { - temp_insn->snop_frag->fr_subtype = NOP_KEEP; - vliw1 = frv_tomcat_shuffle (VLIW_SINGLE_NOP, vliw3, vliw3->insn_list); - if (tomcat_stats) - tomcat_singles++; - goto workaround_top; - } - } - } - - if (vliw1->insn_count == 2) - { - struct vliw_insn_list *this_insn; - - /* check vliw1 for a label. */ - for (this_insn = vliw1->insn_list; this_insn; this_insn = this_insn->next) - { - if (this_insn->type == VLIW_LABEL_TYPE) - { - if ((temp_insn = frv_find_in_vliw (VLIW_BRANCH_TYPE, vliw2, this_insn->sym)) != NULL) - { - temp_insn->snop_frag->fr_subtype = NOP_KEEP; - vliw1 = frv_tomcat_shuffle (VLIW_SINGLE_NOP, vliw2, this_insn); - if (tomcat_stats) - tomcat_singles++; - } - else - vliw1 = vliw1->next; - goto workaround_top; - } - } - } - /* Examine each insn in this VLIW. Look for the workaround criteria. */ - for (this_insn = vliw1->insn_list; this_insn; this_insn = this_insn->next) - { - /* Don't look at labels or nops. */ - while (this_insn - && (this_insn->type == VLIW_LABEL_TYPE - || this_insn->type == VLIW_NOP_TYPE - || this_insn->type == VLIW_BRANCH_HAS_NOPS)) - this_insn = this_insn->next; - - if (!this_insn) - { - vliw1 = vliw2; - goto workaround_top; - } - - if (frv_is_branch_insn (this_insn->insn)) - { - if ((temp_insn = frv_find_in_vliw (VLIW_LABEL_TYPE, vliw1, this_insn->sym)) != NULL) - { - /* Insert [nop/nop] [nop] before branch. */ - this_insn->snop_frag->fr_subtype = NOP_KEEP; - this_insn->dnop_frag->fr_subtype = NOP_KEEP; - vliw1 = frv_tomcat_shuffle (VLIW_DOUBLE_THEN_SINGLE_NOP, vliw1, this_insn); - goto workaround_top; - } - } - - - } - /* This vliw insn checks out okay. Take a look at the next one. */ - vliw1 = vliw1->next; - goto workaround_top; -} - -void -frv_tomcat_workaround () -{ - if (frv_mach != bfd_mach_frvtomcat) - return; - - if (tomcat_debug) - frv_debug_tomcat (vliw_chain_top); - - frv_tomcat_analyze_vliw_chains (); - - if (tomcat_stats) - { - fprintf (stderr, "Inserted %d Single Nops\n", tomcat_singles); - fprintf (stderr, "Inserted %d Double Nops\n", tomcat_doubles); - } -} - -static int -fr550_check_insn_acc_range (frv_insn *insn, int low, int hi) -{ - int acc; - switch (CGEN_INSN_NUM (insn->insn)) - { - case FRV_INSN_MADDACCS: - case FRV_INSN_MSUBACCS: - case FRV_INSN_MDADDACCS: - case FRV_INSN_MDSUBACCS: - case FRV_INSN_MASACCS: - case FRV_INSN_MDASACCS: - acc = insn->fields.f_ACC40Si; - if (acc < low || acc > hi) - return 1; /* out of range */ - acc = insn->fields.f_ACC40Sk; - if (acc < low || acc > hi) - return 1; /* out of range */ - break; - case FRV_INSN_MMULHS: - case FRV_INSN_MMULHU: - case FRV_INSN_MMULXHS: - case FRV_INSN_MMULXHU: - case FRV_INSN_CMMULHS: - case FRV_INSN_CMMULHU: - case FRV_INSN_MQMULHS: - case FRV_INSN_MQMULHU: - case FRV_INSN_MQMULXHS: - case FRV_INSN_MQMULXHU: - case FRV_INSN_CMQMULHS: - case FRV_INSN_CMQMULHU: - case FRV_INSN_MMACHS: - case FRV_INSN_MMRDHS: - case FRV_INSN_CMMACHS: - case FRV_INSN_MQMACHS: - case FRV_INSN_CMQMACHS: - case FRV_INSN_MQXMACHS: - case FRV_INSN_MQXMACXHS: - case FRV_INSN_MQMACXHS: - case FRV_INSN_MCPXRS: - case FRV_INSN_MCPXIS: - case FRV_INSN_CMCPXRS: - case FRV_INSN_CMCPXIS: - case FRV_INSN_MQCPXRS: - case FRV_INSN_MQCPXIS: - acc = insn->fields.f_ACC40Sk; - if (acc < low || acc > hi) - return 1; /* out of range */ - break; - case FRV_INSN_MMACHU: - case FRV_INSN_MMRDHU: - case FRV_INSN_CMMACHU: - case FRV_INSN_MQMACHU: - case FRV_INSN_CMQMACHU: - case FRV_INSN_MCPXRU: - case FRV_INSN_MCPXIU: - case FRV_INSN_CMCPXRU: - case FRV_INSN_CMCPXIU: - case FRV_INSN_MQCPXRU: - case FRV_INSN_MQCPXIU: - acc = insn->fields.f_ACC40Uk; - if (acc < low || acc > hi) - return 1; /* out of range */ - break; - default: - break; - } - return 0; /* all is ok */ -} - -static int -fr550_check_acc_range (FRV_VLIW *vliw, frv_insn *insn) -{ - switch ((*vliw->current_vliw)[vliw->next_slot - 1]) - { - case UNIT_FM0: - case UNIT_FM2: - return fr550_check_insn_acc_range (insn, 0, 3); - case UNIT_FM1: - case UNIT_FM3: - return fr550_check_insn_acc_range (insn, 4, 7); - default: - break; - } - return 0; /* all is ok */ -} - -void -md_assemble (str) - char * str; -{ - frv_insn insn; - char *errmsg; - int packing_constraint; - finished_insnS finished_insn; - fragS *double_nop_frag = NULL; - fragS *single_nop_frag = NULL; - struct vliw_insn_list *vliw_insn_list_entry = NULL; - - /* Initialize GAS's cgen interface for a new instruction. */ - gas_cgen_init_parse (); - - memset (&insn, 0, sizeof (insn)); - - insn.insn = frv_cgen_assemble_insn - (gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, &errmsg); - - if (!insn.insn) - { - as_bad (errmsg); - return; - } - - /* If the cpu is tomcat, then we need to insert nops to workaround - hardware limitations. We need to keep track of each vliw unit - and examine the length of the unit and the individual insns - within the unit to determine the number and location of the - required nops. */ - if (frv_mach == bfd_mach_frvtomcat) - { - /* If we've just finished a VLIW insn OR this is a branch, - then start up a new frag. Fill it with nops. We will get rid - of those that are not required after we've seen all of the - instructions but before we start resolving fixups. */ - if ( !FRV_IS_NOP (insn) - && (frv_is_branch_insn (insn.insn) || insn.fields.f_pack)) - { - char *buffer; - - frag_wane (frag_now); - frag_new (0); - double_nop_frag = frag_now; - buffer = frag_var (rs_machine_dependent, 8, 8, NOP_DELETE, NULL, 0, 0); - md_number_to_chars (buffer, FRV_NOP_PACK, 4); - md_number_to_chars (buffer+4, FRV_NOP_NOPACK, 4); - - frag_wane (frag_now); - frag_new (0); - single_nop_frag = frag_now; - buffer = frag_var (rs_machine_dependent, 4, 4, NOP_DELETE, NULL, 0, 0); - md_number_to_chars (buffer, FRV_NOP_NOPACK, 4); - } - - vliw_insn_list_entry = frv_insert_vliw_insn (DO_COUNT); - vliw_insn_list_entry->insn = insn.insn; - if (frv_is_branch_insn (insn.insn)) - vliw_insn_list_entry->type = VLIW_BRANCH_TYPE; - - if ( !FRV_IS_NOP (insn) - && (frv_is_branch_insn (insn.insn) || insn.fields.f_pack)) - { - vliw_insn_list_entry->snop_frag = single_nop_frag; - vliw_insn_list_entry->dnop_frag = double_nop_frag; - } - } - - /* Make sure that this insn does not violate the VLIW packing constraints. */ - /* -mno-pack disallows any packing whatsoever. */ - if (frv_flags & EF_FRV_NOPACK) - { - if (! insn.fields.f_pack) - { - as_bad (_("VLIW packing used for -mno-pack")); - return; - } - } - /* -mcpu=FRV is an idealized FR-V implementation that supports all of the - instructions, don't do vliw checking. */ - else if (frv_mach != bfd_mach_frv) - { - packing_constraint = frv_vliw_add_insn (& vliw, insn.insn); - if (frv_mach == bfd_mach_fr550 && ! packing_constraint) - packing_constraint = fr550_check_acc_range (& vliw, & insn); - if (insn.fields.f_pack) - frv_vliw_reset (& vliw, frv_mach, frv_flags); - if (packing_constraint) - { - as_bad (_("VLIW packing constraint violation")); - return; - } - } - - /* Doesn't really matter what we pass for RELAX_P here. */ - gas_cgen_finish_insn (insn.insn, insn.buffer, - CGEN_FIELDS_BITSIZE (& insn.fields), 1, &finished_insn); - - - /* If the cpu is tomcat, then we need to insert nops to workaround - hardware limitations. We need to keep track of each vliw unit - and examine the length of the unit and the individual insns - within the unit to determine the number and location of the - required nops. */ - if (frv_mach == bfd_mach_frvtomcat) - { - if (vliw_insn_list_entry) - vliw_insn_list_entry->address = finished_insn.addr; - else - abort(); - - if (insn.fields.f_pack) - { - /* We've completed a VLIW insn. */ - previous_vliw_chain = current_vliw_chain; - current_vliw_chain = NULL; - current_vliw_insn = NULL; - } - } -} - -/* The syntax in the manual says constants begin with '#'. - We just ignore it. */ - -void -md_operand (expressionP) - expressionS * expressionP; -{ - if (* input_line_pointer == '#') - { - input_line_pointer ++; - expression (expressionP); - } -} - -valueT -md_section_align (segment, size) - segT segment; - valueT size; -{ - int align = bfd_get_section_alignment (stdoutput, segment); - return ((size + (1 << align) - 1) & (-1 << align)); -} - -symbolS * -md_undefined_symbol (name) - char * name ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Interface to relax_segment. */ - -/* FIXME: Build table by hand, get it working, then machine generate. */ -const relax_typeS md_relax_table[] = -{ - {1, 1, 0, 0}, - {511 - 2 - 2, -512 - 2 + 2, 0, 2 }, - {0x2000000 - 1 - 2, -0x2000000 - 2, 2, 0 }, - {0x2000000 - 1 - 2, -0x2000000 - 2, 4, 0 } -}; - -long -frv_relax_frag (fragP, stretch) - fragS *fragP ATTRIBUTE_UNUSED; - long stretch ATTRIBUTE_UNUSED; -{ - return 0; -} - -/* Return an initial guess of the length by which a fragment must grow to - hold a branch to reach its destination. - Also updates fr_type/fr_subtype as necessary. - - Called just before doing relaxation. - Any symbol that is now undefined will not become defined. - The guess for fr_var is ACTUALLY the growth beyond fr_fix. - Whatever we do to grow fr_fix or fr_var contributes to our returned value. - Although it may not be explicit in the frag, pretend fr_var starts with a - 0 value. */ - -int -md_estimate_size_before_relax (fragP, segment) - fragS * fragP; - segT segment ATTRIBUTE_UNUSED; -{ - switch (fragP->fr_subtype) - { - case NOP_KEEP: - return fragP->fr_var; - - default: - case NOP_DELETE: - return 0; - } -} - -/* *fragP has been relaxed to its final size, and now needs to have - the bytes inside it modified to conform to the new size. - - Called after relaxation is finished. - fragP->fr_type == rs_machine_dependent. - fragP->fr_subtype is the subtype of what the address relaxed to. */ - -void -md_convert_frag (abfd, sec, fragP) - bfd * abfd ATTRIBUTE_UNUSED; - segT sec ATTRIBUTE_UNUSED; - fragS * fragP; -{ - switch (fragP->fr_subtype) - { - default: - case NOP_DELETE: - return; - - case NOP_KEEP: - fragP->fr_fix = fragP->fr_var; - fragP->fr_var = 0; - return; - } -} - -/* Functions concerning relocs. */ - -/* The location from which a PC relative jump should be calculated, - given a PC relative reloc. */ - -long -md_pcrel_from_section (fixP, sec) - fixS * fixP; - segT sec; -{ - if (TC_FORCE_RELOCATION (fixP) - || (fixP->fx_addsy != (symbolS *) NULL - && S_GET_SEGMENT (fixP->fx_addsy) != sec)) - { - /* If we can't adjust this relocation, or if it references a - local symbol in a different section (which - TC_FORCE_RELOCATION can't check), let the linker figure it - out. */ - return 0; - } - - return (fixP->fx_frag->fr_address + fixP->fx_where) & ~1; -} - -/* Return the bfd reloc type for OPERAND of INSN at fixup FIXP. - Returns BFD_RELOC_NONE if no reloc type can be found. - *FIXP may be modified if desired. */ - -bfd_reloc_code_real_type -md_cgen_lookup_reloc (insn, operand, fixP) - const CGEN_INSN * insn ATTRIBUTE_UNUSED; - const CGEN_OPERAND * operand; - fixS * fixP; -{ - switch (operand->type) - { - case FRV_OPERAND_LABEL16: - fixP->fx_pcrel = TRUE; - return BFD_RELOC_FRV_LABEL16; - - case FRV_OPERAND_LABEL24: - fixP->fx_pcrel = TRUE; - return BFD_RELOC_FRV_LABEL24; - - case FRV_OPERAND_UHI16: - case FRV_OPERAND_ULO16: - case FRV_OPERAND_SLO16: - - /* The relocation type should be recorded in opinfo */ - if (fixP->fx_cgen.opinfo != 0) - return fixP->fx_cgen.opinfo; - break; - - case FRV_OPERAND_D12: - case FRV_OPERAND_S12: - if (fixP->fx_cgen.opinfo != 0) - return fixP->fx_cgen.opinfo; - - return BFD_RELOC_FRV_GPREL12; - - case FRV_OPERAND_U12: - return BFD_RELOC_FRV_GPRELU12; - - default: - break; - } - return BFD_RELOC_NONE; -} - - -/* See whether we need to force a relocation into the output file. - This is used to force out switch and PC relative relocations when - relaxing. */ - -int -frv_force_relocation (fix) - fixS * fix; -{ - if (fix->fx_r_type == BFD_RELOC_FRV_GPREL12 - || fix->fx_r_type == BFD_RELOC_FRV_GPRELU12) - return 1; - - return generic_force_reloc (fix); -} - -/* Apply a fixup that could be resolved within the assembler. */ - -void -md_apply_fix3 (fixP, valP, seg) - fixS * fixP; - valueT * valP; - segT seg; -{ - if (fixP->fx_addsy == 0) - switch (fixP->fx_cgen.opinfo) - { - case BFD_RELOC_FRV_HI16: - *valP >>= 16; - /* Fall through. */ - case BFD_RELOC_FRV_LO16: - *valP &= 0xffff; - break; - } - - gas_cgen_md_apply_fix3 (fixP, valP, seg); - return; -} - - -/* Write a value out to the object file, using the appropriate endianness. */ - -void -frv_md_number_to_chars (buf, val, n) - char * buf; - valueT val; - int n; -{ - number_to_chars_bigendian (buf, val, n); -} - -/* Turn a string in input_line_pointer into a floating point constant of type - type, and store the appropriate bytes in *litP. The number of LITTLENUMS - emitted is stored in *sizeP . An error message is returned, or NULL on OK. -*/ - -/* Equal to MAX_PRECISION in atof-ieee.c */ -#define MAX_LITTLENUMS 6 - -char * -md_atof (type, litP, sizeP) - char type; - char * litP; - int * sizeP; -{ - int i; - int prec; - LITTLENUM_TYPE words [MAX_LITTLENUMS]; - char * t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - /* FIXME: Some targets allow other format chars for bigger sizes here. */ - - default: - * sizeP = 0; - return _("Bad call to md_atof()"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - * sizeP = prec * sizeof (LITTLENUM_TYPE); - - for (i = 0; i < prec; i++) - { - md_number_to_chars (litP, (valueT) words[i], - sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return 0; -} - -bfd_boolean -frv_fix_adjustable (fixP) - fixS * fixP; -{ - bfd_reloc_code_real_type reloc_type; - - if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED) - { - const CGEN_INSN *insn = NULL; - int opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED; - const CGEN_OPERAND *operand = cgen_operand_lookup_by_num(gas_cgen_cpu_desc, opindex); - reloc_type = md_cgen_lookup_reloc (insn, operand, fixP); - } - else - reloc_type = fixP->fx_r_type; - - /* We need the symbol name for the VTABLE entries */ - if ( reloc_type == BFD_RELOC_VTABLE_INHERIT - || reloc_type == BFD_RELOC_VTABLE_ENTRY - || reloc_type == BFD_RELOC_FRV_GPREL12 - || reloc_type == BFD_RELOC_FRV_GPRELU12) - return 0; - - return 1; -} - -/* Allow user to set flags bits. */ -void -frv_set_flags (arg) - int arg ATTRIBUTE_UNUSED; -{ - flagword new_flags = get_absolute_expression (); - flagword new_mask = ~ (flagword)0; - - frv_user_set_flags_p = 1; - if (*input_line_pointer == ',') - { - ++input_line_pointer; - new_mask = get_absolute_expression (); - } - - frv_flags = (frv_flags & ~new_mask) | (new_flags & new_mask); - bfd_set_private_flags (stdoutput, frv_flags); -} - -/* Frv specific function to handle 4 byte initializations for pointers that are - considered 'safe' for use with pic support. Until frv_frob_file{,_section} - is run, we encode it a BFD_RELOC_CTOR, and it is turned back into a normal - BFD_RELOC_32 at that time. */ - -void -frv_pic_ptr (nbytes) - int nbytes; -{ - expressionS exp; - char *p; - - if (nbytes != 4) - abort (); - -#ifdef md_flush_pending_output - md_flush_pending_output (); -#endif - - if (is_it_end_of_statement ()) - { - demand_empty_rest_of_line (); - return; - } - -#ifdef md_cons_align - md_cons_align (nbytes); -#endif - - do - { - bfd_reloc_code_real_type reloc_type = BFD_RELOC_CTOR; - - if (strncasecmp (input_line_pointer, "funcdesc(", 9) == 0) - { - input_line_pointer += 9; - expression (&exp); - if (*input_line_pointer == ')') - input_line_pointer++; - else - as_bad ("missing ')'"); - reloc_type = BFD_RELOC_FRV_FUNCDESC; - } - else - expression (&exp); - - p = frag_more (4); - memset (p, 0, 4); - fix_new_exp (frag_now, p - frag_now->fr_literal, 4, &exp, 0, - reloc_type); - } - while (*input_line_pointer++ == ','); - - input_line_pointer--; /* Put terminator back into stream. */ - demand_empty_rest_of_line (); -} - - - -#ifdef DEBUG -#define DPRINTF1(A) fprintf (stderr, A) -#define DPRINTF2(A,B) fprintf (stderr, A, B) -#define DPRINTF3(A,B,C) fprintf (stderr, A, B, C) - -#else -#define DPRINTF1(A) -#define DPRINTF2(A,B) -#define DPRINTF3(A,B,C) -#endif - -/* Go through a the sections looking for relocations that are problematical for - pic. If not pic, just note that this object can't be linked with pic. If - it is pic, see if it needs to be marked so that it will be fixed up, or if - not possible, issue an error. */ - -static void -frv_frob_file_section (abfd, sec, ptr) - bfd *abfd; - asection *sec; - PTR ptr ATTRIBUTE_UNUSED; -{ - segment_info_type *seginfo = seg_info (sec); - fixS *fixp; - CGEN_CPU_DESC cd = gas_cgen_cpu_desc; - flagword flags = bfd_get_section_flags (abfd, sec); - - /* Skip relocations in known sections (.ctors, .dtors, and .gcc_except_table) - since we can fix those up by hand. */ - int known_section_p = (sec->name - && sec->name[0] == '.' - && ((sec->name[1] == 'c' - && strcmp (sec->name, ".ctor") == 0) - || (sec->name[1] == 'd' - && strcmp (sec->name, ".dtor") == 0) - || (sec->name[1] == 'g' - && strcmp (sec->name, ".gcc_except_table") == 0))); - - DPRINTF3 ("\nFrv section %s%s\n", sec->name, (known_section_p) ? ", known section" : ""); - if ((flags & SEC_ALLOC) == 0) - { - DPRINTF1 ("\tSkipping non-loaded section\n"); - return; - } - - for (fixp = seginfo->fix_root; fixp; fixp = fixp->fx_next) - { - symbolS *s = fixp->fx_addsy; - bfd_reloc_code_real_type reloc; - int non_pic_p; - int opindex; - const CGEN_OPERAND *operand; - const CGEN_INSN *insn = fixp->fx_cgen.insn; - - if (fixp->fx_done) - { - DPRINTF1 ("\tSkipping reloc that has already been done\n"); - continue; - } - - if (fixp->fx_pcrel) - { - DPRINTF1 ("\tSkipping reloc that is PC relative\n"); - continue; - } - - if (! s) - { - DPRINTF1 ("\tSkipping reloc without symbol\n"); - continue; - } - - if (fixp->fx_r_type < BFD_RELOC_UNUSED) - { - opindex = -1; - reloc = fixp->fx_r_type; - } - else - { - opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED; - operand = cgen_operand_lookup_by_num (cd, opindex); - reloc = md_cgen_lookup_reloc (insn, operand, fixp); - } - - DPRINTF3 ("\treloc %s\t%s", bfd_get_reloc_code_name (reloc), S_GET_NAME (s)); - - non_pic_p = 0; - switch (reloc) - { - default: - break; - - case BFD_RELOC_32: - /* Skip relocations in known sections (.ctors, .dtors, and - .gcc_except_table) since we can fix those up by hand. Also - skip forward references to constants. Also skip a difference - of two symbols, which still uses the BFD_RELOC_32 at this - point. */ - if (! known_section_p - && S_GET_SEGMENT (s) != absolute_section - && !fixp->fx_subsy - && (flags & (SEC_READONLY | SEC_CODE)) == 0) - { - non_pic_p = 1; - } - break; - - /* FIXME -- should determine if any of the GP relocation really uses - gr16 (which is not pic safe) or not. Right now, assume if we - aren't being compiled with -mpic, the usage is non pic safe, but - is safe with -mpic. */ - case BFD_RELOC_FRV_GPREL12: - case BFD_RELOC_FRV_GPRELU12: - case BFD_RELOC_FRV_GPREL32: - case BFD_RELOC_FRV_GPRELHI: - case BFD_RELOC_FRV_GPRELLO: - non_pic_p = ! frv_pic_p; - break; - - case BFD_RELOC_FRV_LO16: - case BFD_RELOC_FRV_HI16: - if (S_GET_SEGMENT (s) != absolute_section) - non_pic_p = 1; - break; - - case BFD_RELOC_VTABLE_INHERIT: - case BFD_RELOC_VTABLE_ENTRY: - non_pic_p = 1; - break; - - /* If this is a blessed BFD_RELOC_32, convert it back to the normal - relocation. */ - case BFD_RELOC_CTOR: - fixp->fx_r_type = BFD_RELOC_32; - break; - } - - if (non_pic_p) - { - DPRINTF1 (" (Non-pic relocation)\n"); - if (frv_pic_p) - as_warn_where (fixp->fx_file, fixp->fx_line, - _("Relocation %s is not safe for %s"), - bfd_get_reloc_code_name (reloc), frv_pic_flag); - - else if ((frv_flags & EF_FRV_NON_PIC_RELOCS) == 0) - { - frv_flags |= EF_FRV_NON_PIC_RELOCS; - bfd_set_private_flags (abfd, frv_flags); - } - } -#ifdef DEBUG - else - DPRINTF1 ("\n"); -#endif - } -} - -/* After all of the symbols have been adjusted, go over the file looking - for any relocations that pic won't support. */ - -void -frv_frob_file () -{ - bfd_map_over_sections (stdoutput, frv_frob_file_section, (PTR)0); -} - -void -frv_frob_label (this_label) - symbolS *this_label; -{ - struct vliw_insn_list *vliw_insn_list_entry; - - if (frv_mach != bfd_mach_frvtomcat) - return; - - if (now_seg != text_section) - return; - - vliw_insn_list_entry = frv_insert_vliw_insn(DONT_COUNT); - vliw_insn_list_entry->type = VLIW_LABEL_TYPE; - vliw_insn_list_entry->sym = this_label; -} - -fixS * -frv_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp) - fragS * frag; - int where; - const CGEN_INSN * insn; - int length; - const CGEN_OPERAND * operand; - int opinfo; - expressionS * exp; -{ - fixS * fixP = gas_cgen_record_fixup_exp (frag, where, insn, length, - operand, opinfo, exp); - - if (frv_mach == bfd_mach_frvtomcat - && current_vliw_insn - && current_vliw_insn->type == VLIW_BRANCH_TYPE - && exp != NULL) - current_vliw_insn->sym = exp->X_add_symbol; - - return fixP; -} diff --git a/gas/config/tc-frv.h b/gas/config/tc-frv.h deleted file mode 100644 index d2e185d0a..000000000 --- a/gas/config/tc-frv.h +++ /dev/null @@ -1,86 +0,0 @@ -/* tc-frv.h -- Header file for tc-frv.c. - Copyright 2002 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#define TC_FRV - -#ifndef BFD_ASSEMBLER -/* leading space so will compile with cc */ - #error FRV support requires BFD_ASSEMBLER -#endif - -#define LISTING_HEADER "FRV GAS " - -/* The target BFD architecture. */ -#define TARGET_ARCH bfd_arch_frv - -#define TARGET_FORMAT "elf32-frv" - -#define TARGET_BYTES_BIG_ENDIAN 1 - -/* Permit temporary numeric labels. */ -#define LOCAL_LABELS_FB 1 - -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ - -/* We don't need to handle .word strangely. */ -#define WORKING_DOT_WORD - -/* Values passed to md_apply_fix3 don't include the symbol value. */ -#define MD_APPLY_SYM_VALUE(FIX) 0 - -extern void frv_tomcat_workaround PARAMS ((void)); -#define md_cleanup frv_tomcat_workaround - -#define md_number_to_chars frv_md_number_to_chars - -extern long frv_relax_frag PARAMS ((fragS *, long)); -#define md_relax_frag(segment, fragP, stretch) frv_relax_frag(fragP, stretch) - -#define tc_fix_adjustable(FIX) frv_fix_adjustable (FIX) -struct fix; -extern bfd_boolean frv_fix_adjustable PARAMS ((struct fix *)); - -/* When relaxing, we need to emit various relocs we otherwise wouldn't. */ -#define TC_FORCE_RELOCATION(fix) frv_force_relocation (fix) -extern int frv_force_relocation PARAMS ((struct fix *)); - -/* If we simplify subtractions that aren't SUB_SAME or SUB_ABS, we end - up with PCrel fixups, but since we don't have any PCrel relocs, we - crash. Preventing simplification gets us a good, early error. */ -#define TC_FORCE_RELOCATION_SUB_LOCAL(fixP) 1 - -#undef GAS_CGEN_MAX_FIXUPS -#define GAS_CGEN_MAX_FIXUPS 1 - -void frv_frob_label PARAMS ((symbolS *)); -#define tc_frob_label(sym) frv_frob_label(sym) - -#define tc_gen_reloc gas_cgen_tc_gen_reloc - -#define md_cgen_record_fixup_exp frv_cgen_record_fixup_exp - -/* Call md_pcrel_from_section(), not md_pcrel_from(). */ -#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC) -extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); - -/* After all of the symbols have been adjusted, go over the file looking - for any relocations that pic won't support. */ -#define tc_frob_file() frv_frob_file () -extern void frv_frob_file PARAMS ((void)); diff --git a/gas/config/tc-generic.c b/gas/config/tc-generic.c deleted file mode 100644 index e69de29bb..000000000 diff --git a/gas/config/tc-generic.h b/gas/config/tc-generic.h deleted file mode 100644 index f3b676ba0..000000000 --- a/gas/config/tc-generic.h +++ /dev/null @@ -1,39 +0,0 @@ -/* This file is tc-generic.h - - Copyright 1987, 1991, 1992, 1995, 1997 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with GAS; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* - * This file is tc-generic.h and is intended to be a template for target cpu - * specific header files. It is my intent that this file compile. It is also - * my intent that this file grow into something that can be used as both a - * template for porting, and a stub for testing. xoxorich. - */ - -#define TC_GENERIC 1 - -#define TARGET_BYTES_BIG_ENDIAN 0 - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 131 - * End: - */ - -/* end of tc-generic.h */ diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c deleted file mode 100644 index 467d9bcdb..000000000 --- a/gas/config/tc-h8300.c +++ /dev/null @@ -1,2324 +0,0 @@ -/* tc-h8300.c -- Assemble code for the Renesas H8/300 - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Written By Steve Chamberlain . */ - -#include -#include "as.h" -#include "subsegs.h" -#include "bfd.h" - -#ifdef BFD_ASSEMBLER -#include "dwarf2dbg.h" -#endif - -#define DEFINE_TABLE -#define h8_opcodes ops -#include "opcode/h8300.h" -#include "safe-ctype.h" - -#ifdef OBJ_ELF -#include "elf/h8.h" -#endif - -const char comment_chars[] = ";"; -const char line_comment_chars[] = "#"; -const char line_separator_chars[] = ""; - -static void sbranch (int); -static void h8300hmode (int); -static void h8300smode (int); -static void h8300hnmode (int); -static void h8300snmode (int); -static void h8300sxmode (int); -static void h8300sxnmode (int); -static void pint (int); - -int Hmode; -int Smode; -int Nmode; -int SXmode; - -#define PSIZE (Hmode && !Nmode ? L_32 : L_16) - -static int bsize = L_8; /* Default branch displacement. */ - -struct h8_instruction -{ - int length; - int noperands; - int idx; - int size; - const struct h8_opcode *opcode; -}; - -static struct h8_instruction *h8_instructions; - -static void -h8300hmode (int arg ATTRIBUTE_UNUSED) -{ - Hmode = 1; - Smode = 0; -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300h)) - as_warn (_("could not set architecture and machine")); -#endif -} - -static void -h8300smode (int arg ATTRIBUTE_UNUSED) -{ - Smode = 1; - Hmode = 1; -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300s)) - as_warn (_("could not set architecture and machine")); -#endif -} - -static void -h8300hnmode (int arg ATTRIBUTE_UNUSED) -{ - Hmode = 1; - Smode = 0; - Nmode = 1; -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300hn)) - as_warn (_("could not set architecture and machine")); -#endif -} - -static void -h8300snmode (int arg ATTRIBUTE_UNUSED) -{ - Smode = 1; - Hmode = 1; - Nmode = 1; -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sn)) - as_warn (_("could not set architecture and machine")); -#endif -} - -static void -h8300sxmode (int arg ATTRIBUTE_UNUSED) -{ - Smode = 1; - Hmode = 1; - SXmode = 1; -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sx)) - as_warn (_("could not set architecture and machine")); -#endif -} - -static void -h8300sxnmode (int arg ATTRIBUTE_UNUSED) -{ - Smode = 1; - Hmode = 1; - SXmode = 1; - Nmode = 1; -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sxn)) - as_warn (_("could not set architecture and machine")); -#endif -} - -static void -sbranch (int size) -{ - bsize = size; -} - -static void -pint (int arg ATTRIBUTE_UNUSED) -{ - cons (Hmode ? 4 : 2); -} - -/* This table describes all the machine specific pseudo-ops the assembler - has to support. The fields are: - pseudo-op name without dot - function to call to execute this pseudo-op - Integer arg to pass to the function. */ - -const pseudo_typeS md_pseudo_table[] = -{ - {"h8300h", h8300hmode, 0}, - {"h8300hn", h8300hnmode, 0}, - {"h8300s", h8300smode, 0}, - {"h8300sn", h8300snmode, 0}, - {"h8300sx", h8300sxmode, 0}, - {"h8300sxn", h8300sxnmode, 0}, - {"sbranch", sbranch, L_8}, - {"lbranch", sbranch, L_16}, - - {"int", pint, 0}, - {"data.b", cons, 1}, - {"data.w", cons, 2}, - {"data.l", cons, 4}, - {"form", listing_psize, 0}, - {"heading", listing_title, 0}, - {"import", s_ignore, 0}, - {"page", listing_eject, 0}, - {"program", s_ignore, 0}, - {0, 0, 0} -}; - -const int md_reloc_size; - -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant - As in 0f12.456 - or 0d1.2345e12. */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -static struct hash_control *opcode_hash_control; /* Opcode mnemonics. */ - -/* This function is called once, at assembler startup time. This - should set up all the tables, etc. that the MD part of the assembler - needs. */ - -void -md_begin (void) -{ - unsigned int nopcodes; - struct h8_opcode *p, *p1; - struct h8_instruction *pi; - char prev_buffer[100]; - int idx = 0; - -#ifdef BFD_ASSEMBLER - if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300)) - as_warn (_("could not set architecture and machine")); -#endif - - opcode_hash_control = hash_new (); - prev_buffer[0] = 0; - - nopcodes = sizeof (h8_opcodes) / sizeof (struct h8_opcode); - - h8_instructions = (struct h8_instruction *) - xmalloc (nopcodes * sizeof (struct h8_instruction)); - - pi = h8_instructions; - p1 = h8_opcodes; - /* We do a minimum amount of sorting on the opcode table; this is to - make it easy to describe the mova instructions without unnecessary - code duplication. - Sorting only takes place inside blocks of instructions of the form - X/Y, so for example mova/b, mova/w and mova/l can be intermixed. */ - while (p1) - { - struct h8_opcode *first_skipped = 0; - int len, cmplen = 0; - char *src = p1->name; - char *dst, *buffer; - - if (p1->name == 0) - break; - /* Strip off any . part when inserting the opcode and only enter - unique codes into the hash table. */ - dst = buffer = malloc (strlen (src) + 1); - while (*src) - { - if (*src == '.') - { - src++; - break; - } - if (*src == '/') - cmplen = src - p1->name + 1; - *dst++ = *src++; - } - *dst = 0; - len = dst - buffer; - if (cmplen == 0) - cmplen = len; - hash_insert (opcode_hash_control, buffer, (char *) pi); - strcpy (prev_buffer, buffer); - idx++; - - for (p = p1; p->name; p++) - { - /* A negative TIME is used to indicate that we've added this opcode - already. */ - if (p->time == -1) - continue; - if (strncmp (p->name, buffer, cmplen) != 0 - || (p->name[cmplen] != '\0' && p->name[cmplen] != '.' - && p->name[cmplen - 1] != '/')) - { - if (first_skipped == 0) - first_skipped = p; - break; - } - if (strncmp (p->name, buffer, len) != 0) - { - if (first_skipped == 0) - first_skipped = p; - continue; - } - - p->time = -1; - pi->size = p->name[len] == '.' ? p->name[len + 1] : 0; - pi->idx = idx; - - /* Find the number of operands. */ - pi->noperands = 0; - while (pi->noperands < 3 && p->args.nib[pi->noperands] != (op_type) E) - pi->noperands++; - - /* Find the length of the opcode in bytes. */ - pi->length = 0; - while (p->data.nib[pi->length * 2] != (op_type) E) - pi->length++; - - pi->opcode = p; - pi++; - } - p1 = first_skipped; - } - - /* Add entry for the NULL vector terminator. */ - pi->length = 0; - pi->noperands = 0; - pi->idx = 0; - pi->size = 0; - pi->opcode = 0; - - linkrelax = 1; -} - -struct h8_op -{ - op_type mode; - unsigned reg; - expressionS exp; -}; - -static void clever_message (const struct h8_instruction *, struct h8_op *); -static void fix_operand_size (struct h8_op *, int); -static void build_bytes (const struct h8_instruction *, struct h8_op *); -static void do_a_fix_imm (int, int, struct h8_op *, int); -static void check_operand (struct h8_op *, unsigned int, char *); -static const struct h8_instruction * get_specific (const struct h8_instruction *, struct h8_op *, int) ; -static char *get_operands (unsigned, char *, struct h8_op *); -static void get_operand (char **, struct h8_op *, int); -static int parse_reg (char *, op_type *, unsigned *, int); -static char *skip_colonthing (char *, int *); -static char *parse_exp (char *, struct h8_op *); - -static int constant_fits_width_p (struct h8_op *, unsigned int); -static int constant_fits_size_p (struct h8_op *, int, int); - -/* - parse operands - WREG r0,r1,r2,r3,r4,r5,r6,r7,fp,sp - r0l,r0h,..r7l,r7h - @WREG - @WREG+ - @-WREG - #const - ccr -*/ - -/* Try to parse a reg name. Return the number of chars consumed. */ - -static int -parse_reg (char *src, op_type *mode, unsigned int *reg, int direction) -{ - char *end; - int len; - - /* Cribbed from get_symbol_end. */ - if (!is_name_beginner (*src) || *src == '\001') - return 0; - end = src + 1; - while ((is_part_of_name (*end) && *end != '.') || *end == '\001') - end++; - len = end - src; - - if (len == 2 && TOLOWER (src[0]) == 's' && TOLOWER (src[1]) == 'p') - { - *mode = PSIZE | REG | direction; - *reg = 7; - return len; - } - if (len == 3 && - TOLOWER (src[0]) == 'c' && - TOLOWER (src[1]) == 'c' && - TOLOWER (src[2]) == 'r') - { - *mode = CCR; - *reg = 0; - return len; - } - if (len == 3 && - TOLOWER (src[0]) == 'e' && - TOLOWER (src[1]) == 'x' && - TOLOWER (src[2]) == 'r') - { - *mode = EXR; - *reg = 1; - return len; - } - if (len == 3 && - TOLOWER (src[0]) == 'v' && - TOLOWER (src[1]) == 'b' && - TOLOWER (src[2]) == 'r') - { - *mode = VBR; - *reg = 6; - return len; - } - if (len == 3 && - TOLOWER (src[0]) == 's' && - TOLOWER (src[1]) == 'b' && - TOLOWER (src[2]) == 'r') - { - *mode = SBR; - *reg = 7; - return len; - } - if (len == 2 && TOLOWER (src[0]) == 'f' && TOLOWER (src[1]) == 'p') - { - *mode = PSIZE | REG | direction; - *reg = 6; - return len; - } - if (len == 3 && TOLOWER (src[0]) == 'e' && TOLOWER (src[1]) == 'r' && - src[2] >= '0' && src[2] <= '7') - { - *mode = L_32 | REG | direction; - *reg = src[2] - '0'; - if (!Hmode) - as_warn (_("Reg not valid for H8/300")); - return len; - } - if (len == 2 && TOLOWER (src[0]) == 'e' && src[1] >= '0' && src[1] <= '7') - { - *mode = L_16 | REG | direction; - *reg = src[1] - '0' + 8; - if (!Hmode) - as_warn (_("Reg not valid for H8/300")); - return len; - } - - if (TOLOWER (src[0]) == 'r') - { - if (src[1] >= '0' && src[1] <= '7') - { - if (len == 3 && TOLOWER (src[2]) == 'l') - { - *mode = L_8 | REG | direction; - *reg = (src[1] - '0') + 8; - return len; - } - if (len == 3 && TOLOWER (src[2]) == 'h') - { - *mode = L_8 | REG | direction; - *reg = (src[1] - '0'); - return len; - } - if (len == 2) - { - *mode = L_16 | REG | direction; - *reg = (src[1] - '0'); - return len; - } - } - } - - return 0; -} - - -/* Parse an immediate or address-related constant and store it in OP. - If the user also specifies the operand's size, store that size - in OP->MODE, otherwise leave it for later code to decide. */ - -static char * -parse_exp (char *src, struct h8_op *op) -{ - char *save; - - save = input_line_pointer; - input_line_pointer = src; - expression (&op->exp); - if (op->exp.X_op == O_absent) - as_bad (_("missing operand")); - src = input_line_pointer; - input_line_pointer = save; - - return skip_colonthing (src, &op->mode); -} - - -/* If SRC starts with an explicit operand size, skip it and store the size - in *MODE. Leave *MODE unchanged otherwise. */ - -static char * -skip_colonthing (char *src, int *mode) -{ - if (*src == ':') - { - src++; - *mode &= ~SIZE; - if (src[0] == '8' && !ISDIGIT (src[1])) - *mode |= L_8; - else if (src[0] == '2' && !ISDIGIT (src[1])) - *mode |= L_2; - else if (src[0] == '3' && !ISDIGIT (src[1])) - *mode |= L_3; - else if (src[0] == '4' && !ISDIGIT (src[1])) - *mode |= L_4; - else if (src[0] == '5' && !ISDIGIT (src[1])) - *mode |= L_5; - else if (src[0] == '2' && src[1] == '4' && !ISDIGIT (src[2])) - *mode |= L_24; - else if (src[0] == '3' && src[1] == '2' && !ISDIGIT (src[2])) - *mode |= L_32; - else if (src[0] == '1' && src[1] == '6' && !ISDIGIT (src[2])) - *mode |= L_16; - else - as_bad (_("invalid operand size requested")); - - while (ISDIGIT (*src)) - src++; - } - return src; -} - -/* The many forms of operand: - - Rn Register direct - @Rn Register indirect - @(exp[:16], Rn) Register indirect with displacement - @Rn+ - @-Rn - @aa:8 absolute 8 bit - @aa:16 absolute 16 bit - @aa absolute 16 bit - - #xx[:size] immediate data - @(exp:[8], pc) pc rel - @@aa[:8] memory indirect. */ - -static int -constant_fits_width_p (struct h8_op *operand, unsigned int width) -{ - return ((operand->exp.X_add_number & ~width) == 0 - || (operand->exp.X_add_number | width) == (unsigned)(~0)); -} - -static int -constant_fits_size_p (struct h8_op *operand, int size, int no_symbols) -{ - offsetT num = operand->exp.X_add_number; - if (no_symbols - && (operand->exp.X_add_symbol != 0 || operand->exp.X_op_symbol != 0)) - return 0; - switch (size) - { - case L_2: - return (num & ~3) == 0; - case L_3: - return (num & ~7) == 0; - case L_3NZ: - return num >= 1 && num < 8; - case L_4: - return (num & ~15) == 0; - case L_5: - return num >= 1 && num < 32; - case L_8: - return (num & ~0xFF) == 0 || ((unsigned)num | 0x7F) == ~0u; - case L_8U: - return (num & ~0xFF) == 0; - case L_16: - return (num & ~0xFFFF) == 0 || ((unsigned)num | 0x7FFF) == ~0u; - case L_16U: - return (num & ~0xFFFF) == 0; - case L_32: - return 1; - default: - abort (); - } -} - -static void -get_operand (char **ptr, struct h8_op *op, int direction) -{ - char *src = *ptr; - op_type mode; - unsigned int num; - unsigned int len; - - op->mode = 0; - - /* Check for '(' and ')' for instructions ldm and stm. */ - if (src[0] == '(' && src[8] == ')') - ++ src; - - /* Gross. Gross. ldm and stm have a format not easily handled - by get_operand. We deal with it explicitly here. */ - if (TOLOWER (src[0]) == 'e' && TOLOWER (src[1]) == 'r' && - ISDIGIT (src[2]) && src[3] == '-' && - TOLOWER (src[4]) == 'e' && TOLOWER (src[5]) == 'r' && ISDIGIT (src[6])) - { - int low, high; - - low = src[2] - '0'; - high = src[6] - '0'; - - /* Check register pair's validity as per tech note TN-H8*-193A/E - from Renesas for H8S and H8SX hardware manual. */ - if ( !(low == 0 && (high == 1 || high == 2 || high == 3)) - && !(low == 1 && (high == 2 || high == 3 || high == 4) && SXmode) - && !(low == 2 && (high == 3 || ((high == 4 || high == 5) && SXmode))) - && !(low == 3 && (high == 4 || high == 5 || high == 6) && SXmode) - && !(low == 4 && (high == 5 || high == 6)) - && !(low == 4 && high == 7 && SXmode) - && !(low == 5 && (high == 6 || high == 7) && SXmode) - && !(low == 6 && high == 7 && SXmode)) - as_bad (_("Invalid register list for ldm/stm\n")); - - /* Even sicker. We encode two registers into op->reg. One - for the low register to save, the other for the high - register to save; we also set the high bit in op->reg - so we know this is "very special". */ - op->reg = 0x80000000 | (high << 8) | low; - op->mode = REG; - if (src[7] == ')') - *ptr = src + 8; - else - *ptr = src + 7; - return; - } - - len = parse_reg (src, &op->mode, &op->reg, direction); - if (len) - { - src += len; - if (*src == '.') - { - int size = op->mode & SIZE; - switch (src[1]) - { - case 'l': case 'L': - if (size != L_32) - as_warn (_("mismatch between register and suffix")); - op->mode = (op->mode & ~MODE) | LOWREG; - break; - case 'w': case 'W': - if (size != L_32 && size != L_16) - as_warn (_("mismatch between register and suffix")); - op->mode = (op->mode & ~MODE) | LOWREG; - op->mode = (op->mode & ~SIZE) | L_16; - break; - case 'b': case 'B': - op->mode = (op->mode & ~MODE) | LOWREG; - if (size != L_32 && size != L_8) - as_warn (_("mismatch between register and suffix")); - op->mode = (op->mode & ~MODE) | LOWREG; - op->mode = (op->mode & ~SIZE) | L_8; - break; - default: - as_warn ("invalid suffix after register."); - break; - } - src += 2; - } - *ptr = src; - return; - } - - if (*src == '@') - { - src++; - if (*src == '@') - { - *ptr = parse_exp (src + 1, op); - if (op->exp.X_add_number >= 0x100) - { - int divisor = 1; - - op->mode = VECIND; - /* FIXME : 2? or 4? */ - if (op->exp.X_add_number >= 0x400) - as_bad (_("address too high for vector table jmp/jsr")); - else if (op->exp.X_add_number >= 0x200) - divisor = 4; - else - divisor = 2; - - op->exp.X_add_number = op->exp.X_add_number / divisor - 0x80; - } - else - op->mode = MEMIND; - return; - } - - if (*src == '-' || *src == '+') - { - len = parse_reg (src + 1, &mode, &num, direction); - if (len == 0) - { - /* Oops, not a reg after all, must be ordinary exp. */ - op->mode = ABS | direction; - *ptr = parse_exp (src, op); - return; - } - - if (((mode & SIZE) != PSIZE) - /* For Normal mode accept 16 bit and 32 bit pointer registers. */ - && (!Nmode || ((mode & SIZE) != L_32))) - as_bad (_("Wrong size pointer register for architecture.")); - - op->mode = src[0] == '-' ? RDPREDEC : RDPREINC; - op->reg = num; - *ptr = src + 1 + len; - return; - } - if (*src == '(') - { - src++; - - /* See if this is @(ERn.x, PC). */ - len = parse_reg (src, &mode, &op->reg, direction); - if (len != 0 && (mode & MODE) == REG && src[len] == '.') - { - switch (TOLOWER (src[len + 1])) - { - case 'b': - mode = PCIDXB | direction; - break; - case 'w': - mode = PCIDXW | direction; - break; - case 'l': - mode = PCIDXL | direction; - break; - default: - mode = 0; - break; - } - if (mode - && src[len + 2] == ',' - && TOLOWER (src[len + 3]) != 'p' - && TOLOWER (src[len + 4]) != 'c' - && src[len + 5] != ')') - { - *ptr = src + len + 6; - op->mode |= mode; - return; - } - /* Fall through into disp case - the grammar is somewhat - ambiguous, so we should try whether it's a DISP operand - after all ("ER3.L" might be a poorly named label...). */ - } - - /* Disp. */ - - /* Start off assuming a 16 bit offset. */ - - src = parse_exp (src, op); - if (*src == ')') - { - op->mode |= ABS | direction; - *ptr = src + 1; - return; - } - - if (*src != ',') - { - as_bad (_("expected @(exp, reg16)")); - return; - } - src++; - - len = parse_reg (src, &mode, &op->reg, direction); - if (len == 0 || (mode & MODE) != REG) - { - as_bad (_("expected @(exp, reg16)")); - return; - } - src += len; - if (src[0] == '.') - { - switch (TOLOWER (src[1])) - { - case 'b': - op->mode |= INDEXB | direction; - break; - case 'w': - op->mode |= INDEXW | direction; - break; - case 'l': - op->mode |= INDEXL | direction; - break; - default: - as_bad (_("expected .L, .W or .B for register in indexed addressing mode")); - } - src += 2; - op->reg &= 7; - } - else - op->mode |= DISP | direction; - src = skip_colonthing (src, &op->mode); - - if (*src != ')' && '(') - { - as_bad (_("expected @(exp, reg16)")); - return; - } - *ptr = src + 1; - return; - } - len = parse_reg (src, &mode, &num, direction); - - if (len) - { - src += len; - if (*src == '+' || *src == '-') - { - if (((mode & SIZE) != PSIZE) - /* For Normal mode accept 16 bit and 32 bit pointer registers. */ - && (!Nmode || ((mode & SIZE) != L_32))) - as_bad (_("Wrong size pointer register for architecture.")); - op->mode = *src == '+' ? RSPOSTINC : RSPOSTDEC; - op->reg = num; - src++; - *ptr = src; - return; - } - if (((mode & SIZE) != PSIZE) - /* For Normal mode accept 16 bit and 32 bit pointer registers. */ - && (!Nmode || ((mode & SIZE) != L_32))) - as_bad (_("Wrong size pointer register for architecture.")); - - op->mode = direction | IND | PSIZE; - op->reg = num; - *ptr = src; - - return; - } - else - { - /* must be a symbol */ - - op->mode = ABS | direction; - *ptr = parse_exp (src, op); - return; - } - } - - if (*src == '#') - { - op->mode = IMM; - *ptr = parse_exp (src + 1, op); - return; - } - else if (strncmp (src, "mach", 4) == 0 || - strncmp (src, "macl", 4) == 0 || - strncmp (src, "MACH", 4) == 0 || - strncmp (src, "MACL", 4) == 0) - { - op->reg = TOLOWER (src[3]) == 'l'; - op->mode = MACREG; - *ptr = src + 4; - return; - } - else - { - op->mode = PCREL; - *ptr = parse_exp (src, op); - } -} - -static char * -get_operands (unsigned int noperands, char *op_end, struct h8_op *operand) -{ - char *ptr = op_end; - - switch (noperands) - { - case 0: - break; - - case 1: - ptr++; - get_operand (&ptr, operand + 0, SRC); - if (*ptr == ',') - { - ptr++; - get_operand (&ptr, operand + 1, DST); - } - break; - - case 2: - ptr++; - get_operand (&ptr, operand + 0, SRC); - if (*ptr == ',') - ptr++; - get_operand (&ptr, operand + 1, DST); - break; - - case 3: - ptr++; - get_operand (&ptr, operand + 0, SRC); - if (*ptr == ',') - ptr++; - get_operand (&ptr, operand + 1, DST); - if (*ptr == ',') - ptr++; - get_operand (&ptr, operand + 2, OP3); - break; - - default: - abort (); - } - - return ptr; -} - -/* MOVA has special requirements. Rather than adding twice the amount of - addressing modes, we simply special case it a bit. */ -static void -get_mova_operands (char *op_end, struct h8_op *operand) -{ - char *ptr = op_end; - - if (ptr[1] != '@' || ptr[2] != '(') - goto error; - ptr += 3; - operand[0].mode = 0; - ptr = parse_exp (ptr, &operand[0]); - - if (*ptr !=',') - goto error; - ptr++; - get_operand (&ptr, operand + 1, DST); - - if (*ptr =='.') - { - ptr++; - switch (*ptr++) - { - case 'b': case 'B': - operand[0].mode = (operand[0].mode & ~MODE) | INDEXB; - break; - case 'w': case 'W': - operand[0].mode = (operand[0].mode & ~MODE) | INDEXW; - break; - case 'l': case 'L': - operand[0].mode = (operand[0].mode & ~MODE) | INDEXL; - break; - default: - goto error; - } - } - else if ((operand[1].mode & MODE) == LOWREG) - { - switch (operand[1].mode & SIZE) - { - case L_8: - operand[0].mode = (operand[0].mode & ~MODE) | INDEXB; - break; - case L_16: - operand[0].mode = (operand[0].mode & ~MODE) | INDEXW; - break; - case L_32: - operand[0].mode = (operand[0].mode & ~MODE) | INDEXL; - break; - default: - goto error; - } - } - else - goto error; - - if (*ptr++ != ')' || *ptr++ != ',') - goto error; - get_operand (&ptr, operand + 2, OP3); - /* See if we can use the short form of MOVA. */ - if (((operand[1].mode & MODE) == REG || (operand[1].mode & MODE) == LOWREG) - && (operand[2].mode & MODE) == REG - && (operand[1].reg & 7) == (operand[2].reg & 7)) - { - operand[1].mode = operand[2].mode = 0; - operand[0].reg = operand[2].reg & 7; - } - return; - - error: - as_bad (_("expected valid addressing mode for mova: \"@(disp, ea.sz),ERn\"")); -} - -static void -get_rtsl_operands (char *ptr, struct h8_op *operand) -{ - int mode, num, num2, len, type = 0; - - ptr++; - if (*ptr == '(') - { - ptr++; - type = 1; - } - len = parse_reg (ptr, &mode, &num, SRC); - if (len == 0 || (mode & MODE) != REG) - { - as_bad (_("expected register")); - return; - } - ptr += len; - if (*ptr == '-') - { - len = parse_reg (++ptr, &mode, &num2, SRC); - if (len == 0 || (mode & MODE) != REG) - { - as_bad (_("expected register")); - return; - } - ptr += len; - /* CONST_xxx are used as placeholders in the opcode table. */ - num = num2 - num; - if (num < 0 || num > 3) - { - as_bad (_("invalid register list")); - return; - } - } - else - num2 = num, num = 0; - if (type == 1 && *ptr++ != ')') - { - as_bad (_("expected closing paren")); - return; - } - operand[0].mode = RS32; - operand[1].mode = RD32; - operand[0].reg = num; - operand[1].reg = num2; -} - -/* Passed a pointer to a list of opcodes which use different - addressing modes, return the opcode which matches the opcodes - provided. */ - -static const struct h8_instruction * -get_specific (const struct h8_instruction *instruction, - struct h8_op *operands, int size) -{ - const struct h8_instruction *this_try = instruction; - const struct h8_instruction *found_other = 0, *found_mismatched = 0; - int found = 0; - int this_index = instruction->idx; - int noperands = 0; - - /* There's only one ldm/stm and it's easier to just - get out quick for them. */ - if (OP_KIND (instruction->opcode->how) == O_LDM - || OP_KIND (instruction->opcode->how) == O_STM) - return this_try; - - while (noperands < 3 && operands[noperands].mode != 0) - noperands++; - - while (this_index == instruction->idx && !found) - { - int this_size; - - found = 1; - this_try = instruction++; - this_size = this_try->opcode->how & SN; - - if (this_try->noperands != noperands) - found = 0; - else if (this_try->noperands > 0) - { - int i; - - for (i = 0; i < this_try->noperands && found; i++) - { - op_type op = this_try->opcode->args.nib[i]; - int op_mode = op & MODE; - int op_size = op & SIZE; - int x = operands[i].mode; - int x_mode = x & MODE; - int x_size = x & SIZE; - - if (op_mode == LOWREG && (x_mode == REG || x_mode == LOWREG)) - { - if ((x_size == L_8 && (operands[i].reg & 8) == 0) - || (x_size == L_16 && (operands[i].reg & 8) == 8)) - as_warn (_("can't use high part of register in operand %d"), i); - - if (x_size != op_size) - found = 0; - } - else if (op_mode == REG) - { - if (x_mode == LOWREG) - x_mode = REG; - if (x_mode != REG) - found = 0; - - if (x_size == L_P) - x_size = (Hmode ? L_32 : L_16); - if (op_size == L_P) - op_size = (Hmode ? L_32 : L_16); - - /* The size of the reg is v important. */ - if (op_size != x_size) - found = 0; - } - else if (op_mode & CTRL) /* control register */ - { - if (!(x_mode & CTRL)) - found = 0; - - switch (x_mode) - { - case CCR: - if (op_mode != CCR && - op_mode != CCR_EXR && - op_mode != CC_EX_VB_SB) - found = 0; - break; - case EXR: - if (op_mode != EXR && - op_mode != CCR_EXR && - op_mode != CC_EX_VB_SB) - found = 0; - break; - case MACH: - if (op_mode != MACH && - op_mode != MACREG) - found = 0; - break; - case MACL: - if (op_mode != MACL && - op_mode != MACREG) - found = 0; - break; - case VBR: - if (op_mode != VBR && - op_mode != VBR_SBR && - op_mode != CC_EX_VB_SB) - found = 0; - break; - case SBR: - if (op_mode != SBR && - op_mode != VBR_SBR && - op_mode != CC_EX_VB_SB) - found = 0; - break; - } - } - else if ((op & ABSJMP) && (x_mode == ABS || x_mode == PCREL)) - { - operands[i].mode &= ~MODE; - operands[i].mode |= ABSJMP; - /* But it may not be 24 bits long. */ - if (x_mode == ABS && !Hmode) - { - operands[i].mode &= ~SIZE; - operands[i].mode |= L_16; - } - if ((operands[i].mode & SIZE) == L_32 - && (op_mode & SIZE) != L_32) - found = 0; - } - else if (x_mode == IMM && op_mode != IMM) - { - offsetT num = operands[i].exp.X_add_number; - if (op_mode == KBIT || op_mode == DBIT) - /* This is ok if the immediate value is sensible. */; - else if (op_mode == CONST_2) - found = num == 2; - else if (op_mode == CONST_4) - found = num == 4; - else if (op_mode == CONST_8) - found = num == 8; - else if (op_mode == CONST_16) - found = num == 16; - else - found = 0; - } - else if (op_mode == PCREL && op_mode == x_mode) - { - /* movsd, bsr/bc and bsr/bs only come in PCREL16 flavour: - If x_size is L_8, promote it. */ - if (OP_KIND (this_try->opcode->how) == O_MOVSD - || OP_KIND (this_try->opcode->how) == O_BSRBC - || OP_KIND (this_try->opcode->how) == O_BSRBS) - if (x_size == L_8) - x_size = L_16; - - /* The size of the displacement is important. */ - if (op_size != x_size) - found = 0; - } - else if ((op_mode == DISP || op_mode == IMM || op_mode == ABS - || op_mode == INDEXB || op_mode == INDEXW - || op_mode == INDEXL) - && op_mode == x_mode) - { - /* Promote a L_24 to L_32 if it makes us match. */ - if (x_size == L_24 && op_size == L_32) - { - x &= ~SIZE; - x |= x_size = L_32; - } - -#if 0 /* ??? */ - /* Promote an L8 to L_16 if it makes us match. */ - if ((op_mode == ABS || op_mode == DISP) && x_size == L_8) - { - if (op_size == L_16) - x_size = L_16; - } -#endif - - if (((x_size == L_16 && op_size == L_16U) - || (x_size == L_8 && op_size == L_8U) - || (x_size == L_3 && op_size == L_3NZ)) - /* We're deliberately more permissive for ABS modes. */ - && (op_mode == ABS - || constant_fits_size_p (operands + i, op_size, - op & NO_SYMBOLS))) - x_size = op_size; - - if (x_size != 0 && op_size != x_size) - found = 0; - else if (x_size == 0 - && ! constant_fits_size_p (operands + i, op_size, - op & NO_SYMBOLS)) - found = 0; - } - else if (op_mode != x_mode) - { - found = 0; - } - } - } - if (found) - { - if ((this_try->opcode->available == AV_H8SX && ! SXmode) - || (this_try->opcode->available == AV_H8S && ! Smode) - || (this_try->opcode->available == AV_H8H && ! Hmode)) - found = 0, found_other = this_try; - else if (this_size != size && (this_size != SN && size != SN)) - found_mismatched = this_try, found = 0; - - } - } - if (found) - return this_try; - if (found_other) - { - as_warn (_("Opcode `%s' with these operand types not available in %s mode"), - found_other->opcode->name, - (! Hmode && ! Smode ? "H8/300" - : SXmode ? "H8sx" - : Smode ? "H8/300S" - : "H8/300H")); - } - else if (found_mismatched) - { - as_warn (_("mismatch between opcode size and operand size")); - return found_mismatched; - } - return 0; -} - -static void -check_operand (struct h8_op *operand, unsigned int width, char *string) -{ - if (operand->exp.X_add_symbol == 0 - && operand->exp.X_op_symbol == 0) - { - /* No symbol involved, let's look at offset, it's dangerous if - any of the high bits are not 0 or ff's, find out by oring or - anding with the width and seeing if the answer is 0 or all - fs. */ - - if (! constant_fits_width_p (operand, width)) - { - if (width == 255 - && (operand->exp.X_add_number & 0xff00) == 0xff00) - { - /* Just ignore this one - which happens when trying to - fit a 16 bit address truncated into an 8 bit address - of something like bset. */ - } - else if (strcmp (string, "@") == 0 - && width == 0xffff - && (operand->exp.X_add_number & 0xff8000) == 0xff8000) - { - /* Just ignore this one - which happens when trying to - fit a 24 bit address truncated into a 16 bit address - of something like mov.w. */ - } - else - { - as_warn (_("operand %s0x%lx out of range."), string, - (unsigned long) operand->exp.X_add_number); - } - } - } -} - -/* RELAXMODE has one of 3 values: - - 0 Output a "normal" reloc, no relaxing possible for this insn/reloc - - 1 Output a relaxable 24bit absolute mov.w address relocation - (may relax into a 16bit absolute address). - - 2 Output a relaxable 16/24 absolute mov.b address relocation - (may relax into an 8bit absolute address). */ - -static void -do_a_fix_imm (int offset, int nibble, struct h8_op *operand, int relaxmode) -{ - int idx; - int size; - int where; - char *bytes = frag_now->fr_literal + offset; - - char *t = ((operand->mode & MODE) == IMM) ? "#" : "@"; - - if (operand->exp.X_add_symbol == 0) - { - switch (operand->mode & SIZE) - { - case L_2: - check_operand (operand, 0x3, t); - bytes[0] |= (operand->exp.X_add_number & 3) << (nibble ? 0 : 4); - break; - case L_3: - case L_3NZ: - check_operand (operand, 0x7, t); - bytes[0] |= (operand->exp.X_add_number & 7) << (nibble ? 0 : 4); - break; - case L_4: - check_operand (operand, 0xF, t); - bytes[0] |= (operand->exp.X_add_number & 15) << (nibble ? 0 : 4); - break; - case L_5: - check_operand (operand, 0x1F, t); - bytes[0] |= operand->exp.X_add_number & 31; - break; - case L_8: - case L_8U: - check_operand (operand, 0xff, t); - bytes[0] |= operand->exp.X_add_number; - break; - case L_16: - case L_16U: - check_operand (operand, 0xffff, t); - bytes[0] |= operand->exp.X_add_number >> 8; - bytes[1] |= operand->exp.X_add_number >> 0; - break; - case L_24: - check_operand (operand, 0xffffff, t); - bytes[0] |= operand->exp.X_add_number >> 16; - bytes[1] |= operand->exp.X_add_number >> 8; - bytes[2] |= operand->exp.X_add_number >> 0; - break; - - case L_32: - /* This should be done with bfd. */ - bytes[0] |= operand->exp.X_add_number >> 24; - bytes[1] |= operand->exp.X_add_number >> 16; - bytes[2] |= operand->exp.X_add_number >> 8; - bytes[3] |= operand->exp.X_add_number >> 0; - if (relaxmode != 0) - { - idx = (relaxmode == 2) ? R_MOV24B1 : R_MOVL1; - fix_new_exp (frag_now, offset, 4, &operand->exp, 0, idx); - } - break; - } - } - else - { - switch (operand->mode & SIZE) - { - case L_24: - case L_32: - size = 4; - where = (operand->mode & SIZE) == L_24 ? -1 : 0; - if (relaxmode == 2) - idx = R_MOV24B1; - else if (relaxmode == 1) - idx = R_MOVL1; - else - idx = R_RELLONG; - break; - default: - as_bad (_("Can't work out size of operand.\n")); - case L_16: - case L_16U: - size = 2; - where = 0; - if (relaxmode == 2) - idx = R_MOV16B1; - else - idx = R_RELWORD; - operand->exp.X_add_number = - ((operand->exp.X_add_number & 0xffff) ^ 0x8000) - 0x8000; - operand->exp.X_add_number |= (bytes[0] << 8) | bytes[1]; - break; - case L_8: - size = 1; - where = 0; - idx = R_RELBYTE; - operand->exp.X_add_number = - ((operand->exp.X_add_number & 0xff) ^ 0x80) - 0x80; - operand->exp.X_add_number |= bytes[0]; - } - - fix_new_exp (frag_now, - offset + where, - size, - &operand->exp, - 0, - idx); - } -} - -/* Now we know what sort of opcodes it is, let's build the bytes. */ - -static void -build_bytes (const struct h8_instruction *this_try, struct h8_op *operand) -{ - int i; - char *output = frag_more (this_try->length); - op_type *nibble_ptr = this_try->opcode->data.nib; - op_type c; - unsigned int nibble_count = 0; - int op_at[3]; - int nib = 0; - int movb = 0; - char asnibbles[100]; - char *p = asnibbles; - int high, low; - - if (!Hmode && this_try->opcode->available != AV_H8) - as_warn (_("Opcode `%s' with these operand types not available in H8/300 mode"), - this_try->opcode->name); - else if (!Smode - && this_try->opcode->available != AV_H8 - && this_try->opcode->available != AV_H8H) - as_warn (_("Opcode `%s' with these operand types not available in H8/300H mode"), - this_try->opcode->name); - else if (!SXmode - && this_try->opcode->available != AV_H8 - && this_try->opcode->available != AV_H8H - && this_try->opcode->available != AV_H8S) - as_warn (_("Opcode `%s' with these operand types not available in H8/300S mode"), - this_try->opcode->name); - - while (*nibble_ptr != (op_type) E) - { - int d; - - nib = 0; - c = *nibble_ptr++; - - d = (c & OP3) == OP3 ? 2 : (c & DST) == DST ? 1 : 0; - - if (c < 16) - nib = c; - else - { - int c2 = c & MODE; - - if (c2 == REG || c2 == LOWREG - || c2 == IND || c2 == PREINC || c2 == PREDEC - || c2 == POSTINC || c2 == POSTDEC) - { - nib = operand[d].reg; - if (c2 == LOWREG) - nib &= 7; - } - - else if (c & CTRL) /* Control reg operand. */ - nib = operand[d].reg; - - else if ((c & DISPREG) == (DISPREG)) - { - nib = operand[d].reg; - } - else if (c2 == ABS) - { - operand[d].mode = c; - op_at[d] = nibble_count; - nib = 0; - } - else if (c2 == IMM || c2 == PCREL || c2 == ABS - || (c & ABSJMP) || c2 == DISP) - { - operand[d].mode = c; - op_at[d] = nibble_count; - nib = 0; - } - else if ((c & IGNORE) || (c & DATA)) - nib = 0; - - else if (c2 == DBIT) - { - switch (operand[0].exp.X_add_number) - { - case 1: - nib = c; - break; - case 2: - nib = 0x8 | c; - break; - default: - as_bad (_("Need #1 or #2 here")); - } - } - else if (c2 == KBIT) - { - switch (operand[0].exp.X_add_number) - { - case 1: - nib = 0; - break; - case 2: - nib = 8; - break; - case 4: - if (!Hmode) - as_warn (_("#4 not valid on H8/300.")); - nib = 9; - break; - - default: - as_bad (_("Need #1 or #2 here")); - break; - } - /* Stop it making a fix. */ - operand[0].mode = 0; - } - - if (c & MEMRELAX) - operand[d].mode |= MEMRELAX; - - if (c & B31) - nib |= 0x8; - - if (c & B21) - nib |= 0x4; - - if (c & B11) - nib |= 0x2; - - if (c & B01) - nib |= 0x1; - - if (c2 == MACREG) - { - if (operand[0].mode == MACREG) - /* stmac has mac[hl] as the first operand. */ - nib = 2 + operand[0].reg; - else - /* ldmac has mac[hl] as the second operand. */ - nib = 2 + operand[1].reg; - } - } - nibble_count++; - - *p++ = nib; - } - - /* Disgusting. Why, oh why didn't someone ask us for advice - on the assembler format. */ - if (OP_KIND (this_try->opcode->how) == O_LDM) - { - high = (operand[1].reg >> 8) & 0xf; - low = (operand[1].reg) & 0xf; - asnibbles[2] = high - low; - asnibbles[7] = high; - } - else if (OP_KIND (this_try->opcode->how) == O_STM) - { - high = (operand[0].reg >> 8) & 0xf; - low = (operand[0].reg) & 0xf; - asnibbles[2] = high - low; - asnibbles[7] = low; - } - - for (i = 0; i < this_try->length; i++) - output[i] = (asnibbles[i * 2] << 4) | asnibbles[i * 2 + 1]; - - /* Note if this is a movb or a bit manipulation instruction - there is a special relaxation which only applies. */ - if ( this_try->opcode->how == O (O_MOV, SB) - || this_try->opcode->how == O (O_BCLR, SB) - || this_try->opcode->how == O (O_BAND, SB) - || this_try->opcode->how == O (O_BIAND, SB) - || this_try->opcode->how == O (O_BILD, SB) - || this_try->opcode->how == O (O_BIOR, SB) - || this_try->opcode->how == O (O_BIST, SB) - || this_try->opcode->how == O (O_BIXOR, SB) - || this_try->opcode->how == O (O_BLD, SB) - || this_try->opcode->how == O (O_BNOT, SB) - || this_try->opcode->how == O (O_BOR, SB) - || this_try->opcode->how == O (O_BSET, SB) - || this_try->opcode->how == O (O_BST, SB) - || this_try->opcode->how == O (O_BTST, SB) - || this_try->opcode->how == O (O_BXOR, SB)) - movb = 1; - - /* Output any fixes. */ - for (i = 0; i < this_try->noperands; i++) - { - int x = operand[i].mode; - int x_mode = x & MODE; - - if (x_mode == IMM || x_mode == DISP) - do_a_fix_imm (output - frag_now->fr_literal + op_at[i] / 2, - op_at[i] & 1, operand + i, (x & MEMRELAX) != 0); - - else if (x_mode == ABS) - do_a_fix_imm (output - frag_now->fr_literal + op_at[i] / 2, - op_at[i] & 1, operand + i, - (x & MEMRELAX) ? movb + 1 : 0); - - else if (x_mode == PCREL) - { - int size16 = (x & SIZE) == L_16; - int size = size16 ? 2 : 1; - int type = size16 ? R_PCRWORD : R_PCRBYTE; - fixS *fixP; - - check_operand (operand + i, size16 ? 0x7fff : 0x7f, "@"); - - if (operand[i].exp.X_add_number & 1) - as_warn (_("branch operand has odd offset (%lx)\n"), - (unsigned long) operand->exp.X_add_number); -#ifndef OBJ_ELF - /* The COFF port has always been off by one, changing it - now would be an incompatible change, so we leave it as-is. - - We don't want to do this for ELF as we want to be - compatible with the proposed ELF format from Hitachi. */ - operand[i].exp.X_add_number -= 1; -#endif - if (size16) - { - operand[i].exp.X_add_number = - ((operand[i].exp.X_add_number & 0xffff) ^ 0x8000) - 0x8000; - } - else - { - operand[i].exp.X_add_number = - ((operand[i].exp.X_add_number & 0xff) ^ 0x80) - 0x80; - } - - /* For BRA/S. */ - if (! size16) - operand[i].exp.X_add_number |= output[op_at[i] / 2]; - - fixP = fix_new_exp (frag_now, - output - frag_now->fr_literal + op_at[i] / 2, - size, - &operand[i].exp, - 1, - type); - fixP->fx_signed = 1; - } - else if (x_mode == MEMIND) - { - check_operand (operand + i, 0xff, "@@"); - fix_new_exp (frag_now, - output - frag_now->fr_literal + 1, - 1, - &operand[i].exp, - 0, - R_MEM_INDIRECT); - } - else if (x_mode == VECIND) - { - check_operand (operand + i, 0x7f, "@@"); - /* FIXME: approximating the effect of "B31" here... - This is very hackish, and ought to be done a better way. */ - operand[i].exp.X_add_number |= 0x80; - fix_new_exp (frag_now, - output - frag_now->fr_literal + 1, - 1, - &operand[i].exp, - 0, - R_MEM_INDIRECT); - } - else if (x & ABSJMP) - { - int where = 0; - bfd_reloc_code_real_type reloc_type = R_JMPL1; - -#ifdef OBJ_ELF - /* To be compatible with the proposed H8 ELF format, we - want the relocation's offset to point to the first byte - that will be modified, not to the start of the instruction. */ - - if ((operand->mode & SIZE) == L_32) - { - where = 2; - reloc_type = R_RELLONG; - } - else - where = 1; -#endif - - /* This jmp may be a jump or a branch. */ - - check_operand (operand + i, - SXmode ? 0xffffffff : Hmode ? 0xffffff : 0xffff, - "@"); - - if (operand[i].exp.X_add_number & 1) - as_warn (_("branch operand has odd offset (%lx)\n"), - (unsigned long) operand->exp.X_add_number); - - if (!Hmode) - operand[i].exp.X_add_number = - ((operand[i].exp.X_add_number & 0xffff) ^ 0x8000) - 0x8000; - fix_new_exp (frag_now, - output - frag_now->fr_literal + where, - 4, - &operand[i].exp, - 0, - reloc_type); - } - } -} - -/* Try to give an intelligent error message for common and simple to - detect errors. */ - -static void -clever_message (const struct h8_instruction *instruction, - struct h8_op *operand) -{ - /* Find out if there was more than one possible opcode. */ - - if ((instruction + 1)->idx != instruction->idx) - { - int argn; - - /* Only one opcode of this flavour, try to guess which operand - didn't match. */ - for (argn = 0; argn < instruction->noperands; argn++) - { - switch (instruction->opcode->args.nib[argn]) - { - case RD16: - if (operand[argn].mode != RD16) - { - as_bad (_("destination operand must be 16 bit register")); - return; - - } - break; - - case RS8: - if (operand[argn].mode != RS8) - { - as_bad (_("source operand must be 8 bit register")); - return; - } - break; - - case ABS16DST: - if (operand[argn].mode != ABS16DST) - { - as_bad (_("destination operand must be 16bit absolute address")); - return; - } - break; - case RD8: - if (operand[argn].mode != RD8) - { - as_bad (_("destination operand must be 8 bit register")); - return; - } - break; - - case ABS16SRC: - if (operand[argn].mode != ABS16SRC) - { - as_bad (_("source operand must be 16bit absolute address")); - return; - } - break; - - } - } - } - as_bad (_("invalid operands")); -} - - -/* If OPERAND is part of an address, adjust its size and value given - that it addresses SIZE bytes. - - This function decides how big non-immediate constants are when no - size was explicitly given. It also scales down the assembly-level - displacement in an @(d:2,ERn) operand. */ - -static void -fix_operand_size (struct h8_op *operand, int size) -{ - if (SXmode && (operand->mode & MODE) == DISP) - { - /* If the user didn't specify an operand width, see if we - can use @(d:2,ERn). */ - if ((operand->mode & SIZE) == 0 - && operand->exp.X_add_symbol == 0 - && operand->exp.X_op_symbol == 0 - && (operand->exp.X_add_number == size - || operand->exp.X_add_number == size * 2 - || operand->exp.X_add_number == size * 3)) - operand->mode |= L_2; - - /* Scale down the displacement in an @(d:2,ERn) operand. - X_add_number then contains the desired field value. */ - if ((operand->mode & SIZE) == L_2) - { - if (operand->exp.X_add_number % size != 0) - as_warn (_("operand/size mis-match")); - operand->exp.X_add_number /= size; - } - } - - if ((operand->mode & SIZE) == 0) - switch (operand->mode & MODE) - { - case DISP: - case INDEXB: - case INDEXW: - case INDEXL: - case ABS: - /* Pick a 24-bit address unless we know that a 16-bit address - is safe. get_specific() will relax L_24 into L_32 where - necessary. */ - if (Hmode - && !Nmode - && (operand->exp.X_add_number < -32768 - || operand->exp.X_add_number > 32767 - || operand->exp.X_add_symbol != 0 - || operand->exp.X_op_symbol != 0)) - operand->mode |= L_24; - else - operand->mode |= L_16; - break; - - case PCREL: - /* This condition is long standing, though somewhat suspect. */ - if (operand->exp.X_add_number > -128 - && operand->exp.X_add_number < 127) - operand->mode |= L_8; - else - operand->mode |= L_16; - break; - } -} - - -/* This is the guts of the machine-dependent assembler. STR points to - a machine dependent instruction. This function is supposed to emit - the frags/bytes it assembles. */ - -void -md_assemble (char *str) -{ - char *op_start; - char *op_end; - struct h8_op operand[3]; - const struct h8_instruction *instruction; - const struct h8_instruction *prev_instruction; - - char *dot = 0; - char *slash = 0; - char c; - int size, i; - - /* Drop leading whitespace. */ - while (*str == ' ') - str++; - - /* Find the op code end. */ - for (op_start = op_end = str; - *op_end != 0 && *op_end != ' '; - op_end++) - { - if (*op_end == '.') - { - dot = op_end + 1; - *op_end = 0; - op_end += 2; - break; - } - else if (*op_end == '/' && ! slash) - slash = op_end; - } - - if (op_end == op_start) - { - as_bad (_("can't find opcode ")); - } - c = *op_end; - - *op_end = 0; - - /* The assembler stops scanning the opcode at slashes, so it fails - to make characters following them lower case. Fix them. */ - if (slash) - while (*++slash) - *slash = TOLOWER (*slash); - - instruction = (const struct h8_instruction *) - hash_find (opcode_hash_control, op_start); - - if (instruction == NULL) - { - as_bad (_("unknown opcode")); - return; - } - - /* We used to set input_line_pointer to the result of get_operands, - but that is wrong. Our caller assumes we don't change it. */ - - operand[0].mode = 0; - operand[1].mode = 0; - operand[2].mode = 0; - - if (OP_KIND (instruction->opcode->how) == O_MOVAB - || OP_KIND (instruction->opcode->how) == O_MOVAW - || OP_KIND (instruction->opcode->how) == O_MOVAL) - get_mova_operands (op_end, operand); - else if (OP_KIND (instruction->opcode->how) == O_RTEL - || OP_KIND (instruction->opcode->how) == O_RTSL) - get_rtsl_operands (op_end, operand); - else - get_operands (instruction->noperands, op_end, operand); - - *op_end = c; - prev_instruction = instruction; - - /* Now we have operands from instruction. - Let's check them out for ldm and stm. */ - if (OP_KIND (instruction->opcode->how) == O_LDM) - { - /* The first operand must be @er7+, and the - second operand must be a register pair. */ - if ((operand[0].mode != RSINC) - || (operand[0].reg != 7) - || ((operand[1].reg & 0x80000000) == 0)) - as_bad (_("invalid operand in ldm")); - } - else if (OP_KIND (instruction->opcode->how) == O_STM) - { - /* The first operand must be a register pair, - and the second operand must be @-er7. */ - if (((operand[0].reg & 0x80000000) == 0) - || (operand[1].mode != RDDEC) - || (operand[1].reg != 7)) - as_bad (_("invalid operand in stm")); - } - - size = SN; - if (dot) - { - switch (TOLOWER (*dot)) - { - case 'b': - size = SB; - break; - - case 'w': - size = SW; - break; - - case 'l': - size = SL; - break; - } - } - if (OP_KIND (instruction->opcode->how) == O_MOVAB || - OP_KIND (instruction->opcode->how) == O_MOVAW || - OP_KIND (instruction->opcode->how) == O_MOVAL) - { - switch (operand[0].mode & MODE) - { - case INDEXB: - default: - fix_operand_size (&operand[1], 1); - break; - case INDEXW: - fix_operand_size (&operand[1], 2); - break; - case INDEXL: - fix_operand_size (&operand[1], 4); - break; - } - } - else - { - for (i = 0; i < 3 && operand[i].mode != 0; i++) - switch (size) - { - case SN: - case SB: - default: - fix_operand_size (&operand[i], 1); - break; - case SW: - fix_operand_size (&operand[i], 2); - break; - case SL: - fix_operand_size (&operand[i], 4); - break; - } - } - - instruction = get_specific (instruction, operand, size); - - if (instruction == 0) - { - /* Couldn't find an opcode which matched the operands. */ - char *where = frag_more (2); - - where[0] = 0x0; - where[1] = 0x0; - clever_message (prev_instruction, operand); - - return; - } - - build_bytes (instruction, operand); - -#ifdef BFD_ASSEMBLER - dwarf2_emit_insn (instruction->length); -#endif -} - -#ifndef BFD_ASSEMBLER -void -tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_crawl_symbol_chain \n")); -} -#endif - -symbolS * -md_undefined_symbol (char *name ATTRIBUTE_UNUSED) -{ - return 0; -} - -#ifndef BFD_ASSEMBLER -void -tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_headers_hook \n")); -} -#endif - -/* Various routines to kill one day */ -/* Equal to MAX_PRECISION in atof-ieee.c */ -#define MAX_LITTLENUMS 6 - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (int type, char *litP, int *sizeP) -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_ATOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (long) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -const char *md_shortopts = ""; -struct option md_longopts[] = { - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED) -{ - return 0; -} - -void -md_show_usage (FILE *stream ATTRIBUTE_UNUSED) -{ -} - -void tc_aout_fix_to_chars (void); - -void -tc_aout_fix_to_chars (void) -{ - printf (_("call to tc_aout_fix_to_chars \n")); - abort (); -} - -void -md_convert_frag ( -#ifdef BFD_ASSEMBLER - bfd *headers ATTRIBUTE_UNUSED, -#else - object_headers *headers ATTRIBUTE_UNUSED, -#endif - segT seg ATTRIBUTE_UNUSED, - fragS *fragP ATTRIBUTE_UNUSED) -{ - printf (_("call to md_convert_frag \n")); - abort (); -} - -#ifdef BFD_ASSEMBLER -valueT -md_section_align (segT segment, valueT size) -{ - int align = bfd_get_section_alignment (stdoutput, segment); - return ((size + (1 << align) - 1) & (-1 << align)); -} -#else -valueT -md_section_align (segT seg, valueT size) -{ - return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); -} -#endif - - -void -md_apply_fix3 (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) -{ - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - long val = *valP; - - switch (fixP->fx_size) - { - case 1: - *buf++ = val; - break; - case 2: - *buf++ = (val >> 8); - *buf++ = val; - break; - case 4: - *buf++ = (val >> 24); - *buf++ = (val >> 16); - *buf++ = (val >> 8); - *buf++ = val; - break; - default: - abort (); - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -int -md_estimate_size_before_relax (register fragS *fragP ATTRIBUTE_UNUSED, - register segT segment_type ATTRIBUTE_UNUSED) -{ - printf (_("call tomd_estimate_size_before_relax \n")); - abort (); -} - -/* Put number into target byte order. */ -void -md_number_to_chars (char *ptr, valueT use, int nbytes) -{ - number_to_chars_bigendian (ptr, use, nbytes); -} - -long -md_pcrel_from (fixS *fixP ATTRIBUTE_UNUSED) -{ - abort (); -} - -#ifndef BFD_ASSEMBLER -void -tc_reloc_mangle (fixS *fix_ptr, struct internal_reloc *intr, bfd_vma base) -{ - symbolS *symbol_ptr; - - symbol_ptr = fix_ptr->fx_addsy; - - /* If this relocation is attached to a symbol then it's ok - to output it. */ - if (fix_ptr->fx_r_type == TC_CONS_RELOC) - { - /* cons likes to create reloc32's whatever the size of the reloc.. - */ - switch (fix_ptr->fx_size) - { - case 4: - intr->r_type = R_RELLONG; - break; - case 2: - intr->r_type = R_RELWORD; - break; - case 1: - intr->r_type = R_RELBYTE; - break; - default: - abort (); - } - } - else - { - intr->r_type = fix_ptr->fx_r_type; - } - - intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base; - intr->r_offset = fix_ptr->fx_offset; - - if (symbol_ptr) - { - if (symbol_ptr->sy_number != -1) - intr->r_symndx = symbol_ptr->sy_number; - else - { - symbolS *segsym; - - /* This case arises when a reference is made to `.'. */ - segsym = seg_info (S_GET_SEGMENT (symbol_ptr))->dot; - if (segsym == NULL) - intr->r_symndx = -1; - else - { - intr->r_symndx = segsym->sy_number; - intr->r_offset += S_GET_VALUE (symbol_ptr); - } - } - } - else - intr->r_symndx = -1; -} -#else /* BFD_ASSEMBLER */ -arelent * -tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) -{ - arelent *rel; - bfd_reloc_code_real_type r_type; - - if (fixp->fx_addsy && fixp->fx_subsy) - { - if ((S_GET_SEGMENT (fixp->fx_addsy) != S_GET_SEGMENT (fixp->fx_subsy)) - || S_GET_SEGMENT (fixp->fx_addsy) == undefined_section) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - "Difference of symbols in different sections is not supported"); - return NULL; - } - } - - rel = (arelent *) xmalloc (sizeof (arelent)); - rel->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *rel->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - rel->address = fixp->fx_frag->fr_address + fixp->fx_where; - rel->addend = fixp->fx_offset; - - r_type = fixp->fx_r_type; - -#define DEBUG 0 -#if DEBUG - fprintf (stderr, "%s\n", bfd_get_reloc_code_name (r_type)); - fflush(stderr); -#endif - rel->howto = bfd_reloc_type_lookup (stdoutput, r_type); - if (rel->howto == NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, - _("Cannot represent relocation type %s"), - bfd_get_reloc_code_name (r_type)); - return NULL; - } - - return rel; -} -#endif diff --git a/gas/config/tc-h8300.h b/gas/config/tc-h8300.h deleted file mode 100644 index 89351cbe9..000000000 --- a/gas/config/tc-h8300.h +++ /dev/null @@ -1,103 +0,0 @@ -/* This file is tc-h8300.h - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 2000, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_H8300 - -#define TARGET_BYTES_BIG_ENDIAN 1 - -#define TARGET_ARCH bfd_arch_h8300 - -#ifdef BFD_ASSEMBLER -/* Fixup debug sections since we will never relax them. */ -#define TC_LINKRELAX_FIXUP(seg) (seg->flags & SEC_ALLOC) -#endif -#ifdef OBJ_ELF -#define TARGET_FORMAT "elf32-h8300" -#define LOCAL_LABEL_PREFIX '.' -#define LOCAL_LABEL(NAME) (NAME[0] == '.' && NAME[1] == 'L') -#define FAKE_LABEL_NAME ".L0\001" -#endif - -#if ANSI_PROTOTYPES -struct fix; -struct internal_reloc; -#endif - -#define WORKING_DOT_WORD - -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) abort (); - -#define BFD_ARCH bfd_arch_h8300 -#define COFF_MAGIC ( Smode && Nmode ? 0x8304 : Hmode && Nmode ? 0x8303 : Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300) -#define TC_COUNT_RELOC(x) (1) -#define IGNORE_NONSTANDARD_ESCAPES - -#define tc_coff_symbol_emit_hook(a) ; /* not used */ -#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a,b,c) -extern void tc_reloc_mangle (struct fix *, struct internal_reloc *, bfd_vma); - -/* No shared lib support, so we don't need to ensure externally - visible symbols can be overridden. */ -#define EXTERN_FORCE_RELOC 0 - -/* Minimum instruction is of 16 bits. */ -#define DWARF2_LINE_MIN_INSN_LENGTH 2 - -#ifdef OBJ_ELF -/* Provide mappings from the original H8 COFF relocation names to - their corresponding BFD relocation names. This allows us to use - most of tc-h8300.c without modifications for both ELF and COFF - ports. */ -#define R_MOV24B1 BFD_RELOC_H8_DIR24A8 -#define R_MOVL1 BFD_RELOC_H8_DIR32A16 -#define R_MOV24B1 BFD_RELOC_H8_DIR24A8 -#define R_MOVL1 BFD_RELOC_H8_DIR32A16 -#define R_RELLONG BFD_RELOC_32 -#define R_MOV16B1 BFD_RELOC_H8_DIR16A8 -#define R_RELWORD BFD_RELOC_16 -#define R_RELBYTE BFD_RELOC_8 -#define R_PCRWORD BFD_RELOC_16_PCREL -#define R_PCRBYTE BFD_RELOC_8_PCREL -#define R_JMPL1 BFD_RELOC_H8_DIR24R8 -#define R_MEM_INDIRECT BFD_RELOC_8 - -/* We do not want to adjust any relocations to make implementation of - linker relaxations easier. */ -#define tc_fix_adjustable(FIX) 0 -#endif - -#define TC_CONS_RELOC (Hmode ? R_RELLONG: R_RELWORD) - -#define DO_NOT_STRIP 0 -#define LISTING_HEADER "Renesas H8/300 GAS " -#define NEED_FX_R_TYPE 1 -#ifndef OBJ_ELF -#define RELOC_32 1234 -#endif - -extern int Hmode; -extern int Smode; -extern int Nmode; -extern int SXmode; - -#define md_operand(x) diff --git a/gas/config/tc-h8500.c b/gas/config/tc-h8500.c deleted file mode 100644 index cd4d76f88..000000000 --- a/gas/config/tc-h8500.c +++ /dev/null @@ -1,1617 +0,0 @@ -/* tc-h8500.c -- Assemble code for the Renesas H8/500 - Copyright 1993, 1994, 1995, 1998, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* Written By Steve Chamberlain . */ - -#include -#include "as.h" -#include "bfd.h" -#include "subsegs.h" -#define DEFINE_TABLE -#define ASSEMBLER_TABLE -#include "opcodes/h8500-opc.h" -#include "safe-ctype.h" - -const char comment_chars[] = "!"; -const char line_separator_chars[] = ";"; -const char line_comment_chars[] = "!#"; - -/* This table describes all the machine specific pseudo-ops the assembler - has to support. The fields are: - pseudo-op name without dot - function to call to execute this pseudo-op - Integer arg to pass to the function - */ - -const pseudo_typeS md_pseudo_table[] = -{ - {"int", cons, 2}, - {"data.b", cons, 1}, - {"data.w", cons, 2}, - {"data.l", cons, 4}, - {"form", listing_psize, 0}, - {"heading", listing_title, 0}, - {"import", s_ignore, 0}, - {"page", listing_eject, 0}, - {"program", s_ignore, 0}, - {0, 0, 0} -}; - -const int md_reloc_size; - -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant */ -/* As in 0f12.456 */ -/* or 0d1.2345e12 */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -#define C(a,b) ENCODE_RELAX(a,b) -#define ENCODE_RELAX(what,length) (((what) << 2) + (length)) - -#define GET_WHAT(x) ((x>>2)) - -#define BYTE_DISP 1 -#define WORD_DISP 2 -#define UNDEF_BYTE_DISP 0 -#define UNDEF_WORD_DISP 3 - -#define BRANCH 1 -#define SCB_F 2 -#define SCB_TST 3 -#define END 4 - -#define BYTE_F 127 -#define BYTE_B -126 -#define WORD_F 32767 -#define WORD_B 32768 - -relax_typeS md_relax_table[C (END, 0)] = { - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - - /* BRANCH */ - { 0, 0, 0, 0 }, - { BYTE_F, BYTE_B, 2, C (BRANCH, WORD_DISP) }, - { WORD_F, WORD_B, 3, 0 }, - { 0, 0, 3, 0 }, - - /* SCB_F */ - { 0, 0, 0, 0 }, - { BYTE_F, BYTE_B, 3, C (SCB_F, WORD_DISP) }, - { WORD_F, WORD_B, 8, 0 }, - { 0, 0, 8, 0 }, - - /* SCB_TST */ - { 0, 0, 0, 0 }, - { BYTE_F, BYTE_B, 3, C (SCB_TST, WORD_DISP) }, - { WORD_F, WORD_B, 10, 0 }, - { 0, 0, 10, 0 } - -}; - -static struct hash_control *opcode_hash_control; /* Opcode mnemonics */ - -/* - This function is called once, at assembler startup time. This should - set up all the tables, etc. that the MD part of the assembler needs - */ - -void -md_begin () -{ - const h8500_opcode_info *opcode; - char prev_buffer[100]; - int idx = 0; - - opcode_hash_control = hash_new (); - prev_buffer[0] = 0; - - /* Insert unique names into hash table */ - for (opcode = h8500_table; opcode->name; opcode++) - { - if (idx != opcode->idx) - { - hash_insert (opcode_hash_control, opcode->name, (char *) opcode); - idx++; - } - } -} - -static int rn; /* register number used by RN */ -static int rs; /* register number used by RS */ -static int rd; /* register number used by RD */ -static int crb; /* byte size cr */ -static int crw; /* word sized cr */ -static int cr; /* unknown size cr */ - -static expressionS displacement;/* displacement expression */ - -static int immediate_inpage; -static expressionS immediate; /* immediate expression */ - -static expressionS absolute; /* absolute expression */ - -typedef struct -{ - int type; - int reg; - expressionS exp; - int page; -} - -h8500_operand_info; - -/* Try to parse a reg name. Return the number of chars consumed. */ - -static int parse_reg PARAMS ((char *, int *, int *)); - -static int -parse_reg (src, mode, reg) - char *src; - int *mode; - int *reg; -{ - char *end; - int len; - - /* Cribbed from get_symbol_end(). */ - if (!is_name_beginner (*src) || *src == '\001') - return 0; - end = src + 1; - while (is_part_of_name (*end) || *end == '\001') - end++; - len = end - src; - - if (len == 2 && src[0] == 'r') - { - if (src[1] >= '0' && src[1] <= '7') - { - *mode = RN; - *reg = (src[1] - '0'); - return len; - } - } - if (len == 2 && src[0] == 's' && src[1] == 'p') - { - *mode = RN; - *reg = 7; - return len; - } - if (len == 3 && src[0] == 'c' && src[1] == 'c' && src[2] == 'r') - { - *mode = CRB; - *reg = 1; - return len; - } - if (len == 2 && src[0] == 's' && src[1] == 'r') - { - *mode = CRW; - *reg = 0; - return len; - } - if (len == 2 && src[0] == 'b' && src[1] == 'r') - { - *mode = CRB; - *reg = 3; - return len; - } - if (len == 2 && src[0] == 'e' && src[1] == 'p') - { - *mode = CRB; - *reg = 4; - return len; - } - if (len == 2 && src[0] == 'd' && src[1] == 'p') - { - *mode = CRB; - *reg = 5; - return len; - } - if (len == 2 && src[0] == 't' && src[1] == 'p') - { - *mode = CRB; - *reg = 7; - return len; - } - if (len == 2 && src[0] == 'f' && src[1] == 'p') - { - *mode = RN; - *reg = 6; - return len; - } - return 0; -} - -static char *parse_exp PARAMS ((char *, expressionS *, int *)); - -static char * -parse_exp (s, op, page) - char *s; - expressionS *op; - int *page; -{ - char *save; - char *new; - - save = input_line_pointer; - - *page = 0; - if (s[0] == '%') - { - if (s[1] == 'p' && s[2] == 'a' && s[3] == 'g' && s[4] == 'e') - { - s += 5; - *page = 'p'; - } - if (s[1] == 'h' && s[2] == 'i' && s[3] == '1' && s[4] == '6') - { - s += 5; - *page = 'h'; - } - else if (s[1] == 'o' && s[2] == 'f' && s[3] == 'f') - { - s += 4; - *page = 'o'; - } - } - - input_line_pointer = s; - - expression (op); - if (op->X_op == O_absent) - as_bad (_("missing operand")); - new = input_line_pointer; - input_line_pointer = save; - return new; -} - -typedef enum - { - exp_signed, exp_unsigned, exp_sandu - } sign_type; - -static char *skip_colonthing - PARAMS ((sign_type, char *, h8500_operand_info *, int, int, int, int)); - -static char * -skip_colonthing (sign, ptr, exp, def, size8, size16, size24) - sign_type sign; - char *ptr; - h8500_operand_info *exp; - int def; - int size8; - int size16; - int size24; -{ - ptr = parse_exp (ptr, &exp->exp, &exp->page); - if (*ptr == ':') - { - ptr++; - if (*ptr == '8') - { - ptr++; - exp->type = size8; - } - else if (ptr[0] == '1' && ptr[1] == '6') - { - ptr += 2; - exp->type = size16; - } - else if (ptr[0] == '2' && ptr[1] == '4') - { - if (!size24) - { - as_bad (_(":24 not valid for this opcode")); - } - ptr += 2; - exp->type = size24; - } - else - { - as_bad (_("expect :8,:16 or :24")); - exp->type = size16; - } - } - else - { - if (exp->page == 'p') - { - exp->type = IMM8; - } - else if (exp->page == 'h') - { - exp->type = IMM16; - } - else - { - /* Let's work out the size from the context */ - int n = exp->exp.X_add_number; - if (size8 - && exp->exp.X_op == O_constant - && ((sign == exp_signed && (n >= -128 && n <= 127)) - || (sign == exp_unsigned && (n >= 0 && (n <= 255))) - || (sign == exp_sandu && (n >= -128 && (n <= 255))))) - { - exp->type = size8; - } - else - { - exp->type = def; - } - } - } - return ptr; -} - -static int parse_reglist PARAMS ((char *, h8500_operand_info *)); - -static int -parse_reglist (src, op) - char *src; - h8500_operand_info *op; -{ - int mode; - int rn; - int mask = 0; - int rm; - int idx = 1; /* skip ( */ - - while (src[idx] && src[idx] != ')') - { - int done = parse_reg (src + idx, &mode, &rn); - - if (done) - { - idx += done; - mask |= 1 << rn; - } - else - { - as_bad (_("syntax error in reg list")); - return 0; - } - if (src[idx] == '-') - { - idx++; - done = parse_reg (src + idx, &mode, &rm); - if (done) - { - idx += done; - while (rn <= rm) - { - mask |= 1 << rn; - rn++; - } - } - else - { - as_bad (_("missing final register in range")); - } - } - if (src[idx] == ',') - idx++; - } - idx++; - op->exp.X_add_symbol = 0; - op->exp.X_op_symbol = 0; - op->exp.X_add_number = mask; - op->exp.X_op = O_constant; - op->exp.X_unsigned = 1; - op->type = IMM8; - return idx; - -} - -/* The many forms of operand: - - Rn Register direct - @Rn Register indirect - @(disp[:size], Rn) Register indirect with displacement - @Rn+ - @-Rn - @aa[:size] absolute - #xx[:size] immediate data - - */ - -static void get_operand PARAMS ((char **, h8500_operand_info *, char)); - -static void -get_operand (ptr, op, ispage) - char **ptr; - h8500_operand_info *op; - char ispage; -{ - char *src = *ptr; - int mode; - unsigned int num; - unsigned int len; - op->page = 0; - if (src[0] == '(' && src[1] == 'r') - { - /* This is a register list */ - *ptr = src + parse_reglist (src, op); - return; - } - - len = parse_reg (src, &op->type, &op->reg); - - if (len) - { - *ptr = src + len; - return; - } - - if (*src == '@') - { - src++; - if (*src == '-') - { - src++; - len = parse_reg (src, &mode, &num); - if (len == 0) - { - /* Oops, not a reg after all, must be ordinary exp */ - src--; - /* must be a symbol */ - *ptr = skip_colonthing (exp_unsigned, src, - op, ABS16, ABS8, ABS16, ABS24); - return; - } - - op->type = RNDEC; - op->reg = num; - *ptr = src + len; - return; - } - if (*src == '(') - { - /* Disp */ - src++; - - src = skip_colonthing (exp_signed, src, - op, RNIND_D16, RNIND_D8, RNIND_D16, 0); - - if (*src != ',') - { - as_bad (_("expected @(exp, Rn)")); - return; - } - src++; - len = parse_reg (src, &mode, &op->reg); - if (len == 0 || mode != RN) - { - as_bad (_("expected @(exp, Rn)")); - return; - } - src += len; - if (*src != ')') - { - as_bad (_("expected @(exp, Rn)")); - return; - } - *ptr = src + 1; - return; - } - len = parse_reg (src, &mode, &num); - - if (len) - { - src += len; - if (*src == '+') - { - src++; - if (mode != RN) - { - as_bad (_("@Rn+ needs word register")); - return; - } - op->type = RNINC; - op->reg = num; - *ptr = src; - return; - } - if (mode != RN) - { - as_bad (_("@Rn needs word register")); - return; - } - op->type = RNIND; - op->reg = num; - *ptr = src; - return; - } - else - { - /* must be a symbol */ - *ptr = - skip_colonthing (exp_unsigned, src, op, - ispage ? ABS24 : ABS16, ABS8, ABS16, ABS24); - return; - } - } - - if (*src == '#') - { - src++; - *ptr = skip_colonthing (exp_sandu, src, op, IMM16, IMM8, IMM16, ABS24); - return; - } - else - { - *ptr = skip_colonthing (exp_signed, src, op, - ispage ? ABS24 : PCREL8, PCREL8, PCREL16, ABS24); - } -} - -static char *get_operands - PARAMS ((h8500_opcode_info *, char *, h8500_operand_info *)); - -static char * -get_operands (info, args, operand) - h8500_opcode_info *info; - char *args; - h8500_operand_info *operand; -{ - char *ptr = args; - - switch (info->nargs) - { - case 0: - operand[0].type = 0; - operand[1].type = 0; - break; - - case 1: - ptr++; - get_operand (&ptr, operand + 0, info->name[0] == 'p'); - operand[1].type = 0; - break; - - case 2: - ptr++; - get_operand (&ptr, operand + 0, 0); - if (*ptr == ',') - ptr++; - get_operand (&ptr, operand + 1, 0); - break; - - default: - abort (); - } - - return ptr; -} - -/* Passed a pointer to a list of opcodes which use different - addressing modes, return the opcode which matches the opcodes - provided. */ - -int pcrel8; /* Set when we've seen a pcrel operand */ - -static h8500_opcode_info *get_specific - PARAMS ((h8500_opcode_info *, h8500_operand_info *)); - -static h8500_opcode_info * -get_specific (opcode, operands) - h8500_opcode_info *opcode; - h8500_operand_info *operands; -{ - h8500_opcode_info *this_try = opcode; - int found = 0; - unsigned int noperands = opcode->nargs; - int this_index = opcode->idx; - - while (this_index == opcode->idx && !found) - { - unsigned int i; - - this_try = opcode++; - - /* look at both operands needed by the opcodes and provided by - the user*/ - for (i = 0; i < noperands; i++) - { - h8500_operand_info *user = operands + i; - - switch (this_try->arg_type[i]) - { - case FPIND_D8: - /* Opcode needs (disp:8,fp) */ - if (user->type == RNIND_D8 && user->reg == 6) - { - displacement = user->exp; - continue; - } - break; - case RDIND_D16: - if (user->type == RNIND_D16) - { - displacement = user->exp; - rd = user->reg; - continue; - } - break; - case RDIND_D8: - if (user->type == RNIND_D8) - { - displacement = user->exp; - rd = user->reg; - continue; - } - break; - case RNIND_D16: - case RNIND_D8: - if (user->type == this_try->arg_type[i]) - { - displacement = user->exp; - rn = user->reg; - continue; - } - break; - - case SPDEC: - if (user->type == RNDEC && user->reg == 7) - { - continue; - } - break; - case SPINC: - if (user->type == RNINC && user->reg == 7) - { - continue; - } - break; - case ABS16: - if (user->type == ABS16) - { - absolute = user->exp; - continue; - } - break; - case ABS8: - if (user->type == ABS8) - { - absolute = user->exp; - continue; - } - break; - case ABS24: - if (user->type == ABS24) - { - absolute = user->exp; - continue; - } - break; - - case CRB: - if ((user->type == CRB || user->type == CR) && user->reg != 0) - { - crb = user->reg; - continue; - } - break; - case CRW: - if ((user->type == CRW || user->type == CR) && user->reg == 0) - { - crw = user->reg; - continue; - } - break; - case DISP16: - if (user->type == DISP16) - { - displacement = user->exp; - continue; - } - break; - case DISP8: - if (user->type == DISP8) - { - displacement = user->exp; - continue; - } - break; - case FP: - if (user->type == RN && user->reg == 6) - { - continue; - } - break; - case PCREL16: - if (user->type == PCREL16) - { - displacement = user->exp; - continue; - } - break; - case PCREL8: - if (user->type == PCREL8) - { - displacement = user->exp; - pcrel8 = 1; - continue; - } - break; - - case IMM16: - if (user->type == IMM16 - || user->type == IMM8) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case RLIST: - case IMM8: - if (user->type == IMM8) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case IMM4: - if (user->type == IMM8) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case QIM: - if (user->type == IMM8 - && user->exp.X_op == O_constant - && - (user->exp.X_add_number == -2 - || user->exp.X_add_number == -1 - || user->exp.X_add_number == 1 - || user->exp.X_add_number == 2)) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case RD: - if (user->type == RN) - { - rd = user->reg; - continue; - } - break; - case RS: - if (user->type == RN) - { - rs = user->reg; - continue; - } - break; - case RDIND: - if (user->type == RNIND) - { - rd = user->reg; - continue; - - } - break; - case RNINC: - case RNIND: - case RNDEC: - case RN: - - if (user->type == this_try->arg_type[i]) - { - rn = user->reg; - continue; - } - break; - case SP: - if (user->type == RN && user->reg == 7) - { - continue; - } - break; - default: - printf (_("unhandled %d\n"), this_try->arg_type[i]); - break; - } - - /* If we get here this didn't work out */ - goto fail; - } - found = 1; - fail:; - - } - - if (found) - return this_try; - else - return 0; -} - -static int check PARAMS ((expressionS *, int, int)); - -static int -check (operand, low, high) - expressionS *operand; - int low; - int high; -{ - if (operand->X_op != O_constant - || operand->X_add_number < low - || operand->X_add_number > high) - { - as_bad (_("operand must be absolute in range %d..%d"), low, high); - } - return operand->X_add_number; -} - -static void insert PARAMS ((char *, int, expressionS *, int, int)); - -static void -insert (output, index, exp, reloc, pcrel) - char *output; - int index; - expressionS *exp; - int reloc; - int pcrel; -{ - fix_new_exp (frag_now, - output - frag_now->fr_literal + index, - 4, /* always say size is 4, but we know better */ - exp, - pcrel, - reloc); -} - -static void build_relaxable_instruction - PARAMS ((h8500_opcode_info *, h8500_operand_info *)); - -static void -build_relaxable_instruction (opcode, operand) - h8500_opcode_info *opcode; - h8500_operand_info *operand ATTRIBUTE_UNUSED; -{ - /* All relaxable instructions start life as two bytes but can become - three bytes long if a lonely branch and up to 9 bytes if long - scb. */ - char *p; - int len; - int type; - - if (opcode->bytes[0].contents == 0x01) - { - type = SCB_F; - } - else if (opcode->bytes[0].contents == 0x06 - || opcode->bytes[0].contents == 0x07) - { - type = SCB_TST; - } - else - { - type = BRANCH; - } - - p = frag_var (rs_machine_dependent, - md_relax_table[C (type, WORD_DISP)].rlx_length, - len = md_relax_table[C (type, BYTE_DISP)].rlx_length, - C (type, UNDEF_BYTE_DISP), - displacement.X_add_symbol, - displacement.X_add_number, - 0); - - p[0] = opcode->bytes[0].contents; - if (type != BRANCH) - { - p[1] = opcode->bytes[1].contents | rs; - } -} - -/* Now we know what sort of opcodes it is, let's build the bytes. */ - -static void build_bytes PARAMS ((h8500_opcode_info *, h8500_operand_info *)); - -static void -build_bytes (opcode, operand) - h8500_opcode_info *opcode; - h8500_operand_info *operand; -{ - int index; - - if (pcrel8) - { - pcrel8 = 0; - build_relaxable_instruction (opcode, operand); - } - else - { - char *output = frag_more (opcode->length); - - memset (output, 0, opcode->length); - for (index = 0; index < opcode->length; index++) - { - output[index] = opcode->bytes[index].contents; - - switch (opcode->bytes[index].insert) - { - default: - printf (_("failed for %d\n"), opcode->bytes[index].insert); - break; - case 0: - break; - case RN: - output[index] |= rn; - break; - case RD: - case RDIND: - output[index] |= rd; - break; - case RS: - output[index] |= rs; - break; - case DISP16: - insert (output, index, &displacement, R_H8500_IMM16, 0); - index++; - break; - case DISP8: - case FPIND_D8: - insert (output, index, &displacement, R_H8500_IMM8, 0); - break; - case IMM16: - { - int p; - - switch (immediate_inpage) - { - case 'p': - p = R_H8500_HIGH16; - break; - case 'h': - p = R_H8500_HIGH16; - break; - default: - p = R_H8500_IMM16; - break; - } - insert (output, index, &immediate, p, 0); - } - index++; - break; - case RLIST: - case IMM8: - if (immediate_inpage) - insert (output, index, &immediate, R_H8500_HIGH8, 0); - else - insert (output, index, &immediate, R_H8500_IMM8, 0); - break; - case PCREL16: - insert (output, index, &displacement, R_H8500_PCREL16, 1); - index++; - break; - case PCREL8: - insert (output, index, &displacement, R_H8500_PCREL8, 1); - break; - case IMM4: - output[index] |= check (&immediate, 0, 15); - break; - case CR: - output[index] |= cr; - if (cr == 0) - output[0] |= 0x8; - else - output[0] &= ~0x8; - break; - case CRB: - output[index] |= crb; - output[0] &= ~0x8; - break; - case CRW: - output[index] |= crw; - output[0] |= 0x8; - break; - case ABS24: - insert (output, index, &absolute, R_H8500_IMM24, 0); - index += 2; - break; - case ABS16: - insert (output, index, &absolute, R_H8500_IMM16, 0); - index++; - break; - case ABS8: - insert (output, index, &absolute, R_H8500_IMM8, 0); - break; - case QIM: - switch (immediate.X_add_number) - { - case -2: - output[index] |= 0x5; - break; - case -1: - output[index] |= 0x4; - break; - case 1: - output[index] |= 0; - break; - case 2: - output[index] |= 1; - break; - } - break; - } - } - } -} - -/* This is the guts of the machine-dependent assembler. STR points to - a machine dependent instruction. This function is supposed to emit - the frags/bytes it assembles to. */ - -void -md_assemble (str) - char *str; -{ - char *op_start; - char *op_end; - h8500_operand_info operand[2]; - h8500_opcode_info *opcode; - h8500_opcode_info *prev_opcode; - char name[11]; - - int nlen = 0; - - /* Drop leading whitespace. */ - while (*str == ' ') - str++; - - /* Find the op code end. */ - for (op_start = op_end = str; - !is_end_of_line[(unsigned char) *op_end] && *op_end != ' '; - op_end++) - { - if ( /**op_end != '.' - && *op_end != ':' - && */ nlen < 10) - { - name[nlen++] = *op_end; - } - } - name[nlen] = 0; - - if (op_end == op_start) - as_bad (_("can't find opcode ")); - - opcode = (h8500_opcode_info *) hash_find (opcode_hash_control, name); - - if (opcode == NULL) - { - as_bad (_("unknown opcode")); - return; - } - - get_operands (opcode, op_end, operand); - prev_opcode = opcode; - - opcode = get_specific (opcode, operand); - - if (opcode == 0) - { - /* Couldn't find an opcode which matched the operands */ - char *where = frag_more (2); - - where[0] = 0x0; - where[1] = 0x0; - as_bad (_("invalid operands for opcode")); - return; - } - - build_bytes (opcode, operand); -} - -void -tc_crawl_symbol_chain (headers) - object_headers *headers ATTRIBUTE_UNUSED; -{ - printf (_("call to tc_crawl_symbol_chain \n")); -} - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -void -tc_headers_hook (headers) - object_headers *headers ATTRIBUTE_UNUSED; -{ - printf (_("call to tc_headers_hook \n")); -} - -/* Various routines to kill one day. */ -/* Equal to MAX_PRECISION in atof-ieee.c. */ -#define MAX_LITTLENUMS 6 - -/* Turn a string in input_line_pointer into a floating point constant - of type type, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (type, litP, sizeP) - char type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_ATOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (long) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -const char *md_shortopts = ""; -struct option md_longopts[] = { - {NULL, no_argument, NULL, 0} -}; -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (c, arg) - int c ATTRIBUTE_UNUSED; - char *arg ATTRIBUTE_UNUSED; -{ - return 0; -} - -void -md_show_usage (stream) - FILE *stream ATTRIBUTE_UNUSED; -{ -} - -static void wordify_scb PARAMS ((char *, int *, int *)); - -static void -wordify_scb (buffer, disp_size, inst_size) - char *buffer; - int *disp_size; - int *inst_size; -{ - int rn = buffer[1] & 0x7; - - switch (buffer[0]) - { - case 0x0e: /* BSR */ - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - case 0x2c: - case 0x2d: - case 0x2e: - case 0x2f: - buffer[0] |= 0x10; - buffer[1] = 0; - buffer[2] = 0; - *disp_size = 2; - *inst_size = 1; - return; - default: - abort (); - - case 0x01: - *inst_size = 6; - *disp_size = 2; - break; - case 0x06: - *inst_size = 8; - *disp_size = 2; - - *buffer++ = 0x26; /* bne + 8 */ - *buffer++ = 0x08; - break; - case 0x07: - *inst_size = 8; - *disp_size = 2; - *buffer++ = 0x27; /* bne + 8 */ - *buffer++ = 0x08; - break; - - } - *buffer++ = 0xa8 | rn; /* addq -1,rn */ - *buffer++ = 0x0c; - *buffer++ = 0x04; /* cmp #0xff:8, rn */ - *buffer++ = 0xff; - *buffer++ = 0x70 | rn; - *buffer++ = 0x36; /* bne ... */ - *buffer++ = 0; - *buffer++ = 0; -} - -/* Called after relaxing, change the frags so they know how big they - are. */ - -void -md_convert_frag (headers, seg, fragP) - object_headers *headers ATTRIBUTE_UNUSED; - segT seg ATTRIBUTE_UNUSED; - fragS *fragP; -{ - int disp_size = 0; - int inst_size = 0; - char *buffer = fragP->fr_fix + fragP->fr_literal; - - switch (fragP->fr_subtype) - { - case C (BRANCH, BYTE_DISP): - disp_size = 1; - inst_size = 1; - break; - - case C (SCB_F, BYTE_DISP): - case C (SCB_TST, BYTE_DISP): - disp_size = 1; - inst_size = 2; - break; - - /* Branches to a known 16 bit displacement. */ - - /* Turn on the 16bit bit. */ - case C (BRANCH, WORD_DISP): - case C (SCB_F, WORD_DISP): - case C (SCB_TST, WORD_DISP): - wordify_scb (buffer, &disp_size, &inst_size); - break; - - case C (BRANCH, UNDEF_WORD_DISP): - case C (SCB_F, UNDEF_WORD_DISP): - case C (SCB_TST, UNDEF_WORD_DISP): - /* This tried to be relaxed, but didn't manage it, it now needs - a fix. */ - wordify_scb (buffer, &disp_size, &inst_size); - - /* Make a reloc */ - fix_new (fragP, - fragP->fr_fix + inst_size, - 4, - fragP->fr_symbol, - fragP->fr_offset, - 0, - R_H8500_PCREL16); - - fragP->fr_fix += disp_size + inst_size; - return; - break; - default: - abort (); - } - if (inst_size) - { - /* Get the address of the end of the instruction */ - int next_inst = fragP->fr_fix + fragP->fr_address + disp_size + inst_size; - int targ_addr = (S_GET_VALUE (fragP->fr_symbol) + - fragP->fr_offset); - int disp = targ_addr - next_inst; - - md_number_to_chars (buffer + inst_size, disp, disp_size); - fragP->fr_fix += disp_size + inst_size; - } -} - -valueT -md_section_align (seg, size) - segT seg ; - valueT size; -{ - return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); - -} - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT * valP; - segT seg ATTRIBUTE_UNUSED; -{ - long val = * (long *) valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - - if (fixP->fx_r_type == 0) - fixP->fx_r_type = fixP->fx_size == 4 ? R_H8500_IMM32 : R_H8500_IMM16; - - switch (fixP->fx_r_type) - { - case R_H8500_IMM8: - case R_H8500_PCREL8: - *buf++ = val; - break; - case R_H8500_IMM16: - case R_H8500_LOW16: - case R_H8500_PCREL16: - *buf++ = (val >> 8); - *buf++ = val; - break; - case R_H8500_HIGH8: - *buf++ = val >> 16; - break; - case R_H8500_HIGH16: - *buf++ = val >> 24; - *buf++ = val >> 16; - break; - case R_H8500_IMM24: - *buf++ = (val >> 16); - *buf++ = (val >> 8); - *buf++ = val; - break; - case R_H8500_IMM32: - *buf++ = (val >> 24); - *buf++ = (val >> 16); - *buf++ = (val >> 8); - *buf++ = val; - break; - default: - abort (); - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -/* Called just before address relaxation, return the length - by which a fragment must grow to reach it's destination. */ - -int -md_estimate_size_before_relax (fragP, segment_type) - register fragS *fragP; - register segT segment_type; -{ - int what; - - switch (fragP->fr_subtype) - { - default: - abort (); - - case C (BRANCH, UNDEF_BYTE_DISP): - case C (SCB_F, UNDEF_BYTE_DISP): - case C (SCB_TST, UNDEF_BYTE_DISP): - what = GET_WHAT (fragP->fr_subtype); - /* used to be a branch to somewhere which was unknown */ - if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) - { - /* Got a symbol and it's defined in this segment, become byte - sized - maybe it will fix up. */ - fragP->fr_subtype = C (what, BYTE_DISP); - } - else - { - /* Its got a segment, but its not ours, so it will always be - long. */ - fragP->fr_subtype = C (what, UNDEF_WORD_DISP); - } - break; - - case C (BRANCH, BYTE_DISP): - case C (BRANCH, WORD_DISP): - case C (BRANCH, UNDEF_WORD_DISP): - case C (SCB_F, BYTE_DISP): - case C (SCB_F, WORD_DISP): - case C (SCB_F, UNDEF_WORD_DISP): - case C (SCB_TST, BYTE_DISP): - case C (SCB_TST, WORD_DISP): - case C (SCB_TST, UNDEF_WORD_DISP): - /* When relaxing a section for the second time, we don't need to - do anything besides return the current size. */ - break; - } - - return md_relax_table[fragP->fr_subtype].rlx_length; -} - -/* Put number into target byte order. */ - -void -md_number_to_chars (ptr, use, nbytes) - char *ptr; - valueT use; - int nbytes; -{ - number_to_chars_bigendian (ptr, use, nbytes); -} - -long -md_pcrel_from (fixP) - fixS *fixP; -{ - return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address; -} - -void -tc_coff_symbol_emit_hook (ignore) - symbolS *ignore ATTRIBUTE_UNUSED; -{ -} - -short -tc_coff_fix2rtype (fix_ptr) - fixS *fix_ptr; -{ - if (fix_ptr->fx_r_type == RELOC_32) - { - /* cons likes to create reloc32's whatever the size of the reloc.. - */ - switch (fix_ptr->fx_size) - { - case 2: - return R_H8500_IMM16; - break; - case 1: - return R_H8500_IMM8; - break; - default: - abort (); - } - } - return fix_ptr->fx_r_type; -} - -void -tc_reloc_mangle (fix_ptr, intr, base) - fixS *fix_ptr; - struct internal_reloc *intr; - bfd_vma base; - -{ - symbolS *symbol_ptr; - - symbol_ptr = fix_ptr->fx_addsy; - - /* If this relocation is attached to a symbol then it's ok - to output it */ - if (fix_ptr->fx_r_type == RELOC_32) - { - /* cons likes to create reloc32's whatever the size of the reloc.. - */ - switch (fix_ptr->fx_size) - { - case 2: - intr->r_type = R_IMM16; - break; - case 1: - intr->r_type = R_IMM8; - break; - default: - abort (); - } - } - else - { - intr->r_type = fix_ptr->fx_r_type; - } - - intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base; - intr->r_offset = fix_ptr->fx_offset; - - /* Turn the segment of the symbol into an offset. */ - if (symbol_ptr) - { - symbolS *dot; - - dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; - if (dot) - { -#if 0 - intr->r_offset -= - segment_info[S_GET_SEGMENT (symbol_ptr)].scnhdr.s_paddr; -#endif - intr->r_offset += S_GET_VALUE (symbol_ptr); - intr->r_symndx = dot->sy_number; - } - else - { - intr->r_symndx = symbol_ptr->sy_number; - } - - } - else - { - intr->r_symndx = -1; - } - -} - -int -start_label (ptr) - char *ptr; -{ - /* Check for :s.w */ - if (ISALPHA (ptr[1]) && ptr[2] == '.') - return 0; - /* Check for :s */ - if (ISALPHA (ptr[1]) && !ISALPHA (ptr[2])) - return 0; - return 1; -} - -int -tc_coff_sizemachdep (frag) - fragS *frag; -{ - return md_relax_table[frag->fr_subtype].rlx_length; -} diff --git a/gas/config/tc-h8500.h b/gas/config/tc-h8500.h deleted file mode 100644 index 5902524d4..000000000 --- a/gas/config/tc-h8500.h +++ /dev/null @@ -1,57 +0,0 @@ -/* This file is tc-h8500.h - Copyright 1993, 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#define TC_H8500 - -#define TARGET_BYTES_BIG_ENDIAN 1 - -#if ANSI_PROTOTYPES -struct internal_reloc; -#endif - -#define WORKING_DOT_WORD - -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype(fixP) - -#define BFD_ARCH bfd_arch_h8500 -#define COFF_MAGIC 0x8500 -#define TC_COUNT_RELOC(x) ((x)->fx_addsy||(x)->fx_subsy) -#define IGNORE_NONSTANDARD_ESCAPES - -#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a,b,c) -extern void tc_reloc_mangle - PARAMS ((struct fix *, struct internal_reloc *, bfd_vma)); - -#define DO_NOT_STRIP 0 -#define LISTING_HEADER "Renesas H8/500 GAS " -#define NEED_FX_R_TYPE 1 -#define RELOC_32 1234 - -#define TC_START_LABEL(ch, ptr) (ch == ':' && start_label(ptr)) -int start_label PARAMS ((char *)); - -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag) -int tc_coff_sizemachdep PARAMS ((struct frag *)); - -#define md_operand(x) - -extern struct relax_type md_relax_table[]; -#define TC_GENERIC_RELAX_TABLE md_relax_table diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c deleted file mode 100644 index 7fbcd0a6e..000000000 --- a/gas/config/tc-hppa.c +++ /dev/null @@ -1,8707 +0,0 @@ -/* tc-hppa.c -- Assemble for the PA - Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* HP PA-RISC support was contributed by the Center for Software Science - at the University of Utah. */ - -#include - -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" - -#include "bfd/libhppa.h" - -/* Be careful, this file includes data *declarations*. */ -#include "opcode/hppa.h" - -#if defined (OBJ_ELF) && defined (OBJ_SOM) -error only one of OBJ_ELF and OBJ_SOM can be defined -#endif - -/* If we are using ELF, then we probably can support dwarf2 debug - records. Furthermore, if we are supporting dwarf2 debug records, - then we want to use the assembler support for compact line numbers. */ -#ifdef OBJ_ELF -#include "dwarf2dbg.h" - -/* A "convenient" place to put object file dependencies which do - not need to be seen outside of tc-hppa.c. */ - -/* Object file formats specify relocation types. */ -typedef enum elf_hppa_reloc_type reloc_type; - -/* Object file formats specify BFD symbol types. */ -typedef elf_symbol_type obj_symbol_type; -#define symbol_arg_reloc_info(sym)\ - (((obj_symbol_type *) symbol_get_bfdsym (sym))->tc_data.hppa_arg_reloc) - -#if TARGET_ARCH_SIZE == 64 -/* How to generate a relocation. */ -#define hppa_gen_reloc_type _bfd_elf64_hppa_gen_reloc_type -#define elf_hppa_reloc_final_type elf64_hppa_reloc_final_type -#else -#define hppa_gen_reloc_type _bfd_elf32_hppa_gen_reloc_type -#define elf_hppa_reloc_final_type elf32_hppa_reloc_final_type -#endif - -/* ELF objects can have versions, but apparently do not have anywhere - to store a copyright string. */ -#define obj_version obj_elf_version -#define obj_copyright obj_elf_version - -#define UNWIND_SECTION_NAME ".PARISC.unwind" -#endif /* OBJ_ELF */ - -#ifdef OBJ_SOM -/* Names of various debugging spaces/subspaces. */ -#define GDB_DEBUG_SPACE_NAME "$GDB_DEBUG$" -#define GDB_STRINGS_SUBSPACE_NAME "$GDB_STRINGS$" -#define GDB_SYMBOLS_SUBSPACE_NAME "$GDB_SYMBOLS$" -#define UNWIND_SECTION_NAME "$UNWIND$" - -/* Object file formats specify relocation types. */ -typedef int reloc_type; - -/* SOM objects can have both a version string and a copyright string. */ -#define obj_version obj_som_version -#define obj_copyright obj_som_copyright - -/* How to generate a relocation. */ -#define hppa_gen_reloc_type hppa_som_gen_reloc_type - -/* Object file formats specify BFD symbol types. */ -typedef som_symbol_type obj_symbol_type; -#define symbol_arg_reloc_info(sym)\ - (((obj_symbol_type *) symbol_get_bfdsym (sym))->tc_data.ap.hppa_arg_reloc) - -/* This apparently isn't in older versions of hpux reloc.h. */ -#ifndef R_DLT_REL -#define R_DLT_REL 0x78 -#endif - -#ifndef R_N0SEL -#define R_N0SEL 0xd8 -#endif - -#ifndef R_N1SEL -#define R_N1SEL 0xd9 -#endif -#endif /* OBJ_SOM */ - -#if TARGET_ARCH_SIZE == 64 -#define DEFAULT_LEVEL 25 -#else -#define DEFAULT_LEVEL 10 -#endif - -/* Various structures and types used internally in tc-hppa.c. */ - -/* Unwind table and descriptor. FIXME: Sync this with GDB version. */ - -struct unwind_desc - { - unsigned int cannot_unwind:1; - unsigned int millicode:1; - unsigned int millicode_save_rest:1; - unsigned int region_desc:2; - unsigned int save_sr:2; - unsigned int entry_fr:4; - unsigned int entry_gr:5; - unsigned int args_stored:1; - unsigned int call_fr:5; - unsigned int call_gr:5; - unsigned int save_sp:1; - unsigned int save_rp:1; - unsigned int save_rp_in_frame:1; - unsigned int extn_ptr_defined:1; - unsigned int cleanup_defined:1; - - unsigned int hpe_interrupt_marker:1; - unsigned int hpux_interrupt_marker:1; - unsigned int reserved:3; - unsigned int frame_size:27; - }; - -/* We can't rely on compilers placing bitfields in any particular - place, so use these macros when dumping unwind descriptors to - object files. */ -#define UNWIND_LOW32(U) \ - (((U)->cannot_unwind << 31) \ - | ((U)->millicode << 30) \ - | ((U)->millicode_save_rest << 29) \ - | ((U)->region_desc << 27) \ - | ((U)->save_sr << 25) \ - | ((U)->entry_fr << 21) \ - | ((U)->entry_gr << 16) \ - | ((U)->args_stored << 15) \ - | ((U)->call_fr << 10) \ - | ((U)->call_gr << 5) \ - | ((U)->save_sp << 4) \ - | ((U)->save_rp << 3) \ - | ((U)->save_rp_in_frame << 2) \ - | ((U)->extn_ptr_defined << 1) \ - | ((U)->cleanup_defined << 0)) - -#define UNWIND_HIGH32(U) \ - (((U)->hpe_interrupt_marker << 31) \ - | ((U)->hpux_interrupt_marker << 30) \ - | ((U)->frame_size << 0)) - -struct unwind_table - { - /* Starting and ending offsets of the region described by - descriptor. */ - unsigned int start_offset; - unsigned int end_offset; - struct unwind_desc descriptor; - }; - -/* This structure is used by the .callinfo, .enter, .leave pseudo-ops to - control the entry and exit code they generate. It is also used in - creation of the correct stack unwind descriptors. - - NOTE: GAS does not support .enter and .leave for the generation of - prologues and epilogues. FIXME. - - The fields in structure roughly correspond to the arguments available on the - .callinfo pseudo-op. */ - -struct call_info - { - /* The unwind descriptor being built. */ - struct unwind_table ci_unwind; - - /* Name of this function. */ - symbolS *start_symbol; - - /* (temporary) symbol used to mark the end of this function. */ - symbolS *end_symbol; - - /* Next entry in the chain. */ - struct call_info *ci_next; - }; - -/* Operand formats for FP instructions. Note not all FP instructions - allow all four formats to be used (for example fmpysub only allows - SGL and DBL). */ -typedef enum - { - SGL, DBL, ILLEGAL_FMT, QUAD, W, UW, DW, UDW, QW, UQW - } -fp_operand_format; - -/* This fully describes the symbol types which may be attached to - an EXPORT or IMPORT directive. Only SOM uses this formation - (ELF has no need for it). */ -typedef enum - { - SYMBOL_TYPE_UNKNOWN, - SYMBOL_TYPE_ABSOLUTE, - SYMBOL_TYPE_CODE, - SYMBOL_TYPE_DATA, - SYMBOL_TYPE_ENTRY, - SYMBOL_TYPE_MILLICODE, - SYMBOL_TYPE_PLABEL, - SYMBOL_TYPE_PRI_PROG, - SYMBOL_TYPE_SEC_PROG, - } -pa_symbol_type; - -/* This structure contains information needed to assemble - individual instructions. */ -struct pa_it - { - /* Holds the opcode after parsing by pa_ip. */ - unsigned long opcode; - - /* Holds an expression associated with the current instruction. */ - expressionS exp; - - /* Does this instruction use PC-relative addressing. */ - int pcrel; - - /* Floating point formats for operand1 and operand2. */ - fp_operand_format fpof1; - fp_operand_format fpof2; - - /* Whether or not we saw a truncation request on an fcnv insn. */ - int trunc; - - /* Holds the field selector for this instruction - (for example L%, LR%, etc). */ - long field_selector; - - /* Holds any argument relocation bits associated with this - instruction. (instruction should be some sort of call). */ - unsigned int arg_reloc; - - /* The format specification for this instruction. */ - int format; - - /* The relocation (if any) associated with this instruction. */ - reloc_type reloc; - }; - -/* PA-89 floating point registers are arranged like this: - - +--------------+--------------+ - | 0 or 16L | 16 or 16R | - +--------------+--------------+ - | 1 or 17L | 17 or 17R | - +--------------+--------------+ - | | | - - . . . - . . . - . . . - - | | | - +--------------+--------------+ - | 14 or 30L | 30 or 30R | - +--------------+--------------+ - | 15 or 31L | 31 or 31R | - +--------------+--------------+ */ - -/* Additional information needed to build argument relocation stubs. */ -struct call_desc - { - /* The argument relocation specification. */ - unsigned int arg_reloc; - - /* Number of arguments. */ - unsigned int arg_count; - }; - -#ifdef OBJ_SOM -/* This structure defines an entry in the subspace dictionary - chain. */ - -struct subspace_dictionary_chain - { - /* Nonzero if this space has been defined by the user code. */ - unsigned int ssd_defined; - - /* Name of this subspace. */ - char *ssd_name; - - /* GAS segment and subsegment associated with this subspace. */ - asection *ssd_seg; - int ssd_subseg; - - /* Next space in the subspace dictionary chain. */ - struct subspace_dictionary_chain *ssd_next; - }; - -typedef struct subspace_dictionary_chain ssd_chain_struct; - -/* This structure defines an entry in the subspace dictionary - chain. */ - -struct space_dictionary_chain - { - /* Nonzero if this space has been defined by the user code or - as a default space. */ - unsigned int sd_defined; - - /* Nonzero if this spaces has been defined by the user code. */ - unsigned int sd_user_defined; - - /* The space number (or index). */ - unsigned int sd_spnum; - - /* The name of this subspace. */ - char *sd_name; - - /* GAS segment to which this subspace corresponds. */ - asection *sd_seg; - - /* Current subsegment number being used. */ - int sd_last_subseg; - - /* The chain of subspaces contained within this space. */ - ssd_chain_struct *sd_subspaces; - - /* The next entry in the space dictionary chain. */ - struct space_dictionary_chain *sd_next; - }; - -typedef struct space_dictionary_chain sd_chain_struct; - -/* This structure defines attributes of the default subspace - dictionary entries. */ - -struct default_subspace_dict - { - /* Name of the subspace. */ - char *name; - - /* FIXME. Is this still needed? */ - char defined; - - /* Nonzero if this subspace is loadable. */ - char loadable; - - /* Nonzero if this subspace contains only code. */ - char code_only; - - /* Nonzero if this is a common subspace. */ - char common; - - /* Nonzero if this is a common subspace which allows symbols - to be multiply defined. */ - char dup_common; - - /* Nonzero if this subspace should be zero filled. */ - char zero; - - /* Sort key for this subspace. */ - unsigned char sort; - - /* Access control bits for this subspace. Can represent RWX access - as well as privilege level changes for gateways. */ - int access; - - /* Index of containing space. */ - int space_index; - - /* Alignment (in bytes) of this subspace. */ - int alignment; - - /* Quadrant within space where this subspace should be loaded. */ - int quadrant; - - /* An index into the default spaces array. */ - int def_space_index; - - /* Subsegment associated with this subspace. */ - subsegT subsegment; - }; - -/* This structure defines attributes of the default space - dictionary entries. */ - -struct default_space_dict - { - /* Name of the space. */ - char *name; - - /* Space number. It is possible to identify spaces within - assembly code numerically! */ - int spnum; - - /* Nonzero if this space is loadable. */ - char loadable; - - /* Nonzero if this space is "defined". FIXME is still needed */ - char defined; - - /* Nonzero if this space can not be shared. */ - char private; - - /* Sort key for this space. */ - unsigned char sort; - - /* Segment associated with this space. */ - asection *segment; - }; -#endif - -/* Structure for previous label tracking. Needed so that alignments, - callinfo declarations, etc can be easily attached to a particular - label. */ -typedef struct label_symbol_struct - { - struct symbol *lss_label; -#ifdef OBJ_SOM - sd_chain_struct *lss_space; -#endif -#ifdef OBJ_ELF - segT lss_segment; -#endif - struct label_symbol_struct *lss_next; - } -label_symbol_struct; - -/* Extra information needed to perform fixups (relocations) on the PA. */ -struct hppa_fix_struct - { - /* The field selector. */ - enum hppa_reloc_field_selector_type_alt fx_r_field; - - /* Type of fixup. */ - int fx_r_type; - - /* Format of fixup. */ - int fx_r_format; - - /* Argument relocation bits. */ - unsigned int fx_arg_reloc; - - /* The segment this fixup appears in. */ - segT segment; - }; - -/* Structure to hold information about predefined registers. */ - -struct pd_reg - { - char *name; - int value; - }; - -/* This structure defines the mapping from a FP condition string - to a condition number which can be recorded in an instruction. */ -struct fp_cond_map - { - char *string; - int cond; - }; - -/* This structure defines a mapping from a field selector - string to a field selector type. */ -struct selector_entry - { - char *prefix; - int field_selector; - }; - -/* Prototypes for functions local to tc-hppa.c. */ - -#ifdef OBJ_SOM -static void pa_check_current_space_and_subspace PARAMS ((void)); -#endif - -#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))) -static void pa_text PARAMS ((int)); -static void pa_data PARAMS ((int)); -static void pa_comm PARAMS ((int)); -#endif -static fp_operand_format pa_parse_fp_format PARAMS ((char **s)); -static void pa_cons PARAMS ((int)); -static void pa_float_cons PARAMS ((int)); -static void pa_fill PARAMS ((int)); -static void pa_lcomm PARAMS ((int)); -static void pa_lsym PARAMS ((int)); -static void pa_stringer PARAMS ((int)); -static void pa_version PARAMS ((int)); -static int pa_parse_fp_cmp_cond PARAMS ((char **)); -static int get_expression PARAMS ((char *)); -static int pa_get_absolute_expression PARAMS ((struct pa_it *, char **)); -static int evaluate_absolute PARAMS ((struct pa_it *)); -static unsigned int pa_build_arg_reloc PARAMS ((char *)); -static unsigned int pa_align_arg_reloc PARAMS ((unsigned int, unsigned int)); -static int pa_parse_nullif PARAMS ((char **)); -static int pa_parse_nonneg_cmpsub_cmpltr PARAMS ((char **)); -static int pa_parse_neg_cmpsub_cmpltr PARAMS ((char **)); -static int pa_parse_neg_add_cmpltr PARAMS ((char **)); -static int pa_parse_nonneg_add_cmpltr PARAMS ((char **)); -static int pa_parse_cmpb_64_cmpltr PARAMS ((char **)); -static int pa_parse_cmpib_64_cmpltr PARAMS ((char **)); -static int pa_parse_addb_64_cmpltr PARAMS ((char **)); -static void pa_block PARAMS ((int)); -static void pa_brtab PARAMS ((int)); -static void pa_try PARAMS ((int)); -static void pa_call PARAMS ((int)); -static void pa_call_args PARAMS ((struct call_desc *)); -static void pa_callinfo PARAMS ((int)); -static void pa_copyright PARAMS ((int)); -static void pa_end PARAMS ((int)); -static void pa_enter PARAMS ((int)); -static void pa_entry PARAMS ((int)); -static void pa_equ PARAMS ((int)); -static void pa_exit PARAMS ((int)); -static void pa_export PARAMS ((int)); -static void pa_type_args PARAMS ((symbolS *, int)); -static void pa_import PARAMS ((int)); -static void pa_label PARAMS ((int)); -static void pa_leave PARAMS ((int)); -static void pa_level PARAMS ((int)); -static void pa_origin PARAMS ((int)); -static void pa_proc PARAMS ((int)); -static void pa_procend PARAMS ((int)); -static void pa_param PARAMS ((int)); -static void pa_undefine_label PARAMS ((void)); -static int need_pa11_opcode PARAMS ((void)); -static int pa_parse_number PARAMS ((char **, int)); -static label_symbol_struct *pa_get_label PARAMS ((void)); -#ifdef OBJ_SOM -static int log2 PARAMS ((int)); -static void pa_compiler PARAMS ((int)); -static void pa_align PARAMS ((int)); -static void pa_space PARAMS ((int)); -static void pa_spnum PARAMS ((int)); -static void pa_subspace PARAMS ((int)); -static sd_chain_struct *create_new_space PARAMS ((char *, int, int, - int, int, int, - asection *, int)); -static ssd_chain_struct *create_new_subspace PARAMS ((sd_chain_struct *, - char *, int, int, - int, int, int, - int, int, int, int, - int, asection *)); -static ssd_chain_struct *update_subspace PARAMS ((sd_chain_struct *, - char *, int, int, int, - int, int, int, int, - int, int, int, - asection *)); -static sd_chain_struct *is_defined_space PARAMS ((char *)); -static ssd_chain_struct *is_defined_subspace PARAMS ((char *)); -static sd_chain_struct *pa_segment_to_space PARAMS ((asection *)); -static ssd_chain_struct *pa_subsegment_to_subspace PARAMS ((asection *, - subsegT)); -static sd_chain_struct *pa_find_space_by_number PARAMS ((int)); -static unsigned int pa_subspace_start PARAMS ((sd_chain_struct *, int)); -static sd_chain_struct *pa_parse_space_stmt PARAMS ((char *, int)); -static int pa_next_subseg PARAMS ((sd_chain_struct *)); -static void pa_spaces_begin PARAMS ((void)); -#endif -static void pa_ip PARAMS ((char *)); -static void fix_new_hppa PARAMS ((fragS *, int, int, symbolS *, - offsetT, expressionS *, int, - bfd_reloc_code_real_type, - enum hppa_reloc_field_selector_type_alt, - int, unsigned int, int)); -static int is_end_of_statement PARAMS ((void)); -static int reg_name_search PARAMS ((char *)); -static int pa_chk_field_selector PARAMS ((char **)); -static int is_same_frag PARAMS ((fragS *, fragS *)); -static void process_exit PARAMS ((void)); -static unsigned int pa_stringer_aux PARAMS ((char *)); -static fp_operand_format pa_parse_fp_cnv_format PARAMS ((char **s)); -static int pa_parse_ftest_gfx_completer PARAMS ((char **)); - -#ifdef OBJ_ELF -static void hppa_elf_mark_end_of_function PARAMS ((void)); -static void pa_build_unwind_subspace PARAMS ((struct call_info *)); -static void pa_vtable_entry PARAMS ((int)); -static void pa_vtable_inherit PARAMS ((int)); -#endif - -/* File and globally scoped variable declarations. */ - -#ifdef OBJ_SOM -/* Root and final entry in the space chain. */ -static sd_chain_struct *space_dict_root; -static sd_chain_struct *space_dict_last; - -/* The current space and subspace. */ -static sd_chain_struct *current_space; -static ssd_chain_struct *current_subspace; -#endif - -/* Root of the call_info chain. */ -static struct call_info *call_info_root; - -/* The last call_info (for functions) structure - seen so it can be associated with fixups and - function labels. */ -static struct call_info *last_call_info; - -/* The last call description (for actual calls). */ -static struct call_desc last_call_desc; - -/* handle of the OPCODE hash table */ -static struct hash_control *op_hash = NULL; - -/* These characters can be suffixes of opcode names and they may be - followed by meaningful whitespace. We don't include `,' and `!' - as they never appear followed by meaningful whitespace. */ -const char hppa_symbol_chars[] = "*?=<>"; - -/* Table of pseudo ops for the PA. FIXME -- how many of these - are now redundant with the overall GAS and the object file - dependent tables? */ -const pseudo_typeS md_pseudo_table[] = -{ - /* align pseudo-ops on the PA specify the actual alignment requested, - not the log2 of the requested alignment. */ -#ifdef OBJ_SOM - {"align", pa_align, 8}, -#endif -#ifdef OBJ_ELF - {"align", s_align_bytes, 8}, -#endif - {"begin_brtab", pa_brtab, 1}, - {"begin_try", pa_try, 1}, - {"block", pa_block, 1}, - {"blockz", pa_block, 0}, - {"byte", pa_cons, 1}, - {"call", pa_call, 0}, - {"callinfo", pa_callinfo, 0}, -#if defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD)) - {"code", obj_elf_text, 0}, -#else - {"code", pa_text, 0}, - {"comm", pa_comm, 0}, -#endif -#ifdef OBJ_SOM - {"compiler", pa_compiler, 0}, -#endif - {"copyright", pa_copyright, 0}, -#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))) - {"data", pa_data, 0}, -#endif - {"double", pa_float_cons, 'd'}, - {"dword", pa_cons, 8}, - {"end", pa_end, 0}, - {"end_brtab", pa_brtab, 0}, -#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))) - {"end_try", pa_try, 0}, -#endif - {"enter", pa_enter, 0}, - {"entry", pa_entry, 0}, - {"equ", pa_equ, 0}, - {"exit", pa_exit, 0}, - {"export", pa_export, 0}, - {"fill", pa_fill, 0}, - {"float", pa_float_cons, 'f'}, - {"half", pa_cons, 2}, - {"import", pa_import, 0}, - {"int", pa_cons, 4}, - {"label", pa_label, 0}, - {"lcomm", pa_lcomm, 0}, - {"leave", pa_leave, 0}, - {"level", pa_level, 0}, - {"long", pa_cons, 4}, - {"lsym", pa_lsym, 0}, -#ifdef OBJ_SOM - {"nsubspa", pa_subspace, 1}, -#endif - {"octa", pa_cons, 16}, - {"org", pa_origin, 0}, - {"origin", pa_origin, 0}, - {"param", pa_param, 0}, - {"proc", pa_proc, 0}, - {"procend", pa_procend, 0}, - {"quad", pa_cons, 8}, - {"reg", pa_equ, 1}, - {"short", pa_cons, 2}, - {"single", pa_float_cons, 'f'}, -#ifdef OBJ_SOM - {"space", pa_space, 0}, - {"spnum", pa_spnum, 0}, -#endif - {"string", pa_stringer, 0}, - {"stringz", pa_stringer, 1}, -#ifdef OBJ_SOM - {"subspa", pa_subspace, 0}, -#endif -#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))) - {"text", pa_text, 0}, -#endif - {"version", pa_version, 0}, -#ifdef OBJ_ELF - {"vtable_entry", pa_vtable_entry, 0}, - {"vtable_inherit", pa_vtable_inherit, 0}, -#endif - {"word", pa_cons, 4}, - {NULL, 0, 0} -}; - -/* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' - .line and .file directives will appear in the pre-processed output. - - Note that input_file.c hand checks for '#' at the beginning of the - first line of the input file. This is because the compiler outputs - #NO_APP at the beginning of its output. - - Also note that C style comments will always work. */ -const char line_comment_chars[] = "#"; - -/* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ -const char comment_chars[] = ";"; - -/* This array holds the characters which act as line separators. */ -const char line_separator_chars[] = "!"; - -/* Chars that can be used to separate mant from exp in floating point nums. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. - As in 0f12.456 or 0d1.2345e12. - - Be aware that MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT may have to be - changed in read.c. Ideally it shouldn't hae to know abou it at - all, but nothing is ideal around here. */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -static struct pa_it the_insn; - -/* Points to the end of an expression just parsed by get_expression - and friends. FIXME. This shouldn't be handled with a file-global - variable. */ -static char *expr_end; - -/* Nonzero if a .callinfo appeared within the current procedure. */ -static int callinfo_found; - -/* Nonzero if the assembler is currently within a .entry/.exit pair. */ -static int within_entry_exit; - -/* Nonzero if the assembler is currently within a procedure definition. */ -static int within_procedure; - -/* Handle on structure which keep track of the last symbol - seen in each subspace. */ -static label_symbol_struct *label_symbols_rootp = NULL; - -/* Holds the last field selector. */ -static int hppa_field_selector; - -/* Nonzero when strict syntax checking is enabled. Zero otherwise. - - Each opcode in the table has a flag which indicates whether or not - strict syntax checking should be enabled for that instruction. */ -static int strict = 0; - -/* pa_parse_number returns values in `pa_number'. Mostly - pa_parse_number is used to return a register number, with floating - point registers being numbered from FP_REG_BASE upwards. - The bit specified with FP_REG_RSEL is set if the floating point - register has a `r' suffix. */ -#define FP_REG_BASE 64 -#define FP_REG_RSEL 128 -static int pa_number; - -#ifdef OBJ_SOM -/* A dummy bfd symbol so that all relocations have symbols of some kind. */ -static symbolS *dummy_symbol; -#endif - -/* Nonzero if errors are to be printed. */ -static int print_errors = 1; - -/* List of registers that are pre-defined: - - Each general register has one predefined name of the form - %r which has the value . - - Space and control registers are handled in a similar manner, - but use %sr and %cr as their predefined names. - - Likewise for the floating point registers, but of the form - %fr. Floating point registers have additional predefined - names with 'L' and 'R' suffixes (e.g. %fr19L, %fr19R) which - again have the value . - - Many registers also have synonyms: - - %r26 - %r23 have %arg0 - %arg3 as synonyms - %r28 - %r29 have %ret0 - %ret1 as synonyms - %r30 has %sp as a synonym - %r27 has %dp as a synonym - %r2 has %rp as a synonym - - Almost every control register has a synonym; they are not listed - here for brevity. - - The table is sorted. Suitable for searching by a binary search. */ - -static const struct pd_reg pre_defined_registers[] = -{ - {"%arg0", 26}, - {"%arg1", 25}, - {"%arg2", 24}, - {"%arg3", 23}, - {"%cr0", 0}, - {"%cr10", 10}, - {"%cr11", 11}, - {"%cr12", 12}, - {"%cr13", 13}, - {"%cr14", 14}, - {"%cr15", 15}, - {"%cr16", 16}, - {"%cr17", 17}, - {"%cr18", 18}, - {"%cr19", 19}, - {"%cr20", 20}, - {"%cr21", 21}, - {"%cr22", 22}, - {"%cr23", 23}, - {"%cr24", 24}, - {"%cr25", 25}, - {"%cr26", 26}, - {"%cr27", 27}, - {"%cr28", 28}, - {"%cr29", 29}, - {"%cr30", 30}, - {"%cr31", 31}, - {"%cr8", 8}, - {"%cr9", 9}, - {"%dp", 27}, - {"%eiem", 15}, - {"%eirr", 23}, - {"%farg0", 5}, - {"%farg1", 6}, - {"%farg2", 7}, - {"%farg3", 8}, - {"%fr0", 0 + FP_REG_BASE}, - {"%fr0l", 0 + FP_REG_BASE}, - {"%fr0r", 0 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr1", 1 + FP_REG_BASE}, - {"%fr10", 10 + FP_REG_BASE}, - {"%fr10l", 10 + FP_REG_BASE}, - {"%fr10r", 10 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr11", 11 + FP_REG_BASE}, - {"%fr11l", 11 + FP_REG_BASE}, - {"%fr11r", 11 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr12", 12 + FP_REG_BASE}, - {"%fr12l", 12 + FP_REG_BASE}, - {"%fr12r", 12 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr13", 13 + FP_REG_BASE}, - {"%fr13l", 13 + FP_REG_BASE}, - {"%fr13r", 13 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr14", 14 + FP_REG_BASE}, - {"%fr14l", 14 + FP_REG_BASE}, - {"%fr14r", 14 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr15", 15 + FP_REG_BASE}, - {"%fr15l", 15 + FP_REG_BASE}, - {"%fr15r", 15 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr16", 16 + FP_REG_BASE}, - {"%fr16l", 16 + FP_REG_BASE}, - {"%fr16r", 16 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr17", 17 + FP_REG_BASE}, - {"%fr17l", 17 + FP_REG_BASE}, - {"%fr17r", 17 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr18", 18 + FP_REG_BASE}, - {"%fr18l", 18 + FP_REG_BASE}, - {"%fr18r", 18 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr19", 19 + FP_REG_BASE}, - {"%fr19l", 19 + FP_REG_BASE}, - {"%fr19r", 19 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr1l", 1 + FP_REG_BASE}, - {"%fr1r", 1 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr2", 2 + FP_REG_BASE}, - {"%fr20", 20 + FP_REG_BASE}, - {"%fr20l", 20 + FP_REG_BASE}, - {"%fr20r", 20 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr21", 21 + FP_REG_BASE}, - {"%fr21l", 21 + FP_REG_BASE}, - {"%fr21r", 21 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr22", 22 + FP_REG_BASE}, - {"%fr22l", 22 + FP_REG_BASE}, - {"%fr22r", 22 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr23", 23 + FP_REG_BASE}, - {"%fr23l", 23 + FP_REG_BASE}, - {"%fr23r", 23 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr24", 24 + FP_REG_BASE}, - {"%fr24l", 24 + FP_REG_BASE}, - {"%fr24r", 24 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr25", 25 + FP_REG_BASE}, - {"%fr25l", 25 + FP_REG_BASE}, - {"%fr25r", 25 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr26", 26 + FP_REG_BASE}, - {"%fr26l", 26 + FP_REG_BASE}, - {"%fr26r", 26 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr27", 27 + FP_REG_BASE}, - {"%fr27l", 27 + FP_REG_BASE}, - {"%fr27r", 27 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr28", 28 + FP_REG_BASE}, - {"%fr28l", 28 + FP_REG_BASE}, - {"%fr28r", 28 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr29", 29 + FP_REG_BASE}, - {"%fr29l", 29 + FP_REG_BASE}, - {"%fr29r", 29 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr2l", 2 + FP_REG_BASE}, - {"%fr2r", 2 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr3", 3 + FP_REG_BASE}, - {"%fr30", 30 + FP_REG_BASE}, - {"%fr30l", 30 + FP_REG_BASE}, - {"%fr30r", 30 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr31", 31 + FP_REG_BASE}, - {"%fr31l", 31 + FP_REG_BASE}, - {"%fr31r", 31 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr3l", 3 + FP_REG_BASE}, - {"%fr3r", 3 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr4", 4 + FP_REG_BASE}, - {"%fr4l", 4 + FP_REG_BASE}, - {"%fr4r", 4 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr5", 5 + FP_REG_BASE}, - {"%fr5l", 5 + FP_REG_BASE}, - {"%fr5r", 5 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr6", 6 + FP_REG_BASE}, - {"%fr6l", 6 + FP_REG_BASE}, - {"%fr6r", 6 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr7", 7 + FP_REG_BASE}, - {"%fr7l", 7 + FP_REG_BASE}, - {"%fr7r", 7 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr8", 8 + FP_REG_BASE}, - {"%fr8l", 8 + FP_REG_BASE}, - {"%fr8r", 8 + FP_REG_BASE + FP_REG_RSEL}, - {"%fr9", 9 + FP_REG_BASE}, - {"%fr9l", 9 + FP_REG_BASE}, - {"%fr9r", 9 + FP_REG_BASE + FP_REG_RSEL}, - {"%fret", 4}, - {"%hta", 25}, - {"%iir", 19}, - {"%ior", 21}, - {"%ipsw", 22}, - {"%isr", 20}, - {"%itmr", 16}, - {"%iva", 14}, -#if TARGET_ARCH_SIZE == 64 - {"%mrp", 2}, -#else - {"%mrp", 31}, -#endif - {"%pcoq", 18}, - {"%pcsq", 17}, - {"%pidr1", 8}, - {"%pidr2", 9}, - {"%pidr3", 12}, - {"%pidr4", 13}, - {"%ppda", 24}, - {"%r0", 0}, - {"%r1", 1}, - {"%r10", 10}, - {"%r11", 11}, - {"%r12", 12}, - {"%r13", 13}, - {"%r14", 14}, - {"%r15", 15}, - {"%r16", 16}, - {"%r17", 17}, - {"%r18", 18}, - {"%r19", 19}, - {"%r2", 2}, - {"%r20", 20}, - {"%r21", 21}, - {"%r22", 22}, - {"%r23", 23}, - {"%r24", 24}, - {"%r25", 25}, - {"%r26", 26}, - {"%r27", 27}, - {"%r28", 28}, - {"%r29", 29}, - {"%r3", 3}, - {"%r30", 30}, - {"%r31", 31}, - {"%r4", 4}, - {"%r5", 5}, - {"%r6", 6}, - {"%r7", 7}, - {"%r8", 8}, - {"%r9", 9}, - {"%rctr", 0}, - {"%ret0", 28}, - {"%ret1", 29}, - {"%rp", 2}, - {"%sar", 11}, - {"%sp", 30}, - {"%sr0", 0}, - {"%sr1", 1}, - {"%sr2", 2}, - {"%sr3", 3}, - {"%sr4", 4}, - {"%sr5", 5}, - {"%sr6", 6}, - {"%sr7", 7}, - {"%t1", 22}, - {"%t2", 21}, - {"%t3", 20}, - {"%t4", 19}, - {"%tf1", 11}, - {"%tf2", 10}, - {"%tf3", 9}, - {"%tf4", 8}, - {"%tr0", 24}, - {"%tr1", 25}, - {"%tr2", 26}, - {"%tr3", 27}, - {"%tr4", 28}, - {"%tr5", 29}, - {"%tr6", 30}, - {"%tr7", 31} -}; - -/* This table is sorted by order of the length of the string. This is - so we check for <> before we check for <. If we had a <> and checked - for < first, we would get a false match. */ -static const struct fp_cond_map fp_cond_map[] = -{ - {"false?", 0}, - {"false", 1}, - {"true?", 30}, - {"true", 31}, - {"!<=>", 3}, - {"!?>=", 8}, - {"!?<=", 16}, - {"!<>", 7}, - {"!>=", 11}, - {"!?>", 12}, - {"?<=", 14}, - {"!<=", 19}, - {"!?<", 20}, - {"?>=", 22}, - {"!?=", 24}, - {"!=t", 27}, - {"<=>", 29}, - {"=t", 5}, - {"?=", 6}, - {"?<", 10}, - {"<=", 13}, - {"!>", 15}, - {"?>", 18}, - {">=", 21}, - {"!<", 23}, - {"<>", 25}, - {"!=", 26}, - {"!?", 28}, - {"?", 2}, - {"=", 4}, - {"<", 9}, - {">", 17} -}; - -static const struct selector_entry selector_table[] = -{ - {"f", e_fsel}, - {"l", e_lsel}, - {"ld", e_ldsel}, - {"lp", e_lpsel}, - {"lr", e_lrsel}, - {"ls", e_lssel}, - {"lt", e_ltsel}, - {"ltp", e_ltpsel}, - {"n", e_nsel}, - {"nl", e_nlsel}, - {"nlr", e_nlrsel}, - {"p", e_psel}, - {"r", e_rsel}, - {"rd", e_rdsel}, - {"rp", e_rpsel}, - {"rr", e_rrsel}, - {"rs", e_rssel}, - {"rt", e_rtsel}, - {"rtp", e_rtpsel}, - {"t", e_tsel}, -}; - -#ifdef OBJ_SOM -/* default space and subspace dictionaries */ - -#define GDB_SYMBOLS GDB_SYMBOLS_SUBSPACE_NAME -#define GDB_STRINGS GDB_STRINGS_SUBSPACE_NAME - -/* pre-defined subsegments (subspaces) for the HPPA. */ -#define SUBSEG_CODE 0 -#define SUBSEG_LIT 1 -#define SUBSEG_MILLI 2 -#define SUBSEG_DATA 0 -#define SUBSEG_BSS 2 -#define SUBSEG_UNWIND 3 -#define SUBSEG_GDB_STRINGS 0 -#define SUBSEG_GDB_SYMBOLS 1 - -static struct default_subspace_dict pa_def_subspaces[] = -{ - {"$CODE$", 1, 1, 1, 0, 0, 0, 24, 0x2c, 0, 8, 0, 0, SUBSEG_CODE}, - {"$DATA$", 1, 1, 0, 0, 0, 0, 24, 0x1f, 1, 8, 1, 1, SUBSEG_DATA}, - {"$LIT$", 1, 1, 0, 0, 0, 0, 16, 0x2c, 0, 8, 0, 0, SUBSEG_LIT}, - {"$MILLICODE$", 1, 1, 0, 0, 0, 0, 8, 0x2c, 0, 8, 0, 0, SUBSEG_MILLI}, - {"$BSS$", 1, 1, 0, 0, 0, 1, 80, 0x1f, 1, 8, 1, 1, SUBSEG_BSS}, - {NULL, 0, 1, 0, 0, 0, 0, 255, 0x1f, 0, 4, 0, 0, 0} -}; - -static struct default_space_dict pa_def_spaces[] = -{ - {"$TEXT$", 0, 1, 1, 0, 8, ASEC_NULL}, - {"$PRIVATE$", 1, 1, 1, 1, 16, ASEC_NULL}, - {NULL, 0, 0, 0, 0, 0, ASEC_NULL} -}; - -/* Misc local definitions used by the assembler. */ - -/* These macros are used to maintain spaces/subspaces. */ -#define SPACE_DEFINED(space_chain) (space_chain)->sd_defined -#define SPACE_USER_DEFINED(space_chain) (space_chain)->sd_user_defined -#define SPACE_SPNUM(space_chain) (space_chain)->sd_spnum -#define SPACE_NAME(space_chain) (space_chain)->sd_name - -#define SUBSPACE_DEFINED(ss_chain) (ss_chain)->ssd_defined -#define SUBSPACE_NAME(ss_chain) (ss_chain)->ssd_name -#endif - -/* Return nonzero if the string pointed to by S potentially represents - a right or left half of a FP register */ -#define IS_R_SELECT(S) (*(S) == 'R' || *(S) == 'r') -#define IS_L_SELECT(S) (*(S) == 'L' || *(S) == 'l') - -/* Insert FIELD into OPCODE starting at bit START. Continue pa_ip - main loop after insertion. */ - -#define INSERT_FIELD_AND_CONTINUE(OPCODE, FIELD, START) \ - { \ - ((OPCODE) |= (FIELD) << (START)); \ - continue; \ - } - -/* Simple range checking for FIELD against HIGH and LOW bounds. - IGNORE is used to suppress the error message. */ - -#define CHECK_FIELD(FIELD, HIGH, LOW, IGNORE) \ - { \ - if ((FIELD) > (HIGH) || (FIELD) < (LOW)) \ - { \ - if (! IGNORE) \ - as_bad (_("Field out of range [%d..%d] (%d)."), (LOW), (HIGH), \ - (int) (FIELD));\ - break; \ - } \ - } - -/* Variant of CHECK_FIELD for use in md_apply_fix3 and other places where - the current file and line number are not valid. */ - -#define CHECK_FIELD_WHERE(FIELD, HIGH, LOW, FILENAME, LINE) \ - { \ - if ((FIELD) > (HIGH) || (FIELD) < (LOW)) \ - { \ - as_bad_where ((FILENAME), (LINE), \ - _("Field out of range [%d..%d] (%d)."), (LOW), (HIGH), \ - (int) (FIELD));\ - break; \ - } \ - } - -/* Simple alignment checking for FIELD against ALIGN (a power of two). - IGNORE is used to suppress the error message. */ - -#define CHECK_ALIGN(FIELD, ALIGN, IGNORE) \ - { \ - if ((FIELD) & ((ALIGN) - 1)) \ - { \ - if (! IGNORE) \ - as_bad (_("Field not properly aligned [%d] (%d)."), (ALIGN), \ - (int) (FIELD));\ - break; \ - } \ - } - -#define is_DP_relative(exp) \ - ((exp).X_op == O_subtract \ - && strcmp (S_GET_NAME ((exp).X_op_symbol), "$global$") == 0) - -#define is_PC_relative(exp) \ - ((exp).X_op == O_subtract \ - && strcmp (S_GET_NAME ((exp).X_op_symbol), "$PIC_pcrel$0") == 0) - -/* We need some complex handling for stabs (sym1 - sym2). Luckily, we'll - always be able to reduce the expression to a constant, so we don't - need real complex handling yet. */ -#define is_complex(exp) \ - ((exp).X_op != O_constant && (exp).X_op != O_symbol) - -/* Actual functions to implement the PA specific code for the assembler. */ - -/* Called before writing the object file. Make sure entry/exit and - proc/procend pairs match. */ - -void -pa_check_eof () -{ - if (within_entry_exit) - as_fatal (_("Missing .exit\n")); - - if (within_procedure) - as_fatal (_("Missing .procend\n")); -} - -/* Returns a pointer to the label_symbol_struct for the current space. - or NULL if no label_symbol_struct exists for the current space. */ - -static label_symbol_struct * -pa_get_label () -{ - label_symbol_struct *label_chain; - - for (label_chain = label_symbols_rootp; - label_chain; - label_chain = label_chain->lss_next) - { -#ifdef OBJ_SOM - if (current_space == label_chain->lss_space && label_chain->lss_label) - return label_chain; -#endif -#ifdef OBJ_ELF - if (now_seg == label_chain->lss_segment && label_chain->lss_label) - return label_chain; -#endif - } - - return NULL; -} - -/* Defines a label for the current space. If one is already defined, - this function will replace it with the new label. */ - -void -pa_define_label (symbol) - symbolS *symbol; -{ - label_symbol_struct *label_chain = pa_get_label (); - - if (label_chain) - label_chain->lss_label = symbol; - else - { - /* Create a new label entry and add it to the head of the chain. */ - label_chain - = (label_symbol_struct *) xmalloc (sizeof (label_symbol_struct)); - label_chain->lss_label = symbol; -#ifdef OBJ_SOM - label_chain->lss_space = current_space; -#endif -#ifdef OBJ_ELF - label_chain->lss_segment = now_seg; -#endif - label_chain->lss_next = NULL; - - if (label_symbols_rootp) - label_chain->lss_next = label_symbols_rootp; - - label_symbols_rootp = label_chain; - } -} - -/* Removes a label definition for the current space. - If there is no label_symbol_struct entry, then no action is taken. */ - -static void -pa_undefine_label () -{ - label_symbol_struct *label_chain; - label_symbol_struct *prev_label_chain = NULL; - - for (label_chain = label_symbols_rootp; - label_chain; - label_chain = label_chain->lss_next) - { - if (1 -#ifdef OBJ_SOM - && current_space == label_chain->lss_space && label_chain->lss_label -#endif -#ifdef OBJ_ELF - && now_seg == label_chain->lss_segment && label_chain->lss_label -#endif - ) - { - /* Remove the label from the chain and free its memory. */ - if (prev_label_chain) - prev_label_chain->lss_next = label_chain->lss_next; - else - label_symbols_rootp = label_chain->lss_next; - - free (label_chain); - break; - } - prev_label_chain = label_chain; - } -} - -/* An HPPA-specific version of fix_new. This is required because the HPPA - code needs to keep track of some extra stuff. Each call to fix_new_hppa - results in the creation of an instance of an hppa_fix_struct. An - hppa_fix_struct stores the extra information along with a pointer to the - original fixS. This is attached to the original fixup via the - tc_fix_data field. */ - -static void -fix_new_hppa (frag, where, size, add_symbol, offset, exp, pcrel, - r_type, r_field, r_format, arg_reloc, unwind_bits) - fragS *frag; - int where; - int size; - symbolS *add_symbol; - offsetT offset; - expressionS *exp; - int pcrel; - bfd_reloc_code_real_type r_type; - enum hppa_reloc_field_selector_type_alt r_field; - int r_format; - unsigned int arg_reloc; - int unwind_bits ATTRIBUTE_UNUSED; -{ - fixS *new_fix; - - struct hppa_fix_struct *hppa_fix = (struct hppa_fix_struct *) - obstack_alloc (¬es, sizeof (struct hppa_fix_struct)); - - if (exp != NULL) - new_fix = fix_new_exp (frag, where, size, exp, pcrel, r_type); - else - new_fix = fix_new (frag, where, size, add_symbol, offset, pcrel, r_type); - new_fix->tc_fix_data = (void *) hppa_fix; - hppa_fix->fx_r_type = r_type; - hppa_fix->fx_r_field = r_field; - hppa_fix->fx_r_format = r_format; - hppa_fix->fx_arg_reloc = arg_reloc; - hppa_fix->segment = now_seg; -#ifdef OBJ_SOM - if (r_type == R_ENTRY || r_type == R_EXIT) - new_fix->fx_offset = unwind_bits; -#endif - - /* foo-$global$ is used to access non-automatic storage. $global$ - is really just a marker and has served its purpose, so eliminate - it now so as not to confuse write.c. Ditto for $PIC_pcrel$0. */ - if (new_fix->fx_subsy - && (strcmp (S_GET_NAME (new_fix->fx_subsy), "$global$") == 0 - || strcmp (S_GET_NAME (new_fix->fx_subsy), "$PIC_pcrel$0") == 0)) - new_fix->fx_subsy = NULL; -} - -/* Parse a .byte, .word, .long expression for the HPPA. Called by - cons via the TC_PARSE_CONS_EXPRESSION macro. */ - -void -parse_cons_expression_hppa (exp) - expressionS *exp; -{ - hppa_field_selector = pa_chk_field_selector (&input_line_pointer); - expression (exp); -} - -/* This fix_new is called by cons via TC_CONS_FIX_NEW. - hppa_field_selector is set by the parse_cons_expression_hppa. */ - -void -cons_fix_new_hppa (frag, where, size, exp) - fragS *frag; - int where; - int size; - expressionS *exp; -{ - unsigned int rel_type; - - /* Get a base relocation type. */ - if (is_DP_relative (*exp)) - rel_type = R_HPPA_GOTOFF; - else if (is_complex (*exp)) - rel_type = R_HPPA_COMPLEX; - else - rel_type = R_HPPA; - - if (hppa_field_selector != e_psel && hppa_field_selector != e_fsel) - { - as_warn (_("Invalid field selector. Assuming F%%.")); - hppa_field_selector = e_fsel; - } - - fix_new_hppa (frag, where, size, - (symbolS *) NULL, (offsetT) 0, exp, 0, rel_type, - hppa_field_selector, size * 8, 0, 0); - - /* Reset field selector to its default state. */ - hppa_field_selector = 0; -} - -/* This function is called once, at assembler startup time. It should - set up all the tables, etc. that the MD part of the assembler will need. */ - -void -md_begin () -{ - const char *retval = NULL; - int lose = 0; - unsigned int i = 0; - - last_call_info = NULL; - call_info_root = NULL; - - /* Set the default machine type. */ - if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, DEFAULT_LEVEL)) - as_warn (_("could not set architecture and machine")); - - /* Folding of text and data segments fails miserably on the PA. - Warn user and disable "-R" option. */ - if (flag_readonly_data_in_text) - { - as_warn (_("-R option not supported on this target.")); - flag_readonly_data_in_text = 0; - } - -#ifdef OBJ_SOM - pa_spaces_begin (); -#endif - - op_hash = hash_new (); - - while (i < NUMOPCODES) - { - const char *name = pa_opcodes[i].name; - retval = hash_insert (op_hash, name, (struct pa_opcode *) &pa_opcodes[i]); - if (retval != NULL && *retval != '\0') - { - as_fatal (_("Internal error: can't hash `%s': %s\n"), name, retval); - lose = 1; - } - do - { - if ((pa_opcodes[i].match & pa_opcodes[i].mask) - != pa_opcodes[i].match) - { - fprintf (stderr, _("internal error: losing opcode: `%s' \"%s\"\n"), - pa_opcodes[i].name, pa_opcodes[i].args); - lose = 1; - } - ++i; - } - while (i < NUMOPCODES && !strcmp (pa_opcodes[i].name, name)); - } - - if (lose) - as_fatal (_("Broken assembler. No assembly attempted.")); - -#ifdef OBJ_SOM - /* SOM will change text_section. To make sure we never put - anything into the old one switch to the new one now. */ - subseg_set (text_section, 0); -#endif - -#ifdef OBJ_SOM - dummy_symbol = symbol_find_or_make ("L$dummy"); - S_SET_SEGMENT (dummy_symbol, text_section); - /* Force the symbol to be converted to a real symbol. */ - (void) symbol_get_bfdsym (dummy_symbol); -#endif -} - -/* Assemble a single instruction storing it into a frag. */ -void -md_assemble (str) - char *str; -{ - char *to; - - /* The had better be something to assemble. */ - assert (str); - - /* If we are within a procedure definition, make sure we've - defined a label for the procedure; handle case where the - label was defined after the .PROC directive. - - Note there's not need to diddle with the segment or fragment - for the label symbol in this case. We have already switched - into the new $CODE$ subspace at this point. */ - if (within_procedure && last_call_info->start_symbol == NULL) - { - label_symbol_struct *label_symbol = pa_get_label (); - - if (label_symbol) - { - if (label_symbol->lss_label) - { - last_call_info->start_symbol = label_symbol->lss_label; - symbol_get_bfdsym (label_symbol->lss_label)->flags - |= BSF_FUNCTION; -#ifdef OBJ_SOM - /* Also handle allocation of a fixup to hold the unwind - information when the label appears after the proc/procend. */ - if (within_entry_exit) - { - char *where; - unsigned int u; - - where = frag_more (0); - u = UNWIND_LOW32 (&last_call_info->ci_unwind.descriptor); - fix_new_hppa (frag_now, where - frag_now->fr_literal, 0, - NULL, (offsetT) 0, NULL, - 0, R_HPPA_ENTRY, e_fsel, 0, 0, u); - } -#endif - } - else - as_bad (_("Missing function name for .PROC (corrupted label chain)")); - } - else - as_bad (_("Missing function name for .PROC")); - } - - /* Assemble the instruction. Results are saved into "the_insn". */ - pa_ip (str); - - /* Get somewhere to put the assembled instruction. */ - to = frag_more (4); - - /* Output the opcode. */ - md_number_to_chars (to, the_insn.opcode, 4); - - /* If necessary output more stuff. */ - if (the_insn.reloc != R_HPPA_NONE) - fix_new_hppa (frag_now, (to - frag_now->fr_literal), 4, NULL, - (offsetT) 0, &the_insn.exp, the_insn.pcrel, - the_insn.reloc, the_insn.field_selector, - the_insn.format, the_insn.arg_reloc, 0); - -#ifdef OBJ_ELF - dwarf2_emit_insn (4); -#endif -} - -/* Do the real work for assembling a single instruction. Store results - into the global "the_insn" variable. */ - -static void -pa_ip (str) - char *str; -{ - char *error_message = ""; - char *s, c, *argstart, *name, *save_s; - const char *args; - int match = FALSE; - int comma = 0; - int cmpltr, nullif, flag, cond, num; - unsigned long opcode; - struct pa_opcode *insn; - -#ifdef OBJ_SOM - /* We must have a valid space and subspace. */ - pa_check_current_space_and_subspace (); -#endif - - /* Convert everything up to the first whitespace character into lower - case. */ - for (s = str; *s != ' ' && *s != '\t' && *s != '\n' && *s != '\0'; s++) - *s = TOLOWER (*s); - - /* Skip to something interesting. */ - for (s = str; - ISUPPER (*s) || ISLOWER (*s) || (*s >= '0' && *s <= '3'); - ++s) - ; - - switch (*s) - { - - case '\0': - break; - - case ',': - comma = 1; - - /*FALLTHROUGH */ - - case ' ': - *s++ = '\0'; - break; - - default: - as_fatal (_("Unknown opcode: `%s'"), str); - } - - /* Look up the opcode in the has table. */ - if ((insn = (struct pa_opcode *) hash_find (op_hash, str)) == NULL) - { - as_bad ("Unknown opcode: `%s'", str); - return; - } - - if (comma) - { - *--s = ','; - } - - /* Mark the location where arguments for the instruction start, then - start processing them. */ - argstart = s; - for (;;) - { - /* Do some initialization. */ - opcode = insn->match; - strict = (insn->flags & FLAG_STRICT); - memset (&the_insn, 0, sizeof (the_insn)); - - the_insn.reloc = R_HPPA_NONE; - - /* If this instruction is specific to a particular architecture, - then set a new architecture. */ - /* But do not automatically promote to pa2.0. The automatic promotion - crud is for compatibility with HP's old assemblers only. */ - if (insn->arch < 20 - && bfd_get_mach (stdoutput) < insn->arch) - { - if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, insn->arch)) - as_warn (_("could not update architecture and machine")); - } - else if (bfd_get_mach (stdoutput) < insn->arch) - { - match = FALSE; - goto failed; - } - - /* Build the opcode, checking as we go to make - sure that the operands match. */ - for (args = insn->args;; ++args) - { - /* Absorb white space in instruction. */ - while (*s == ' ' || *s == '\t') - s++; - - switch (*args) - { - - /* End of arguments. */ - case '\0': - if (*s == '\0') - match = TRUE; - break; - - case '+': - if (*s == '+') - { - ++s; - continue; - } - if (*s == '-') - continue; - break; - - /* These must match exactly. */ - case '(': - case ')': - case ',': - case ' ': - if (*s++ == *args) - continue; - break; - - /* Handle a 5 bit register or control register field at 10. */ - case 'b': - case '^': - if (!pa_parse_number (&s, 0)) - break; - num = pa_number; - CHECK_FIELD (num, 31, 0, 0); - INSERT_FIELD_AND_CONTINUE (opcode, num, 21); - - /* Handle %sar or %cr11. No bits get set, we just verify that it - is there. */ - case '!': - /* Skip whitespace before register. */ - while (*s == ' ' || *s == '\t') - s = s + 1; - - if (!strncasecmp (s, "%sar", 4)) - { - s += 4; - continue; - } - else if (!strncasecmp (s, "%cr11", 5)) - { - s += 5; - continue; - } - break; - - /* Handle a 5 bit register field at 15. */ - case 'x': - if (!pa_parse_number (&s, 0)) - break; - num = pa_number; - CHECK_FIELD (num, 31, 0, 0); - INSERT_FIELD_AND_CONTINUE (opcode, num, 16); - - /* Handle a 5 bit register field at 31. */ - case 't': - if (!pa_parse_number (&s, 0)) - break; - num = pa_number; - CHECK_FIELD (num, 31, 0, 0); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 5 bit register field at 10 and 15. */ - case 'a': - if (!pa_parse_number (&s, 0)) - break; - num = pa_number; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num << 16; - INSERT_FIELD_AND_CONTINUE (opcode, num, 21); - - /* Handle a 5 bit field length at 31. */ - case 'T': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 32, 1, 0); - INSERT_FIELD_AND_CONTINUE (opcode, 32 - num, 0); - - /* Handle a 5 bit immediate at 15. */ - case '5': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - /* When in strict mode, we want to just reject this - match instead of giving an out of range error. */ - CHECK_FIELD (num, 15, -16, strict); - num = low_sign_unext (num, 5); - INSERT_FIELD_AND_CONTINUE (opcode, num, 16); - - /* Handle a 5 bit immediate at 31. */ - case 'V': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - /* When in strict mode, we want to just reject this - match instead of giving an out of range error. */ - CHECK_FIELD (num, 15, -16, strict); - num = low_sign_unext (num, 5); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle an unsigned 5 bit immediate at 31. */ - case 'r': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 31, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle an unsigned 5 bit immediate at 15. */ - case 'R': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 31, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 16); - - /* Handle an unsigned 10 bit immediate at 15. */ - case 'U': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 1023, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 16); - - /* Handle a 2 bit space identifier at 17. */ - case 's': - if (!pa_parse_number (&s, 0)) - break; - num = pa_number; - CHECK_FIELD (num, 3, 0, 1); - INSERT_FIELD_AND_CONTINUE (opcode, num, 14); - - /* Handle a 3 bit space identifier at 18. */ - case 'S': - if (!pa_parse_number (&s, 0)) - break; - num = pa_number; - CHECK_FIELD (num, 7, 0, 1); - opcode |= re_assemble_3 (num); - continue; - - /* Handle all completers. */ - case 'c': - switch (*++args) - { - - /* Handle a completer for an indexing load or store. */ - case 'X': - case 'x': - { - int uu = 0; - int m = 0; - int i = 0; - while (*s == ',' && i < 2) - { - s++; - if (strncasecmp (s, "sm", 2) == 0) - { - uu = 1; - m = 1; - s++; - i++; - } - else if (strncasecmp (s, "m", 1) == 0) - m = 1; - else if ((strncasecmp (s, "s ", 2) == 0) - || (strncasecmp (s, "s,", 2) == 0)) - uu = 1; - /* When in strict mode this is a match failure. */ - else if (strict) - { - s--; - break; - } - else - as_bad (_("Invalid Indexed Load Completer.")); - s++; - i++; - } - if (i > 2) - as_bad (_("Invalid Indexed Load Completer Syntax.")); - opcode |= m << 5; - INSERT_FIELD_AND_CONTINUE (opcode, uu, 13); - } - - /* Handle a short load/store completer. */ - case 'M': - case 'm': - case 'q': - case 'J': - case 'e': - { - int a = 0; - int m = 0; - if (*s == ',') - { - int found = 0; - s++; - if (strncasecmp (s, "ma", 2) == 0) - { - a = 0; - m = 1; - found = 1; - } - else if (strncasecmp (s, "mb", 2) == 0) - { - a = 1; - m = 1; - found = 1; - } - - /* When in strict mode, pass through for cache op. */ - if (!found && strict) - s--; - else - { - if (!found) - as_bad (_("Invalid Short Load/Store Completer.")); - s += 2; - } - } - /* If we did not get a ma/mb completer, then we do not - consider this a positive match for 'ce'. */ - else if (*args == 'e') - break; - - /* 'J', 'm', 'M' and 'q' are the same, except for where they - encode the before/after field. */ - if (*args == 'm' || *args == 'M') - { - opcode |= m << 5; - INSERT_FIELD_AND_CONTINUE (opcode, a, 13); - } - else if (*args == 'q') - { - opcode |= m << 3; - INSERT_FIELD_AND_CONTINUE (opcode, a, 2); - } - else if (*args == 'J') - { - /* M bit is explicit in the major opcode. */ - INSERT_FIELD_AND_CONTINUE (opcode, a, 2); - } - else if (*args == 'e') - { - /* Stash the ma/mb flag temporarily in the - instruction. We will use (and remove it) - later when handling 'J', 'K', '<' & '>'. */ - opcode |= a; - continue; - } - } - - /* Handle a stbys completer. */ - case 'A': - case 's': - { - int a = 0; - int m = 0; - int i = 0; - while (*s == ',' && i < 2) - { - s++; - if (strncasecmp (s, "m", 1) == 0) - m = 1; - else if ((strncasecmp (s, "b ", 2) == 0) - || (strncasecmp (s, "b,", 2) == 0)) - a = 0; - else if (strncasecmp (s, "e", 1) == 0) - a = 1; - /* When in strict mode this is a match failure. */ - else if (strict) - { - s--; - break; - } - else - as_bad (_("Invalid Store Bytes Short Completer")); - s++; - i++; - } - if (i > 2) - as_bad (_("Invalid Store Bytes Short Completer")); - opcode |= m << 5; - INSERT_FIELD_AND_CONTINUE (opcode, a, 13); - } - - /* Handle load cache hint completer. */ - case 'c': - cmpltr = 0; - if (!strncmp (s, ",sl", 3)) - { - s += 3; - cmpltr = 2; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 10); - - /* Handle store cache hint completer. */ - case 'C': - cmpltr = 0; - if (!strncmp (s, ",sl", 3)) - { - s += 3; - cmpltr = 2; - } - else if (!strncmp (s, ",bc", 3)) - { - s += 3; - cmpltr = 1; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 10); - - /* Handle load and clear cache hint completer. */ - case 'd': - cmpltr = 0; - if (!strncmp (s, ",co", 3)) - { - s += 3; - cmpltr = 1; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 10); - - /* Handle load ordering completer. */ - case 'o': - if (strncmp (s, ",o", 2) != 0) - break; - s += 2; - continue; - - /* Handle a branch gate completer. */ - case 'g': - if (strncasecmp (s, ",gate", 5) != 0) - break; - s += 5; - continue; - - /* Handle a branch link and push completer. */ - case 'p': - if (strncasecmp (s, ",l,push", 7) != 0) - break; - s += 7; - continue; - - /* Handle a branch link completer. */ - case 'l': - if (strncasecmp (s, ",l", 2) != 0) - break; - s += 2; - continue; - - /* Handle a branch pop completer. */ - case 'P': - if (strncasecmp (s, ",pop", 4) != 0) - break; - s += 4; - continue; - - /* Handle a local processor completer. */ - case 'L': - if (strncasecmp (s, ",l", 2) != 0) - break; - s += 2; - continue; - - /* Handle a PROBE read/write completer. */ - case 'w': - flag = 0; - if (!strncasecmp (s, ",w", 2)) - { - flag = 1; - s += 2; - } - else if (!strncasecmp (s, ",r", 2)) - { - flag = 0; - s += 2; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 6); - - /* Handle MFCTL wide completer. */ - case 'W': - if (strncasecmp (s, ",w", 2) != 0) - break; - s += 2; - continue; - - /* Handle an RFI restore completer. */ - case 'r': - flag = 0; - if (!strncasecmp (s, ",r", 2)) - { - flag = 5; - s += 2; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 5); - - /* Handle a system control completer. */ - case 'Z': - if (*s == ',' && (*(s + 1) == 'm' || *(s + 1) == 'M')) - { - flag = 1; - s += 2; - } - else - flag = 0; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 5); - - /* Handle intermediate/final completer for DCOR. */ - case 'i': - flag = 0; - if (!strncasecmp (s, ",i", 2)) - { - flag = 1; - s += 2; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 6); - - /* Handle zero/sign extension completer. */ - case 'z': - flag = 1; - if (!strncasecmp (s, ",z", 2)) - { - flag = 0; - s += 2; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 10); - - /* Handle add completer. */ - case 'a': - flag = 1; - if (!strncasecmp (s, ",l", 2)) - { - flag = 2; - s += 2; - } - else if (!strncasecmp (s, ",tsv", 4)) - { - flag = 3; - s += 4; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 10); - - /* Handle 64 bit carry for ADD. */ - case 'Y': - flag = 0; - if (!strncasecmp (s, ",dc,tsv", 7) || - !strncasecmp (s, ",tsv,dc", 7)) - { - flag = 1; - s += 7; - } - else if (!strncasecmp (s, ",dc", 3)) - { - flag = 0; - s += 3; - } - else - break; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle 32 bit carry for ADD. */ - case 'y': - flag = 0; - if (!strncasecmp (s, ",c,tsv", 6) || - !strncasecmp (s, ",tsv,c", 6)) - { - flag = 1; - s += 6; - } - else if (!strncasecmp (s, ",c", 2)) - { - flag = 0; - s += 2; - } - else - break; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle trap on signed overflow. */ - case 'v': - flag = 0; - if (!strncasecmp (s, ",tsv", 4)) - { - flag = 1; - s += 4; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle trap on condition and overflow. */ - case 't': - flag = 0; - if (!strncasecmp (s, ",tc,tsv", 7) || - !strncasecmp (s, ",tsv,tc", 7)) - { - flag = 1; - s += 7; - } - else if (!strncasecmp (s, ",tc", 3)) - { - flag = 0; - s += 3; - } - else - break; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle 64 bit borrow for SUB. */ - case 'B': - flag = 0; - if (!strncasecmp (s, ",db,tsv", 7) || - !strncasecmp (s, ",tsv,db", 7)) - { - flag = 1; - s += 7; - } - else if (!strncasecmp (s, ",db", 3)) - { - flag = 0; - s += 3; - } - else - break; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle 32 bit borrow for SUB. */ - case 'b': - flag = 0; - if (!strncasecmp (s, ",b,tsv", 6) || - !strncasecmp (s, ",tsv,b", 6)) - { - flag = 1; - s += 6; - } - else if (!strncasecmp (s, ",b", 2)) - { - flag = 0; - s += 2; - } - else - break; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle trap condition completer for UADDCM. */ - case 'T': - flag = 0; - if (!strncasecmp (s, ",tc", 3)) - { - flag = 1; - s += 3; - } - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 6); - - /* Handle signed/unsigned at 21. */ - case 'S': - { - int sign = 1; - if (strncasecmp (s, ",s", 2) == 0) - { - sign = 1; - s += 2; - } - else if (strncasecmp (s, ",u", 2) == 0) - { - sign = 0; - s += 2; - } - - INSERT_FIELD_AND_CONTINUE (opcode, sign, 10); - } - - /* Handle left/right combination at 17:18. */ - case 'h': - if (*s++ == ',') - { - int lr = 0; - if (*s == 'r') - lr = 2; - else if (*s == 'l') - lr = 0; - else - as_bad (_("Invalid left/right combination completer")); - - s++; - INSERT_FIELD_AND_CONTINUE (opcode, lr, 13); - } - else - as_bad (_("Invalid left/right combination completer")); - break; - - /* Handle saturation at 24:25. */ - case 'H': - { - int sat = 3; - if (strncasecmp (s, ",ss", 3) == 0) - { - sat = 1; - s += 3; - } - else if (strncasecmp (s, ",us", 3) == 0) - { - sat = 0; - s += 3; - } - - INSERT_FIELD_AND_CONTINUE (opcode, sat, 6); - } - - /* Handle permutation completer. */ - case '*': - if (*s++ == ',') - { - int permloc[4]; - int perm = 0; - int i = 0; - permloc[0] = 13; - permloc[1] = 10; - permloc[2] = 8; - permloc[3] = 6; - for (; i < 4; i++) - { - switch (*s++) - { - case '0': - perm = 0; - break; - case '1': - perm = 1; - break; - case '2': - perm = 2; - break; - case '3': - perm = 3; - break; - default: - as_bad (_("Invalid permutation completer")); - } - opcode |= perm << permloc[i]; - } - continue; - } - else - as_bad (_("Invalid permutation completer")); - break; - - default: - abort (); - } - break; - - /* Handle all conditions. */ - case '?': - { - args++; - switch (*args) - { - /* Handle FP compare conditions. */ - case 'f': - cond = pa_parse_fp_cmp_cond (&s); - INSERT_FIELD_AND_CONTINUE (opcode, cond, 0); - - /* Handle an add condition. */ - case 'A': - case 'a': - cmpltr = 0; - flag = 0; - if (*s == ',') - { - s++; - - /* 64 bit conditions. */ - if (*args == 'A') - { - if (*s == '*') - s++; - else - break; - } - else if (*s == '*') - break; - - name = s; - while (*s != ',' && *s != ' ' && *s != '\t') - s += 1; - c = *s; - *s = 0x00; - if (strcmp (name, "=") == 0) - cmpltr = 1; - else if (strcmp (name, "<") == 0) - cmpltr = 2; - else if (strcmp (name, "<=") == 0) - cmpltr = 3; - else if (strcasecmp (name, "nuv") == 0) - cmpltr = 4; - else if (strcasecmp (name, "znv") == 0) - cmpltr = 5; - else if (strcasecmp (name, "sv") == 0) - cmpltr = 6; - else if (strcasecmp (name, "od") == 0) - cmpltr = 7; - else if (strcasecmp (name, "tr") == 0) - { - cmpltr = 0; - flag = 1; - } - else if (strcmp (name, "<>") == 0) - { - cmpltr = 1; - flag = 1; - } - else if (strcmp (name, ">=") == 0) - { - cmpltr = 2; - flag = 1; - } - else if (strcmp (name, ">") == 0) - { - cmpltr = 3; - flag = 1; - } - else if (strcasecmp (name, "uv") == 0) - { - cmpltr = 4; - flag = 1; - } - else if (strcasecmp (name, "vnz") == 0) - { - cmpltr = 5; - flag = 1; - } - else if (strcasecmp (name, "nsv") == 0) - { - cmpltr = 6; - flag = 1; - } - else if (strcasecmp (name, "ev") == 0) - { - cmpltr = 7; - flag = 1; - } - /* ",*" is a valid condition. */ - else if (*args == 'a' || *name) - as_bad (_("Invalid Add Condition: %s"), name); - *s = c; - } - opcode |= cmpltr << 13; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 12); - - /* Handle non-negated add and branch condition. */ - case 'd': - cmpltr = pa_parse_nonneg_add_cmpltr (&s); - if (cmpltr < 0) - { - as_bad (_("Invalid Add and Branch Condition")); - cmpltr = 0; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13); - - /* Handle 64 bit wide-mode add and branch condition. */ - case 'W': - cmpltr = pa_parse_addb_64_cmpltr (&s); - if (cmpltr < 0) - { - as_bad (_("Invalid Add and Branch Condition")); - cmpltr = 0; - } - else - { - /* Negated condition requires an opcode change. */ - opcode |= (cmpltr & 8) << 24; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr & 7, 13); - - /* Handle a negated or non-negated add and branch - condition. */ - case '@': - save_s = s; - cmpltr = pa_parse_nonneg_add_cmpltr (&s); - if (cmpltr < 0) - { - s = save_s; - cmpltr = pa_parse_neg_add_cmpltr (&s); - if (cmpltr < 0) - { - as_bad (_("Invalid Compare/Subtract Condition")); - cmpltr = 0; - } - else - { - /* Negated condition requires an opcode change. */ - opcode |= 1 << 27; - } - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13); - - /* Handle branch on bit conditions. */ - case 'B': - case 'b': - cmpltr = 0; - if (*s == ',') - { - s++; - - if (*args == 'B') - { - if (*s == '*') - s++; - else - break; - } - else if (*s == '*') - break; - - if (strncmp (s, "<", 1) == 0) - { - cmpltr = 0; - s++; - } - else if (strncmp (s, ">=", 2) == 0) - { - cmpltr = 1; - s += 2; - } - else - as_bad (_("Invalid Bit Branch Condition: %c"), *s); - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 15); - - /* Handle a compare/subtract condition. */ - case 'S': - case 's': - cmpltr = 0; - flag = 0; - if (*s == ',') - { - s++; - - /* 64 bit conditions. */ - if (*args == 'S') - { - if (*s == '*') - s++; - else - break; - } - else if (*s == '*') - break; - - name = s; - while (*s != ',' && *s != ' ' && *s != '\t') - s += 1; - c = *s; - *s = 0x00; - if (strcmp (name, "=") == 0) - cmpltr = 1; - else if (strcmp (name, "<") == 0) - cmpltr = 2; - else if (strcmp (name, "<=") == 0) - cmpltr = 3; - else if (strcasecmp (name, "<<") == 0) - cmpltr = 4; - else if (strcasecmp (name, "<<=") == 0) - cmpltr = 5; - else if (strcasecmp (name, "sv") == 0) - cmpltr = 6; - else if (strcasecmp (name, "od") == 0) - cmpltr = 7; - else if (strcasecmp (name, "tr") == 0) - { - cmpltr = 0; - flag = 1; - } - else if (strcmp (name, "<>") == 0) - { - cmpltr = 1; - flag = 1; - } - else if (strcmp (name, ">=") == 0) - { - cmpltr = 2; - flag = 1; - } - else if (strcmp (name, ">") == 0) - { - cmpltr = 3; - flag = 1; - } - else if (strcasecmp (name, ">>=") == 0) - { - cmpltr = 4; - flag = 1; - } - else if (strcasecmp (name, ">>") == 0) - { - cmpltr = 5; - flag = 1; - } - else if (strcasecmp (name, "nsv") == 0) - { - cmpltr = 6; - flag = 1; - } - else if (strcasecmp (name, "ev") == 0) - { - cmpltr = 7; - flag = 1; - } - /* ",*" is a valid condition. */ - else if (*args != 'S' || *name) - as_bad (_("Invalid Compare/Subtract Condition: %s"), - name); - *s = c; - } - opcode |= cmpltr << 13; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 12); - - /* Handle a non-negated compare condition. */ - case 't': - cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s); - if (cmpltr < 0) - { - as_bad (_("Invalid Compare/Subtract Condition")); - cmpltr = 0; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13); - - /* Handle a 32 bit compare and branch condition. */ - case 'n': - save_s = s; - cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s); - if (cmpltr < 0) - { - s = save_s; - cmpltr = pa_parse_neg_cmpsub_cmpltr (&s); - if (cmpltr < 0) - { - as_bad (_("Invalid Compare and Branch Condition")); - cmpltr = 0; - } - else - { - /* Negated condition requires an opcode change. */ - opcode |= 1 << 27; - } - } - - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13); - - /* Handle a 64 bit compare and branch condition. */ - case 'N': - cmpltr = pa_parse_cmpb_64_cmpltr (&s); - if (cmpltr >= 0) - { - /* Negated condition requires an opcode change. */ - opcode |= (cmpltr & 8) << 26; - } - else - /* Not a 64 bit cond. Give 32 bit a chance. */ - break; - - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr & 7, 13); - - /* Handle a 64 bit cmpib condition. */ - case 'Q': - cmpltr = pa_parse_cmpib_64_cmpltr (&s); - if (cmpltr < 0) - /* Not a 64 bit cond. Give 32 bit a chance. */ - break; - - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13); - - /* Handle a logical instruction condition. */ - case 'L': - case 'l': - cmpltr = 0; - flag = 0; - if (*s == ',') - { - s++; - - /* 64 bit conditions. */ - if (*args == 'L') - { - if (*s == '*') - s++; - else - break; - } - else if (*s == '*') - break; - - name = s; - while (*s != ',' && *s != ' ' && *s != '\t') - s += 1; - c = *s; - *s = 0x00; - - if (strcmp (name, "=") == 0) - cmpltr = 1; - else if (strcmp (name, "<") == 0) - cmpltr = 2; - else if (strcmp (name, "<=") == 0) - cmpltr = 3; - else if (strcasecmp (name, "od") == 0) - cmpltr = 7; - else if (strcasecmp (name, "tr") == 0) - { - cmpltr = 0; - flag = 1; - } - else if (strcmp (name, "<>") == 0) - { - cmpltr = 1; - flag = 1; - } - else if (strcmp (name, ">=") == 0) - { - cmpltr = 2; - flag = 1; - } - else if (strcmp (name, ">") == 0) - { - cmpltr = 3; - flag = 1; - } - else if (strcasecmp (name, "ev") == 0) - { - cmpltr = 7; - flag = 1; - } - /* ",*" is a valid condition. */ - else if (*args != 'L' || *name) - as_bad (_("Invalid Logical Instruction Condition.")); - *s = c; - } - opcode |= cmpltr << 13; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 12); - - /* Handle a shift/extract/deposit condition. */ - case 'X': - case 'x': - case 'y': - cmpltr = 0; - if (*s == ',') - { - save_s = s++; - - /* 64 bit conditions. */ - if (*args == 'X') - { - if (*s == '*') - s++; - else - break; - } - else if (*s == '*') - break; - - name = s; - while (*s != ',' && *s != ' ' && *s != '\t') - s += 1; - c = *s; - *s = 0x00; - if (strcmp (name, "=") == 0) - cmpltr = 1; - else if (strcmp (name, "<") == 0) - cmpltr = 2; - else if (strcasecmp (name, "od") == 0) - cmpltr = 3; - else if (strcasecmp (name, "tr") == 0) - cmpltr = 4; - else if (strcmp (name, "<>") == 0) - cmpltr = 5; - else if (strcmp (name, ">=") == 0) - cmpltr = 6; - else if (strcasecmp (name, "ev") == 0) - cmpltr = 7; - /* Handle movb,n. Put things back the way they were. - This includes moving s back to where it started. */ - else if (strcasecmp (name, "n") == 0 && *args == 'y') - { - *s = c; - s = save_s; - continue; - } - /* ",*" is a valid condition. */ - else if (*args != 'X' || *name) - as_bad (_("Invalid Shift/Extract/Deposit Condition.")); - *s = c; - } - INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13); - - /* Handle a unit instruction condition. */ - case 'U': - case 'u': - cmpltr = 0; - flag = 0; - if (*s == ',') - { - s++; - - /* 64 bit conditions. */ - if (*args == 'U') - { - if (*s == '*') - s++; - else - break; - } - else if (*s == '*') - break; - - if (strncasecmp (s, "sbz", 3) == 0) - { - cmpltr = 2; - s += 3; - } - else if (strncasecmp (s, "shz", 3) == 0) - { - cmpltr = 3; - s += 3; - } - else if (strncasecmp (s, "sdc", 3) == 0) - { - cmpltr = 4; - s += 3; - } - else if (strncasecmp (s, "sbc", 3) == 0) - { - cmpltr = 6; - s += 3; - } - else if (strncasecmp (s, "shc", 3) == 0) - { - cmpltr = 7; - s += 3; - } - else if (strncasecmp (s, "tr", 2) == 0) - { - cmpltr = 0; - flag = 1; - s += 2; - } - else if (strncasecmp (s, "nbz", 3) == 0) - { - cmpltr = 2; - flag = 1; - s += 3; - } - else if (strncasecmp (s, "nhz", 3) == 0) - { - cmpltr = 3; - flag = 1; - s += 3; - } - else if (strncasecmp (s, "ndc", 3) == 0) - { - cmpltr = 4; - flag = 1; - s += 3; - } - else if (strncasecmp (s, "nbc", 3) == 0) - { - cmpltr = 6; - flag = 1; - s += 3; - } - else if (strncasecmp (s, "nhc", 3) == 0) - { - cmpltr = 7; - flag = 1; - s += 3; - } - else if (strncasecmp (s, "swz", 3) == 0) - { - cmpltr = 1; - flag = 0; - s += 3; - } - else if (strncasecmp (s, "swc", 3) == 0) - { - cmpltr = 5; - flag = 0; - s += 3; - } - else if (strncasecmp (s, "nwz", 3) == 0) - { - cmpltr = 1; - flag = 1; - s += 3; - } - else if (strncasecmp (s, "nwc", 3) == 0) - { - cmpltr = 5; - flag = 1; - s += 3; - } - /* ",*" is a valid condition. */ - else if (*args != 'U' || (*s != ' ' && *s != '\t')) - as_bad (_("Invalid Unit Instruction Condition.")); - } - opcode |= cmpltr << 13; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 12); - - default: - abort (); - } - break; - } - - /* Handle a nullification completer for branch instructions. */ - case 'n': - nullif = pa_parse_nullif (&s); - INSERT_FIELD_AND_CONTINUE (opcode, nullif, 1); - - /* Handle a nullification completer for copr and spop insns. */ - case 'N': - nullif = pa_parse_nullif (&s); - INSERT_FIELD_AND_CONTINUE (opcode, nullif, 5); - - /* Handle ,%r2 completer for new syntax branches. */ - case 'L': - if (*s == ',' && strncasecmp (s + 1, "%r2", 3) == 0) - s += 4; - else if (*s == ',' && strncasecmp (s + 1, "%rp", 3) == 0) - s += 4; - else - break; - continue; - - /* Handle 3 bit entry into the fp compare array. Valid values - are 0..6 inclusive. */ - case 'h': - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 6, 0, 0); - num++; - INSERT_FIELD_AND_CONTINUE (opcode, num, 13); - } - else - break; - - /* Handle 3 bit entry into the fp compare array. Valid values - are 0..6 inclusive. */ - case 'm': - get_expression (s); - if (the_insn.exp.X_op == O_constant) - { - s = expr_end; - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 6, 0, 0); - num = (num + 1) ^ 1; - INSERT_FIELD_AND_CONTINUE (opcode, num, 13); - } - else - break; - - /* Handle graphics test completers for ftest */ - case '=': - { - num = pa_parse_ftest_gfx_completer (&s); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - - /* Handle a 11 bit immediate at 31. */ - case 'i': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 1023, -1024, 0); - num = low_sign_unext (num, 11); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - else - { - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 11; - continue; - } - - /* Handle a 14 bit immediate at 31. */ - case 'J': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - int mb; - - /* XXX the completer stored away tidbits of information - for us to extract. We need a cleaner way to do this. - Now that we have lots of letters again, it would be - good to rethink this. */ - mb = opcode & 1; - opcode -= mb; - num = evaluate_absolute (&the_insn); - if (mb != (num < 0)) - break; - CHECK_FIELD (num, 8191, -8192, 0); - num = low_sign_unext (num, 14); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - break; - - /* Handle a 14 bit immediate at 31. */ - case 'K': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - int mb; - - mb = opcode & 1; - opcode -= mb; - num = evaluate_absolute (&the_insn); - if (mb == (num < 0)) - break; - if (num % 4) - break; - CHECK_FIELD (num, 8191, -8192, 0); - num = low_sign_unext (num, 14); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - break; - - /* Handle a 16 bit immediate at 31. */ - case '<': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - int mb; - - mb = opcode & 1; - opcode -= mb; - num = evaluate_absolute (&the_insn); - if (mb != (num < 0)) - break; - CHECK_FIELD (num, 32767, -32768, 0); - num = re_assemble_16 (num); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - break; - - /* Handle a 16 bit immediate at 31. */ - case '>': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - int mb; - - mb = opcode & 1; - opcode -= mb; - num = evaluate_absolute (&the_insn); - if (mb == (num < 0)) - break; - if (num % 4) - break; - CHECK_FIELD (num, 32767, -32768, 0); - num = re_assemble_16 (num); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - break; - - /* Handle 14 bit immediate, shifted left three times. */ - case '#': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - if (num & 0x7) - break; - CHECK_FIELD (num, 8191, -8192, 0); - if (num < 0) - opcode |= 1; - num &= 0x1fff; - num >>= 3; - INSERT_FIELD_AND_CONTINUE (opcode, num, 4); - } - else - { - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 14; - continue; - } - break; - - /* Handle 14 bit immediate, shifted left twice. */ - case 'd': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - if (num & 0x3) - break; - CHECK_FIELD (num, 8191, -8192, 0); - if (num < 0) - opcode |= 1; - num &= 0x1fff; - num >>= 2; - INSERT_FIELD_AND_CONTINUE (opcode, num, 3); - } - else - { - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 14; - continue; - } - - /* Handle a 14 bit immediate at 31. */ - case 'j': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 8191, -8192, 0); - num = low_sign_unext (num, 14); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - else - { - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 14; - continue; - } - - /* Handle a 21 bit immediate at 31. */ - case 'k': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num >> 11, 1048575, -1048576, 0); - opcode |= re_assemble_21 (num); - continue; - } - else - { - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 21; - continue; - } - - /* Handle a 16 bit immediate at 31 (PA 2.0 wide mode only). */ - case 'l': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 32767, -32768, 0); - opcode |= re_assemble_16 (num); - continue; - } - else - { - /* ??? Is this valid for wide mode? */ - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 14; - continue; - } - - /* Handle a word-aligned 16-bit imm. at 31 (PA2.0 wide). */ - case 'y': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 32767, -32768, 0); - CHECK_ALIGN (num, 4, 0); - opcode |= re_assemble_16 (num); - continue; - } - else - { - /* ??? Is this valid for wide mode? */ - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 14; - continue; - } - - /* Handle a dword-aligned 16-bit imm. at 31 (PA2.0 wide). */ - case '&': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - if (the_insn.exp.X_op == O_constant) - { - num = evaluate_absolute (&the_insn); - CHECK_FIELD (num, 32767, -32768, 0); - CHECK_ALIGN (num, 8, 0); - opcode |= re_assemble_16 (num); - continue; - } - else - { - /* ??? Is this valid for wide mode? */ - if (is_DP_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_GOTOFF; - else if (is_PC_relative (the_insn.exp)) - the_insn.reloc = R_HPPA_PCREL_CALL; - else - the_insn.reloc = R_HPPA; - the_insn.format = 14; - continue; - } - - /* Handle a 12 bit branch displacement. */ - case 'w': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - the_insn.pcrel = 1; - if (!the_insn.exp.X_add_symbol - || !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), - FAKE_LABEL_NAME)) - { - num = evaluate_absolute (&the_insn); - if (num % 4) - { - as_bad (_("Branch to unaligned address")); - break; - } - if (the_insn.exp.X_add_symbol) - num -= 8; - CHECK_FIELD (num, 8191, -8192, 0); - opcode |= re_assemble_12 (num >> 2); - continue; - } - else - { - the_insn.reloc = R_HPPA_PCREL_CALL; - the_insn.format = 12; - the_insn.arg_reloc = last_call_desc.arg_reloc; - memset (&last_call_desc, 0, sizeof (struct call_desc)); - s = expr_end; - continue; - } - - /* Handle a 17 bit branch displacement. */ - case 'W': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - the_insn.pcrel = 1; - if (!the_insn.exp.X_add_symbol - || !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), - FAKE_LABEL_NAME)) - { - num = evaluate_absolute (&the_insn); - if (num % 4) - { - as_bad (_("Branch to unaligned address")); - break; - } - if (the_insn.exp.X_add_symbol) - num -= 8; - CHECK_FIELD (num, 262143, -262144, 0); - opcode |= re_assemble_17 (num >> 2); - continue; - } - else - { - the_insn.reloc = R_HPPA_PCREL_CALL; - the_insn.format = 17; - the_insn.arg_reloc = last_call_desc.arg_reloc; - memset (&last_call_desc, 0, sizeof (struct call_desc)); - continue; - } - - /* Handle a 22 bit branch displacement. */ - case 'X': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - the_insn.pcrel = 1; - if (!the_insn.exp.X_add_symbol - || !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), - FAKE_LABEL_NAME)) - { - num = evaluate_absolute (&the_insn); - if (num % 4) - { - as_bad (_("Branch to unaligned address")); - break; - } - if (the_insn.exp.X_add_symbol) - num -= 8; - CHECK_FIELD (num, 8388607, -8388608, 0); - opcode |= re_assemble_22 (num >> 2); - } - else - { - the_insn.reloc = R_HPPA_PCREL_CALL; - the_insn.format = 22; - the_insn.arg_reloc = last_call_desc.arg_reloc; - memset (&last_call_desc, 0, sizeof (struct call_desc)); - continue; - } - - /* Handle an absolute 17 bit branch target. */ - case 'z': - the_insn.field_selector = pa_chk_field_selector (&s); - get_expression (s); - s = expr_end; - the_insn.pcrel = 0; - if (!the_insn.exp.X_add_symbol - || !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), - FAKE_LABEL_NAME)) - { - num = evaluate_absolute (&the_insn); - if (num % 4) - { - as_bad (_("Branch to unaligned address")); - break; - } - if (the_insn.exp.X_add_symbol) - num -= 8; - CHECK_FIELD (num, 262143, -262144, 0); - opcode |= re_assemble_17 (num >> 2); - continue; - } - else - { - the_insn.reloc = R_HPPA_ABS_CALL; - the_insn.format = 17; - the_insn.arg_reloc = last_call_desc.arg_reloc; - memset (&last_call_desc, 0, sizeof (struct call_desc)); - continue; - } - - /* Handle '%r1' implicit operand of addil instruction. */ - case 'Z': - if (*s == ',' && *(s + 1) == '%' && *(s + 3) == '1' - && (*(s + 2) == 'r' || *(s + 2) == 'R')) - { - s += 4; - continue; - } - else - break; - - /* Handle '%sr0,%r31' implicit operand of be,l instruction. */ - case 'Y': - if (strncasecmp (s, "%sr0,%r31", 9) != 0) - break; - s += 9; - continue; - - /* Handle immediate value of 0 for ordered load/store instructions. */ - case '@': - if (*s != '0') - break; - s++; - continue; - - /* Handle a 2 bit shift count at 25. */ - case '.': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 3, 1, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 6); - - /* Handle a 4 bit shift count at 25. */ - case '*': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 15, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 6); - - /* Handle a 5 bit shift count at 26. */ - case 'p': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 31, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, 31 - num, 5); - - /* Handle a 6 bit shift count at 20,22:26. */ - case '~': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 63, 0, strict); - num = 63 - num; - opcode |= (num & 0x20) << 6; - INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5); - - /* Handle a 6 bit field length at 23,27:31. */ - case '%': - flag = 0; - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 64, 1, strict); - num--; - opcode |= (num & 0x20) << 3; - num = 31 - (num & 0x1f); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 6 bit field length at 19,27:31. */ - case '|': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 64, 1, strict); - num--; - opcode |= (num & 0x20) << 7; - num = 31 - (num & 0x1f); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 5 bit bit position at 26. */ - case 'P': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 31, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 5); - - /* Handle a 6 bit bit position at 20,22:26. */ - case 'q': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 63, 0, strict); - opcode |= (num & 0x20) << 6; - INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5); - - /* Handle a 5 bit immediate at 10 with 'd' as the complement - of the high bit of the immediate. */ - case 'B': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 63, 0, strict); - if (num & 0x20) - ; - else - opcode |= (1 << 13); - INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 21); - - /* Handle a 5 bit immediate at 10. */ - case 'Q': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 31, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 21); - - /* Handle a 9 bit immediate at 28. */ - case '$': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 511, 1, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 3); - - /* Handle a 13 bit immediate at 18. */ - case 'A': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 8191, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 13); - - /* Handle a 26 bit immediate at 31. */ - case 'D': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 67108863, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 3 bit SFU identifier at 25. */ - case 'v': - if (*s++ != ',') - as_bad (_("Invalid SFU identifier")); - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 7, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 6); - - /* Handle a 20 bit SOP field for spop0. */ - case 'O': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 1048575, 0, strict); - num = (num & 0x1f) | ((num & 0x000fffe0) << 6); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 15bit SOP field for spop1. */ - case 'o': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 32767, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 11); - - /* Handle a 10bit SOP field for spop3. */ - case '0': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 1023, 0, strict); - num = (num & 0x1f) | ((num & 0x000003e0) << 6); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 15 bit SOP field for spop2. */ - case '1': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 32767, 0, strict); - num = (num & 0x1f) | ((num & 0x00007fe0) << 6); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a 3-bit co-processor ID field. */ - case 'u': - if (*s++ != ',') - as_bad (_("Invalid COPR identifier")); - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 7, 0, strict); - INSERT_FIELD_AND_CONTINUE (opcode, num, 6); - - /* Handle a 22bit SOP field for copr. */ - case '2': - num = pa_get_absolute_expression (&the_insn, &s); - if (strict && the_insn.exp.X_op != O_constant) - break; - s = expr_end; - CHECK_FIELD (num, 4194303, 0, strict); - num = (num & 0x1f) | ((num & 0x003fffe0) << 4); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Handle a source FP operand format completer. */ - case '{': - if (*s == ',' && *(s+1) == 't') - { - the_insn.trunc = 1; - s += 2; - } - else - the_insn.trunc = 0; - flag = pa_parse_fp_cnv_format (&s); - the_insn.fpof1 = flag; - if (flag == W || flag == UW) - flag = SGL; - if (flag == DW || flag == UDW) - flag = DBL; - if (flag == QW || flag == UQW) - flag = QUAD; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle a destination FP operand format completer. */ - case '_': - /* pa_parse_format needs the ',' prefix. */ - s--; - flag = pa_parse_fp_cnv_format (&s); - the_insn.fpof2 = flag; - if (flag == W || flag == UW) - flag = SGL; - if (flag == DW || flag == UDW) - flag = DBL; - if (flag == QW || flag == UQW) - flag = QUAD; - opcode |= flag << 13; - if (the_insn.fpof1 == SGL - || the_insn.fpof1 == DBL - || the_insn.fpof1 == QUAD) - { - if (the_insn.fpof2 == SGL - || the_insn.fpof2 == DBL - || the_insn.fpof2 == QUAD) - flag = 0; - else if (the_insn.fpof2 == W - || the_insn.fpof2 == DW - || the_insn.fpof2 == QW) - flag = 2; - else if (the_insn.fpof2 == UW - || the_insn.fpof2 == UDW - || the_insn.fpof2 == UQW) - flag = 6; - else - abort (); - } - else if (the_insn.fpof1 == W - || the_insn.fpof1 == DW - || the_insn.fpof1 == QW) - { - if (the_insn.fpof2 == SGL - || the_insn.fpof2 == DBL - || the_insn.fpof2 == QUAD) - flag = 1; - else - abort (); - } - else if (the_insn.fpof1 == UW - || the_insn.fpof1 == UDW - || the_insn.fpof1 == UQW) - { - if (the_insn.fpof2 == SGL - || the_insn.fpof2 == DBL - || the_insn.fpof2 == QUAD) - flag = 5; - else - abort (); - } - flag |= the_insn.trunc; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 15); - - /* Handle a source FP operand format completer. */ - case 'F': - flag = pa_parse_fp_format (&s); - the_insn.fpof1 = flag; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle a destination FP operand format completer. */ - case 'G': - /* pa_parse_format needs the ',' prefix. */ - s--; - flag = pa_parse_fp_format (&s); - the_insn.fpof2 = flag; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 13); - - /* Handle a source FP operand format completer at 20. */ - case 'I': - flag = pa_parse_fp_format (&s); - the_insn.fpof1 = flag; - INSERT_FIELD_AND_CONTINUE (opcode, flag, 11); - - /* Handle a floating point operand format at 26. - Only allows single and double precision. */ - case 'H': - flag = pa_parse_fp_format (&s); - switch (flag) - { - case SGL: - opcode |= 0x20; - case DBL: - the_insn.fpof1 = flag; - continue; - - case QUAD: - case ILLEGAL_FMT: - default: - as_bad (_("Invalid Floating Point Operand Format.")); - } - break; - - /* Handle all floating point registers. */ - case 'f': - switch (*++args) - { - /* Float target register. */ - case 't': - if (!pa_parse_number (&s, 3)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - - /* Float target register with L/R selection. */ - case 'T': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num; - - /* 0x30 opcodes are FP arithmetic operation opcodes - and need to be turned into 0x38 opcodes. This - is not necessary for loads/stores. */ - if (need_pa11_opcode () - && ((opcode & 0xfc000000) == 0x30000000)) - opcode |= 1 << 27; - - opcode |= (pa_number & FP_REG_RSEL ? 1 << 6 : 0); - continue; - } - - /* Float operand 1. */ - case 'a': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num << 21; - if (need_pa11_opcode ()) - { - opcode |= (pa_number & FP_REG_RSEL ? 1 << 7 : 0); - opcode |= 1 << 27; - } - continue; - } - - /* Float operand 1 with L/R selection. */ - case 'X': - case 'A': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num << 21; - opcode |= (pa_number & FP_REG_RSEL ? 1 << 7 : 0); - continue; - } - - /* Float operand 2. */ - case 'b': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num << 16; - if (need_pa11_opcode ()) - { - opcode |= (pa_number & FP_REG_RSEL ? 1 << 12 : 0); - opcode |= 1 << 27; - } - continue; - } - - /* Float operand 2 with L/R selection. */ - case 'B': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num << 16; - opcode |= (pa_number & FP_REG_RSEL ? 1 << 12 : 0); - continue; - } - - /* Float operand 3 for fmpyfadd, fmpynfadd. */ - case 'C': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= (num & 0x1c) << 11; - opcode |= (num & 0x03) << 9; - opcode |= (pa_number & FP_REG_RSEL ? 1 << 8 : 0); - continue; - } - - /* Float mult operand 1 for fmpyadd, fmpysub */ - case 'i': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - if (the_insn.fpof1 == SGL) - { - if (num < 16) - { - as_bad (_("Invalid register for single precision fmpyadd or fmpysub")); - break; - } - num &= 0xF; - num |= (pa_number & FP_REG_RSEL ? 1 << 4 : 0); - } - INSERT_FIELD_AND_CONTINUE (opcode, num, 21); - } - - /* Float mult operand 2 for fmpyadd, fmpysub */ - case 'j': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - if (the_insn.fpof1 == SGL) - { - if (num < 16) - { - as_bad (_("Invalid register for single precision fmpyadd or fmpysub")); - break; - } - num &= 0xF; - num |= (pa_number & FP_REG_RSEL ? 1 << 4 : 0); - } - INSERT_FIELD_AND_CONTINUE (opcode, num, 16); - } - - /* Float mult target for fmpyadd, fmpysub */ - case 'k': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - if (the_insn.fpof1 == SGL) - { - if (num < 16) - { - as_bad (_("Invalid register for single precision fmpyadd or fmpysub")); - break; - } - num &= 0xF; - num |= (pa_number & FP_REG_RSEL ? 1 << 4 : 0); - } - INSERT_FIELD_AND_CONTINUE (opcode, num, 0); - } - - /* Float add operand 1 for fmpyadd, fmpysub */ - case 'l': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - if (the_insn.fpof1 == SGL) - { - if (num < 16) - { - as_bad (_("Invalid register for single precision fmpyadd or fmpysub")); - break; - } - num &= 0xF; - num |= (pa_number & FP_REG_RSEL ? 1 << 4 : 0); - } - INSERT_FIELD_AND_CONTINUE (opcode, num, 6); - } - - /* Float add target for fmpyadd, fmpysub */ - case 'm': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - if (the_insn.fpof1 == SGL) - { - if (num < 16) - { - as_bad (_("Invalid register for single precision fmpyadd or fmpysub")); - break; - } - num &= 0xF; - num |= (pa_number & FP_REG_RSEL ? 1 << 4 : 0); - } - INSERT_FIELD_AND_CONTINUE (opcode, num, 11); - } - - /* Handle L/R register halves like 'x'. */ - case 'E': - case 'e': - { - if (!pa_parse_number (&s, 1)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - opcode |= num << 16; - if (need_pa11_opcode ()) - { - opcode |= (pa_number & FP_REG_RSEL ? 1 << 1 : 0); - } - continue; - } - - /* Float target register (PA 2.0 wide). */ - case 'x': - if (!pa_parse_number (&s, 3)) - break; - num = (pa_number & ~FP_REG_RSEL) - FP_REG_BASE; - CHECK_FIELD (num, 31, 0, 0); - INSERT_FIELD_AND_CONTINUE (opcode, num, 16); - - default: - abort (); - } - break; - - default: - abort (); - } - break; - } - - failed: - /* Check if the args matched. */ - if (!match) - { - if (&insn[1] - pa_opcodes < (int) NUMOPCODES - && !strcmp (insn->name, insn[1].name)) - { - ++insn; - s = argstart; - continue; - } - else - { - as_bad (_("Invalid operands %s"), error_message); - return; - } - } - break; - } - - the_insn.opcode = opcode; -} - -/* Turn a string in input_line_pointer into a floating point constant of type - type, and store the appropriate bytes in *litP. The number of LITTLENUMS - emitted is stored in *sizeP . An error message or NULL is returned. */ - -#define MAX_LITTLENUMS 6 - -char * -md_atof (type, litP, sizeP) - char type; - char *litP; - int *sizeP; -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_ATOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return NULL; -} - -/* Write out big-endian. */ - -void -md_number_to_chars (buf, val, n) - char *buf; - valueT val; - int n; -{ - number_to_chars_bigendian (buf, val, n); -} - -/* Translate internal representation of relocation info to BFD target - format. */ - -arelent ** -tc_gen_reloc (section, fixp) - asection *section; - fixS *fixp; -{ - arelent *reloc; - struct hppa_fix_struct *hppa_fixp; - static arelent *no_relocs = NULL; - arelent **relocs; - reloc_type **codes; - reloc_type code; - int n_relocs; - int i; - - hppa_fixp = (struct hppa_fix_struct *) fixp->tc_fix_data; - if (fixp->fx_addsy == 0) - return &no_relocs; - - assert (hppa_fixp != 0); - assert (section != 0); - - reloc = (arelent *) xmalloc (sizeof (arelent)); - - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - codes = hppa_gen_reloc_type (stdoutput, - fixp->fx_r_type, - hppa_fixp->fx_r_format, - hppa_fixp->fx_r_field, - fixp->fx_subsy != NULL, - symbol_get_bfdsym (fixp->fx_addsy)); - - if (codes == NULL) - { - as_bad_where (fixp->fx_file, fixp->fx_line, _("Cannot handle fixup")); - abort (); - } - - for (n_relocs = 0; codes[n_relocs]; n_relocs++) - ; - - relocs = (arelent **) xmalloc (sizeof (arelent *) * n_relocs + 1); - reloc = (arelent *) xmalloc (sizeof (arelent) * n_relocs); - for (i = 0; i < n_relocs; i++) - relocs[i] = &reloc[i]; - - relocs[n_relocs] = NULL; - -#ifdef OBJ_ELF - switch (fixp->fx_r_type) - { - default: - assert (n_relocs == 1); - - code = *codes[0]; - - /* Now, do any processing that is dependent on the relocation type. */ - switch (code) - { - case R_PARISC_DLTREL21L: - case R_PARISC_DLTREL14R: - case R_PARISC_DLTREL14F: - case R_PARISC_PLABEL32: - case R_PARISC_PLABEL21L: - case R_PARISC_PLABEL14R: - /* For plabel relocations, the addend of the - relocation should be either 0 (no static link) or 2 - (static link required). This adjustment is done in - bfd/elf32-hppa.c:elf32_hppa_relocate_section. - - We also slam a zero addend into the DLT relative relocs; - it doesn't make a lot of sense to use any addend since - it gets you a different (eg unknown) DLT entry. */ - reloc->addend = 0; - break; - -#ifdef ELF_ARG_RELOC - case R_PARISC_PCREL17R: - case R_PARISC_PCREL17F: - case R_PARISC_PCREL17C: - case R_PARISC_DIR17R: - case R_PARISC_DIR17F: - case R_PARISC_PCREL21L: - case R_PARISC_DIR21L: - reloc->addend = HPPA_R_ADDEND (hppa_fixp->fx_arg_reloc, - fixp->fx_offset); - break; -#endif - - case R_PARISC_DIR32: - /* Facilitate hand-crafted unwind info. */ - if (strcmp (section->name, UNWIND_SECTION_NAME) == 0) - code = R_PARISC_SEGREL32; - /* Fall thru */ - - default: - reloc->addend = fixp->fx_offset; - break; - } - - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - reloc->howto = bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) code); - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; - - assert (reloc->howto && (unsigned int) code == reloc->howto->type); - break; - } -#else /* OBJ_SOM */ - - /* Walk over reach relocation returned by the BFD backend. */ - for (i = 0; i < n_relocs; i++) - { - code = *codes[i]; - - relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - relocs[i]->howto = - bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) code); - relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where; - - switch (code) - { - case R_COMP2: - /* The only time we ever use a R_COMP2 fixup is for the difference - of two symbols. With that in mind we fill in all four - relocs now and break out of the loop. */ - assert (i == 1); - relocs[0]->sym_ptr_ptr = (asymbol **) &(bfd_abs_symbol); - relocs[0]->howto = - bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) *codes[0]); - relocs[0]->address = fixp->fx_frag->fr_address + fixp->fx_where; - relocs[0]->addend = 0; - relocs[1]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[1]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); - relocs[1]->howto = - bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) *codes[1]); - relocs[1]->address = fixp->fx_frag->fr_address + fixp->fx_where; - relocs[1]->addend = 0; - relocs[2]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[2]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_subsy); - relocs[2]->howto = - bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) *codes[2]); - relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where; - relocs[2]->addend = 0; - relocs[3]->sym_ptr_ptr = (asymbol **) &(bfd_abs_symbol); - relocs[3]->howto = - bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) *codes[3]); - relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where; - relocs[3]->addend = 0; - relocs[4]->sym_ptr_ptr = (asymbol **) &(bfd_abs_symbol); - relocs[4]->howto = - bfd_reloc_type_lookup (stdoutput, - (bfd_reloc_code_real_type) *codes[4]); - relocs[4]->address = fixp->fx_frag->fr_address + fixp->fx_where; - relocs[4]->addend = 0; - goto done; - case R_PCREL_CALL: - case R_ABS_CALL: - relocs[i]->addend = HPPA_R_ADDEND (hppa_fixp->fx_arg_reloc, 0); - break; - - case R_DLT_REL: - case R_DATA_PLABEL: - case R_CODE_PLABEL: - /* For plabel relocations, the addend of the - relocation should be either 0 (no static link) or 2 - (static link required). - - FIXME: We always assume no static link! - - We also slam a zero addend into the DLT relative relocs; - it doesn't make a lot of sense to use any addend since - it gets you a different (eg unknown) DLT entry. */ - relocs[i]->addend = 0; - break; - - case R_N_MODE: - case R_S_MODE: - case R_D_MODE: - case R_R_MODE: - case R_FSEL: - case R_LSEL: - case R_RSEL: - case R_BEGIN_BRTAB: - case R_END_BRTAB: - case R_BEGIN_TRY: - case R_N0SEL: - case R_N1SEL: - /* There is no symbol or addend associated with these fixups. */ - relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); - relocs[i]->addend = 0; - break; - - case R_END_TRY: - case R_ENTRY: - case R_EXIT: - /* There is no symbol associated with these fixups. */ - relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); - relocs[i]->addend = fixp->fx_offset; - break; - - default: - relocs[i]->addend = fixp->fx_offset; - } - } - - done: -#endif - - return relocs; -} - -/* Process any machine dependent frag types. */ - -void -md_convert_frag (abfd, sec, fragP) - register bfd *abfd ATTRIBUTE_UNUSED; - register asection *sec ATTRIBUTE_UNUSED; - register fragS *fragP; -{ - unsigned int address; - - if (fragP->fr_type == rs_machine_dependent) - { - switch ((int) fragP->fr_subtype) - { - case 0: - fragP->fr_type = rs_fill; - know (fragP->fr_var == 1); - know (fragP->fr_next); - address = fragP->fr_address + fragP->fr_fix; - if (address % fragP->fr_offset) - { - fragP->fr_offset = - fragP->fr_next->fr_address - - fragP->fr_address - - fragP->fr_fix; - } - else - fragP->fr_offset = 0; - break; - } - } -} - -/* Round up a section size to the appropriate boundary. */ - -valueT -md_section_align (segment, size) - asection *segment; - valueT size; -{ - int align = bfd_get_section_alignment (stdoutput, segment); - int align2 = (1 << align) - 1; - - return (size + align2) & ~align2; -} - -/* Return the approximate size of a frag before relaxation has occurred. */ -int -md_estimate_size_before_relax (fragP, segment) - register fragS *fragP; - asection *segment ATTRIBUTE_UNUSED; -{ - int size; - - size = 0; - - while ((fragP->fr_fix + size) % fragP->fr_offset) - size++; - - return size; -} - -#ifdef OBJ_ELF -# ifdef WARN_COMMENTS -const char *md_shortopts = "Vc"; -# else -const char *md_shortopts = "V"; -# endif -#else -# ifdef WARN_COMMENTS -const char *md_shortopts = "c"; -# else -const char *md_shortopts = ""; -# endif -#endif - -struct option md_longopts[] = { -#ifdef WARN_COMMENTS - {"warn-comment", no_argument, NULL, 'c'}, -#endif - {NULL, no_argument, NULL, 0} -}; -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (c, arg) - int c ATTRIBUTE_UNUSED; - char *arg ATTRIBUTE_UNUSED; -{ - switch (c) - { - default: - return 0; - -#ifdef OBJ_ELF - case 'V': - print_version_id (); - break; -#endif -#ifdef WARN_COMMENTS - case 'c': - warn_comment = 1; - break; -#endif - } - - return 1; -} - -void -md_show_usage (stream) - FILE *stream ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_ELF - fprintf (stream, _("\ - -Q ignored\n")); -#endif -#ifdef WARN_COMMENTS - fprintf (stream, _("\ - -c print a warning if a comment is found\n")); -#endif -} - -/* We have no need to default values of symbols. */ - -symbolS * -md_undefined_symbol (name) - char *name ATTRIBUTE_UNUSED; -{ - return 0; -} - -#if defined (OBJ_SOM) || defined (ELF_ARG_RELOC) -#define nonzero_dibits(x) \ - ((x) | (((x) & 0x55555555) << 1) | (((x) & 0xAAAAAAAA) >> 1)) -#define arg_reloc_stub_needed(CALLER, CALLEE) \ - (((CALLER) ^ (CALLEE)) & nonzero_dibits (CALLER) & nonzero_dibits (CALLEE)) -#else -#define arg_reloc_stub_needed(CALLER, CALLEE) 0 -#endif - -/* Apply a fixup to an instruction. */ - -void -md_apply_fix3 (fixP, valP, seg) - fixS *fixP; - valueT *valP; - segT seg ATTRIBUTE_UNUSED; -{ - unsigned char *buf; - struct hppa_fix_struct *hppa_fixP; - offsetT new_val; - int insn, val, fmt; - - /* SOM uses R_HPPA_ENTRY and R_HPPA_EXIT relocations which can - never be "applied" (they are just markers). Likewise for - R_HPPA_BEGIN_BRTAB and R_HPPA_END_BRTAB. */ -#ifdef OBJ_SOM - if (fixP->fx_r_type == R_HPPA_ENTRY - || fixP->fx_r_type == R_HPPA_EXIT - || fixP->fx_r_type == R_HPPA_BEGIN_BRTAB - || fixP->fx_r_type == R_HPPA_END_BRTAB - || fixP->fx_r_type == R_HPPA_BEGIN_TRY) - return; - - /* Disgusting. We must set fx_offset ourselves -- R_HPPA_END_TRY - fixups are considered not adjustable, which in turn causes - adjust_reloc_syms to not set fx_offset. Ugh. */ - if (fixP->fx_r_type == R_HPPA_END_TRY) - { - fixP->fx_offset = * valP; - return; - } -#endif -#ifdef OBJ_ELF - if (fixP->fx_r_type == (int) R_PARISC_GNU_VTENTRY - || fixP->fx_r_type == (int) R_PARISC_GNU_VTINHERIT) - return; -#endif - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; - - /* There should have been an HPPA specific fixup associated - with the GAS fixup. */ - hppa_fixP = (struct hppa_fix_struct *) fixP->tc_fix_data; - if (hppa_fixP == NULL) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("no hppa_fixup entry for fixup type 0x%x"), - fixP->fx_r_type); - return; - } - - buf = (unsigned char *) (fixP->fx_frag->fr_literal + fixP->fx_where); - insn = bfd_get_32 (stdoutput, buf); - fmt = bfd_hppa_insn2fmt (stdoutput, insn); - - /* If there is a symbol associated with this fixup, then it's something - which will need a SOM relocation (except for some PC-relative relocs). - In such cases we should treat the "val" or "addend" as zero since it - will be added in as needed from fx_offset in tc_gen_reloc. */ - if ((fixP->fx_addsy != NULL - || fixP->fx_r_type == (int) R_HPPA_NONE) -#ifdef OBJ_SOM - && fmt != 32 -#endif - ) - new_val = ((fmt == 12 || fmt == 17 || fmt == 22) ? 8 : 0); -#ifdef OBJ_SOM - /* These field selectors imply that we do not want an addend. */ - else if (hppa_fixP->fx_r_field == e_psel - || hppa_fixP->fx_r_field == e_rpsel - || hppa_fixP->fx_r_field == e_lpsel - || hppa_fixP->fx_r_field == e_tsel - || hppa_fixP->fx_r_field == e_rtsel - || hppa_fixP->fx_r_field == e_ltsel) - new_val = ((fmt == 12 || fmt == 17 || fmt == 22) ? 8 : 0); -#endif - else - new_val = hppa_field_adjust (* valP, 0, hppa_fixP->fx_r_field); - - /* Handle pc-relative exceptions from above. */ - if ((fmt == 12 || fmt == 17 || fmt == 22) - && fixP->fx_addsy - && fixP->fx_pcrel - && !arg_reloc_stub_needed (symbol_arg_reloc_info (fixP->fx_addsy), - hppa_fixP->fx_arg_reloc) -#ifdef OBJ_ELF - && (* valP - 8 + 8192 < 16384 - || (fmt == 17 && * valP - 8 + 262144 < 524288) - || (fmt == 22 && * valP - 8 + 8388608 < 16777216)) -#endif -#ifdef OBJ_SOM - && (* valP - 8 + 262144 < 524288 - || (fmt == 22 && * valP - 8 + 8388608 < 16777216)) -#endif - && !S_IS_EXTERNAL (fixP->fx_addsy) - && !S_IS_WEAK (fixP->fx_addsy) - && S_GET_SEGMENT (fixP->fx_addsy) == hppa_fixP->segment - && !(fixP->fx_subsy - && S_GET_SEGMENT (fixP->fx_subsy) != hppa_fixP->segment)) - { - new_val = hppa_field_adjust (* valP, 0, hppa_fixP->fx_r_field); - } - - switch (fmt) - { - case 10: - CHECK_FIELD_WHERE (new_val, 8191, -8192, - fixP->fx_file, fixP->fx_line); - val = new_val; - - insn = (insn & ~ 0x3ff1) | (((val & 0x1ff8) << 1) - | ((val & 0x2000) >> 13)); - break; - case -11: - CHECK_FIELD_WHERE (new_val, 8191, -8192, - fixP->fx_file, fixP->fx_line); - val = new_val; - - insn = (insn & ~ 0x3ff9) | (((val & 0x1ffc) << 1) - | ((val & 0x2000) >> 13)); - break; - /* Handle all opcodes with the 'j' operand type. */ - case 14: - CHECK_FIELD_WHERE (new_val, 8191, -8192, - fixP->fx_file, fixP->fx_line); - val = new_val; - - insn = ((insn & ~ 0x3fff) | low_sign_unext (val, 14)); - break; - - /* Handle all opcodes with the 'k' operand type. */ - case 21: - CHECK_FIELD_WHERE (new_val, 1048575, -1048576, - fixP->fx_file, fixP->fx_line); - val = new_val; - - insn = (insn & ~ 0x1fffff) | re_assemble_21 (val); - break; - - /* Handle all the opcodes with the 'i' operand type. */ - case 11: - CHECK_FIELD_WHERE (new_val, 1023, -1024, - fixP->fx_file, fixP->fx_line); - val = new_val; - - insn = (insn & ~ 0x7ff) | low_sign_unext (val, 11); - break; - - /* Handle all the opcodes with the 'w' operand type. */ - case 12: - CHECK_FIELD_WHERE (new_val - 8, 8191, -8192, - fixP->fx_file, fixP->fx_line); - val = new_val - 8; - - insn = (insn & ~ 0x1ffd) | re_assemble_12 (val >> 2); - break; - - /* Handle some of the opcodes with the 'W' operand type. */ - case 17: - { - offsetT distance = * valP; - - /* If this is an absolute branch (ie no link) with an out of - range target, then we want to complain. */ - if (fixP->fx_r_type == (int) R_HPPA_PCREL_CALL - && (insn & 0xffe00000) == 0xe8000000) - CHECK_FIELD_WHERE (distance - 8, 262143, -262144, - fixP->fx_file, fixP->fx_line); - - CHECK_FIELD_WHERE (new_val - 8, 262143, -262144, - fixP->fx_file, fixP->fx_line); - val = new_val - 8; - - insn = (insn & ~ 0x1f1ffd) | re_assemble_17 (val >> 2); - break; - } - - case 22: - { - offsetT distance = * valP; - - /* If this is an absolute branch (ie no link) with an out of - range target, then we want to complain. */ - if (fixP->fx_r_type == (int) R_HPPA_PCREL_CALL - && (insn & 0xffe00000) == 0xe8000000) - CHECK_FIELD_WHERE (distance - 8, 8388607, -8388608, - fixP->fx_file, fixP->fx_line); - - CHECK_FIELD_WHERE (new_val - 8, 8388607, -8388608, - fixP->fx_file, fixP->fx_line); - val = new_val - 8; - - insn = (insn & ~ 0x3ff1ffd) | re_assemble_22 (val >> 2); - break; - } - - case -10: - val = new_val; - insn = (insn & ~ 0xfff1) | re_assemble_16 (val & -8); - break; - - case -16: - val = new_val; - insn = (insn & ~ 0xfff9) | re_assemble_16 (val & -4); - break; - - case 16: - val = new_val; - insn = (insn & ~ 0xffff) | re_assemble_16 (val); - break; - - case 32: - insn = new_val; - break; - - default: - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Unknown relocation encountered in md_apply_fix.")); - return; - } - - /* Insert the relocation. */ - bfd_put_32 (stdoutput, insn, buf); -} - -/* Exactly what point is a PC-relative offset relative TO? - On the PA, they're relative to the address of the offset. */ - -long -md_pcrel_from (fixP) - fixS *fixP; -{ - return fixP->fx_where + fixP->fx_frag->fr_address; -} - -/* Return nonzero if the input line pointer is at the end of - a statement. */ - -static int -is_end_of_statement () -{ - return ((*input_line_pointer == '\n') - || (*input_line_pointer == ';') - || (*input_line_pointer == '!')); -} - -/* Read a number from S. The number might come in one of many forms, - the most common will be a hex or decimal constant, but it could be - a pre-defined register (Yuk!), or an absolute symbol. - - Return 1 on success or 0 on failure. If STRICT, then a missing - register prefix will cause a failure. The number itself is - returned in `pa_number'. - - IS_FLOAT indicates that a PA-89 FP register number should be - parsed; A `l' or `r' suffix is checked for if but 2 of IS_FLOAT is - not set. - - pa_parse_number can not handle negative constants and will fail - horribly if it is passed such a constant. */ - -static int -pa_parse_number (s, is_float) - char **s; - int is_float; -{ - int num; - char *name; - char c; - symbolS *sym; - int status; - char *p = *s; - bfd_boolean have_prefix; - - /* Skip whitespace before the number. */ - while (*p == ' ' || *p == '\t') - p = p + 1; - - pa_number = -1; - have_prefix = 0; - num = 0; - if (!strict && ISDIGIT (*p)) - { - /* Looks like a number. */ - - if (*p == '0' && (*(p + 1) == 'x' || *(p + 1) == 'X')) - { - /* The number is specified in hex. */ - p += 2; - while (ISDIGIT (*p) || ((*p >= 'a') && (*p <= 'f')) - || ((*p >= 'A') && (*p <= 'F'))) - { - if (ISDIGIT (*p)) - num = num * 16 + *p - '0'; - else if (*p >= 'a' && *p <= 'f') - num = num * 16 + *p - 'a' + 10; - else - num = num * 16 + *p - 'A' + 10; - ++p; - } - } - else - { - /* The number is specified in decimal. */ - while (ISDIGIT (*p)) - { - num = num * 10 + *p - '0'; - ++p; - } - } - - pa_number = num; - - /* Check for a `l' or `r' suffix. */ - if (is_float) - { - pa_number += FP_REG_BASE; - if (! (is_float & 2)) - { - if (IS_R_SELECT (p)) - { - pa_number += FP_REG_RSEL; - ++p; - } - else if (IS_L_SELECT (p)) - { - ++p; - } - } - } - } - else if (*p == '%') - { - /* The number might be a predefined register. */ - have_prefix = 1; - name = p; - p++; - c = *p; - /* Tege hack: Special case for general registers as the general - code makes a binary search with case translation, and is VERY - slow. */ - if (c == 'r') - { - p++; - if (*p == 'e' && *(p + 1) == 't' - && (*(p + 2) == '0' || *(p + 2) == '1')) - { - p += 2; - num = *p - '0' + 28; - p++; - } - else if (*p == 'p') - { - num = 2; - p++; - } - else if (!ISDIGIT (*p)) - { - if (print_errors) - as_bad (_("Undefined register: '%s'."), name); - num = -1; - } - else - { - do - num = num * 10 + *p++ - '0'; - while (ISDIGIT (*p)); - } - } - else - { - /* Do a normal register search. */ - while (is_part_of_name (c)) - { - p = p + 1; - c = *p; - } - *p = 0; - status = reg_name_search (name); - if (status >= 0) - num = status; - else - { - if (print_errors) - as_bad (_("Undefined register: '%s'."), name); - num = -1; - } - *p = c; - } - - pa_number = num; - } - else - { - /* And finally, it could be a symbol in the absolute section which - is effectively a constant, or a register alias symbol. */ - name = p; - c = *p; - while (is_part_of_name (c)) - { - p = p + 1; - c = *p; - } - *p = 0; - if ((sym = symbol_find (name)) != NULL) - { - if (S_GET_SEGMENT (sym) == reg_section) - { - num = S_GET_VALUE (sym); - /* Well, we don't really have one, but we do have a - register, so... */ - have_prefix = TRUE; - } - else if (S_GET_SEGMENT (sym) == &bfd_abs_section) - num = S_GET_VALUE (sym); - else if (!strict) - { - if (print_errors) - as_bad (_("Non-absolute symbol: '%s'."), name); - num = -1; - } - } - else if (!strict) - { - /* There is where we'd come for an undefined symbol - or for an empty string. For an empty string we - will return zero. That's a concession made for - compatibility with the braindamaged HP assemblers. */ - if (*name == 0) - num = 0; - else - { - if (print_errors) - as_bad (_("Undefined absolute constant: '%s'."), name); - num = -1; - } - } - *p = c; - - pa_number = num; - } - - if (!strict || have_prefix) - { - *s = p; - return 1; - } - return 0; -} - -#define REG_NAME_CNT (sizeof (pre_defined_registers) / sizeof (struct pd_reg)) - -/* Given NAME, find the register number associated with that name, return - the integer value associated with the given name or -1 on failure. */ - -static int -reg_name_search (name) - char *name; -{ - int middle, low, high; - int cmp; - - low = 0; - high = REG_NAME_CNT - 1; - - do - { - middle = (low + high) / 2; - cmp = strcasecmp (name, pre_defined_registers[middle].name); - if (cmp < 0) - high = middle - 1; - else if (cmp > 0) - low = middle + 1; - else - return pre_defined_registers[middle].value; - } - while (low <= high); - - return -1; -} - -/* Return nonzero if the given INSN and L/R information will require - a new PA-1.1 opcode. */ - -static int -need_pa11_opcode () -{ - if ((pa_number & FP_REG_RSEL) != 0 - && !(the_insn.fpof1 == DBL && the_insn.fpof2 == DBL)) - { - /* If this instruction is specific to a particular architecture, - then set a new architecture. */ - if (bfd_get_mach (stdoutput) < pa11) - { - if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, pa11)) - as_warn (_("could not update architecture and machine")); - } - return TRUE; - } - else - return FALSE; -} - -/* Parse a condition for a fcmp instruction. Return the numerical - code associated with the condition. */ - -static int -pa_parse_fp_cmp_cond (s) - char **s; -{ - int cond, i; - - cond = 0; - - for (i = 0; i < 32; i++) - { - if (strncasecmp (*s, fp_cond_map[i].string, - strlen (fp_cond_map[i].string)) == 0) - { - cond = fp_cond_map[i].cond; - *s += strlen (fp_cond_map[i].string); - /* If not a complete match, back up the input string and - report an error. */ - if (**s != ' ' && **s != '\t') - { - *s -= strlen (fp_cond_map[i].string); - break; - } - while (**s == ' ' || **s == '\t') - *s = *s + 1; - return cond; - } - } - - as_bad (_("Invalid FP Compare Condition: %s"), *s); - - /* Advance over the bogus completer. */ - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - - return 0; -} - -/* Parse a graphics test complete for ftest. */ - -static int -pa_parse_ftest_gfx_completer (s) - char **s; -{ - int value; - - value = 0; - if (strncasecmp (*s, "acc8", 4) == 0) - { - value = 5; - *s += 4; - } - else if (strncasecmp (*s, "acc6", 4) == 0) - { - value = 9; - *s += 4; - } - else if (strncasecmp (*s, "acc4", 4) == 0) - { - value = 13; - *s += 4; - } - else if (strncasecmp (*s, "acc2", 4) == 0) - { - value = 17; - *s += 4; - } - else if (strncasecmp (*s, "acc", 3) == 0) - { - value = 1; - *s += 3; - } - else if (strncasecmp (*s, "rej8", 4) == 0) - { - value = 6; - *s += 4; - } - else if (strncasecmp (*s, "rej", 3) == 0) - { - value = 2; - *s += 3; - } - else - { - value = 0; - as_bad (_("Invalid FTEST completer: %s"), *s); - } - - return value; -} - -/* Parse an FP operand format completer returning the completer - type. */ - -static fp_operand_format -pa_parse_fp_cnv_format (s) - char **s; -{ - int format; - - format = SGL; - if (**s == ',') - { - *s += 1; - if (strncasecmp (*s, "sgl", 3) == 0) - { - format = SGL; - *s += 4; - } - else if (strncasecmp (*s, "dbl", 3) == 0) - { - format = DBL; - *s += 4; - } - else if (strncasecmp (*s, "quad", 4) == 0) - { - format = QUAD; - *s += 5; - } - else if (strncasecmp (*s, "w", 1) == 0) - { - format = W; - *s += 2; - } - else if (strncasecmp (*s, "uw", 2) == 0) - { - format = UW; - *s += 3; - } - else if (strncasecmp (*s, "dw", 2) == 0) - { - format = DW; - *s += 3; - } - else if (strncasecmp (*s, "udw", 3) == 0) - { - format = UDW; - *s += 4; - } - else if (strncasecmp (*s, "qw", 2) == 0) - { - format = QW; - *s += 3; - } - else if (strncasecmp (*s, "uqw", 3) == 0) - { - format = UQW; - *s += 4; - } - else - { - format = ILLEGAL_FMT; - as_bad (_("Invalid FP Operand Format: %3s"), *s); - } - } - - return format; -} - -/* Parse an FP operand format completer returning the completer - type. */ - -static fp_operand_format -pa_parse_fp_format (s) - char **s; -{ - int format; - - format = SGL; - if (**s == ',') - { - *s += 1; - if (strncasecmp (*s, "sgl", 3) == 0) - { - format = SGL; - *s += 4; - } - else if (strncasecmp (*s, "dbl", 3) == 0) - { - format = DBL; - *s += 4; - } - else if (strncasecmp (*s, "quad", 4) == 0) - { - format = QUAD; - *s += 5; - } - else - { - format = ILLEGAL_FMT; - as_bad (_("Invalid FP Operand Format: %3s"), *s); - } - } - - return format; -} - -/* Convert from a selector string into a selector type. */ - -static int -pa_chk_field_selector (str) - char **str; -{ - int middle, low, high; - int cmp; - char name[4]; - - /* Read past any whitespace. */ - /* FIXME: should we read past newlines and formfeeds??? */ - while (**str == ' ' || **str == '\t' || **str == '\n' || **str == '\f') - *str = *str + 1; - - if ((*str)[1] == '\'' || (*str)[1] == '%') - name[0] = TOLOWER ((*str)[0]), - name[1] = 0; - else if ((*str)[2] == '\'' || (*str)[2] == '%') - name[0] = TOLOWER ((*str)[0]), - name[1] = TOLOWER ((*str)[1]), - name[2] = 0; - else if ((*str)[3] == '\'' || (*str)[3] == '%') - name[0] = TOLOWER ((*str)[0]), - name[1] = TOLOWER ((*str)[1]), - name[2] = TOLOWER ((*str)[2]), - name[3] = 0; - else - return e_fsel; - - low = 0; - high = sizeof (selector_table) / sizeof (struct selector_entry) - 1; - - do - { - middle = (low + high) / 2; - cmp = strcmp (name, selector_table[middle].prefix); - if (cmp < 0) - high = middle - 1; - else if (cmp > 0) - low = middle + 1; - else - { - *str += strlen (name) + 1; -#ifndef OBJ_SOM - if (selector_table[middle].field_selector == e_nsel) - return e_fsel; -#endif - return selector_table[middle].field_selector; - } - } - while (low <= high); - - return e_fsel; -} - -/* Mark (via expr_end) the end of an expression (I think). FIXME. */ - -static int -get_expression (str) - char *str; -{ - char *save_in; - asection *seg; - - save_in = input_line_pointer; - input_line_pointer = str; - seg = expression (&the_insn.exp); - if (!(seg == absolute_section - || seg == undefined_section - || SEG_NORMAL (seg))) - { - as_warn (_("Bad segment in expression.")); - expr_end = input_line_pointer; - input_line_pointer = save_in; - return 1; - } - expr_end = input_line_pointer; - input_line_pointer = save_in; - return 0; -} - -/* Mark (via expr_end) the end of an absolute expression. FIXME. */ -static int -pa_get_absolute_expression (insn, strp) - struct pa_it *insn; - char **strp; -{ - char *save_in; - - insn->field_selector = pa_chk_field_selector (strp); - save_in = input_line_pointer; - input_line_pointer = *strp; - expression (&insn->exp); - /* This is not perfect, but is a huge improvement over doing nothing. - - The PA assembly syntax is ambiguous in a variety of ways. Consider - this string "4 %r5" Is that the number 4 followed by the register - r5, or is that 4 MOD r5? - - If we get a modulo expression when looking for an absolute, we try - again cutting off the input string at the first whitespace character. */ - if (insn->exp.X_op == O_modulus) - { - char *s, c; - int retval; - - input_line_pointer = *strp; - s = *strp; - while (*s != ',' && *s != ' ' && *s != '\t') - s++; - - c = *s; - *s = 0; - - retval = pa_get_absolute_expression (insn, strp); - - input_line_pointer = save_in; - *s = c; - return evaluate_absolute (insn); - } - /* When in strict mode we have a non-match, fix up the pointers - and return to our caller. */ - if (insn->exp.X_op != O_constant && strict) - { - expr_end = input_line_pointer; - input_line_pointer = save_in; - return 0; - } - if (insn->exp.X_op != O_constant) - { - as_bad (_("Bad segment (should be absolute).")); - expr_end = input_line_pointer; - input_line_pointer = save_in; - return 0; - } - expr_end = input_line_pointer; - input_line_pointer = save_in; - return evaluate_absolute (insn); -} - -/* Evaluate an absolute expression EXP which may be modified by - the selector FIELD_SELECTOR. Return the value of the expression. */ -static int -evaluate_absolute (insn) - struct pa_it *insn; -{ - offsetT value; - expressionS exp; - int field_selector = insn->field_selector; - - exp = insn->exp; - value = exp.X_add_number; - - return hppa_field_adjust (0, value, field_selector); -} - -/* Given an argument location specification return the associated - argument location number. */ - -static unsigned int -pa_build_arg_reloc (type_name) - char *type_name; -{ - - if (strncasecmp (type_name, "no", 2) == 0) - return 0; - if (strncasecmp (type_name, "gr", 2) == 0) - return 1; - else if (strncasecmp (type_name, "fr", 2) == 0) - return 2; - else if (strncasecmp (type_name, "fu", 2) == 0) - return 3; - else - as_bad (_("Invalid argument location: %s\n"), type_name); - - return 0; -} - -/* Encode and return an argument relocation specification for - the given register in the location specified by arg_reloc. */ - -static unsigned int -pa_align_arg_reloc (reg, arg_reloc) - unsigned int reg; - unsigned int arg_reloc; -{ - unsigned int new_reloc; - - new_reloc = arg_reloc; - switch (reg) - { - case 0: - new_reloc <<= 8; - break; - case 1: - new_reloc <<= 6; - break; - case 2: - new_reloc <<= 4; - break; - case 3: - new_reloc <<= 2; - break; - default: - as_bad (_("Invalid argument description: %d"), reg); - } - - return new_reloc; -} - -/* Parse a PA nullification completer (,n). Return nonzero if the - completer was found; return zero if no completer was found. */ - -static int -pa_parse_nullif (s) - char **s; -{ - int nullif; - - nullif = 0; - if (**s == ',') - { - *s = *s + 1; - if (strncasecmp (*s, "n", 1) == 0) - nullif = 1; - else - { - as_bad (_("Invalid Nullification: (%c)"), **s); - nullif = 0; - } - *s = *s + 1; - } - - return nullif; -} - -/* Parse a non-negated compare/subtract completer returning the - number (for encoding in instructions) of the given completer. */ - -static int -pa_parse_nonneg_cmpsub_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - char *save_s = *s; - int nullify = 0; - - cmpltr = 0; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - - if (strcmp (name, "=") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, "<") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, "<=") == 0) - { - cmpltr = 3; - } - else if (strcmp (name, "<<") == 0) - { - cmpltr = 4; - } - else if (strcmp (name, "<<=") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "sv") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "od") == 0) - { - cmpltr = 7; - } - /* If we have something like addb,n then there is no condition - completer. */ - else if (strcasecmp (name, "n") == 0) - { - cmpltr = 0; - nullify = 1; - } - else - { - cmpltr = -1; - } - **s = c; - } - - /* Reset pointers if this was really a ,n for a branch instruction. */ - if (nullify) - *s = save_s; - - return cmpltr; -} - -/* Parse a negated compare/subtract completer returning the - number (for encoding in instructions) of the given completer. */ - -static int -pa_parse_neg_cmpsub_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - char *save_s = *s; - int nullify = 0; - - cmpltr = 0; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - - if (strcasecmp (name, "tr") == 0) - { - cmpltr = 0; - } - else if (strcmp (name, "<>") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, ">=") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, ">") == 0) - { - cmpltr = 3; - } - else if (strcmp (name, ">>=") == 0) - { - cmpltr = 4; - } - else if (strcmp (name, ">>") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "nsv") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "ev") == 0) - { - cmpltr = 7; - } - /* If we have something like addb,n then there is no condition - completer. */ - else if (strcasecmp (name, "n") == 0) - { - cmpltr = 0; - nullify = 1; - } - else - { - cmpltr = -1; - } - **s = c; - } - - /* Reset pointers if this was really a ,n for a branch instruction. */ - if (nullify) - *s = save_s; - - return cmpltr; -} - -/* Parse a 64 bit compare and branch completer returning the number (for - encoding in instructions) of the given completer. - - Nonnegated comparisons are returned as 0-7, negated comparisons are - returned as 8-15. */ - -static int -pa_parse_cmpb_64_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - - cmpltr = -1; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - - if (strcmp (name, "*") == 0) - { - cmpltr = 0; - } - else if (strcmp (name, "*=") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, "*<") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, "*<=") == 0) - { - cmpltr = 3; - } - else if (strcmp (name, "*<<") == 0) - { - cmpltr = 4; - } - else if (strcmp (name, "*<<=") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "*sv") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "*od") == 0) - { - cmpltr = 7; - } - else if (strcasecmp (name, "*tr") == 0) - { - cmpltr = 8; - } - else if (strcmp (name, "*<>") == 0) - { - cmpltr = 9; - } - else if (strcmp (name, "*>=") == 0) - { - cmpltr = 10; - } - else if (strcmp (name, "*>") == 0) - { - cmpltr = 11; - } - else if (strcmp (name, "*>>=") == 0) - { - cmpltr = 12; - } - else if (strcmp (name, "*>>") == 0) - { - cmpltr = 13; - } - else if (strcasecmp (name, "*nsv") == 0) - { - cmpltr = 14; - } - else if (strcasecmp (name, "*ev") == 0) - { - cmpltr = 15; - } - else - { - cmpltr = -1; - } - **s = c; - } - - return cmpltr; -} - -/* Parse a 64 bit compare immediate and branch completer returning the number - (for encoding in instructions) of the given completer. */ - -static int -pa_parse_cmpib_64_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - - cmpltr = -1; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - - if (strcmp (name, "*<<") == 0) - { - cmpltr = 0; - } - else if (strcmp (name, "*=") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, "*<") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, "*<=") == 0) - { - cmpltr = 3; - } - else if (strcmp (name, "*>>=") == 0) - { - cmpltr = 4; - } - else if (strcmp (name, "*<>") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "*>=") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "*>") == 0) - { - cmpltr = 7; - } - else - { - cmpltr = -1; - } - **s = c; - } - - return cmpltr; -} - -/* Parse a non-negated addition completer returning the number - (for encoding in instructions) of the given completer. */ - -static int -pa_parse_nonneg_add_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - char *save_s = *s; - int nullify = 0; - - cmpltr = 0; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - if (strcmp (name, "=") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, "<") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, "<=") == 0) - { - cmpltr = 3; - } - else if (strcasecmp (name, "nuv") == 0) - { - cmpltr = 4; - } - else if (strcasecmp (name, "znv") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "sv") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "od") == 0) - { - cmpltr = 7; - } - /* If we have something like addb,n then there is no condition - completer. */ - else if (strcasecmp (name, "n") == 0) - { - cmpltr = 0; - nullify = 1; - } - else - { - cmpltr = -1; - } - **s = c; - } - - /* Reset pointers if this was really a ,n for a branch instruction. */ - if (nullify) - *s = save_s; - - return cmpltr; -} - -/* Parse a negated addition completer returning the number - (for encoding in instructions) of the given completer. */ - -static int -pa_parse_neg_add_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - char *save_s = *s; - int nullify = 0; - - cmpltr = 0; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - if (strcasecmp (name, "tr") == 0) - { - cmpltr = 0; - } - else if (strcmp (name, "<>") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, ">=") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, ">") == 0) - { - cmpltr = 3; - } - else if (strcasecmp (name, "uv") == 0) - { - cmpltr = 4; - } - else if (strcasecmp (name, "vnz") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "nsv") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "ev") == 0) - { - cmpltr = 7; - } - /* If we have something like addb,n then there is no condition - completer. */ - else if (strcasecmp (name, "n") == 0) - { - cmpltr = 0; - nullify = 1; - } - else - { - cmpltr = -1; - } - **s = c; - } - - /* Reset pointers if this was really a ,n for a branch instruction. */ - if (nullify) - *s = save_s; - - return cmpltr; -} - -/* Parse a 64 bit wide mode add and branch completer returning the number (for - encoding in instructions) of the given completer. */ - -static int -pa_parse_addb_64_cmpltr (s) - char **s; -{ - int cmpltr; - char *name = *s + 1; - char c; - char *save_s = *s; - int nullify = 0; - - cmpltr = 0; - if (**s == ',') - { - *s += 1; - while (**s != ',' && **s != ' ' && **s != '\t') - *s += 1; - c = **s; - **s = 0x00; - if (strcmp (name, "=") == 0) - { - cmpltr = 1; - } - else if (strcmp (name, "<") == 0) - { - cmpltr = 2; - } - else if (strcmp (name, "<=") == 0) - { - cmpltr = 3; - } - else if (strcasecmp (name, "nuv") == 0) - { - cmpltr = 4; - } - else if (strcasecmp (name, "*=") == 0) - { - cmpltr = 5; - } - else if (strcasecmp (name, "*<") == 0) - { - cmpltr = 6; - } - else if (strcasecmp (name, "*<=") == 0) - { - cmpltr = 7; - } - else if (strcmp (name, "tr") == 0) - { - cmpltr = 8; - } - else if (strcmp (name, "<>") == 0) - { - cmpltr = 9; - } - else if (strcmp (name, ">=") == 0) - { - cmpltr = 10; - } - else if (strcmp (name, ">") == 0) - { - cmpltr = 11; - } - else if (strcasecmp (name, "uv") == 0) - { - cmpltr = 12; - } - else if (strcasecmp (name, "*<>") == 0) - { - cmpltr = 13; - } - else if (strcasecmp (name, "*>=") == 0) - { - cmpltr = 14; - } - else if (strcasecmp (name, "*>") == 0) - { - cmpltr = 15; - } - /* If we have something like addb,n then there is no condition - completer. */ - else if (strcasecmp (name, "n") == 0) - { - cmpltr = 0; - nullify = 1; - } - else - { - cmpltr = -1; - } - **s = c; - } - - /* Reset pointers if this was really a ,n for a branch instruction. */ - if (nullify) - *s = save_s; - - return cmpltr; -} - -#ifdef OBJ_SOM -/* Handle an alignment directive. Special so that we can update the - alignment of the subspace if necessary. */ -static void -pa_align (bytes) - int bytes; -{ - /* We must have a valid space and subspace. */ - pa_check_current_space_and_subspace (); - - /* Let the generic gas code do most of the work. */ - s_align_bytes (bytes); - - /* If bytes is a power of 2, then update the current subspace's - alignment if necessary. */ - if (log2 (bytes) != -1) - record_alignment (current_subspace->ssd_seg, log2 (bytes)); -} -#endif - -/* Handle a .BLOCK type pseudo-op. */ - -static void -pa_block (z) - int z ATTRIBUTE_UNUSED; -{ - char *p; - long int temp_fill; - unsigned int temp_size; - unsigned int i; - -#ifdef OBJ_SOM - /* We must have a valid space and subspace. */ - pa_check_current_space_and_subspace (); -#endif - - temp_size = get_absolute_expression (); - - /* Always fill with zeros, that's what the HP assembler does. */ - temp_fill = 0; - - p = frag_var (rs_fill, (int) temp_size, (int) temp_size, - (relax_substateT) 0, (symbolS *) 0, (offsetT) 1, NULL); - memset (p, 0, temp_size); - - /* Convert 2 bytes at a time. */ - - for (i = 0; i < temp_size; i += 2) - { - md_number_to_chars (p + i, - (valueT) temp_fill, - (int) ((temp_size - i) > 2 ? 2 : (temp_size - i))); - } - - pa_undefine_label (); - demand_empty_rest_of_line (); -} - -/* Handle a .begin_brtab and .end_brtab pseudo-op. */ - -static void -pa_brtab (begin) - int begin ATTRIBUTE_UNUSED; -{ - -#ifdef OBJ_SOM - /* The BRTAB relocations are only available in SOM (to denote - the beginning and end of branch tables). */ - char *where = frag_more (0); - - fix_new_hppa (frag_now, where - frag_now->fr_literal, 0, - NULL, (offsetT) 0, NULL, - 0, begin ? R_HPPA_BEGIN_BRTAB : R_HPPA_END_BRTAB, - e_fsel, 0, 0, 0); -#endif - - demand_empty_rest_of_line (); -} - -/* Handle a .begin_try and .end_try pseudo-op. */ - -static void -pa_try (begin) - int begin ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_SOM - expressionS exp; - char *where = frag_more (0); - - if (! begin) - expression (&exp); - - /* The TRY relocations are only available in SOM (to denote - the beginning and end of exception handling regions). */ - - fix_new_hppa (frag_now, where - frag_now->fr_literal, 0, - NULL, (offsetT) 0, begin ? NULL : &exp, - 0, begin ? R_HPPA_BEGIN_TRY : R_HPPA_END_TRY, - e_fsel, 0, 0, 0); -#endif - - demand_empty_rest_of_line (); -} - -/* Handle a .CALL pseudo-op. This involves storing away information - about where arguments are to be found so the linker can detect - (and correct) argument location mismatches between caller and callee. */ - -static void -pa_call (unused) - int unused ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_SOM - /* We must have a valid space and subspace. */ - pa_check_current_space_and_subspace (); -#endif - - pa_call_args (&last_call_desc); - demand_empty_rest_of_line (); -} - -/* Do the dirty work of building a call descriptor which describes - where the caller placed arguments to a function call. */ - -static void -pa_call_args (call_desc) - struct call_desc *call_desc; -{ - char *name, c, *p; - unsigned int temp, arg_reloc; - - while (!is_end_of_statement ()) - { - name = input_line_pointer; - c = get_symbol_end (); - /* Process a source argument. */ - if ((strncasecmp (name, "argw", 4) == 0)) - { - temp = atoi (name + 4); - p = input_line_pointer; - *p = c; - input_line_pointer++; - name = input_line_pointer; - c = get_symbol_end (); - arg_reloc = pa_build_arg_reloc (name); - call_desc->arg_reloc |= pa_align_arg_reloc (temp, arg_reloc); - } - /* Process a return value. */ - else if ((strncasecmp (name, "rtnval", 6) == 0)) - { - p = input_line_pointer; - *p = c; - input_line_pointer++; - name = input_line_pointer; - c = get_symbol_end (); - arg_reloc = pa_build_arg_reloc (name); - call_desc->arg_reloc |= (arg_reloc & 0x3); - } - else - { - as_bad (_("Invalid .CALL argument: %s"), name); - } - p = input_line_pointer; - *p = c; - if (!is_end_of_statement ()) - input_line_pointer++; - } -} - -/* Return TRUE if FRAG1 and FRAG2 are the same. */ - -static int -is_same_frag (frag1, frag2) - fragS *frag1; - fragS *frag2; -{ - - if (frag1 == NULL) - return (FALSE); - else if (frag2 == NULL) - return (FALSE); - else if (frag1 == frag2) - return (TRUE); - else if (frag2->fr_type == rs_fill && frag2->fr_fix == 0) - return (is_same_frag (frag1, frag2->fr_next)); - else - return (FALSE); -} - -#ifdef OBJ_ELF -/* Build an entry in the UNWIND subspace from the given function - attributes in CALL_INFO. This is not needed for SOM as using - R_ENTRY and R_EXIT relocations allow the linker to handle building - of the unwind spaces. */ - -static void -pa_build_unwind_subspace (call_info) - struct call_info *call_info; -{ - asection *seg, *save_seg; - subsegT save_subseg; - unsigned int unwind; - int reloc; - char *p; - - if ((bfd_get_section_flags (stdoutput, now_seg) - & (SEC_ALLOC | SEC_LOAD | SEC_READONLY)) - != (SEC_ALLOC | SEC_LOAD | SEC_READONLY)) - return; - - reloc = R_PARISC_SEGREL32; - save_seg = now_seg; - save_subseg = now_subseg; - /* Get into the right seg/subseg. This may involve creating - the seg the first time through. Make sure to have the - old seg/subseg so that we can reset things when we are done. */ - seg = bfd_get_section_by_name (stdoutput, UNWIND_SECTION_NAME); - if (seg == ASEC_NULL) - { - seg = subseg_new (UNWIND_SECTION_NAME, 0); - bfd_set_section_flags (stdoutput, seg, - SEC_READONLY | SEC_HAS_CONTENTS - | SEC_LOAD | SEC_RELOC | SEC_ALLOC | SEC_DATA); - bfd_set_section_alignment (stdoutput, seg, 2); - } - - subseg_set (seg, 0); - - /* Get some space to hold relocation information for the unwind - descriptor. */ - p = frag_more (16); - - /* Relocation info. for start offset of the function. */ - md_number_to_chars (p, 0, 4); - fix_new_hppa (frag_now, p - frag_now->fr_literal, 4, - call_info->start_symbol, (offsetT) 0, - (expressionS *) NULL, 0, reloc, - e_fsel, 32, 0, 0); - - /* Relocation info. for end offset of the function. - - Because we allow reductions of 32bit relocations for ELF, this will be - reduced to section_sym + offset which avoids putting the temporary - symbol into the symbol table. It (should) end up giving the same - value as call_info->start_symbol + function size once the linker is - finished with its work. */ - md_number_to_chars (p + 4, 0, 4); - fix_new_hppa (frag_now, p + 4 - frag_now->fr_literal, 4, - call_info->end_symbol, (offsetT) 0, - (expressionS *) NULL, 0, reloc, - e_fsel, 32, 0, 0); - - /* Dump the descriptor. */ - unwind = UNWIND_LOW32 (&call_info->ci_unwind.descriptor); - md_number_to_chars (p + 8, unwind, 4); - - unwind = UNWIND_HIGH32 (&call_info->ci_unwind.descriptor); - md_number_to_chars (p + 12, unwind, 4); - - /* Return back to the original segment/subsegment. */ - subseg_set (save_seg, save_subseg); -} -#endif - -/* Process a .CALLINFO pseudo-op. This information is used later - to build unwind descriptors and maybe one day to support - .ENTER and .LEAVE. */ - -static void -pa_callinfo (unused) - int unused ATTRIBUTE_UNUSED; -{ - char *name, c, *p; - int temp; - -#ifdef OBJ_SOM - /* We must have a valid space and subspace. */ - pa_check_current_space_and_subspace (); -#endif - - /* .CALLINFO must appear within a procedure definition. */ - if (!within_procedure) - as_bad (_(".callinfo is not within a procedure definition")); - - /* Mark the fact that we found the .CALLINFO for the - current procedure. */ - callinfo_found = TRUE; - - /* Iterate over the .CALLINFO arguments. */ - while (!is_end_of_statement ()) - { - name = input_line_pointer; - c = get_symbol_end (); - /* Frame size specification. */ - if ((strncasecmp (name, "frame", 5) == 0)) - { - p = input_line_pointer; - *p = c; - input_line_pointer++; - temp = get_absolute_expression (); - if ((temp & 0x3) != 0) - { - as_bad (_("FRAME parameter must be a multiple of 8: %d\n"), temp); - temp = 0; - } - - /* callinfo is in bytes and unwind_desc is in 8 byte units. */ - last_call_info->ci_unwind.descriptor.frame_size = temp / 8; - - } - /* Entry register (GR, GR and SR) specifications. */ - else if ((strncasecmp (name, "entry_gr", 8) == 0)) - { - p = input_line_pointer; - *p = c; - input_line_pointer++; - temp = get_absolute_expression (); - /* The HP assembler accepts 19 as the high bound for ENTRY_GR - even though %r19 is caller saved. I think this is a bug in - the HP assembler, and we are not going to emulate it. */ - if (temp < 3 || temp > 18) - as_bad (_("Value for ENTRY_GR must be in the range 3..18\n")); - last_call_info->ci_unwind.descriptor.entry_gr = temp - 2; - } - else if ((strncasecmp (name, "entry_fr", 8) == 0)) - { - p = input_line_pointer; - *p = c; - input_line_pointer++; - temp = get_absolute_expression (); - /* Similarly the HP assembler takes 31 as the high bound even - though %fr21 is the last callee saved floating point register. */ - if (temp < 12 || temp > 21) - as_bad (_("Value for ENTRY_FR must be in the range 12..21\n")); - last_call_info->ci_unwind.descriptor.entry_fr = temp - 11; - } - else if ((strncasecmp (name, "entry_sr", 8) == 0)) - { - p = input_line_pointer; - *p = c; - input_line_pointer++; - temp = get_absolute_expression (); - if (temp != 3) - as_bad (_("Value for ENTRY_SR must be 3\n")); - } - /* Note whether or not this function performs any calls. */ - else if ((strncasecmp (name, "calls", 5) == 0) || - (strncasecmp (name, "caller", 6) == 0)) - { - p = input_line_pointer; - *p = c; - } - else if ((strncasecmp (name, "no_calls", 8) == 0)) - { - p = input_line_pointer; - *p = c; - } - /* Should RP be saved into the stack. */ - else if ((strncasecmp (name, "save_rp", 7) == 0)) - { - p = input_line_pointer; - *p = c; - last_call_info->ci_unwind.descriptor.save_rp = 1; - } - /* Likewise for SP. */ - else if ((strncasecmp (name, "save_sp", 7) == 0)) - { - p = input_line_pointer; - *p = c; - last_call_info->ci_unwind.descriptor.save_sp = 1; - } - /* Is this an unwindable procedure. If so mark it so - in the unwind descriptor. */ - else if ((strncasecmp (name, "no_unwind", 9) == 0)) - { - p = input_line_pointer; - *p = c; - last_call_info->ci_unwind.descriptor.cannot_unwind = 1; - } - /* Is this an interrupt routine. If so mark it in the - unwind descriptor. */ - else if ((strncasecmp (name, "hpux_int", 7) == 0)) - { - p = input_line_pointer; - *p = c; - last_call_info->ci_unwind.descriptor.hpux_interrupt_marker = 1; - } - /* Is this a millicode routine. "millicode" isn't in my - assembler manual, but my copy is old. The HP assembler - accepts it, and there's a place in the unwind descriptor - to drop the information, so we'll accept it too. */ - else if ((strncasecmp (name, "millicode", 9) == 0)) - { - p = input_line_pointer; - *p = c; - last_call_info->ci_unwind.descriptor.millicode = 1; - } - else - { - as_bad (_("Invalid .CALLINFO argument: %s"), name); - *input_line_pointer = c; - } - if (!is_end_of_statement ()) - input_line_pointer++; - } - - demand_empty_rest_of_line (); -} - -#if !(defined (OBJ_ELF) && (defined (TE_LINUX) || defined (TE_NetBSD))) -/* Switch to the text space. Like s_text, but delete our - label when finished. */ -static void -pa_text (unused) - int unused ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_SOM - current_space = is_defined_space ("$TEXT$"); - current_subspace - = pa_subsegment_to_subspace (current_space->sd_seg, 0); -#endif - - s_text (0); - pa_undefine_label (); -} - -/* Switch to the data space. As usual delete our label. */ -static void -pa_data (unused) - int unused ATTRIBUTE_UNUSED; -{ -#ifdef OBJ_SOM - current_space = is_defined_space ("$PRIVATE$"); - current_subspace - = pa_subsegment_to_subspace (current_space->sd_seg, 0); -#endif - s_data (0); - pa_undefine_label (); -} - -/* This is different than the standard GAS s_comm(). On HP9000/800 machines, - the .comm pseudo-op has the following symtax: - -